https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82630
--- Comment #6 from Rafael Avila de Espindola <rafael.espindola at gmail dot
com> ---
(In reply to H.J. Lu from comment #3)
> (In reply to Jakub Jelinek from comment #2)
> > The problem is the assembler's special treatment of _GLOBAL_OFFSET_TABLE_,
> > that
> > .long _GLOBAL_OFFSET_TABLE_ or .quad _GLOBAL_OFFSET_TABLE_ on x86 doesn't
> > actually assemble as normal relocation against that symbol, but as a special
> > relocation.
>
> Should I change assembler to generate R_386_32 for
>
> .long _GLOBAL_OFFSET_TABLE_
I would love for the _GLOBAL_OFFSET_TABLE_ special case to go away, but for
doing that gcc would first have to change from printing
call __x86.get_pc_thunk.bx
addl $_GLOBAL_OFFSET_TABLE_, %ebx
to printing
call __x86.get_pc_thunk.bx
addl $_GLOBAL_OFFSET_TABLE_ - ., %ebx
which already produces the exactly same binary with gas.