https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94502
Bug ID: 94502 Summary: [aarch64] Missing LR register location in FDE Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: luis.machado at linaro dot org Target Milestone: --- I've noticed this while investigating a GDB testsuite failure in gdb.opt/inline-break.exp. Basically GDB runs into an internal error due to not being able to unwind the PC register (which, in turn, requires the LR register). I originally noticed this with Ubuntu's GCC (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1). But i managed to reproduce the same problem with gcc master at revision c72a1b6f8b26de37d1a922a8af143af009747498. Reproduction steps: 1 - Build the test like so: gcc -g3 <gdb_tree_path>/gdb/testsuite/gdb.opt/inline-break/inline-break.c -o inline-break 2 - readelf -w inline-break > inline-break.dwarf 3 - Take note of the low address of function not_inline_func1 4 - Locate the FDE entry for the PC above. 5 - You'll notice there is no rule to locate LR, which is required by GDB to determine PC. This is the FDE entry i see: 00000108 0000000000000014 0000010c FDE cie=00000000 pc=0000000000400674..00000000004006b0 DW_CFA_advance_loc: 4 to 0000000000400678 DW_CFA_def_cfa_offset: 32 DW_CFA_advance_loc: 52 to 00000000004006ac DW_CFA_def_cfa_offset: 0 DW_CFA_nop