> On Nov 23, 2015, at 11:31 PM, Ard Biesheuvel <ard.biesheu...@linaro.org> 
> wrote:
> 
> On 24 November 2015 at 00:38, Vladimir Olovyannikov
> <volov...@broadcom.com> wrote:
>> 
>> 
>>> -----Original Message-----
>>> From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org]
>>> Sent: Tuesday, November 10, 2015 10:04 AM
>>> To: Vladimir Olovyannikov
>>> Cc: Cohen, Eugene; edk2-devel@lists.01.org
>>> Subject: Re: [edk2] Strange behavior of the DS-5 debugger on AARCH64 with
>>> step-by-step debugging in uefi
>>> 
>>> On 10 November 2015 at 18:41, Vladimir Olovyannikov
>>> <volov...@broadcom.com> wrote:
>>>> Ard,
>>>> Many thanks for your help. It works.
>>>> 
>>> 
>>> Great! Thanks for reporting back.
>>> 
>>> 
>>>> -----Original Message-----
>>>> From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org]
>>>> Sent: Monday, November 09, 2015 10:31 PM
>>>> To: Vladimir Olovyannikov
>>>> Cc: Cohen, Eugene; edk2-devel@lists.01.org
>>>> Subject: Re: [edk2] Strange behavior of the DS-5 debugger on AARCH64
>>> with step-by-step debugging in uefi
>>>> 
>>>> On 9 November 2015 at 19:01, Vladimir Olovyannikov
>>>> <volov...@broadcom.com> wrote:
>>>>> -----Original Message-----
>>>>> From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org]
>>>>> Sent: Sunday, November 08, 2015 10:52 PM
>>>>> To: Vladimir Olovyannikov
>>>>> Cc: Cohen, Eugene; edk2-devel@lists.01.org
>>>>> Subject: Re: [edk2] Strange behavior of the DS-5 debugger on AARCH64
>>> with step-by-step debugging in uefi
>>>>> 
>>>>> On 6 November 2015 at 21:32, Vladimir Olovyannikov
>>>>> <volov...@broadcom.com>> wrote:
>>>>>>> Hello Ard, Eugene,
>>>>>>> Thank you for explanation.
>>>>>>> 
>>>>>>> Ard, I tried the patch, but it cannot be applied to the latest (pulled a
>>> minute ago, git-svn-id:
>>> https://svn.code.sf.net/p/edk2/code/trunk/edk2@18732 6f19259b-4bc3-
>>> 4df7-8a09-765794883524)
>>>>>>> tree: all 3 hunks failed. Which commit should I be based on to apply the
>>> patch?
>>>>>>> 
>>>>>>> Anyway I found the lines manually and changed them. However, when
>>> I try to
>>>>>>> 
>>>>>>> source /uefi/ArmPlatformPkg/Scripts/Ds5/cmd_load_symbols.py -f
>>> (0x85000000,0x00280000) -m (0x80000000,0x40000000) -a
>>>>>>> I am getting
>>>>>>> 
>>>>>>> ERROR(?): ValueError: need more than 1 value to unpack
>>>>>>>  File " /uefi/ArmPlatformPkg/Scripts/Ds5/cmd_load_symbols.py", line
>>> 94, in <module>>
>>>>>>>    armplatform_debugger.load_all_symbols()
>>>>>>> ERROR(CMD656):
>>>>>>> # in /uefi/BroadcomPlatformPkg/NS2Pkg/Scripts/armpkg_syms.ds:2
>>> while executing: source
>>> /uefi/ArmPlatformPkg/Scripts/Ds5/cmd_load_symbols.py -f
>>> (0x85000000,0x00280000) -m (0x80000000,0x40000000) -a
>>>>>>> ! The script /uefi/ArmPlatformPkg/Scripts/Ds5/cmd_load_symbols.py
>>> failed to complete due to an error during execution of the script
>>>>>>> 
>> [...]
>> Ard, I got a pretty much the same issue when I tried to do some debugging in 
>> the ShellPkg.
>> Except Shell I can perfectly debug everything.
>> 
>> 1. source / uefi/ArmPlatformPkg/Scripts/Ds5/cmd_load_symbols.py -f 
>> (0x85000000,0x00280000) -m (0x80000000,0x40000000) -a
>>     loads symbols fine, but does not recognize any module matching the 
>> current PC if stopped in the shell.
>> 2. Loading symbols with "add-symbol-file 
>> /uefi/Build/NS2Pkg/DEBUG_GCC49/AARCH64/ShellPkg/Application/Shell/Shell/DEBUG/Shell.dll
>>  0xB6926000"
>>    "recognizes" modules (wrong ones though) but the source code does not 
>> match disassembly.
>> 
>> So with Shell debug using DS-5 the code does not match the source.
>> Is there a special linker setting I am missing or a technique?
>> I am using the latest UEFI code from
>> https://github.com/tianocore/edk2.git
>> 
> 
> I am sorry, but since I don't have access to DS-5, I am not sure how
> to debug this.
> 
> Is there any way for you to figure how much the offset is between the
> current and the correct location? I.e., by looking at the ELF asm dump
> and the instructions around the PC? Something in the order of 0x260
> perhaps?
> 

The map file in the build output directory is useful for tracking down these 
kind of issues. 

Issues like this usually relate to the fact that PE/COFF images load the 
PE/COFF header into memory when the code is loaded, while ELF (and Mach-O) do 
not do this. This means you have to shift the link address from 0 to the size 
of the PE/COFF header (0x260 is one possible size of the PE/COFF header). 
Basically it is part of the ELF to PE/COFF conversion magic. Maybe the ELF to 
PE/COFF conversion tool and the debugger script our out of sync? 

The other thing to look out for is TE (Tiano Executable) images. They have a 
stripped down version of a PE/COFF header to save space, and they are mostly 
used for PEI modules that run from FLASH. You have to add a negative adjustment 
to get the symbols loaded correctly. 

Thanks,

Andrew Fish

> -- 
> Ard.
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to