[llvm] 34b3d5b - [obj2yaml] - Zero initialize program headers. NFCI.

Georgii Rymar via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 23 02:39:32 PDT 2020


Author: Georgii Rymar
Date: 2020-04-23T12:39:14+03:00
New Revision: 34b3d5b66c40486447126a66ae2c1fbc2f878c3c

URL: https://github.com/llvm/llvm-project/commit/34b3d5b66c40486447126a66ae2c1fbc2f878c3c
DIFF: https://github.com/llvm/llvm-project/commit/34b3d5b66c40486447126a66ae2c1fbc2f878c3c.diff

LOG: [obj2yaml] - Zero initialize program headers. NFCI.

It allows to simplify the current code and also
might help for the code around.

It is also consistent with what we do for another headers,
e.g. section headers, elf file header etc.

Differential revision: https://reviews.llvm.org/D78627

Added: 
    

Modified: 
    llvm/lib/ObjectYAML/ELFEmitter.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/ObjectYAML/ELFEmitter.cpp b/llvm/lib/ObjectYAML/ELFEmitter.cpp
index c32c42b795e7..090a8d808011 100644
--- a/llvm/lib/ObjectYAML/ELFEmitter.cpp
+++ b/llvm/lib/ObjectYAML/ELFEmitter.cpp
@@ -318,6 +318,7 @@ template <class ELFT>
 void ELFState<ELFT>::initProgramHeaders(std::vector<Elf_Phdr> &PHeaders) {
   for (const auto &YamlPhdr : Doc.ProgramHeaders) {
     Elf_Phdr Phdr;
+    zero(Phdr);
     Phdr.p_type = YamlPhdr.Type;
     Phdr.p_flags = YamlPhdr.Flags;
     Phdr.p_vaddr = YamlPhdr.VAddr;
@@ -759,16 +760,16 @@ 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");
 
-    uint64_t PhdrFileOffset = Fragments.empty() ? 0 : Fragments.front().Offset;
     if (YamlPhdr.Offset) {
-      if (!Fragments.empty() && *YamlPhdr.Offset > PhdrFileOffset)
+      if (!Fragments.empty() && *YamlPhdr.Offset > Fragments.front().Offset)
         reportError("'Offset' for segment with index " + Twine(PhdrIdx) +
                     " must be less than or equal to the minimum file offset of "
                     "all included sections (0x" +
-                    Twine::utohexstr(PhdrFileOffset) + ")");
-      PhdrFileOffset = *YamlPhdr.Offset;
+                    Twine::utohexstr(Fragments.front().Offset) + ")");
+      PHeader.p_offset = *YamlPhdr.Offset;
+    } else if (!Fragments.empty()) {
+      PHeader.p_offset = Fragments.front().Offset;
     }
-    PHeader.p_offset = PhdrFileOffset;
 
     // 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


        


More information about the llvm-commits mailing list