mycroft
723a5f8a50
Remove a meaningless bit from a rdbg().
2002-09-26 02:51:27 +00:00
mycroft
ee398b4d07
Remove vestigal comments about _rtld_bind_start_0() -- it works now.
2002-09-26 02:25:57 +00:00
mycroft
26043b23b0
Make room for the argument save area in _rtld_start(). The PLT stub already
...
made room from _rtld_bind_start(), but add a comment explaining the instruction
it uses.
2002-09-26 02:14:10 +00:00
mycroft
f1c792d648
Make the stack frame 96 bytes, like GCC does.
2002-09-26 02:05:41 +00:00
mycroft
bde7a965da
Tweak the save instruction in the PLT stub rather than adding an instruction
...
to the binder entry stub...
2002-09-26 01:59:16 +00:00
mycroft
d314d82b47
Allocate space for the argument space area in both _rtld_start() and
...
_rtld_bind_start(). Not needed normally, but if we compile ld.elf_so with
-g, it blows up without this.
2002-09-26 01:54:52 +00:00
mycroft
6bff9ffc3d
For consistency, use Elf_Word* to point to code, not Elf_Addr*.
2002-09-25 22:33:54 +00:00
mycroft
0079455251
Add a comment explaining some of the magick.
2002-09-25 22:29:12 +00:00
mycroft
f6db390b5a
Fix a bug that caused PLT entries to effectively not be patched.
...
Also, fix more bugs in the large-PLT case -- my test program works now.
2002-09-25 22:25:11 +00:00
mycroft
2997d64776
Make this work with PLTs larger than 8192 entries (64KB). Not tested
...
exhaustively, but it works in some simple cases.
2002-09-25 21:11:18 +00:00
mycroft
d4e6f3ff08
Swap registers %o0 and %o1 in the binder stub to say one instruction.
...
Fix an obvious bug in the 64-bit PLT fixup: the SLLX was by 12 bits, when it
should be 32.
Fix what *appear* to be two bugs in the >32768 PLT entry stub:
* One division was wrong (/14 rather than /24).
* We need to subtract 1048576 (to make the offset relative to the beginning of
the upper section), not add it.
This path is still untested, and buggy.
2002-09-25 16:35:08 +00:00
mycroft
9e31b44846
There is no need to save and restore a second register window in the binder
...
stub.
2002-09-25 14:38:51 +00:00
mycroft
afb1082706
_rtld_bind_start_0_stub() is not actually used.
2002-09-25 14:36:37 +00:00
mycroft
028dd5150a
Push a multiple from _rtld_bind_start_[01]() to _rtld_bind().
2002-09-25 14:35:39 +00:00
mycroft
23b2275ee8
Partly fix this port -- still needs a self-reloc function.
2002-09-25 08:37:57 +00:00
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
305b0ffce5
#if defined -> #ifdef
2002-09-25 06:43:46 +00:00
itojun
d80101c91c
Allocate vis_user on the stack instead of using malloc(). This
...
way we don't have to worry about malloc() failure. Also closes
a memory leak since vis_user was never free()d. Lack of malloc()
checking pointed out by Peter Werner.
from openbsd
2002-09-25 04:57:59 +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
fb3dfbb81b
Add a comment about the function pointer nonsense.
2002-09-24 20:27:07 +00:00
mycroft
216a20fcc4
Put back the `in_plt' nonsense for now.
...
It turns out there is some deep-seated wackiness WRT function pointer
comparisons...
2002-09-24 20:23:11 +00:00
mycroft
9d1d2c30c8
Reverse the previous patch, but make the dbg()s more informative.
2002-09-24 18:28:42 +00:00
mycroft
8510028476
Touch up a little more -- some of the dbg()s never actually printed anything.
2002-09-24 18:25:54 +00:00
mycroft
1ad20cb78f
Previous change was done wrong.
2002-09-24 18:23:14 +00:00
junyoung
d0e76e42b6
G/c dbg()'s.
2002-09-24 18:03:46 +00:00
junyoung
5afbf1cbce
Make sure that dbg() is disabled if LD_DEBUG is not defined. Now
...
debugging is easier with RTLD_DEBUG_RELOC.
2002-09-24 17:51:11 +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
bddb0d021d
Similarly, remove support for short arguments.
2002-09-24 14:09:43 +00:00
mycroft
fa344ccc4b
Remove quad support. We don't need it, and it wastes a lot of space. (It
...
pulls in {,u}{div,mod}di3() and qdivrem().)
2002-09-24 14:05:33 +00:00
mycroft
56288dc0e5
%ld -> %p
2002-09-24 13:59:31 +00:00
mycroft
fa5df29420
Include xassert() only if DEBUG, like the real assert().
...
Also, xassert() calls abort(), so there's no need to do it in all of the
callers.
2002-09-24 13:06:07 +00:00
mycroft
7f44855294
Remove the SVR4_LIBDIR madness.
2002-09-24 12:52:20 +00:00
mycroft
3c16ffb1dd
Woops, unmap the first page in the `win' case, too.
...
Tidy up a bit.
2002-09-24 12:44:58 +00:00
mycroft
72b0e512c3
Change the comment about l_offs.
2002-09-24 12:18:32 +00:00
mycroft
9d8c69b929
Remove vestiges of VARPSZ.
2002-09-24 12:12:07 +00:00
junyoung
175c20cbcf
Nuke PAGESIZE.
2002-09-24 09:45:59 +00:00
junyoung
4b4a707c66
Use _rtld_pagesz instead of PAGESIZE.
2002-09-24 09:35:13 +00:00
junyoung
d190613fbb
space -> tab.
2002-09-24 09:26:43 +00:00
junyoung
93f2d9023a
Don't need to use union any longer.
2002-09-24 09:22:51 +00:00
junyoung
272e959468
Remove '\n' at the end of dbg strings.
2002-09-24 08:56:30 +00:00
junyoung
61e1361da6
END_SYM is no longer used.
2002-09-24 06:43:14 +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
c3ece2a45f
Use/require AT_PAGESZ on all platforms. (The kernel has exported it for ~3
...
years now.) Use _rtld_pagesz instead of getpagesize() to determine the page
size in our local malloc(). Saves a system call.
Also, since we're now relocated early, we don't need to be careful to avoid
globals, so most of the VARPSZ hacks are eliminated.
2002-09-24 01:24:44 +00:00
mycroft
d1351c627c
Um, a little bit of sanity here:
...
l_addr is always supposed to be obj->relocbase -- or so says the GDB code that
uses it. So, set it to this on all platforms. It already was on VAX
explicitly, and on everything else except MIPS implicitly (because
mapbase==relocbase for all existing shlibs). For some silly/stupid reason, a
new field was created that the MIPS GDB currently uses.
Another MD #ifdef bites it.
2002-09-24 00:33:39 +00:00
mycroft
f1184d192e
Very minor cleanup of the previous.
2002-09-24 00:02:46 +00:00
mycroft
86103e2f0e
Several small changes that shave 7-8% off the simple-exec-loop test:
...
* Rename _rtld_find_library() to _rtld_load_library(). It now calls
_rtld_load_object() if necessary to actually load the object, rather
than having the caller do it. To do this, it also takes the `mode'
argument that gets passed to _rtld_load_object().
* On a related note, remove _rtld_check_library(), and instead call
_rtld_load_object() to instead try actually loading the object. We
save two extra namei's and a bunch of redundant work (almost
literally the same code) this way.
* In _rtld_map_object(), mmap(2) the first page read-only, rather than
read(2)ing it.
* In _rtld_symlook_obj(), compare the *second* character of the symbol
name before calling strcmp(). (This first character is too
frequently `_', and turns out to not be helpful, in libc.)
* Also in _rtld_symlook_obj(), remove the bogus STT_FUNC special case
-- this also allows removing the `in_plt' argument to
_rtld_symlook_list() and _rtld_symlook_obj().
Also:
* In _rtld_obj_from_addr(), rather than trying to look up `_end' in
the each object, instead use obj->mapsize as the upper bound.
2002-09-23 23:56:46 +00:00
mycroft
aae6c28cf9
null commit
2002-09-23 12:44:34 +00:00
itojun
a9fc5f306a
poll.h, not sys/poll.h
2002-09-23 03:32:34 +00:00
mycroft
c3a2d8b7ba
Add combreloc code here too.
2002-09-21 17:51:44 +00:00
junyoung
930998f892
Print the name of dynamic linker actually loaded.
2002-09-21 05:24:17 +00:00
mycroft
9a36a8340f
Use the argument to stilloob() for the poll...
2002-09-20 19:13:24 +00:00
mycroft
e62e5a8b1a
Remove dead code.
2002-09-20 19:11:17 +00:00
mycroft
49ac051d58
Remove a small piece of dead code.
2002-09-20 19:07:34 +00:00
junyoung
48910dcfc1
Cosmetic changes (long lines).
2002-09-20 03:39:22 +00:00
itojun
89b1e287f7
find_user() in process.c does an unbounded copy into a destination
...
buffer that is smaller in size than the source buffer.
also, there is no guarantee that any of the string components of
the request packet are null terminated.
in some cases, not all elements of the response buffer are
explicitly set. specifically pad and addr. a talk client can spy to
see which host is talking to which host by sending out regular
packets, to which talkd responds without clearing the addr element.
from xs@kittenz.org
2002-09-19 14:39:51 +00:00
junyoung
18139870a5
Cosmetic changes.
2002-09-19 14:05:37 +00:00
christos
6d0f752a65
don't core dump setting progname if argv[0] == NULL. From xs@kittenz.org
2002-09-19 13:59:46 +00:00
lukem
e3b1a0e70b
use NETBSDSRCDIR as appropriate
2002-09-19 03:17:50 +00:00
mycroft
720a68f0ca
select() -> poll()
2002-09-18 20:58:56 +00:00
mycroft
51581bcb01
select() -> poll()
2002-09-18 20:37:11 +00:00
mycroft
015ea63be5
Fix an error message.
2002-09-18 20:20:28 +00:00
mycroft
315144beb5
select() -> poll()
2002-09-18 20:17:55 +00:00
mycroft
5580adb284
select() -> poll() and nanosleep()
2002-09-18 20:04:51 +00:00
junyoung
a5390eb121
_rtld_setup_pltgot() belongs to reloc.c.
2002-09-18 07:35:40 +00:00
lukem
bafe5da620
use bsd.own.mk instead of the (obvious typo of) bsd.obj.mk
2002-09-18 06:24:33 +00:00
lukem
99fe9d3e76
minor makefile delint
2002-09-18 06:17:38 +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
712b838f43
Kill the extra newline in assert messages.
2002-09-13 19:50:00 +00:00
mycroft
cc2b1e9844
Add an explanatory comment.
2002-09-13 19:27:19 +00:00
mycroft
e3db70741f
Turn DEBUG back on by default. It doesn't take much space.
2002-09-13 18:28:58 +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
thorpej
7c96dd1581
Rename man/config.{c,h} to man/manconf.{c,h}, so we don't have to
...
worry about problems including "config.h" when building as a host
tool.
2002-09-13 15:56:37 +00:00
mycroft
89a39bb54e
The textrel special case is only needed for MIPS (due to a bug in BFD).
2002-09-13 15:27:30 +00:00
mycroft
7a962f974a
Kill the sparc64 argc conversion hack.
2002-09-13 14:23:07 +00:00
mycroft
a18c524897
Figure out obj->pltrel(a) after the dynamic section is parsed, so the relative
...
order of DT_PLTREL and DT_JMPREL is irrelevant. Removes the need for yet
another weird #ifdef.
Also, be slightly more careful with the rel(a)lim trimming.
2002-09-13 13:28:43 +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
2f59687514
Almost all of the items in here are done.
2002-09-13 04:05:00 +00:00
mycroft
777a2b8bb0
If we match a symbol name, but it's undefined, do not continue searching the
...
hash chain.
2002-09-13 03:40:40 +00:00
mycroft
bbe45a0623
Remove a dumb #ifdef -- if VARPSZ is not defined on sparc, the build will
...
bomb anyway.
2002-09-13 03:22:08 +00:00
mycroft
4de09f873b
Nuke an unneeded hack for the Alpha.
2002-09-13 03:17:21 +00:00
mycroft
807a6ace45
Nuke two frivolous assert()s.
2002-09-13 03:12:40 +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
itojun
a05a73b5b6
revert previous. wtmp{,x} entries need not be \0-terminated, so
...
strncpy is more proper.
2002-09-13 02:58:54 +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
f13bdd9850
Add some consts.
2002-09-12 21:06:38 +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
bf04efbfda
ld.elf_so has no textrels on arm, i386 or vax -- and shouldn't on any platform,
...
but that's beside the point.
2002-09-12 19:43:03 +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
2b2534febf
Add a `relocbase' argument to _rtld() and _rtld_init(), which is passed in
...
from the glue code in _rtld_start(). This is used to set objself.relocbase,
rather than assuming that it's the same as objself.mapbase (or 0 on MIPS).
Now -- with a bug fix to the kernel -- ld.elf_so can be linked at any VMA.
2002-09-12 17:45:41 +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
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
mycroft
cf2d41da85
If REL(A)SZ extends into .rel(a).plt, trim rel(a)lim. This is actually due to
...
what is arguably a bug in BFD on some platforms (at least PPC and SPARC), but
I can't fix old binaries.
2002-09-05 16:58:16 +00:00
junyoung
515622e6db
Remove unused arguments of _rtld_find_symdef().
2002-09-05 16:33:57 +00:00
mycroft
1ea7e8253b
Remove support for PowerPC static relocations, which are not present in shared
...
objects, and in any case are implemented WRONG. (They're symbol-relative, not
base-relative.)
2002-09-05 15:47:52 +00:00
mycroft
f4cbd3d6e2
Remove unused prototypes (including one for a non-existant function!).
2002-09-05 15:45:54 +00:00
mycroft
2635aa544a
Make _rtld_setup_pltgot() a consistent interface on all platforms.
2002-09-05 15:38:22 +00:00
mycroft
1e06edb63b
There is no need to do an imb after each call to the binder, because we only
...
patch the GOT, not the PLT. However, do an imb when setting up the PLT thunk,
just in case.
2002-09-04 19:13:00 +00:00
junyoung
937e5f4f83
Previous commit broke the normal build; this should really fix the
...
problem, toolchain/18020. From Frederick Bruckman <fredb@immanent.net>.
2002-09-04 16:57:47 +00:00
junyoung
9cc71f17e2
Fix a problem that 'make obj' doesn't work within tools/makewhatis.
2002-09-04 06:39:58 +00:00
mycroft
1b6aaa02a2
Turn off DEBUG by default, and compile with -O3. (Tested on Alpha, ARM,
...
x86 and PowerPC.)
2002-08-31 18:18:14 +00:00
lukem
3b473ec283
xerrx() needs to output a trailing newline as well
2002-08-27 10:37:33 +00:00
christos
23c8380404
save 4 system calls by using AT_{R,E}{U,G}ID.
2002-08-26 21:09:55 +00:00
itojun
b46a0ef5ae
use strlcpy. minor style fixes
2002-08-22 07:23:27 +00:00
christos
d5935a17be
enable utmpx support. this doesn't work correctly for chrooted ftpd's, but
...
I am leaving it to luke to fix.
2002-08-22 00:09:38 +00:00
christos
7c266e1884
support utmpx
2002-08-20 14:01:49 +00:00
christos
9d7f515ba2
add some more ifdefs, so that we don't define variables we don't use.
2002-08-20 13:58:22 +00:00
christos
7d62d2a173
utmpx support
2002-08-20 13:56:50 +00:00
christos
c0b21fbbf7
Disable UTMPX support for now, because ftpd might chroot and we need
...
to keep files open.
2002-08-20 13:55:58 +00:00
christos
4b476b1883
utmpx support
2002-08-20 13:51:09 +00:00
christos
6c99012e39
PR/17999: FUKAUMI Naoki: Support wtmpx entries.
2002-08-20 13:12:00 +00:00
lukem
f794aa60bb
Use ${NETBSDSRCDIR}/some/path instead of ${.CURDIR}/../../some/path
2002-08-19 13:54:34 +00:00
itojun
2abe377059
defend against malicious line in ut_line, which could cause unwanted
...
writes to anything under /dev. revoke setuid/gid privs earlier.
From: xs@kittenz.org
2002-08-16 20:21:48 +00:00
abs
d88a5fe209
If the peer closes the connection in ttloop()
...
syslog(LOG_ERR, "ttloop: peer died: %m");
is a little console spammingly excessive. Switch to LOG_INFO.
2002-08-12 09:19:00 +00:00
thorpej
9c104401d1
Build for "armeb".
2002-08-10 01:59:33 +00:00
soren
642c31b4a3
Remove extraneous \n's in {err,warn}{,x}.
2002-08-09 10:01:53 +00:00
soren
236006d5dc
Remove extraneous \n's in {err,warn}{,x} that used to be printfs.
2002-08-08 13:24:12 +00:00
jmcneill
00a0bebf72
Include string.h so this application compiles.
2002-08-05 15:36:51 +00:00
christos
f660736fac
It is pointless to limit the login name for utmp's purposes here.
2002-08-01 18:52:06 +00:00
christos
5ba367f315
err, fix arg to warn.
2002-07-29 00:36:44 +00:00
christos
5e254dfcd4
jeez, this program included almost everything in /usr/include!
2002-07-29 00:35:49 +00:00
christos
aa3ec0641b
Add utmp_update
2002-07-28 22:38:50 +00:00
grant
6742cb1812
sweep of errx/warnx, remove unnecessary trailing \n
2002-07-20 08:36:17 +00:00
abs
c2fcad8607
If /etc/ld.so.conf contains an invalid sysctl name any dynamically
...
executable that uses the library on that line has the rather cryptic
"sysctl" printed when it starts executing.
Switch to (_PATH_LD_HINTS": unknown sysctl for %s", name);
Discovered after someone copied /etc from an i386 to a sparc64 box.
2002-07-18 14:46:11 +00:00
wiz
7b9b4ac6f7
'environment', not 'enviroment'
2002-07-11 10:53:19 +00:00
fredette
e4526bd9fa
Add support for dynamic linking on HP PA-RISC.
2002-07-10 15:12:33 +00:00
itojun
373383a4ab
typo in message. PR 17528
2002-07-08 23:01:57 +00:00