mycroft
a9c999925c
We don't need to save quite as many registers in the stub.
2002-09-25 08:00:26 +00:00
mycroft
729925dfb9
Push the _rtld_bind() interface into MD code -- it's just a trivial wrapper
...
anyway.
2002-09-25 07:27:49 +00:00
mycroft
896795d8a3
Minor cleanup, for clarity.
2002-09-25 03:57:15 +00:00
mycroft
a3c903f7cb
Resolve the GOT before doing relocations. Then, when doing relocations, for
...
symbols in the global part of the symbol table, use the updated GOT entry
rather than doing a lookup. (This provides the same effect as `-z combreloc'
on other platforms -- at most one lookup is done per symbol.)
Unfortunately, it is necessary to turn off lazy binding on MIPS. As the
comment says:
* XXX DANGER WILL ROBINSON!
* You might think this is stupid, as it intentionally
* defeats lazy binding -- and you'd be right.
* Unfortunately, for lazy binding to work right, we
* need to a way to force the GOT slots used for
* function pointers to be resolved immediately. This
* is supposed to be done automatically by the linker,
* by not outputting a PLT slot and setting st_value
* to 0, but GNU ld does not do so reliably.
2002-09-25 03:52:06 +00:00
mycroft
646628d7fa
DOH! Adjust all the stack slots in _rtld_bind_start() so that the saved $a0
...
is not in _rtld_bind_mips()'s $a3 argument save area.
2002-09-24 21:57:20 +00:00
mycroft
64d3d6215a
Ignore JMP_SLOT relocs when doing non-PLT relocations. The relalim trimming
...
hack doesn't always work, because ld(1) sometimes puts the sections in the
wrong order.
2002-09-24 15:04:48 +00:00
mycroft
56288dc0e5
%ld -> %p
2002-09-24 13:59:31 +00:00
mycroft
9d8c69b929
Remove vestiges of VARPSZ.
2002-09-24 12:12:07 +00:00
mycroft
97aed9957d
-I${.CURDIR} is done at the top-level, so there's no need to do it here.
2002-09-24 01:59:44 +00:00
mycroft
b59c269424
Nuke reference to RTLD_RELOCATE_SELF.
2002-09-24 01:58:44 +00:00
mycroft
c3a2d8b7ba
Add combreloc code here too.
2002-09-21 17:51:44 +00:00
junyoung
9754fa4d8e
Make immediate binding work again by actually implementing
...
_rtld_relocate_plt_objects(). Note that this is for i386 only;
any efforts to make it work on other platforms are left to
those who are using them...
2002-09-17 07:29:46 +00:00
thorpej
7e6d181789
No PC24 relocs will ever be unaligned. Pointed out by mycroft.
2002-09-15 01:08:04 +00:00
thorpej
672853f217
It is possible for reloc entries to point to unaligned locations; handle
...
this.
2002-09-15 00:52:08 +00:00
thorpej
a2130a3a09
It is possible for reloc entries to point to unaligned locations; handle
...
this.
2002-09-14 23:53:21 +00:00
thorpej
b01748bb26
It is possible for reloc entries to point to unaligned locations; handle
...
this.
2002-09-14 23:21:13 +00:00
mycroft
a95d62a38e
In _rtld_bind_mips(), if the symbol is undefined, die.
2002-09-13 20:32:24 +00:00
mycroft
cc2b1e9844
Add an explanatory comment.
2002-09-13 19:27:19 +00:00
mycroft
60330f4a69
The sense of the SHN_ABS test has always been reversed. Fortunately nobody
...
ever tried to reference stuff like _DYNAMIC_LINK and _gp_disp in C code...
2002-09-13 17:36:00 +00:00
mycroft
8f7fa0cfde
Put back the lazy binding. For some bizarre reason, the linker occasionally
...
does not create a PLT entry for a symbol, so we test st_value!=0 to see
whether we can do a PLT fixup.
2002-09-13 17:07:12 +00:00
mycroft
a8dd8878cf
Er, turn off lazy binding for the moment. It doesn't seem to be fully working.
2002-09-13 16:54:14 +00:00
mycroft
c1cf8538ec
Simplify the GOT relocation code somewhat.
2002-09-13 16:31:28 +00:00
mycroft
e8b2fe1d2a
Actually do lazy binding on this platform.
2002-09-13 16:03:20 +00:00
mycroft
c74fdd7069
Use the addend on GLOB_DAT relocs (same as ABS32).
2002-09-13 05:45:46 +00:00
mycroft
c65330320a
Do not use the implicit addend on REFQUAD relocs (same as GLOB_DAT).
2002-09-13 05:45:13 +00:00
mycroft
daf8118731
Remove an old comment.
2002-09-13 04:09:49 +00:00
mycroft
4b55da479c
_rtld_bind() is not used on MIPS. Should probably move it to MD code.
2002-09-13 03:09:38 +00:00
mycroft
f64e457cee
Remove one more `dodebug' argument.
2002-09-12 23:11:37 +00:00
mycroft
a3b892d178
Nuke -DRTLD_RELOCATE_SELF and `dodebug' from orbit.
2002-09-12 22:56:28 +00:00
mycroft
5ad776fbd2
Move another declaration that doesn't belong in MI source.
2002-09-12 20:27:34 +00:00
mycroft
de4565ee93
Prototype different functions.
2002-09-12 20:24:03 +00:00
mycroft
547bc13b97
_rtld_bind_start() is not used in MI code, so declare it in the MD code.
2002-09-12 20:20:58 +00:00
mycroft
6530c89689
Slight tweak.
2002-09-12 18:43:17 +00:00
mycroft
326f270bfb
The GOT is Elf_Addr[], not Elf_Word[]...
2002-09-12 18:36:43 +00:00
mycroft
6f0bda739f
This ld script is now unnecessary.
2002-09-12 18:33:39 +00:00
mycroft
1165ce6f38
Clean up a little.
2002-09-12 18:28:53 +00:00
mycroft
2346aaad04
Move GOT relocation code from _rtld_setup_pltgot() to
...
_rtld_relocate_nonplt_objects(). Add GOT self-relocation in
_rtld_relocate_nonplt_self().
MIPS ld.elf_so can now relocate itself.
2002-09-12 18:21:18 +00:00
mycroft
d04429c6a7
Figure out the relocation offset and pass it to _rtld().
2002-09-12 17:43:30 +00:00
mycroft
ebf50cdfbc
Update comments.
2002-09-12 17:18:37 +00:00
mycroft
ac81e3266b
Snapshot of work to make MIPS ld.elf_so relocatable.
2002-09-12 17:08:32 +00:00
mycroft
5ee0e5e1c4
Pass the calculated relocation offset down to _rtld().
2002-09-12 17:07:25 +00:00
mycroft
1da1ca49f2
Do the _rtld_relocate_nonplt_self() thing here, and nuke the ld script.
2002-09-11 22:28:32 +00:00
mycroft
fb69b8bec4
Implement _rtld_relocate_nonplt_self() here.
2002-09-11 21:14:08 +00:00
mycroft
a57ae642a3
We don't use _GLOBAL_OFFSET_TABLE_ any more, so don't .global it.
2002-09-11 20:56:09 +00:00
mycroft
f1725abea5
Add a _rtld_relocate_nonplt_self() here too.
2002-09-11 20:45:52 +00:00
mycroft
403e42f619
Do self-relocation similar to sparc.
2002-09-11 19:46:40 +00:00
mycroft
e46eb805f1
This ld script is no longer necessary.
2002-09-11 19:46:04 +00:00
mycroft
aa1330ce71
Do the _rtld_relocate_nonplt_self() thing for SPARC.
2002-09-11 19:11:05 +00:00
mycroft
82148aec74
The ld script is no longer necessary.
2002-09-11 18:20:47 +00:00
mycroft
d603bed369
Implement _rtld_relocate_nonplt_self() on Alpha.
2002-09-11 18:18:37 +00:00