Index: elf/nacl_fixup_ldso.py |
diff --git a/elf/nacl_fixup_ldso.py b/elf/nacl_fixup_ldso.py |
index 4084d6d458613519dadd2efac742e65ffbbaf131..a5eb1f9eea1e32680b10909f76a2c97bb4ab61b1 100644 |
--- a/elf/nacl_fixup_ldso.py |
+++ b/elf/nacl_fixup_ldso.py |
@@ -43,6 +43,19 @@ def main(args): |
check("B", offset_e_type, ET_DYN) |
replace("B", offset_e_type, ET_EXEC) |
+ # sel_ldr rejects ELF Program Headers other than PT_LOAD. |
+ # Drop PT_DYNAMIC, PT_GNU_STACK and PT_TLS. |
+ fh.seek(offset_ei_class) |
+ elfclass = fh.read(1) |
+ if elfclass == elfclass32: |
+ check("H", offset_e_phnum32, 7) |
+ replace("H", offset_e_phnum32, 3) |
+ elif elfclass == elfclass64: |
+ check("H", offset_e_phnum64, 7) |
+ replace("H", offset_e_phnum64, 3) |
+ else: |
+ raise AssertionError("Unknown ELF class in file %s." % filename) |
+ |
fh.close() |