Commit Graph

539 Commits

Author SHA1 Message Date
Rich Felker 7640497f5f implement the nonstandard GNU function fpurge
this is a really ugly and backwards function, but its presence will
prevent lots of broken gnulib software from trying to define its own
version of fpurge and thereby failing to build or worse.
2011-06-30 11:42:33 -04:00
Rich Felker fb62ae74d0 fix buffer overrun in getgrent code when there are no group members 2011-06-30 08:11:06 -04:00
Rich Felker f9ed11f3e1 posix_memalign should fail if size is not a multiple of sizeof(void *) 2011-06-29 19:26:30 -04:00
Rich Felker 47e72e10d5 avoid errors in ucontext.h when no feature test macros are defined 2011-06-29 17:13:01 -04:00
Rich Felker f7dff1852b locking support for random() prng
these interfaces are required to be thread-safe even though they are
not state-free. the random number sequence is shared across all
threads.
2011-06-29 15:29:52 -04:00
Rich Felker af3d5405b8 work around linux bug in mprotect
per POSIX: The mprotect() function shall change the access protections
to be that specified by prot for those whole pages containing any part
of the address space of the process starting at address addr and
continuing for len bytes.

on the other hand, linux mprotect fails with EINVAL if the base
address and/or length is not page-aligned, so we have to align them
before making the syscall.
2011-06-29 00:42:42 -04:00
Rich Felker 9f17413c75 textrel support, cheap and ugly 2011-06-29 00:29:08 -04:00
Rich Felker 2cee45762a release notes for 0.7.11 2011-06-28 22:06:58 -04:00
Rich Felker 6717e62ac0 reclaim the memory wasted by dynamic linking for use by malloc 2011-06-28 19:40:14 -04:00
Rich Felker e411827960 use type directives for fenv asm functions 2011-06-28 14:41:41 -04:00
Rich Felker bf30100ad7 use load address from elf header if possible
this is mostly useless for shared libs (though it could help for
prelink-like purposes); the intended use case is for adding support
for calling the dynamic linker directly to run a program, as in:
./libc.so ./a.out foo

this usage is not yet supported.
2011-06-28 14:20:41 -04:00
Rich Felker c7debe13ee make dynamic linker relocate the main program image last, after all libs
prior to this change, copy relocations for initialized pointer
variables would not reflect the relocated contents of the pointer.
2011-06-28 14:13:51 -04:00
Rich Felker 8d54681f15 fix a few bugs from last dynamic linking build system commit
some cruft was left and DESTDIR was not being used correctly.
2011-06-28 08:27:38 -04:00
Rich Felker f9c9d8c333 minor updates to INSTALL documentation 2011-06-27 22:34:47 -04:00
Rich Felker 207c45d7ab cleanup shared library build system to be more $HOME-local-install friendly
the path for the dynamic linker is now configurable, and failure to
install the symlink for it will not stop the build.
2011-06-27 21:38:11 -04:00
Rich Felker 230f1813ad further fixup dlfcn.h 2011-06-27 01:02:28 -04:00
Rich Felker 87a30ce50d match LSB/glibc constants for dynamic loader 2011-06-27 01:01:19 -04:00
Rich Felker 9e17b71fa6 fix stale pointer issue in dynamic linker with dlopen 2011-06-26 22:39:34 -04:00
Rich Felker 06933cc724 don't leave the lock held on dlopen failure.. 2011-06-26 22:09:32 -04:00
Rich Felker 97507bde47 add RTLD_DEFAULT support 2011-06-26 21:50:01 -04:00
Rich Felker 0e4dae3d77 in dlopen: don't use null pointer
deps can be null if a library has no dependencies (such as libc itself)
2011-06-26 21:36:44 -04:00
Rich Felker 92ab5d8d15 fix resolving symbols in objects loaded in RTLD_LOCAL mode
basically we temporarily make the library and all its dependencies
part of the global namespace but only for the duration of performing
relocations, then return them to their former state.
2011-06-26 21:21:04 -04:00
Rich Felker 59ab43f5f8 experimental dlopen/dlsym and dynlink changes needed to support them 2011-06-26 19:23:28 -04:00
Rich Felker bc30aea457 type directives for x86_64 math asm 2011-06-26 17:41:34 -04:00
Rich Felker 6b3d5e508f error handling in dynamic linking
some of the code is not yet used, and is in preparation for dlopen
which needs to be able to handle failure loading libraries without
terminating the program.
2011-06-26 17:39:17 -04:00
Rich Felker 6e53a6eca4 fix useless use of potentially-uninitialized mode variable in sem_open 2011-06-26 16:34:05 -04:00
Rich Felker 5d0965cb56 eliminate OOB array hacks in malloc 2011-06-26 16:12:43 -04:00
Rich Felker e22c2d3ee6 use .type directives for math asm (needed for dynamic linking to work) 2011-06-26 15:52:37 -04:00
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 1a3ff4f909 fix dynamic linker issue in musl-gcc wrapper 2011-06-25 18:57:17 -04:00
Rich Felker 6250c0be4b wordexp cannot use we_offs unless WRDE_DOOFFS flag is set
previously, a potentially-indeterminate value from we_offs was being
used, resulting in wrong we_wordc and subsequent crashes in the
caller.
2011-06-25 18:54:33 -04:00
Rich Felker febbd12d00 XSI search.h API implementation by Szabolcs Nagy 2011-06-25 18:18:57 -04:00
Rich Felker 49388f3b7b handle library paths better (ignore empty path components, etc.) 2011-06-25 17:49:16 -04:00
Rich Felker e8b8f3c90e move all limits that don't vary out of bits/limits.h, into main limits.h 2011-06-25 15:38:00 -04:00
Rich Felker 59633c736d fix possible (questionable) strict aliasing violations and ptr arith 2011-06-25 12:26:08 -04:00
Rich Felker 4d95a58524 const correctness in mq_notify
why did gcc allow this invalid assignment to compile in the first place?
2011-06-25 09:23:36 -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 f937031800 optimize opendir using O_CLOEXEC 2011-06-25 01:38:25 -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 e0b0ff1598 use soname in ld-musl.so to prevent filename appearing in DT_NEEDEDs 2011-06-24 18:32:30 -04:00
Rich Felker a654b0243b use symlink rather than bogus linker script for libc.so
the linker script caused a bogus DT_NEEDED entry
2011-06-24 14:02:47 -04:00
Rich Felker ec05a0b08f adapt build/install/gcc-wrapper systems for dynamic linking support 2011-06-23 22:13:47 -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 c7ce1b20d2 initial commit of prng implementation by Szabolcs Nagy 2011-06-23 18:02:23 -04:00
Rich Felker d19adeec52 make ldso asm more uniform with rest of codebase (no unnecessary suffixes) 2011-06-19 22:42:10 -04:00
Rich Felker 779165e6d4 x86_64: ensure that dtor pointer passed to app is 0 so it won't be used
leaving it uninitialized caused unpredictable crashes or worse due to
calling an indeterminate function pointer.
2011-06-19 08:33:27 -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
Rich Felker d43ff110bc fix memory leak on failure in realpath 2011-06-18 07:41:14 -04:00