Re: Multigot mechanism and a related MIPS linker error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Richard Sandiford <rdsandiford@xxxxxxxxxxxxxx> writes:
> MIPS multigots are a trick.  The ABI only defines a single GOT,
> which I'll call the "ABI-defined" GOT.  As you say, this GOT needs
> no relocations.  The information is instead provided in two ways:
>
>   (a) Dymamic tags give the limits of the local and global parts
>       of the GOT.
>
>   (b) The global part of the GOT is directly mapped to the end
>       of the dynamic symbol table.
>
> But what do you do if you need multiple GOTs, and several GOTs
> need to refer to the same symbol S?  S appears only once in the
> dynamic symbol table, so it can only appear once in the ABI-defined GOT.
>
> Multigots could only share GOT entries like this if you were able to
> sort the symbols in such a way that every multigot represented a 64k
> (or smaller) window into the ABI-defined GOT.  And that isn't possible
> in the general case.  Objects often refer to both common symbols (like
> stdio routines) and object-specific symbols.  Once you get >128k of
> object-specific symbols, it isn't possible for all of them to be in
> a 64k window that also contains the ABI GOT entries for the stdio
> routines.

I forgot an even more important restriction: the local part of the
ABI-defined GOT has to come before the global part.  In practice,
almost all GOTs have some local entries, so this would restrict
the windows even further.

Richard

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux