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.

Reply via email to