Commit Graph

1587 Commits

Author SHA1 Message Date
wiz c4de963fb8 Bump date for -8. 2002-09-12 10:06:51 +00:00
wiz d5d10ab7d3 Sort options. 2002-09-12 09:34:24 +00:00
itojun 57afbee27d use strl*, not strn*. 2002-09-12 08:55:31 +00:00
lukem 38a05c7450 Use LOGIN_NAME_MAX instead of `10' for the size of the curname[] buffer.
Allows /etc/ftpchroot to work correctly for usernames > 9 characters.

Noted by Max Khon in the freebsd-stable mailing list, via Thomas Vogt in
private email.
2002-09-12 06:40:43 +00:00
kim 968e6be5e6 Replace -i with -8, which enables new 8-bit pass-through on the client. 2002-09-12 01:40:54 +00:00
bjh21 3cc5ae01bc Correct somewhere where, in rev 1.3, two new sentences had been dropped
into the middle of an existing sentence, and put them after it instead.
2002-09-11 23:11:41 +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 fa0b5c37b2 This is a gratuitous null commit to force rtld.o to be rebuilt. 2002-09-11 20:48:21 +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
mycroft 735f9f38c0 Split the `self' case out of _rtld_relocate_nonplt_objects, into a new function
_rtld_relocate_nonplt_self(), which is called from _rtld_start.
Now we're completely relocated before main() is called.
We also no longer need _GOT_END_, so junk the ld script.

This code assumes that ld.elf_so only contains RELATIVE relocs, but that's
supposed to be the case for -Bsymbolic anyway.
2002-09-11 17:23:23 +00:00
junyoung b240241362 Add $NetBSD$. 2002-09-11 14:19:30 +00:00
joda a55a6f7fef now gone 2002-09-10 22:44:28 +00:00
joda 7d3aba796f don't build kfd; there are security issues with heimdal 0.4e, and we
don't actually need it
2002-09-10 22:17:04 +00:00
mycroft db439ed878 Only one linker script is needed. 2002-09-10 14:19:18 +00:00
itojun 6c581a525d tabify 2002-09-10 04:06:26 +00:00
kim 5d2f386289 Add a switch for easy enabling of single-byte 8-bit output.
This is somewhat of a hack, but I find it better than having
to run env(1) from inetd(8), or changing the environment for
inetd(8) itself (and thus all daemons started by it).
2002-09-10 03:29:01 +00:00
mycroft 289d4ac1a5 Remove unneeded cruft from _rtld_start. 2002-09-10 02:52:33 +00:00
mycroft d048e19122 Shorten the startup sequence by a few instructions. 2002-09-10 02:24:51 +00:00
mycroft 9f0e145106 Nuke RTLD_RELOCATE_SELF on ARM. 2002-09-09 19:28:36 +00:00
mycroft d22977bb61 Indent branch delay instructions. 2002-09-09 19:01:52 +00:00
mycroft c127ff08fb Nuke RTLD_RELOCATE_SELF for SPARC. 2002-09-09 18:10:20 +00:00
mycroft 89520a5f6e Sync with current binutils. 2002-09-09 14:41:25 +00:00
mycroft ae0c8dfbc2 Get rid of RTLD_RELOCATE_SELF on i386.
* Add a ld.so.script that exports _GOT_END_.
* Prebind the GOT in _rtld_start.
* Skip over GOT relocs in _rtld_relocate_nonplt_objects().
This makes debugging work better at least.
2002-09-09 14:08:07 +00:00
wiz 221d594f18 Mention that -DDEBUG compilation is needed to get LD_DEBUG support.
Noted by Julio Merino in misc/18231.
2002-09-08 23:44:09 +00:00
thorpej 6a37882ec7 Fix a serious performance problem for large programs on the Alpha.
Large programs need multiple GOTs.  The lazy binding stub in the PLT
can be reached from any of these GOTs, but the dynamic linker only
has enough information to fix up the first GOT entry.  Thus, calls
through the other GOTs went through the time-consuming lazy binding
process on every call.

This fix rewrites the PLT entries themselves to bypass the lazy binding
for those GOT entries that the dynamic linker can't fixup.

Fix from FreeBSD.

Note that now that we patch up the PLT, we need to put back the "imb"
that was removed from the binder exit path.
2002-09-08 02:48:28 +00:00
mycroft 492895a9f9 Expand the comment about the R_TYPE(RELATIVE) special-case, as it's not quite
obvious from the code.  Also, just do it all the time, as an optimization.
2002-09-06 15:51:23 +00:00
mycroft 3eee01c5b9 Make the reloc tables const. 2002-09-06 15:32:56 +00:00
mycroft 6f0fac5efa Pass down an additional flag to _rtld_relocate_nonplt_objects() which
indicates whether we're relocating ld.elf_so itself.  Use this in some places
rather than hackish tests on `dodebug'.  (The Alpha and HPPA `dodebug' tests
were actually noops, because RTLD_RELOCATE_SELF is not set, and therefore
dodebug is always true.)
2002-09-06 15:17:53 +00:00
junyoung 3ffe941c3a Remove typedef which was never used. Meaningless comment as well. 2002-09-06 13:27:48 +00:00
mycroft 0df8d18100 Introduce a new flag, `isdynamic', which is used to remember whether the
executable was of type ET_DYN.  Use this instead of `mainprog' to determine
whether we need to do base-relative fixups of the PLT.  (This allows loading
non-relocatable objects, should we desire to do that at some point...)
2002-09-06 13:20:29 +00:00
mycroft 69b9a24021 More const poisoning. Now the entire _rtld_bind() path useds a const Obj_Entry. 2002-09-06 12:00:40 +00:00
mycroft b97e4047b7 Re-poison a lot of consts, now that the mark shite is gone. 2002-09-06 03:12:04 +00:00
mycroft a04012e731 Split _rtld_relocate_plt_object() into two MD functions:
* _rtld_relocate_plt_lazy() fixes up all the relocs pointing to the PLT.  (On
  most platforms it just does a simple base-relative fixup; on SPARC it does
  nothing.)
* _rtld_relocate_plt_object() does immediate binding for a PLT entry.
The basic gist is that this saves a bit of time on SPARC (where the iteration
through the pltrela table was gratuitous), and a little less time on all other
platforms.  A whole lot of #ifdef'ed crap is moved out of reloc.c, too.

NOT tested on: hppa sh x86_64
2002-09-06 03:05:35 +00:00
mycroft 5f016a11ef Repair a slight biff I made earlier -- do not exit the loop in
_rtld_relocate_nonplt_objects() early.
2002-09-06 02:01:39 +00:00
mycroft c59ffb0cc4 Remove all of the `mark' code. This is responsible for the `undefined PLT
symbol' errors, probably because the increment gets interrupted occasionally by
a signal.  In general, _rtld_bind() should not modify ANY internal state.
2002-09-05 21:57:09 +00:00
mycroft ac191986f3 Partially fix up some debug printf()s that don't need to use defobj. 2002-09-05 21:31:30 +00:00
mycroft bdc2ac1520 A few things:
* Pass a symbol number to _rtld_find_symdef(), not a r_info.
* Don't try to do a symbol lookup when we find an unsupported relocation;
  instead get the symbol name from the referencing object's strtab.
* Add preliminary support for `-z combreloc'-style startup optimization on
  i386, `#ifdef COMBRELOC'.
2002-09-05 21:21:06 +00:00
mycroft 1fa950d044 Fix one indentation error. 2002-09-05 20:12:43 +00:00
mycroft 74444a2ddb Rename _rtld_relocate_nonplt_object() to _rtld_relocate_nonplt_objects(),
and push the outer loop into it.  This actually shaves a couple % off startup
time at least on PCs.
2002-09-05 20:08:14 +00:00
mycroft 00c3ad1f56 Split _rtld_relocate_nonplt_object() into separate MD files. 2002-09-05 18:25:45 +00:00
mycroft b4a8cd2dbf Split MIPS relocation goo into mips_reloc.c. 2002-09-05 17:58:02 +00:00
mycroft ae16986458 Simplify a couple of tests to !__mips__. 2002-09-05 17:06:11 +00:00
mycroft 9e3442dc47 Combine the code that skips COPY relocs on most platforms (other than MIPS).
Remove the code that skips JMP_SLOT relocs (thus making ld.elf_so bomb if it
hits one in the non-PLT relocation table).
2002-09-05 17:01:13 +00:00