HomeFreeBSD

lld: do not round up PT_GNU_RELRO p_memsz

Description

lld: do not round up PT_GNU_RELRO p_memsz

The change was made to support glibc and believed to be a no-op on
FreeBSD, but that is not the case for architectures with multiple page
sizes, such as arm64. The relro p_memsz header was rounded up to the
default maximum page size (64K). When 4K pages are in use, multiple
pages beyond the final PT_LOAD segment had their permissions changed to
read-only after application of relocations and copy relocations, which
led to a segfault in certain cases.

This reverts upstream r290986. I have started a discussion about the
upstream fix on the LLVM mailing list.

Reported by: andrew
Sponsored by: The FreeBSD Foundation

Details

Provenance
emasteAuthored on
Parents
rS312890: Sprinkle __read_mostly on backoff and lock profiling code.
Branches
Unknown
Tags
Unknown