bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/11401] New: GNU debuglink section is not described in DEBU


From: ken dot lu at intel dot com
Subject: [Bug binutils/11401] New: GNU debuglink section is not described in DEBUG entry in data directory in PE's optional header
Date: 19 Mar 2010 02:37:32 -0000

For a PE image, "objcopy --add-gnu-debuglink" is used to add a debug link 
section in PE image.

>From PeCoff's spec, the "debug link" section's (MSFT point to PDB path) should 
be described in "Debug Directory" in Data Directory in PE optional header. You 
could use objdump -p UsbBusDxe.MSFT.efi, to look at OptionalHeader-
>DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].
The Data Directory
Entry 0 0000000000000000 00000000 Export Directory [.edata (or where ever we 
found it)]
Entry 1 0000000000000000 00000000 Import Directory [parts of .idata]
Entry 2 0000000000000000 00000000 Resource Directory [.rsrc]
Entry 3 0000000000000000 00000000 Exception Directory [.pdata]
Entry 4 0000000000000000 00000000 Security Directory
Entry 5 0000000000006880 00000054 Base Relocation Directory [.reloc]
Entry 6 0000000000004fe0 0000001c Debug Directory       <======= Debug 
section's 
offset and size [MSFT]
Entry 7 0000000000000000 00000000 Description Directory
Entry 8 0000000000000000 00000000 Special Directory
Entry 9 0000000000000000 00000000 Thread Storage Directory [.tls]
Entry a 0000000000000000 00000000 Load Configuration Directory
Entry b 0000000000000000 00000000 Bound Import Directory
Entry c 0000000000000000 00000000 Import Address Table Directory
Entry d 0000000000000000 00000000 Delay Import Directory
Entry e 0000000000000000 00000000 CLR Runtime Header
Entry f 0000000000000000 00000000 Reserved

But if I use "objcopy --add-gnu-debuglink" to generate ".gnu_debuglink" 
section, this section's address/size was not described in OptionalHeader-
>DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].
The Data Directory
Entry 0 0000000000007f60 00000036 Export Directory [.edata (or where ever we 
found it)]
Entry 1 0000000000007fa0 00000014 Import Directory [parts of .idata]
Entry 2 0000000000000000 00000000 Resource Directory [.rsrc]
Entry 3 0000000000000000 00000000 Exception Directory [.pdata]
Entry 4 0000000000000000 00000000 Security Directory
Entry 5 0000000000007fc0 00000054 Base Relocation Directory [.reloc]
Entry 6 0000000000000000 00000000 Debug Directory       <========= No debug 
section information in [GNU]
Entry 7 0000000000000000 00000000 Description Directory
Entry 8 0000000000000000 00000000 Special Directory
Entry 9 0000000000000000 00000000 Thread Storage Directory [.tls]
Entry a 0000000000000000 00000000 Load Configuration Directory
Entry b 0000000000000000 00000000 Bound Import Directory
Entry c 0000000000000000 00000000 Import Address Table Directory
Entry d 0000000000000000 00000000 Delay Import Directory
Entry e 0000000000000000 00000000 CLR Runtime Header
Entry f 0000000000000000 00000000 Reserved      

So in GNU world, I could only hardcode to use "gnu_debuglink" section name to 
search debug link section. In MSFT, our code use the offset information in 
OptionalHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG] to locate the debug 
section.

-- 
           Summary: GNU debuglink section is not described in DEBUG entry in
                    data directory in PE's optional header
           Product: binutils
           Version: 2.21 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: binutils
        AssignedTo: unassigned at sources dot redhat dot com
        ReportedBy: ken dot lu at intel dot com
                CC: bug-binutils at gnu dot org


http://sourceware.org/bugzilla/show_bug.cgi?id=11401

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]