[Bug libgcc/71951] libgcc_s built with -fomit-frame-pointer on aarch64 is broken
timo.teras at iki dot fi
gcc-bugzilla@gcc.gnu.org
Wed Jul 20 18:52:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71951
--- Comment #7 from Timo Teräs <timo.teras at iki dot fi> ---
(In reply to Andrew Pinski from comment #6)
> (In reply to Timo Teräs from comment #5)
> > Not easily. It's musl, and using iterate phdr. Same build script works on
> > x86, x86_64 and armhf. It's only aarch64 misbehaving like this with omit
> > frame pointer. Any other suggestions what to try/how to debug further?
>
> So check the unwind information to see if it is correct.
>
>
> 0x000003ffb7db974c <+20>: sxtw x1, w1
> 0x000003ffb7db9750 <+24>: ldr x2, [x0,x1,lsl #3]
>
> So x0 + ((long long)(int)w1) << 3
> Or rather contex + index
>
> And it is looking into x29 because of x1 is 29.
>
> So it does look like the unwind information is messed up for the frame being
> looked at.
I'm not too familiar with dwarf, but I assume the section relevant from objdump
--dwarf output is:
00000120 000000000000001c 00000124 FDE cie=00000000
pc=0000000000009738..0000000000009788
DW_CFA_advance_loc: 12 to 0000000000009744
DW_CFA_def_cfa_offset: 16
DW_CFA_offset: r30 (x30) at cfa-16
DW_CFA_advance_loc: 4 to 0000000000009748
DW_CFA_def_cfa_offset: 0
DW_CFA_restore: r30 (x30)
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
I can also attach the broken libgcc_s here if it helps.
More information about the Gcc-bugs
mailing list