From: Mark Wielaard Date: Wed, 11 Apr 2018 08:37:45 +0000 (+0200) Subject: aarch64: Add default cfi rule to restore SP from CFA address. X-Git-Tag: elfutils-0.171~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f881459ffc95b6fad51aa055a158ee14814073aa;p=thirdparty%2Felfutils.git aarch64: Add default cfi rule to restore SP from CFA address. The CFA is set by default to the stack pointer of the previous frame. So that is also how we can always restore the SP. This default aarch64 CFI rule is necessary on Fedora 28 with GCC8 to make the run-deleted.sh and run-backtrace-dwarf.sh testcases work. Signed-off-by: Mark Wielaard --- diff --git a/backends/ChangeLog b/backends/ChangeLog index b52580132..57baea095 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,8 @@ +2018-04-11 Mark Wielaard + + * aarch64_cfi.c (aarch64_abi_cfi): Add rule for restoring SP from + CFA address. + 2018-02-15 Mark Wielaard * ppc_initreg.c: Include ptrace.h before system.h and sys/user.h. diff --git a/backends/aarch64_cfi.c b/backends/aarch64_cfi.c index acbb9b695..a5579ab1d 100644 --- a/backends/aarch64_cfi.c +++ b/backends/aarch64_cfi.c @@ -1,5 +1,5 @@ -/* arm ABI-specified defaults for DWARF CFI. - Copyright (C) 2013 Red Hat, Inc. +/* arm64 ABI-specified defaults for DWARF CFI. + Copyright (C) 2013, 2018 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -62,6 +62,9 @@ aarch64_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info) /* The Frame Pointer (FP, r29) and Link Register (LR, r30). */ SV (29), SV (30), + /* The Stack Pointer (r31) is restored from CFA address by default. */ + DW_CFA_val_offset, ULEB128_7 (31), ULEB128_7 (0), + /* Callee-saved fpregs v8-v15. v0 == 64. */ SV (72), SV (73), SV (74), SV (75), SV (76), SV (77), SV (78), SV (79), diff --git a/tests/ChangeLog b/tests/ChangeLog index bcb24dc4d..c9403fbf9 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2018-04-11 Mark Wielaard + + * run-addrcfi.sh: Adjust expected rule for aarch64 sp. + 2018-04-03 Mark Wielaard * testfileranges4.debug.bz2: New testfile. diff --git a/tests/run-addrcfi.sh b/tests/run-addrcfi.sh index 376a6dc31..fd89d025a 100755 --- a/tests/run-addrcfi.sh +++ b/tests/run-addrcfi.sh @@ -3637,7 +3637,7 @@ dwarf_cfi_addrframe (.eh_frame): no matching address range integer reg28 (x28): same_value integer reg29 (x29): same_value integer reg30 (x30): same_value - integer reg31 (sp): undefined + integer reg31 (sp): location expression: call_frame_cfa stack_value integer reg33 (elr): undefined FP/SIMD reg64 (v0): undefined FP/SIMD reg65 (v1): undefined