public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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



  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