https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84553
Jim Wilson <wilson at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2018-02-26 Ever confirmed|0 |1 --- Comment #2 from Jim Wilson <wilson at gcc dot gnu.org> --- rdynamic is a linker option that the compiler ignores, except to pass on to the linker. As far as the compiler knows, you are building a non-pic application, and hence the symbol is local. We can't assume that -rdynamic will be used at compile time, and hence to make this work we must assume that any local symbol might become global at link time. We can fix this my modifying the ia64_reloc_rw_mask function to return 3 when non-pic, same as it does when pic, to indicate that local symbols with relocs aren't read-only. I don't have access to ia64 hardware, so I don't have any easy way to test this. The symbol ends up in .data.rel.ro.local instead of .data.rel.ro, but presumably that is OK.