We have an issue where a nonPIC binary that is
* calling a function in a shared object
* calling another function in a shared object, which references the
address of the first function, saving it as a function pointer.
* later, calling yet another function (in a shared object) which invokes
the function pointer.
Because the executable itself doesn't refer directly to the address of
the function, an abicalls stub is generated.
However, since the canonical address of the function is, as I understand
it, the address of the stub in the
executable's .MIPS.stubs section, when the function invocation is
performed it will mess up because the $gp
is pointing at the shared objects got, whereas the stub assumes that it
points at the executables got.
If a the address of the function is taken in the executable, then all is
well since this generates a PLT
entry with STO_MIPS_PLT.
Attached is an example application, which I've tried to comment as
clearly as possible.
This is with binutils 2.19, under QNX 6.4.1
Regards,
Colin
------------------------------------------------------------------------
_______________________________________________
bug-binutils mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/bug-binutils