On Nov 29, 2012, at 1:14 AM, nicolas wrote:

>  hi, Andrew:
> Thanks for your response!
> I found gcc has "-g " parameter in tools_def.txt.
> So, it means :
> the produced efi image file has included debug info sections?

-g means produce debug information for the symbols file. 

> And the efi code could retrieve the symbol file from the loaded EFI image?
>  

From a PE/COFF point of view the debug information is just the file name of the 
symbol file. So for example this looks like this flag is used to point the EFI  
PE/COFF image at the symbol file. 

DEBUG_*_*_OBJCOPY_ADDDEBUGFLAG     = 
--add-gnu-debuglink=$(DEBUG_DIR)\$(MODULE_NAME).debug
RELEASE_*_*_OBJCOPY_ADDDEBUGFLAG   =



> best wishes,
>  
> 发件人: Andrew Fish [mailto:af...@apple.com] 
> 发送时间: 2012年11月27日 4:05
> 收件人: edk2-devel@lists.sourceforge.net
> 主题: Re: [edk2] objcopy option "--add-gnu-debuglink"
>  
> Nicolas,
>  
> I don't know the specific answer for your tools, but I can give you a hint on 
> how things work in general. 
>  
> The general answer is no one actually uses the debug definitions defined in 
> COFF or PE/COFF. The PE/COFF file points to another file that contains the 
> debug information. For Visual Studio this is a .PDB  file, for clang we point 
> to a DWARF or DSYM (DWARF + objects).
>  
> If you look in the PE/COFF specification 
> (http://msdn.microsoft.com/en-us/library/windows/hardware/gg463119.aspx) 
> there is something called the Optional Header Data Directories, the term 
> optional here is confusing as it is optional for COFF, but required for 
> PE/COFF. For most EFI images you will see a Base Relocation Entry, and Debug 
> Data Directories entries (assuming it is  debug build). The Base Relocation 
> Entry contains the fix up info so an image can be loaded at other than its 
> linked address (usually zero). The Debug Data Directory entry looks like 
> EFI_IMAGE_DEBUG_DIRECTORY_ENTRY
> and it points to a EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY or one of the other 
> types you can find in 
> https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/MdePkg/Include/IndustryStandard/PeImage.h.
>  
> Basically a EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY contains the file name of the 
> symbols. So loading symbols in EFI usually involves walking the PE/COFF image 
> to find the PDB (or other debug file path and name), and this combined with 
> the load address of the PE/COFF image is enough to load symbols in a 
> debugger. There are library functions that do all this, and you can find them 
> by searching for one of the PE/COFF structures I mention in this mail. 
>  
> On a related side note PE/COFF differs from ELF and Mach-O in that the file 
> header is loaded into system memory. Why do I mention this? Well if the build 
> system is converting EFL/Mach-O files to PE/COFF you generally have to link 
> the ELF/Mach-O file not at zero, but use the size of the PE/COFF header as 
> the link address. The reason I mention this is that sometimes when you load 
> symbols you need to add back in the size of the PE/COFF header to the PE/COFF 
> image load address to get the correct symbol addresses. This shift is only 
> required for PE/COFF images that are converted from ELF or Mach-O. 
>  
> Thanks,
>  
> Andrew Fish
>  
>  
> On Nov 22, 2012, at 9:40 PM, nicolas wrote:
> 
> 
> hi, experts:
> I found a line in tools_def.txt :
> DEBUG_*_*_OBJCOPY_ADDDEBUGFLAG     = 
> --add-gnu-debuglink=$(DEBUG_DIR)\$(MODULE_NAME).debug
>  
> Will it merge debug info file into efi binary?
> Or it will produce a separate debug info file?
>  
> best wishes,
> 
> 
> ------------------------------------------------------------------------------
> Monitor your physical, virtual and cloud infrastructure from a single
> web console. Get in-depth insight into apps, servers, databases, vmware,
> SAP, cloud infrastructure, etc. Download 30-day Free Trial.
> Pricing starts from $795 for 25 servers or applications!
> http://p.sf.net/sfu/zoho_dev2dev_nov_______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>  
> 
> 
> ------------------------------------------------------------------------------
> Keep yourself connected to Go Parallel: 
> VERIFY Test and improve your parallel project with help from experts 
> and peers. 
> http://goparallel.sourceforge.net_______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
Keep yourself connected to Go Parallel: 
VERIFY Test and improve your parallel project with help from experts 
and peers. http://goparallel.sourceforge.net
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to