From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-in2.apple.com (mail-out2.apple.com [17.151.62.25]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id BD4D21A1DF9 for ; Fri, 9 Sep 2016 09:03:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; d=apple.com; s=mailout2048s; c=relaxed/simple; q=dns/txt; i=@apple.com; t=1473437037; x=2337350637; h=From:Sender:Reply-To:Subject:Date:Message-id:To:Cc:MIME-version:Content-type: Content-transfer-encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-reply-to:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=WghZs6tb33Hk5PQqRCCfm4AwBBwdNNhRFnRQtjcdj9c=; b=RfoPGU0Q+MdfIsZcdzoO5fWlS4DbvfFSDgHOq3EY9prAkg9JzDpDuMK01iDPRtcj 9Vap8xBSDELovaiYIZFRXt8zPIXYmU4AOdyhUHY05g2uj+KUOSWSGpJ71R6F62fU hlwwymf+erFWsP8IniCnBfYowPkGXniKqag1nIuOnqjiKLfraBPS+4/t6+uf4sGJ SNG30B/Ni1PXP+2xbJ5yBu8HY0Izut2w0JU2tq2+hAXE/WoE0mKHJxFSItPcFtbV FzzwlAxr0roAPzhW83U1irjmheCRb1MR24u4Aer7vhZcl0px3wgYDy+cMzY2ez+n s3ub/HvVVp8+lkYMP7/LkA==; Received: from relay2.apple.com (relay2.apple.com [17.128.113.67]) by mail-in2.apple.com (Apple Secure Mail Relay) with SMTP id E7.4E.10360.D6DD2D75; Fri, 9 Sep 2016 09:03:57 -0700 (PDT) X-AuditID: 11973e11-f79e76d000002878-1c-57d2dd6de4b8 Received: from nwk-mmpp-sz12.apple.com (nwk-mmpp-sz12.apple.com [17.128.115.204]) by relay2.apple.com (Apple SCV relay) with SMTP id 8E.4F.09148.D6DD2D75; Fri, 9 Sep 2016 09:03:57 -0700 (PDT) MIME-version: 1.0 Received: from [17.153.45.195] by nwk-mmpp-sz12.apple.com (Oracle Communications Messaging Server 8.0.1.1.0 64bit (built Jun 15 2016)) with ESMTPSA id <0OD800LBDVAK6T20@nwk-mmpp-sz12.apple.com>; Fri, 09 Sep 2016 09:03:57 -0700 (PDT) Sender: afish@apple.com From: Andrew Fish In-reply-to: <1473236515-8318-2-git-send-email-ard.biesheuvel@linaro.org> Date: Fri, 09 Sep 2016 09:03:55 -0700 Cc: edk2-devel@lists.01.org, leif.lindholm@linaro.org Message-id: References: <1473236515-8318-1-git-send-email-ard.biesheuvel@linaro.org> <1473236515-8318-2-git-send-email-ard.biesheuvel@linaro.org> To: Ard Biesheuvel X-Mailer: Apple Mail (2.3112) X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrFLMWRmVeSWpSXmKPExsUi2FDorJt791K4wYkpwhb/P+xmtNhz6Ciz xafde1gcmD3uXNvD5tE9+x9LAFMUl01Kak5mWWqRvl0CV8bWmS9ZCtbbVTzvj2tgXGvWxcjJ ISFgIrHq3npGCFtM4sK99WxdjFwcQgJ7GSWa5j5ghytqPMQKkTjEKPHt1xawDl4BQYkfk++x dDFycDALyEscPC8LEmYW0JL4/qiVBaL+HaNE85dbTCAJYQFxiXdnNjFD2AUSpybOAbPZBJQl Vsz/ALaMU8BT4v36ZjCbRUBVYuaPNlaIoaYSm4/OZYPYayOxbucCqAXtjBI3zrWygRwhIqAn 0dIF9ZmsxL4NC9gg7C1sErP6yyYwisxCcvYshLNnITl7ASPzKkah3MTMHN3MPCO9xIKCnFS9 5PzcTYygwJ9uJ7iD8fgqq0OMAhyMSjy8G3ZfChdiTSwrrsw9xCjNwaIkzrtt5cVwIYH0xJLU 7NTUgtSi+KLSnNTiQ4xMHJxSDYwXjytKbTBp37po/k6mrznT01mVNycoLPja5hJ0ZWNRoqXD Vgk25+sWbamavao/nXRrTl/U/sNwZPX6oAn+RVbFxvVP/i9xUChrn+6+sP3PR9W0F9OzZHqK zA8W9+f9WeA1YdKbeY8n9//x/zWfdd3ET1P++H/xzH12osk+pt92zZH+Jb7XPBWVWIozEg21 mIuKEwHAHiYPXQIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpjkeLIzCtJLcpLzFFi42IRbCg+o5t791K4wa5j/Bb/P+xmtNhz6Ciz xafde1gcmD3uXNvD5tE9+x9LAFMUl01Kak5mWWqRvl0CV8bWmS9ZCtbbVTzvj2tgXGvWxcjJ ISFgIrGq8RArhC0mceHeerYuRi4OIYFDjBLffm1hBEnwCghK/Jh8j6WLkYODWUBe4uB5WZAw s4CWxPdHrSwQ9e8YJZq/3GICSQgLiEu8O7OJGcIukDg1cQ6YzSagLLFi/gd2EJtTwFPi/fpm MJtFQFVi5o82VoihphKbj85lg9hrI7Fu5wKoBe2MEjfOtbKBHCEioCfR0gX1gKzEvg0L2CYw Cs5CcuoshFNnITl1ASPzKkaBotScxEojvcSCgpxUveT83E2M4FAtdN7BeGyZ1SFGAQ5GJR7e iJ2XwoVYE8uKK3OBYcHBrCTCe+Q6UIg3JbGyKrUoP76oNCe1+BBjMtD9E5mlRJPzgXGUVxJv aGJiYGJsbGZsbG5iTpqwkjjv1iNHw4UE0hNLUrNTUwtSi2C2MHFwSjUwRotwuj033SdnfI+3 NPi17Bz9TarhN/4ci/nMJHnvqeUyB1F3ZpvntS9mX+lOzD2/f9mMkwuSWyw3H2jYzPNecS+j 6Sc5ibwrdcUtRhY9D2ab3DOS+XUr8CiHygqDzS97116b9/CnhnvJm8BZiYdmnXdguLDua0yv yKRna1+9OsEawhhoVCv3QomlOCPRUIu5qDgRADh0awmZAgAA Subject: Re: [PATCH 2/2] ArmPkg/DefaultExceptionHandlerLib AARCH64: add minimal backtrace to crash dump X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Sep 2016 16:03:58 -0000 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII > On Sep 7, 2016, at 1:21 AM, Ard Biesheuvel wrote: > > When dumping the CPU state after an unhandled fault, walk the stack > frames and decode the return addresses so we can show a minimal > backtrace. Unfortunately, we do not have sufficient information to > show the function names, but at least we can see the modules and the > return addresses inside the modules. > Ard, In these kind of dumps I find it useful to also display the offset into the PE/COFF image. ArmVeNorFlashDxe.dll (0x00000000F5EA4AE8) loaded at 0x00000000F5E90000 offset 0x00014AE9 The reason is it makes it easy to use the gdb list command to display the C source code. gdb /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG/ArmVeNorFlashDxe.dll (gdb) list * 0x14AE9 This assumes the .dll is the ELF linked near zero to accommodate the PE/COFF header, or PE/COFF. For TE you need to know the adjustment value from the TE header. Seems like it would be possible to write a script to symbolicate the stack trace on the build machine. It might be more useful to have the summary 1st (I have to admit I like things to line up in columns): Synchronous Exception at 0x00000000F5EA4C8C PC 0x00000000F5EA4C8C (0x00000000F5E90000+0x00014C8C) ArmVeNorFlashDxe.dll /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG PC 0x00000000F5EA4AE8 (0x00000000F5E90000+0x00014AE9) ArmVeNorFlashDxe.dll /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG PC 0x00000000F5EA1BFC (0x00000000F5E90000+0x00011BFC) ArmVeNorFlashDxe.dll /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG In the example above I also made the the exception line the summary and showed that location like the rest of the frame. This seems to be the way debuggers like to do it so it seems to match with what a developer would expect. Thanks, Andrew Fish PS. Just saw the remove the path commit. So maybe something like: Synchronous Exception at 0x00000000F5EA4C8C PC 0x00000000F5EA4C8C (0x00000000F5E90000+0x00014C8C) ArmVeNorFlashDxe.dll [1] PC 0x00000000F5EA4AE8 (0x00000000F5E90000+0x00014AE9) ArmVeNorFlashDxe.dll [1] PC 0x00000000F5EA1BFC (0x00000000F5E90000+0x00011BFC) ArmVeNorFlashDxe.dll [1] PC 0x00000000FADC454C (0x00000000FADC3000+0x0000154C) Fat.dll [2] [1] /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG [2] /work/jenkins/workspace/ap-uefi-bin/EDK2_ARCH/ARM/EDK2_BINARY/FatPkg/label/sas-sw/Build/Fat/RELEASE_GCC49/AARCH64/FatPkg/EnhancedFatDxe/Fat/DEBUG/ I think your example points out why it is useful. Also the Shell or application running at he Shell could come from different locations, but still be on your system. Not to mention if you are debugging you might as well dump out all the information you have. > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel > --- > > Example output: > > Synchronous Exception at 0x00000000F5EA4C8C > /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG/ArmVeNorFlashDxe.dll loaded at 0x00000000F5E90000 > called from /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG/ArmVeNorFlashDxe.dll (0x00000000F5EA4AE8) loaded at 0x00000000F5E90000 > called from /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG/ArmVeNorFlashDxe.dll (0x00000000F5EA1BFC) loaded at 0x00000000F5E90000 > called from /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG/ArmVeNorFlashDxe.dll (0x00000000F5EA23F4) loaded at 0x00000000F5E90000 > called from /work/jenkins/workspace/ap-uefi-bin/EDK2_ARCH/ARM/EDK2_BINARY/FatPkg/label/sas-sw/Build/Fat/RELEASE_GCC49/AARCH64/FatPkg/EnhancedFatDxe/Fat/DEBUG/Fat.dll (0x00000000FADC454C) loaded at 0x00000000FADC3000 > called from /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll (0x00000000FE47C868) loaded at 0x00000000FE471000 > called from /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe/DEBUG/BdsDxe.dll (0x00000000FAE2C50C) loaded at 0x00000000FAE01000 > called from /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe/DEBUG/BdsDxe.dll (0x00000000FAE2C674) loaded at 0x00000000FAE01000 > called from /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe/DEBUG/BdsDxe.dll (0x00000000FAE2C264) loaded at 0x00000000FAE01000 > called from /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe/DEBUG/BdsDxe.dll (0x00000000FAE36998) loaded at 0x00000000FAE01000 > called from /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe/DEBUG/BdsDxe.dll (0x00000000FAE03668) loaded at 0x00000000FAE01000 > called from /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll (0x00000000FE4733F0) loaded at 0x00000000FE471000 > called from /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll (0x00000000FE4724A0) loaded at 0x00000000FE471000 > called from /home/ard/build/edk2/Build/ArmVExpress-FVP-AArch64/DEBUG_GCC5/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll (0x00000000FE472024) loaded at 0x00000000FE471000 > --- > .../AArch64/DefaultExceptionHandler.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c b/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c > index 31fc936b21ff..84b442f2b6f4 100644 > --- a/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c > +++ b/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c > @@ -152,9 +152,30 @@ DefaultExceptionHandler ( > CHAR8 *Pdb; > UINTN ImageBase; > UINTN PeCoffSizeOfHeader; > + UINT64 *Fp; > + > Pdb = GetImageName (SystemContext.SystemContextAArch64->ELR, &ImageBase, &PeCoffSizeOfHeader); > if (Pdb != NULL) { > DEBUG ((EFI_D_ERROR, "%a loaded at 0x%016lx \n", 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", > + Pdb, SystemContext.SystemContextAArch64->LR, ImageBase)); > + } > + for (Fp = (UINT64 *)SystemContext.SystemContextAArch64->FP; > + *Fp != 0; > + Fp = (UINT64 *)Fp[0]) { > + if (Fp[1] == SystemContext.SystemContextAArch64->LR) { > + continue; > + } > + Pdb = GetImageName (Fp[1], &ImageBase, &PeCoffSizeOfHeader); > + if (Pdb != NULL) { > + DEBUG ((EFI_D_ERROR, "called from %a (0x%016lx) loaded at 0x%016lx \n", > + Pdb, Fp[1], ImageBase)); > + } > + } > } > DEBUG_CODE_END (); > > -- > 2.7.4 > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel