[yaml2obj] - Change how p_offset is calculated when creating segments. NFCI.

This depends on D78361 and simplifies the computation of the `p_offset`.

Differential revision: https://reviews.llvm.org/D78363
This commit is contained in:
Georgii Rymar 2020-04-17 15:06:04 +03:00
parent 317c4913c6
commit 87d33d9e09
1 changed files with 5 additions and 11 deletions

View File

@ -759,18 +759,12 @@ void ELFState<ELFT>::setProgramHeaderLayout(std::vector<Elf_Phdr> &PHeaders,
reportError("sections in the program header with index " +
Twine(PhdrIdx) + " are not sorted by their file offset");
if (YamlPhdr.Offset) {
if (YamlPhdr.Offset)
PHeader.p_offset = *YamlPhdr.Offset;
} else {
if (YamlPhdr.Sections.size())
PHeader.p_offset = UINT32_MAX;
else
PHeader.p_offset = 0;
// Find the minimum offset for the program header.
for (const Fragment &F : Fragments)
PHeader.p_offset = std::min((uint64_t)PHeader.p_offset, F.Offset);
}
else if (!Fragments.empty())
PHeader.p_offset = Fragments.front().Offset;
else
PHeader.p_offset = 0;
// Find the maximum offset of the end of a section in order to set p_filesz
// and p_memsz. When setting p_filesz, trailing SHT_NOBITS sections are not