[ELF] nmagic or omagic: don't allocate PT_PHDR or PF_R PT_LOAD for the !hasPhdrsComma...
authorFangrui Song <maskray@google.com>
Mon, 9 Sep 2019 13:08:51 +0000 (13:08 +0000)
committerFangrui Song <maskray@google.com>
Mon, 9 Sep 2019 13:08:51 +0000 (13:08 +0000)
commite8c0d933603a2ebfd535be454824219fb7b71001
tree1974fc84f7decf16d16517b5a32dd0528ceded27
parent388b9794b619141d4a3bba7d82b803a499d11540
[ELF] nmagic or omagic: don't allocate PT_PHDR or PF_R PT_LOAD for the !hasPhdrsCommands case

```
part.phdrs = script->hasPhdrsCommands() ? script->createPhdrs() : createPhdrs(part);
```

createPhdrs() allocates a PT_PHDR and a PF_R PT_LOAD, which will be
deleted later in LinkerScript::allocateHeaders, but leave a gap between
the program headers and the first section. Don't allocate the segments
to avoid the gap. PT_INTERP is likely not needed as well.

Reviewed By: ruiu

Differential Revision: https://reviews.llvm.org/D67324

llvm-svn: 371398
lld/ELF/Writer.cpp
lld/test/ELF/magic-page-combo-warn.s
lld/test/ELF/nmagic.s
lld/test/ELF/relro-omagic.s
lld/test/ELF/segments.s