From: Andrew Fish <afish@apple.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: edk2-devel@lists.01.org, leif.lindholm@linaro.org
Subject: Re: [PATCH] ArmPkg/DefaultExceptionHandlerLib: improve formatting of backtrace
Date: Fri, 09 Sep 2016 17:23:16 -0700 [thread overview]
Message-ID: <4F48B3E6-DE76-4142-88D1-F7B99E59DEF0@apple.com> (raw)
In-Reply-To: <1473444037-15016-1-git-send-email-ard.biesheuvel@linaro.org>
> On Sep 9, 2016, at 11:00 AM, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
>
> Implement the backtrace formattting suggested by Andrew, i.e.,
>
> IRQ Exception at 0x000000005BE182B0
> PC 0x00005BE182B0 (0x00005BE14000+0x000042B0) [ 0] ArmCpuDxe.dll
> PC 0x00005BE15770 (0x00005BE14000+0x00001770) [ 0] ArmCpuDxe.dll
> PC 0x00005EF08CC8 (0x00005EEEB000+0x0001DCC8) [ 1] DxeCore.dll
> PC 0x00005EF09008 (0x00005EEEB000+0x0001E008) [ 1] DxeCore.dll
> PC 0x00005EEF6ACC (0x00005EEEB000+0x0000BACC) [ 1] DxeCore.dll
> PC 0x00005EF0963C (0x00005EEEB000+0x0001E63C) [ 1] DxeCore.dll
> PC 0x00005EF09A38 (0x00005EEEB000+0x0001EA38) [ 1] DxeCore.dll
> PC 0x00005EF01560 (0x00005EEEB000+0x00016560) [ 1] DxeCore.dll
> PC 0x00005EF02FB4 (0x00005EEEB000+0x00017FB4) [ 1] DxeCore.dll
> PC 0x00005EF03098 (0x00005EEEB000+0x00018098) [ 1] DxeCore.dll
> PC 0x00005EF0460C (0x00005EEEB000+0x0001960C) [ 1] DxeCore.dll
> PC 0x00005EF005C4 (0x00005EEEB000+0x000155C4) [ 1] DxeCore.dll
> PC 0x00005EF00360 (0x00005EEEB000+0x00015360) [ 1] DxeCore.dll
> PC 0x00005EF003C8 (0x00005EEEB000+0x000153C8) [ 1] DxeCore.dll
> PC 0x00005EF128D0 (0x00005EEEB000+0x000278D0) [ 1] DxeCore.dll
> PC 0x00005EF12930 (0x00005EEEB000+0x00027930) [ 1] DxeCore.dll
> PC 0x00005EEEF594 (0x00005EEEB000+0x00004594) [ 1] DxeCore.dll
> PC 0x00005EF0CF18 (0x00005EEEB000+0x00021F18) [ 1] DxeCore.dll
> PC 0x00005EF1A310 (0x00005EEEB000+0x0002F310) [ 1] DxeCore.dll
> PC 0x00005EEF1808 (0x00005EEEB000+0x00006808) [ 1] DxeCore.dll
> PC 0x00005EEF1E48 (0x00005EEEB000+0x00006E48) [ 1] DxeCore.dll
> PC 0x00005EF0A838 (0x00005EEEB000+0x0001F838) [ 1] DxeCore.dll
> PC 0x00005EEED70C (0x00005EEEB000+0x0000270C) [ 1] DxeCore.dll
> PC 0x00005EEEC93C (0x00005EEEB000+0x0000193C) [ 1] DxeCore.dll
> PC 0x00005EEEC024 (0x00005EEEB000+0x00001024) [ 1] DxeCore.dll
>
> [ 0] /home/ard/build/edk2/Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/AARCH64/ArmPkg/Drivers/CpuDxe/CpuDxe/DEBUG/ArmCpuDxe.dll
> [ 1] /home/ard/build/edk2/Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll
>
Ard,
I was just trying to start a conversation, but I can't complain about a patch.
Given I seem to be having a good day with "The Force"(tm)... To process the clipboard Python tkinter makes it easy it does. So you can cut the backtrace from the terminal and run the script to symbolicate, or use a file as input.
Thanks,
Andrew Fish
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
> .../AArch64/DefaultExceptionHandler.c | 56 ++++++++++++++--------
> 1 file changed, 37 insertions(+), 19 deletions(-)
>
> diff --git a/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c b/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c
> index 1251bb8bd6fa..2f9c2ede37c1 100644
> --- a/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c
> +++ b/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c
> @@ -169,31 +169,49 @@ DefaultExceptionHandler (
> SerialPortWrite ((UINT8 *) Buffer, CharCount);
>
> DEBUG_CODE_BEGIN ();
> - CHAR8 *Pdb;
> + CHAR8 *Pdb, *PrevPdb;
> UINTN ImageBase;
> UINTN PeCoffSizeOfHeader;
> UINT64 *Fp;
> + UINT64 RootFp[2];
> + UINTN Idx;
>
> - Pdb = GetImageName (SystemContext.SystemContextAArch64->ELR, &ImageBase, &PeCoffSizeOfHeader);
> + PrevPdb = Pdb = GetImageName (SystemContext.SystemContextAArch64->ELR, &ImageBase, &PeCoffSizeOfHeader);
> if (Pdb != NULL) {
> - DEBUG ((EFI_D_ERROR, "%a loaded at 0x%016lx \n", BaseName (Pdb), ImageBase));
> -
> - Pdb = GetImageName (SystemContext.SystemContextAArch64->LR, &ImageBase,
> - &PeCoffSizeOfHeader);
> - if (Pdb != NULL) {
> - DEBUG ((EFI_D_ERROR, "called from %a (0x%016lx) loaded at 0x%016lx \n",
> - BaseName (Pdb), SystemContext.SystemContextAArch64->LR, ImageBase));
> - }
> - for (Fp = (UINT64 *)SystemContext.SystemContextAArch64->FP;
> - *Fp != 0;
> - Fp = (UINT64 *)Fp[0]) {
> - if (Fp[1] == SystemContext.SystemContextAArch64->LR) {
> - continue;
> + DEBUG ((EFI_D_ERROR, "PC 0x%012lx (0x%012lx+0x%08x) [ 0] %a\n",
> + SystemContext.SystemContextAArch64->ELR, ImageBase,
> + SystemContext.SystemContextAArch64->ELR - ImageBase, BaseName (Pdb)));
> +
> + if ((UINT64 *)SystemContext.SystemContextAArch64->FP != 0) {
> + Idx = 0;
> +
> + RootFp[0] = ((UINT64 *)SystemContext.SystemContextAArch64->FP)[0];
> + RootFp[1] = ((UINT64 *)SystemContext.SystemContextAArch64->FP)[1];
> + if (RootFp[1] != SystemContext.SystemContextAArch64->LR) {
> + RootFp[0] = SystemContext.SystemContextAArch64->FP;
> + RootFp[1] = SystemContext.SystemContextAArch64->LR;
> + }
> + for (Fp = RootFp; Fp[0] != 0; Fp = (UINT64 *)Fp[0]) {
> + Pdb = GetImageName (Fp[1], &ImageBase, &PeCoffSizeOfHeader);
> + if (Pdb != NULL) {
> + if (Pdb != PrevPdb) {
> + Idx++;
> + PrevPdb = Pdb;
> + }
> + DEBUG ((EFI_D_ERROR, "PC 0x%012lx (0x%012lx+0x%08x) [% 2d] %a\n",
> + Fp[1], ImageBase, Fp[1] - ImageBase, Idx, BaseName (Pdb)));
> + }
> }
> - Pdb = GetImageName (Fp[1], &ImageBase, &PeCoffSizeOfHeader);
> - if (Pdb != NULL) {
> - DEBUG ((EFI_D_ERROR, "called from %a (0x%016lx) loaded at 0x%016lx \n",
> - BaseName (Pdb), Fp[1], ImageBase));
> + PrevPdb = Pdb = GetImageName (SystemContext.SystemContextAArch64->ELR, &ImageBase, &PeCoffSizeOfHeader);
> + DEBUG ((EFI_D_ERROR, "\n[ 0] %a\n", Pdb));
> +
> + Idx = 0;
> + for (Fp = RootFp; Fp[0] != 0; Fp = (UINT64 *)Fp[0]) {
> + Pdb = GetImageName (Fp[1], &ImageBase, &PeCoffSizeOfHeader);
> + if (Pdb != NULL && Pdb != PrevPdb) {
> + DEBUG ((EFI_D_ERROR, "[% 2d] %a\n", ++Idx, Pdb));
> + PrevPdb = Pdb;
> + }
> }
> }
> }
> --
> 2.7.4
>
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
next prev parent reply other threads:[~2016-09-10 0:23 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-09 18:00 [PATCH] ArmPkg/DefaultExceptionHandlerLib: improve formatting of backtrace Ard Biesheuvel
2016-09-10 0:23 ` Andrew Fish [this message]
2016-09-12 8:32 ` Ard Biesheuvel
2016-09-14 13:28 ` Ard Biesheuvel
2016-09-14 13:35 ` Leif Lindholm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F48B3E6-DE76-4142-88D1-F7B99E59DEF0@apple.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox