summaryrefslogtreecommitdiff
path: root/libexec/ld.so
AgeCommit message (Collapse)Author
2016-07-18Polish:Philip Guenther
- copy #define workaround from mips64 to avoid dangling __CERROR symbol - remove trap DL_SYSCALL2_NOERR() macro with comment explanation - make DL_SYSCALL2() self-contained - add END() and ENTRY() macros to make the symbol table shine ok miod@
2016-07-18Updated advice^Wcode from miod@ for passing &_DYNAMIC to _dl_boot_bindPhilip Guenther
ok aoyama@
2016-07-15Switch m88k to pass &_DYNAMIC to _dl_boot_bind()Philip Guenther
probably works: this ASM pattern is already used for _dl_dtors
2016-07-04Remove prebind support: binding to symbol table indices is too fragilePhilip Guenther
for our development process. ok kettenis@ deraadt@
2016-07-04Nuke prebind support; it's unworkable and we're never going to finish it.Mark Kettenis
ok guenther@, deraadt@
2016-07-04The GOT has been initally mapped RW for *years*; ld.so doesn't need toPhilip Guenther
mprotect it to RW when filling in the references from the PLT in snaps for a week, ok deraadt@
2016-06-21When handling DT_TEXTREL only set the mapping to READ+WRITE, ignoreTheo de Raadt
possible EXEC permission for the section, because the proper permission is set late, and there are no thread concerns here. Avoids W^X issues in oddball cases. ok guenther kettenis
2016-06-21Handle textrels like other architectures do.Theo de Raadt
ok kettenis guenther
2016-06-18Make mips64 like all the others: only make mappings writable during relocationPhilip Guenther
if DT_TEXTREL was set on the object. If that's needed, only set the mapping to READ+WRITE to avoid W^X violation. ok kettenis@
2016-06-13Only need to sync the icache on the GOT for the old BSS PLT formatPhilip Guenther
ok kettenis@
2016-06-08Some ELF ABIs still require a PLT that is both writable and executable. ToMark Kettenis
avoid W^X violations, initially map such segments as writable and non-executable, and change the mapping to non-writable and executable after initial relocation processing. As a side-benefit this means we no longer depend on the __plt_start and __plt_end to make the PLT read-only after relocation processing. This will break binaries linked with ld -Z, most notably emacs, on some of our architectures. ok deraadt@, guenther@
2016-06-05Avoid W^X violation when setting DT_DEBUG on mips64.Mark Kettenis
ok deraadt@
2016-05-26for textrels (sthen ran into one...):Theo de Raadt
Ignore the listed protection (which may contain X) when making page writeable temporary.
2016-05-22Ignore the listed protection (which may contain X) when making pageTheo de Raadt
writeable temporary. As pointed out by kettenis, discussed with guenther
2016-05-21mul/div/rem replacement should happen without PROT_EXECTheo de Raadt
ok guenther
2016-05-21Temporarily make the PLT writable when we're initializing the magic slotsMark Kettenis
or doing non-lazy relocation processing. ok guenther@
2016-05-19Give the caller a chance to handle the failure if unable to allocatePhilip Guenther
the TIB for a new thread ok jca@ millert@ deraadt@
2016-05-19ld.so can now be entered by multiple threads via _dl_{allocate,free}_tib(),Philip Guenther
so do locking in ld.so's malloc subsystem, (re)using the existing _dl_thread_kern_{stop,go}() callbacks. problem diagnosed by jsing@ in the 'go' port; fix tested there and by semarie@ in the 'rust' port
2016-05-18fix types for mmap wrappers. A few whitespace cleanups snuck in.Theo de Raadt
ok guenther
2016-05-12more hppa64 cleaningTheo de Raadt
2016-05-11remove hppa64 port, which we never got going beyond broken single users.Theo de Raadt
hppa reverse-stack gives us a valuable test case, but most developers don't have a 2nd one to proceed further with this. ok kettenis
2016-05-07Move the set_tcb after getdents to keep L_cerr in range.Philip Guenther
ok deraadt@
2016-05-07Use a Thread Information Block in both single and multi-threaded programs.Philip Guenther
This stores errno, the cancelation flags, and related bits for each thread and is allocated by ld.so or libc.a. This is an ABI break from 5.9-stable! Make libpthread dlopen'able by moving the cancelation wrappers into libc and doing locking and fork/errno handling via callbacks that libpthread registers when it first initializes. 'errno' *must* be declared via <errno.h> now! Clean up libpthread's symbol exports like libc. On powerpc, offset the TIB/TCB/TLS data from the register per the ELF spec. Testing by various, particularly sthen@ and patrick@ ok kettenis@
2016-03-24Unbreak arm and m88k: COPY relocations for weak symbols that are overloadedPhilip Guenther
with strong symbols in ld.so don't do what we need, so put definitions back in crt0 and make ld.so update __progname like it does environ. report and testing patrick@ jsg@
2016-03-21Rename the system call sendsyslog2 to sendsyslog. Keep the old oneAlexander Bluhm
as osendsyslog for a while. The three argument variant is the only one that will stay. input kettenis@; OK deraadt@
2016-03-21Provide _dlctl(), an alternate name for dlctl() that's in the reservedPhilip Guenther
namespace, for use by libpthread ok deraadt@
2016-03-21Switch ld.so's stack smash handler from sendsyslog to sendsyslog2Philip Guenther
and pass the LOG_CONS flag like libc's handler. ok deraadt@ bluhm@ (who had a similar diff)
2016-03-20Export environ and __progname, making the latter a copy of just the filenamePhilip Guenther
portion like crt0 does. This is prep for eliminating _dl_fixup_user_env() Mark almost everything in resolve.h as hidden, to improve code generation. ok kettenis@ mpi@ "good time" deraadt@
2016-03-16More "(<blah> *)0" -> NULL, avoiding any stdarg functions.Kenneth R Westerback
Feedback millert@ kettenis@
2016-01-24Delete remnants of grpsym cache setting during symbol search: it's done atPhilip Guenther
load time only nwo. Rename _dl_searchnum and lastlookup to _dl_grpsym_gen and grpsym_gen as they are generation numbers. Merge _dl_newsymsearch() into _dl_cache_grpsym_list_setup(). ok millert@
2016-01-24Lacking precise dependency-from-relocation tracking, a nodelete objectPhilip Guenther
needs to lock down the entire load group, not just the specific object. problem report and ok sthen@ been in snaps for a week
2015-12-22assign pointers to NULL rather than 0mmcc
2015-12-22Remove a couple needless allocation casts. No binary change.mmcc
2015-12-17s/failes/failed/gmmcc
2015-12-12Remove NULL-checks before free(). ok tb@mmcc
2015-12-06Simplify the relocation code for the ld.so bootstrap and static pie: trackPhilip Guenther
just the dynamic tags are needed instead of reusing the generic elf_object_t structure. testing and feedback from miod@ ok kettenis@
2015-11-15ldd(1) sets environment variable LD_TRACE_LOADED_OBJECTS to tell ld.soTheo de Raadt
that it should show information about the program it loads, rather than run it. In that specific case, ld.so can pledge to "stdio rpath" to ensure that code path in ld.so has no bugs. Yes, a pledge in ld.so.... who'd have thought! ok guenther
2015-11-15pledge "stdio rpath wpath cpath tmppath fattr"Theo de Raadt
ok guenther
2015-11-06Fix unloading of load groups when the last reference wasn't on thePhilip Guenther
load_object but rather some descendent. Detect that case in _dl_unload_shlib() and switch to unloading the entire group. Based on partial analyses by Henri Kemppainen (duclare (at) guu.fi) and Peter Hajdu (peter.ferenc.hajdu (at) gmail.com) ok millert@
2015-11-02Remove duplicate declarationPhilip Guenther
2015-11-02Factor out the logic for mprotecting the memory between two symbols intoPhilip Guenther
a new MI routine _dl_protect_segment(), and use that for protecting the GOT and--on some archs--the PLT. Amazing testing turnaround by miod@, who apparently violated relativity to get back results on some archs as fast as he did
2015-11-02Fix typo: s/DT_JUMPREL/DT_JMPREL/Philip Guenther
2015-10-29remove tests for LD_HINTS_VERSION_1; ok kettenisTheo de Raadt
2015-10-14Check mmap and read return values. While at it, remove unused duplicated file.Tobias Stoeckmann
ok millert@
2015-09-23Don't be too agressive write-protecting the GOT and PLT. If we have no clueMark Kettenis
where they end, there is a good chance they are sharing a page with .data, which obviously needs to remain writable. So only attempt to make them read-only if we know they have a non-zero size. Original diff from guenther@ based on an earlier diff from me. Fixes ld -Z on alpha. ok miod@, guenther@
2015-09-19kbind has eliminated the need for and use of the bind lock. Delete it, thePhilip Guenther
the callback, and the sigprocmask stub. Keep around the DL_SETBINDLCK case until libpthread stops using it. discussed with miod@ at l2k15 ok kettenis@
2015-09-19Remove PROT_EXEC bit from GOT_PERMS. ld.so doesn't need it anymore, andMark Kettenis
rcrt0.o will add it for BSS-PLT binaries if necessary. ok guenther@
2015-09-19Make bootstrapping code compatible with the Secure-PLT ABI.Mark Kettenis
ok guenther@
2015-09-13Rename __sysctl syscall to just sysctl, as the userland wrapper is no longerPhilip Guenther
necessary ok deraadt@ jsing@
2015-09-12Use kbind for lazy binding GOT/PLT updates on arm.Philip Guenther
While here add some gcc __predict hints. Much testing, discussion, pondering, and flailing from miod and deraadt ok miod@