On Jun 8, 2012, at 5:31 PM, Rich Felker <
dalias@aerifal.cx> wrote:
> On Fri, Jun 08, 2012 at 03:54:46PM -0500, Richard Pennington wrote:
>> What is the purpose of the _GLOBAL_OFFSET_TABLE_ reference in these files? It
>> doesn't seem to be used by __dynlink(), although it seems to be passed a a
>> third parameter.
>
> If you check git, you'll see that this code was removed. A much older
> version of __dynlink took a third argument that was the base address
> of the GOT, which was used to find a pointer to _DYNAMIC in the first
> GOT slot (traditionally, it was stored there). Then people started
> reporting crashes when linking with a non-binutils linker (gold? or
> something from clang/llvm? I don't remember...) that didn't follow
> this practice, so I replaced it with more elaborate code to find
> _DYNAMIC. The unneeded code in the asm was not removed until much
> later. I actually have a new idea for simplifying/replacing some of
> the C code, but it won't affect the asm.
>
> By the way, it might be a good idea to familiarize yourself with git
> or even the gitweb interface. Questions like the one you had just now
> can usually be answered quickly by checking the history of the
> relevant files.
>
> Rich