]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
rtld: move relro enforcement after ifunc processing
authoremaste <emaste@FreeBSD.org>
Sun, 4 Nov 2018 19:21:12 +0000 (19:21 +0000)
committeremaste <emaste@FreeBSD.org>
Sun, 4 Nov 2018 19:21:12 +0000 (19:21 +0000)
commit04e0acd935dc79a8426198af2ed82fc9fec4c4c9
tree71dcc63b3a237f45253594cbce2321a97c11d74d
parent0c625bd63873ba7bc9f53d8a02d2807c6caf2b66
rtld: move relro enforcement after ifunc processing

Previously the combination of relro (implicit), -z now and ifunc use
resulted in a segfault when applying ifuncs after relro (test binary
here just calls amd64_get_fsbase()):

| % env LD_DEBUG=1 libexec/rtld-elf/obj/ld-elf.so.1 a.out
| ...
| enforcing main obj relro
| ...
| resolving ifuncs
| reloc_jmpslot: *0x203198 = 0x189368ea4570
| zsh: bus error (core dumped)  LD_DEBUG=1 obj/ld-elf.so.1 ~/a.out

Reported by: Shawn Webb
Reviewed by: kib
Sponsored by: The FreeBSD Foundation
libexec/rtld-elf/rtld.c