Age | Commit message (Collapse) | Author |
|
ok deraadt@
|
|
mips64be testing by deraadt@
|
|
for our development process.
ok kettenis@ deraadt@
|
|
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@
|
|
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@
|
|
as osendsyslog for a while. The three argument variant is the only
one that will stay.
input kettenis@; OK deraadt@
|
|
and pass the LOG_CONS flag like libc's handler.
ok deraadt@ bluhm@ (who had a similar diff)
|
|
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@
|
|
just the dynamic tags are needed instead of reusing the generic elf_object_t
structure.
testing and feedback from miod@
ok kettenis@
|
|
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
|
|
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
|
|
the callback, and the sigprocmask stub.
Keep around the DL_SETBINDLCK case until libpthread stops using it.
discussed with miod@ at l2k15
ok kettenis@
|
|
necessary
ok deraadt@ jsing@
|
|
Use kbind for lazy binding GOT/PLT updates on alpha and mips64.
While here add some gcc __predict hints.
Much discussion with and assistance from miod and deraadt
ok deraadt@
|
|
Fixes remaining problems with static PIE on mips64.
|
|
fails.
ok kurt@
|
|
discussion, help and ok guenther@
|
|
(previously completely retarded) stack_smash_handler of ld.so
ok beck miod tedu
|
|
ok otto@ miod@
|
|
|
|
|
|
entry points, now that we no longer need _dl_mprotect to be inline; also,
make sure syscall failures return -errno rather than -1.
|
|
ld.so itself only, and ld.so on mips only has relocations in the .data section,
which is writable.
|
|
_dl_md_reloc_boot() needs to compute this.
|
|
ABI, and completely remove the code that attempts to call atexit(3) directly.
|
|
members to 64bit types. Assign new syscall numbers for (almost
all) the syscalls that involve the affected types, including anything
with time_t, timeval, itimerval, timespec, rusage, dirent, stat,
or kevent arguments. Add a d_off member to struct dirent and replace
getdirentries() with getdents(), thus immensely simplifying and
accelerating telldir/seekdir. Build perl with -DBIG_TIME.
Bump the major on every single base library: the compat bits included
here are only good enough to make the transition; the T32 compat
option will be burned as soon as we've reached the new world are
are happy with the snapshots for all architectures.
DANGER: ABI incompatibility. Updating to this kernel requires extra
work or you won't be able to login: install a snapshot instead.
Much assistance in fixing userland issues from deraadt@ and tedu@
and build assistance from todd@ and otto@
|
|
error: indirection of non-volatile null pointer will be deleted, not trap [-Werror,-Wnull-dereference]
Suggestion from matthew@
Ok matthew@ miod@
|
|
ok matthew@ millert@
|
|
each plt call, allowing to trace a binary linked against shared library at the
public function call level.
To do so, ltrace(1) sets up some environment variables to enable plt tracing
in ld.so, and invokes ktrace(2) for utrace events. ld.so will force lazy
binding and will send an utrace record in the plt resolver, without updating
the plt.
Minimal filtering capabilities are provided, inspired by Solaris' truss -u,
to limit tracing to libraries and/or symbol names. Non-traced libraries and
symbols will have the regular resolver processing, with the expected plt
update.
"Get it in" deraadt
|
|
Much assistance and testing by miod
ok miod@
|
|
Improvements and okay matthew@, millert@, guenther@
|
|
time: the logic is wrong, and there are no relocations to apply to .rodata
anyway.
ok jsing@ kettenis@
|
|
the main program should not reguster a cleanup handler with atexit(3).
This will allow us to add the cleanup handler registration code to crt0.c
and have ld.so pass its cleanup handler to the main program in the future.
While there, also zero ra to mark the last stack frame as demanded by the ELF
ABI.
ok kurt@, miod@
|
|
ok matthew@ deraadt@
|
|
"memory" to the list of clobbered registers for all syscalls that
accept a pointer. This prevents GCC from optimizing away memory loads
and stores that otherwise appear unused in a function.
Issue noted and identified by miod; fix by me.
ok miod, mpi
|
|
so it works correctly with large offsets (and matches other systems).
This requires adding a new getdirentries syscall, with the old one
renamed to ogetdirentries. All in-tree consumers of getdirentries()
have been updated. Bump libc and libpthread major numbers.
OK and with deraadt@
|
|
always points to a pointer that is initialized to NULL. Consistently use
NULL instead of mixing NULL and 0 to make the pattern more obvious.
Fixes nm(1) crashes that happen when you pass it multiple object files on
the command line.
ok miod@
|
|
|
|
are already inserted as part of jal/jr expansion by gas, and we don't need
another one.
suggested by miod@
|
|
reserved entries in the GOT, which is a GNU extension to the 64-bit MIPS
SVR4 ABI. That's fine; all existing OpenBSD/mips64 binaries have the extra
slot.
ok miod@, jsing@, drahn@
|
|
ok miod@, deraadt@, jsing@
|
|
use _dl_mmap_error() to check for mmap() errors. Adjust datatypes of
some local vars for 64-bit safety.
okay millert@ drahn@
|
|
- rename private values in struct elf_object to better
describe their meaning:
s/load_offs/obj_base/ "object's address '0' base"
s/load_addr/load_base/ "The base address of the loadable
segments"
- gdb needs the obj_base value so swap positions with load_base in
struct elf_object
- fix a few occurrences of where load_base was used instead of
obj_base.
With help and okay drahn@
|
|
Fixes PR #5579.
|
|
|
|
|
|
Prelink fixes the address of libraries making 'return to libc' attacks trival,
prebind uses a different method to achieve most of the same gains, however
without adding any security conerns.
Still under development, now in-tree.
|
|
|
|
undefined symbols, or count them as failures. inspired kurt@
|
|
next step. ok kurt@
|