Skip to content

Commit

Permalink
[yaml2obj] - Change how p_offset is calculated when creating segments…
Browse files Browse the repository at this point in the history
…. NFCI.

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

Differential revision: https://reviews.llvm.org/D78363
  • Loading branch information
Georgii Rymar committed Apr 22, 2020
1 parent 317c491 commit 87d33d9
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions llvm/lib/ObjectYAML/ELFEmitter.cpp
Expand Up @@ -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
Expand Down

0 comments on commit 87d33d9

Please sign in to comment.