Another MIPS multigot patch

Richard Sandiford rsandifo@redhat.com
Sat Nov 22 16:30:00 GMT 2003


Daniel Jacobowitz <drow@mvista.com> writes:
> Currently I can't build an n64 GCC (with my other patches applied to the
> linker).  The error is an R_MIPS_GOT_PAGE overflow for a common variable
> (flag_dump_unnumbered?).

Ouch.  An R_MIPS_GOT_PAGE against a global symbol?  OK, so it's supposed
to work, but gcc shouldn't really be generating that.  Can you send me
the .i file?

> Here's the problem:
> 
>   if (1)
>     {
>       gg->assigned_gotno = gg->global_gotno - g->global_gotno;
>       g->global_gotno = gg->global_gotno;
>       set_got_offset_arg.value = 2;
>     }
> 
> With this, global_gotno increases by a substantial amount.  If the primary
> GOT was full, then the odds are good that there is now a 16-bit relocation
> in the primary GOT that can no longer be resolved.

Not sure I understand.  We're supposed to order the master GOT so that
the symbols in the primary GOT come first.  Is that not happening for
some reason?

Richard



More information about the Binutils mailing list