HomeFreeBSD

rtld: move relro enforcement after ifunc processing

Description

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

Details

Provenance
emasteAuthored on
Reviewer
kib
Parents
rS340136: Move the fixed base for PIE loading on arm.
Branches
Unknown
Tags
Unknown