forked from OSchip/llvm-project
[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:
parent
317c4913c6
commit
87d33d9e09
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue