Message ID | 1473444037-15016-1-git-send-email-ard.biesheuvel@linaro.org |
---|---|
State | Accepted |
Commit | 062f9fd2cfaad09f6dd0e302094bc030827eb706 |
Headers | show |
On 10 September 2016 at 01:23, Andrew Fish <afish@apple.com> wrote: > > >> 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. > Yeah, well, you made a good point. > 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. > That sounds straightforward enough. Still, I am going to let someone with better python foo pick up that part Thanks, Ard. _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On 12 September 2016 at 09:32, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > On 10 September 2016 at 01:23, Andrew Fish <afish@apple.com> wrote: >> >> >>> 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 >>> >> Leif: any comments? _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On Wed, Sep 14, 2016 at 02:28:37PM +0100, Ard Biesheuvel wrote: > On 12 September 2016 at 09:32, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > > On 10 September 2016 at 01:23, Andrew Fish <afish@apple.com> wrote: > >> > >> > >>> 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 > >>> > >> > > Leif: any comments? Was just hanging back to see if there was more discussion forthcoming. Looks good to me: Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
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; + } } } }
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 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(-) -- 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel