59 Commits

Author SHA1 Message Date
Rich Felker
32de61e81a fix some symbol resolution issues in dynamic linker
1. search was wrongly beginning with lib itself rather than dso head
2. inconsistent resolution of function pointers for functions in plt
2011-06-25 22:36:21 -04:00
Rich Felker
49388f3b7b handle library paths better (ignore empty path components, etc.) 2011-06-25 17:49:16 -04:00
Rich Felker
59633c736d fix possible (questionable) strict aliasing violations and ptr arith 2011-06-25 12:26:08 -04:00
Rich Felker
568b8075a4 proper path searching for dynamic linker
first, use $LD_LIBRARY_PATH unless suid. if that fails, read path from
/etc/ld-musl-$ARCH.path and fallback to a builtin default.
2011-06-25 01:56:34 -04:00
Rich Felker
e8dbf00a78 discard dso descriptors after performing relocations
eventually (once dlopen exists) this behavior will be conditional on
dlopen/dlsym not being reachable.
2011-06-25 00:47:28 -04:00
Rich Felker
368ba4a0a9 keep track of which dsos have been relocated 2011-06-25 00:18:19 -04:00
Rich Felker
b7f6e0c6f8 prepare support for LD_LIBRARY_PATH (checking suid/sgid safety)
the use of this test will be much stricter than glibc and other
typical implementations; the environment will not be honored
whatsoever unless the program is confirmed non-suid/sgid by the aux
vector the kernel passed in. no fallback to slow syscall-based
checking is used if the kernel fails to provide the information; we
simply assume the worst (suid) in this case and refuse to honor
environment.
2011-06-23 22:04:06 -04:00
Rich Felker
596d60c565 dynamic linker 64bit fix: hash table entries are always 32bit 2011-06-18 22:52:01 -04:00
Rich Felker
51e2d83102 experimental dynamic linker!
some notes:
- library search path is hard coded
- x86_64 code is untested and may not work
- dlopen/dlsym is not yet implemented
- relocations in read-only memory won't work
2011-06-18 19:48:42 -04:00