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

>  hi, Andrew:
> Thanks for your response!
> So, take ArmPkg\Drivers\CpuDxe as an example:
> In Build\...\CpuDxe\CpuDxe\DEBUG directory, there are 3 files:
> ArmCpuDxe.dll

This is usually the file that was processed to produce ArmCpuDxe.efi PE/COFF 
image and it contains the symbols. (not true for VC++ as the symbols end up in 
a .pdb file)

> ArmCpuDxe.efi

EFI PE/COFF image

> ArmCpuDxe.map 
Human readable map file to show you where stuff got linked

> So, which file is the debug symbol file ?
> It seems uefi code would get the symbol file from ArmCpuDxe.dll .
>  
> If i want to use gdb to debug ArmCpuDxe.efi, what is the steps?

add-symbol-file ArmCpuDxe.efi   0xABC00240

Where 0xABC00240 is the load address + sizeof the PE/COFF header. 

It is possible to write gdb scripts to load EFI symbols, I'm not sure if one 
exists in the edk2?

>  
> best wishes,
>  
> 发件人: Andrew Fish [mailto:af...@apple.com] 
> 发送时间: 2012年11月29日 17:39
> 收件人: edk2-devel@lists.sourceforge.net
> 主题: Re: [edk2] objcopy option "--add-gnu-debuglink"
>  
>  
> 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

------------------------------------------------------------------------------
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