freebsd-nq/libexec/rtld-elf
John Baldwin b4e9a36bf7 Handle relocations for newer non-PIC MIPS ABI.
Newer binutils supports extensions to the MIPS ABI for non-PIC code
that is used when compiling O32 binaries with clang 5 (but not used
for N64 oddly enough).  These extensions require support for
R_MIPS_COPY relocations as well as a second PLT GOT using
R_MIPS_JUMP_SLOT relocations.

For R_MIPS_COPY, use the same approach as on other architectures where
fixups are deferred to the MD do_copy_relocations.

The additional PLT GOT for jump slots is located in a .got.plt section
which is identified by a DT_MIPS_PLTGOT dynamic entry.  This GOT also
requires fixups for the first two GOT entries just as the normal GOT.
However, the entry point for this second GOT uses a different calling
convention. Rather than passing an offset into the GOT, it passes an
offset into the .rel.plt section.  This requires a second entry point
(_rtld_pltbind_start) which calls the normal _rtld_bind() rather than
_mips_rtld_bind().  This also means providing a real version of
reloc_jmpslot() which is used by _rtld_bind().

In addition, add real implementions of reloc_plt() and
reloc_jmpslots() which walk .rel.plt handling R_MIPS_JUMP_SLOT
relocations.

Reviewed by:	kib
Sponsored by:	DARPA / AFRL
Differential Revision:	https://reviews.freebsd.org/D12326
2017-09-12 17:46:30 +00:00
..
aarch64 Implement LD_BIND_NOT knob for rtld. 2017-03-15 21:11:57 +00:00
amd64 Implement LD_BIND_NOT knob for rtld. 2017-03-15 21:11:57 +00:00
arm End softfp->hardfp transition period for arm 2017-09-12 17:06:35 +00:00
i386 Implement LD_BIND_NOT knob for rtld. 2017-03-15 21:11:57 +00:00
mips Handle relocations for newer non-PIC MIPS ABI. 2017-09-12 17:46:30 +00:00
powerpc rtld: fix warnings about redundant declarations 2017-05-26 15:55:03 +00:00
powerpc64 rtld: fix warnings about redundant declarations 2017-05-26 15:55:03 +00:00
riscv Support for v1.10 (latest) of RISC-V privilege specification. 2017-08-10 14:18:09 +00:00
sparc64 Implement LD_BIND_NOT knob for rtld. 2017-03-15 21:11:57 +00:00
tests Increase WARNS for rtld-elf tests 2017-03-11 00:10:40 +00:00
debug.c Do not call callbacks for dl_iterate_phdr(3) with the rtld bind and 2016-01-20 07:21:33 +00:00
debug.h Remove historical GNUC test 2015-05-06 15:29:11 +00:00
libmap.c Rather than using the #define for path names, indirect through a char * 2015-10-31 04:39:55 +00:00
libmap.h
Makefile Compile reloc.o with -fno-jump-tables on MIPS. 2017-08-30 20:00:15 +00:00
Makefile.depend new depends 2015-06-16 23:37:19 +00:00
malloc.c libexec: minor spelling fixes in comments. 2016-05-01 19:39:23 +00:00
map_object.c Use address space guard to implement inter-segment gap. 2017-06-24 17:04:27 +00:00
paths.h Convert casperd(8) daemon to the libcasper. 2016-02-25 18:23:40 +00:00
rtld_lock.c Fix acquisition of nested write compat rtld locks. 2017-01-10 19:26:55 +00:00
rtld_lock.h Change compiler setting to make default visibility of the symbols for 2015-03-29 18:53:21 +00:00
rtld_printf.c Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
rtld_printf.h
rtld_tls.h Change compiler setting to make default visibility of the symbols for 2015-03-29 18:53:21 +00:00
rtld_utrace.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
rtld.1 Add serial comma. 2017-09-01 16:56:37 +00:00
rtld.c Handle relocations for newer non-PIC MIPS ABI. 2017-09-12 17:46:30 +00:00
rtld.h Handle relocations for newer non-PIC MIPS ABI. 2017-09-12 17:46:30 +00:00
Symbol.map Add rtld private interface for dso to detect dynamic loading 2015-01-03 18:09:53 +00:00
xmalloc.c