https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114060
Bug ID: 114060 Summary: asm constraints getting GOT address for ARM/FDPIC look wrong Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: libgcc Assignee: unassigned at gcc dot gnu.org Reporter: bugdal at aerifal dot cx Target Milestone: --- Reading the code added for unwind-pe.h for FDPIC, I came across the ARM implementation that uses FDPIC_REGNUM as an input constraint to __asm to get the GOT register value. As I understand it, this is not correct, as there is no contract that this register permanently hold the GOT address for the executing code; it's just a hidden argument register for making function calls, which the callee can throw away if it does not need to access the GOT or any global data, or spill and reload. To reliably get the GOT register, I think you need to make an actual external call to an asm function that movs the GOT register to the return-value register and returns.