On Wed, Jun 28, 2023 at 12:13:49AM +0000, Nadav Amit wrote: > From: Nadav Amit <namit@xxxxxxxxxx> > > My recent experience in debugging ARM64 tests on EFI was not as fun as I > expected it to be. > > There were several reasons for that besides the questionable definition > of "fun": > > 1. ARM64 is not compiled with frame pointers and there is no stack > unwinder when the stack is dumped. > > 2. Building an EFI drops the debug information. > > 3. The addresses that are printed on dump_stack() and the use of GDB > are hard because taking code relocation into account is non trivial. > > The patches help both ARM64 and EFI for this matter. The image address > is printed when EFI is used to allow the use of GDB. Symbols are emitted > into a separate debug file. The frame pointer is included and special > entry is added upon an exception to allow backtracing across > exceptions. > > [ PowerPC: Please ack patches 1,2 ] > [ x86: Please ack patches 1,2,5 ] > > v2->v3: > * Consider PowerPC for reloc and related fixes [Andrew] > > v1->v2: > * Andrew comments [see in individual patches] > * Few cleanups > > Nadav Amit (6): > efi: keep efi debug information in a separate file > lib/stack: print base addresses on relocation setups > arm64: enable frame pointer and support stack unwinding > arm64: stack: update trace stack on exception > efi: print address of image > arm64: dump stack on bad exception > > .gitignore | 1 + > Makefile | 2 +- > arm/Makefile.arm | 3 -- > arm/Makefile.arm64 | 2 ++ > arm/Makefile.common | 8 +++++- > arm/cstart64.S | 13 +++++++++ > lib/arm64/asm-offsets.c | 6 +++- > lib/arm64/asm/stack.h | 3 ++ > lib/arm64/processor.c | 1 + > lib/arm64/stack.c | 62 +++++++++++++++++++++++++++++++++++++++++ > lib/efi.c | 4 +++ > lib/stack.c | 31 +++++++++++++++++++-- > powerpc/Makefile.common | 1 + > x86/Makefile.common | 5 +++- > 14 files changed, 133 insertions(+), 9 deletions(-) > create mode 100644 lib/arm64/stack.c > > -- > 2.34.1 > Merged. arm64 backtraces will be really nice to have! Thanks, Nadav! drew