From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-x229.google.com (mail-wm0-x229.google.com [IPv6:2a00:1450:400c:c09::229]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id BCDCD1A1EC4 for ; Wed, 7 Sep 2016 02:48:05 -0700 (PDT) Received: by mail-wm0-x229.google.com with SMTP id w12so21861691wmf.0 for ; Wed, 07 Sep 2016 02:48:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=tjiqgl/iK6akRIzNbOnjp/301HwyLmd3WKOB3XSTvqA=; b=jTv1mYEgHF5m/O93I5AiJVIzcZz+rNjSU8MYhsoA50aS/JAj49A4h+SyCeWqbNmAhe 30XOJ2j8DFjBqVWM+0PxfpdEjtkiAfXs6rx3ymb3F/7SK/vD5PKbdXc6QX90A9n0lFZi RMVTlbkwCQBazavs0tMARdm2Jxqye+iLUbN391UMXfnoUG3M6cncOjklA4TEv5R0A50B hQ2cqKwZXaorVMtrLoznYEjTxg5ieTyI1FrfCi/apDcEspXuLGU+xvaGRz5jv3EDpOFf R0xEhrjLSMRz/v5wFweNPm+bxKC5QrZKxiYbeefen/5fW51VgKPBNA9B3AN2I/cuzX9K 7+dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=tjiqgl/iK6akRIzNbOnjp/301HwyLmd3WKOB3XSTvqA=; b=Wl1qs7r4X/vX2Vf9/veWN3sPRrTsHHPJqF+sIHoGmi5FrTxkwmZmj2p63k4sCP+s/L NdQG7SDXk8eQV8ymxLX7jo/9RPVLn4NU1FYlLjXjYo+NAMUXd1RVcYrU3NjXSouktKqe 9uVxGugA/x4j03EpbkRxTGga+qzVk4+i0qL1XrHM0E+AM7eGKOGv+UM+jx7hMyLl+zRs SRAZ54eaIq61mCZ6tauzqihBnVGwEimvpiyUahTMA/uNKcDC5/HpLO/SuTE4g4q9farj WR+mT4umy9AHY9TAKM3X4CDh+Vadzh7dkPukeRzeivpw1imeCmVxAJGoJLWqiDM8xh3F siJA== X-Gm-Message-State: AE9vXwPzstLIGsifgAteK4xxunR+hljpwkhey6EMg9n9Ypvw2kq8d0T2UWLcBtSHE9IQ43NqnGexCSTJteHztQ== X-Received: by 10.28.155.212 with SMTP id d203mr2757485wme.103.1473241684369; Wed, 07 Sep 2016 02:48:04 -0700 (PDT) MIME-Version: 1.0 Received: by 10.28.0.204 with HTTP; Wed, 7 Sep 2016 02:48:03 -0700 (PDT) In-Reply-To: <1473236515-8318-2-git-send-email-ard.biesheuvel@linaro.org> References: <1473236515-8318-1-git-send-email-ard.biesheuvel@linaro.org> <1473236515-8318-2-git-send-email-ard.biesheuvel@linaro.org> From: Michael Zimmermann Date: Wed, 7 Sep 2016 11:48:03 +0200 Message-ID: To: Ard Biesheuvel Cc: "edk2-devel@lists.01.org" , Leif Lindholm X-Content-Filtered-By: Mailman/MimeDel 2.1.21 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: Wed, 07 Sep 2016 09:48:06 -0000 Content-Type: text/plain; charset=UTF-8 nice, can we do this for ARM too? I usually need to add DEBUG((...))'s all over the place for hours until I found the reason for a fault. Thanks Michael On Wed, Sep 7, 2016 at 10: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. > > 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 >