[PATCH] D64906: [ELF][PPC] Allow overlapping PT_LOAD (keep p_offset ranges adjacent) to decrease file size

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 18 20:30:00 PDT 2019


MaskRay marked an inline comment as done.
MaskRay added inline comments.


================
Comment at: ELF/Writer.cpp:2390
       // rounds up.
-      p->p_memsz = alignTo(p->p_memsz, config->commonPageSize);
+      p->p_memsz = alignTo(p->p_offset + p->p_memsz, config->commonPageSize) -
+                   p->p_offset;
----------------
@pcc I think after D29242, we may lose PROT_READ protection of the last page of PT_GNU_RELRO. (This patch should keep the behavior unchanged.) 

glibc/musl essentially do:

```
start = p_vaddr & -pagesize
mprotect(start, (p_vaddr+p_memsz & -pagesize) - start, PROT_READ)
```

The last page is unprotected if maxPageSize > pagesize >= commonPageSize.

I guess that may be why ld.bfd aligns the end of PT_GNU_RELRO, instead of its start.


Repository:
  rLLD LLVM Linker

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64906/new/

https://reviews.llvm.org/D64906





More information about the llvm-commits mailing list