[PATCH] D78627: [obj2yaml] - Zero initialize program headers. NFCI.

George Rimar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 22 05:22:27 PDT 2020


grimar created this revision.
grimar added reviewers: jhenderson, MaskRay.
Herald added a subscriber: hiraditya.
grimar added a child revision: D78628: [obj2yaml] - Program headers: simplify the computation of p_filesz..
grimar edited the summary of this revision.

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.


https://reviews.llvm.org/D78627

Files:
  llvm/lib/ObjectYAML/ELFEmitter.cpp


Index: llvm/lib/ObjectYAML/ELFEmitter.cpp
===================================================================
--- llvm/lib/ObjectYAML/ELFEmitter.cpp
+++ llvm/lib/ObjectYAML/ELFEmitter.cpp
@@ -318,6 +318,7 @@
 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 @@
       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


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D78627.259245.patch
Type: text/x-patch
Size: 1631 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200422/245662cb/attachment.bin>


More information about the llvm-commits mailing list