From 87d33d9e09c6b727e108c6cd86b36743740e08cc Mon Sep 17 00:00:00 2001 From: Georgii Rymar Date: Fri, 17 Apr 2020 15:06:04 +0300 Subject: [PATCH] [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 --- llvm/lib/ObjectYAML/ELFEmitter.cpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/llvm/lib/ObjectYAML/ELFEmitter.cpp b/llvm/lib/ObjectYAML/ELFEmitter.cpp index 3a673cf..450856da 100644 --- a/llvm/lib/ObjectYAML/ELFEmitter.cpp +++ b/llvm/lib/ObjectYAML/ELFEmitter.cpp @@ -759,18 +759,12 @@ void ELFState::setProgramHeaderLayout(std::vector &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 -- 2.7.4