Mangling, currently only used on AArch64 for return address signing, is an internal representation that should not be exposed via __builtin_return_address return value, __builtin_eh_return handler argument, _Unwind_DebugHook handler argument. Note that a mangled address might not even fit into a void *, e.g. with AArch64 ilp32 ABI the return address is stored as 64bit, so the mangled return address cannot be accessed via _Unwind_GetPtr. This patch changes the unwinder hooks as follows: MD_POST_EXTRACT_ROOT_ADDR is removed: root address comes from __builtin_return_address which is not mangled. MD_POST_EXTRACT_FRAME_ADDR is renamed to MD_DEMANGLE_RETURN_ADDR, it now operates on _Unwind_Word instead of void *, so the hook should work when return address signing is enabled on AArch64 ilp32. (But for that __builtin_aarch64_autia1716 should be fixed to operate on 64bit input instead of a void *.) MD_POST_FROB_EH_HANDLER_ADDR is removed: it is the responsibility of __builtin_eh_return to do the mangling if necessary. 2020-07-13 Szabolcs Nagy <szabolcs.nagy@arm.com> libgcc/ChangeLog: PR target/94891 * config/aarch64/aarch64-unwind.h (MD_POST_EXTRACT_ROOT_ADDR): Remove. (MD_POST_FROB_EH_HANDLER_ADDR): Remove. (MD_POST_EXTRACT_FRAME_ADDR): Rename to ... (MD_DEMANGLE_RETURN_ADDR): This. (aarch64_post_extract_frame_addr): Rename to ... (aarch64_demangle_return_addr): This. (aarch64_post_frob_eh_handler_addr): Remove. * unwind-dw2.c (uw_update_context): Demangle return address. (uw_frob_return_addr): Remove. (cherry picked from commit b097c7a27fb0796b2653a1d003cbf6b7a69d8961)
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
aarch64 | Loading commit data... | |
alpha | Loading commit data... | |
arc | Loading commit data... | |
arm | Loading commit data... | |
avr | Loading commit data... | |
bfin | Loading commit data... | |
bpf | Loading commit data... | |
c6x | Loading commit data... | |
cr16 | Loading commit data... | |
cris | Loading commit data... | |
csky | Loading commit data... | |
epiphany | Loading commit data... | |
fr30 | Loading commit data... | |
frv | Loading commit data... | |
ft32 | Loading commit data... | |
gcn | Loading commit data... | |
h8300 | Loading commit data... | |
i386 | Loading commit data... | |
ia64 | Loading commit data... | |
iq2000 | Loading commit data... | |
libbid | Loading commit data... | |
lm32 | Loading commit data... | |
m32c | Loading commit data... | |
m32r | Loading commit data... | |
m68k | Loading commit data... | |
mcore | Loading commit data... | |
microblaze | Loading commit data... | |
mips | Loading commit data... | |
mmix | Loading commit data... | |
moxie | Loading commit data... | |
msp430 | Loading commit data... | |
nds32 | Loading commit data... | |
nios2 | Loading commit data... | |
nvptx | Loading commit data... | |
or1k | Loading commit data... | |
pa | Loading commit data... | |
pdp11 | Loading commit data... | |
pru | Loading commit data... | |
riscv | Loading commit data... | |
rl78 | Loading commit data... | |
rs6000 | Loading commit data... | |
rx | Loading commit data... | |
s390 | Loading commit data... | |
score | Loading commit data... | |
sh | Loading commit data... | |
sol2 | Loading commit data... | |
sparc | Loading commit data... | |
stormy16 | Loading commit data... | |
tilegx | Loading commit data... | |
tilepro | Loading commit data... | |
v850 | Loading commit data... | |
vax | Loading commit data... | |
visium | Loading commit data... | |
vms | Loading commit data... | |
xtensa | Loading commit data... | |
darwin-64.c | Loading commit data... | |
darwin-crt-tm.c | Loading commit data... | |
darwin-crt3.c | Loading commit data... | |
darwin10-unwind-find-enc-func.c | Loading commit data... | |
gthr-lynx.h | Loading commit data... | |
gthr-rtems.h | Loading commit data... | |
gthr-vxworks-cond.c | Loading commit data... | |
gthr-vxworks-thread.c | Loading commit data... | |
gthr-vxworks-tls.c | Loading commit data... | |
gthr-vxworks.c | Loading commit data... | |
gthr-vxworks.h | Loading commit data... | |
hardfp.c | Loading commit data... | |
libgcc-glibc.ver | Loading commit data... | |
libgcc-libsystem.ver | Loading commit data... | |
no-sfp-machine.h | Loading commit data... | |
no-unwind.h | Loading commit data... | |
t-crtfm | Loading commit data... | |
t-crtstuff-pic | Loading commit data... | |
t-darwin | Loading commit data... | |
t-dfprules | Loading commit data... | |
t-eh-dw2-dip | Loading commit data... | |
t-fdpbit | Loading commit data... | |
t-fixedpoint-gnu-prefix | Loading commit data... | |
t-fpbit | Loading commit data... | |
t-freebsd-thread | Loading commit data... | |
t-gnu-prefix | Loading commit data... | |
t-gthr-noweak | Loading commit data... | |
t-gthr-vxworks | Loading commit data... | |
t-gthr-vxworksae | Loading commit data... | |
t-hardfp | Loading commit data... | |
t-hardfp-sfdf | Loading commit data... | |
t-libgcc-pic | Loading commit data... | |
t-libunwind | Loading commit data... | |
t-libunwind-elf | Loading commit data... | |
t-linux | Loading commit data... | |
t-openbsd-thread | Loading commit data... | |
t-rtems | Loading commit data... | |
t-slibgcc | Loading commit data... | |
t-slibgcc-darwin | Loading commit data... | |
t-slibgcc-elf-ver | Loading commit data... | |
t-slibgcc-fuchsia | Loading commit data... | |
t-slibgcc-gld | Loading commit data... | |
t-slibgcc-gld-nover | Loading commit data... | |
t-slibgcc-hpux | Loading commit data... | |
t-slibgcc-libgcc | Loading commit data... | |
t-slibgcc-nolc-override | Loading commit data... | |
t-slibgcc-sld | Loading commit data... | |
t-slibgcc-vms | Loading commit data... | |
t-softfp | Loading commit data... | |
t-softfp-compat | Loading commit data... | |
t-softfp-excl | Loading commit data... | |
t-softfp-sfdf | Loading commit data... | |
t-softfp-sfdftf | Loading commit data... | |
t-softfp-tf | Loading commit data... | |
t-stack | Loading commit data... | |
t-tls | Loading commit data... | |
t-vxcrtstuff | Loading commit data... | |
t-vxworks | Loading commit data... | |
t-vxworks7 | Loading commit data... | |
t-vxworksae | Loading commit data... | |
unwind-dw2-fde-darwin.c | Loading commit data... | |
vxcache.c | Loading commit data... | |
vxcrtstuff.c | Loading commit data... |