summaryrefslogtreecommitdiff
path: root/libexec/ld.so
AgeCommit message (Collapse)Author
2016-11-03small tweak to also check canaries if F is in effectOtto Moerbeek
2016-10-31sync to libc: malloc_move is not an option anymoreOtto Moerbeek
2016-10-25bring canaries for > page sized objects from libc to ld.so; ok guenther@Otto Moerbeek
2016-10-140xd0 -> 0xdb from libc mallocOtto Moerbeek
2016-10-14move better canary code and validate_junk() over from libc mallocOtto Moerbeek
2016-09-18merge form libc malloc:Otto Moerbeek
move page junking tp unmap(), right before we stick the region in the cache; ok tedu@
2016-09-16Implement the DT_RELACOUNT optimization. Missed previously because IPhilip Guenther
didn't recognize that RELOC_BBASED_32 was the m88k name for a pure-relative relocation testing by aoyama@
2016-09-16Remove the fallback to the __plt_{start,end} symbols, as the dynamic tagsPhilip Guenther
with the same info (DT_88K_PLT{START,END} have been around since 5.4 testing by aoyama@
2016-09-08Implement self-relocation for -static -pie on arm. Also removes someMark Kettenis
unecessary code from the normal startup code and do some general cleanup to make the code more readable. ok guenther@, jsg@
2016-09-04Redundant memset and some better style wrt exiting functions after error.Otto Moerbeek
ok guenther@
2016-09-03cherry-pick a few diffs from libc malloc; ok guenther@Otto Moerbeek
2016-09-01retire sparcTed Unangst
2016-08-31alpha and sh have TCB_SET() macros so don't need _dl_set_tcb()Philip Guenther
ok deraadt@
2016-08-30Move DT_NUM from <sys/exec_elf.h> to resolv.h in ld.so where it belongs.Mark Kettenis
ok guenther@
2016-08-28ld.so doesn't need gettimeofday or lstat stubs any morePhilip Guenther
ok deraadt@
2016-08-28fix a commentPhilip Guenther
2016-08-28Don't call lstat() before readlink() just to see if it's a symlink,Philip Guenther
as readlink() will tell you that more cheaply. ok millert@
2016-08-27Delete debugging from when lazy binding was being implementedPhilip Guenther
ok deraadt@
2016-08-27Pull in <stddef.h> for NULLPhilip Guenther
(not stdio, because ld.so has a reduced library behind it)
2016-08-23Implement support for DT_INIT_ARRAY, DT_FINI_ARRAY and DT_PREINIT_ARRAY.Mark Kettenis
Don't skip DT_INIT and DT_FINI for the main executable. This matches what Linux and Solaris do. ok guenther@
2016-08-15Drop -z nocombreloc. It was a rev 1.1 commit like on arm, so not clearPhilip Guenther
why it was needed then; perhaps fixed by the bump in binutils? Removing it enables the full relro layout for ld.so.
2016-08-14Drop -z nocombreloc. That's a rev 1.1 commit so not clear why it was neededPhilip Guenther
then; perhaps fixed by the bump in binutils? Anyway, builds seem good without it and that enables the full relro layout for ld.so. ok kettenis@
2016-08-14Mark the relro/got section as read-only before setting up the environmentPhilip Guenther
to minimize the amount of code run without it RO.
2016-08-13Passing in &_DYNAMIC appears to have stuck, so eliminate the extraPhilip Guenther
variable
2016-08-12the slimmed down random functions inside ld.so are strict clones of theTheo de Raadt
libc arc4random API, so call them _dl_{arc4random,arcrandombuf} ok tedu guenther
2016-08-09Teach arm to pass &_DYNAMIC to _dl_boot_bind(); can optimize later in treePhilip Guenther
2016-08-08Look for a PT_GNU_RELRO section per object and, if present, mprotect thatPhilip Guenther
range instead of the [__got_start, __got_end) range. On many archs this will cover _DYNAMIC too, so move up the DT_DEBUG handling to before relocations and the mprotect are done. ok kettenis@
2016-08-07As with csu, alpha passes &_DYNAMIC to _reloc_alpha_got(), so justPhilip Guenther
save that and pass it to _dl_boot_bind() too
2016-08-07Teach i386 to pass &_DYNAMIC to _dl_boot_bind()Philip Guenther
2016-08-07Teach mips64 to pass &_DYNAMIC to _dl_boot_bind()Philip Guenther
mips64be testing by deraadt@
2016-08-07hahahah: amd64 has been passing &_DYNAMIC to _dl_boot_bind() forPhilip Guenther
*149 months*
2016-08-07Flip the #ifdef logic: amd64, arm, i386, and mips64 are the only archsPhilip Guenther
using the #else case
2016-08-05use a larger chunk for getentropy() and save some for next time.Ted Unangst
coalesces some syscalls instead of one per random number. ok deraadt
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@