[llvm] r359443 - [yaml2obj] - Cleanup and simplify the code. NFCI.

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 29 04:54:11 PDT 2019


Author: grimar
Date: Mon Apr 29 04:54:10 2019
New Revision: 359443

URL: http://llvm.org/viewvc/llvm-project?rev=359443&view=rev
Log:
[yaml2obj] - Cleanup and simplify the code. NFCI.

The current code has the following problems:
`initSymtabSectionHeader` and `initStrtabSectionHeader` method
names saying us they are going to initialize the section headers.
Though for a few cases sh_flags field is initialized outside of them.
It does not look clean. This patch moves initialization of the
sh_flags inside these methods.

Also, it removes an excessive variable, what together with the above
change hopefully makes the code a bit more readable.

Modified:
    llvm/trunk/tools/yaml2obj/yaml2elf.cpp

Modified: llvm/trunk/tools/yaml2obj/yaml2elf.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2elf.cpp?rev=359443&r1=359442&r2=359443&view=diff
==============================================================================
--- llvm/trunk/tools/yaml2obj/yaml2elf.cpp (original)
+++ llvm/trunk/tools/yaml2obj/yaml2elf.cpp Mon Apr 29 04:54:10 2019
@@ -325,6 +325,8 @@ void ELFState<ELFT>::initSymtabSectionHe
   SHeader.sh_name = DotShStrtab.getOffset(IsStatic ? ".symtab" : ".dynsym");
   SHeader.sh_type = IsStatic ? ELF::SHT_SYMTAB : ELF::SHT_DYNSYM;
   SHeader.sh_link = IsStatic ? getDotStrTabSecNo() : getDotDynStrSecNo();
+  if (!IsStatic)
+    SHeader.sh_flags |= ELF::SHF_ALLOC;
 
   // One greater than symbol table index of the last local symbol.
   const auto &Symbols = IsStatic ? Doc.Symbols : Doc.DynamicSymbols;
@@ -378,6 +380,9 @@ void ELFState<ELFT>::initStrtabSectionHe
     unsigned SecNdx = getDotDynStrSecNo() - 1;
     if (SecNdx < Doc.Sections.size())
       SHeader.sh_addr = Doc.Sections[SecNdx]->Address;
+
+    // We assume that .dynstr is always allocatable.
+    SHeader.sh_flags |= ELF::SHF_ALLOC;
   }
 }
 
@@ -899,19 +904,17 @@ int ELFState<ELFT>::writeELF(raw_ostream
       SHeaders.push_back({});
 
   // Initialize the implicit sections
-  auto Index = State.SN2I.get(".symtab");
-  State.initSymtabSectionHeader(SHeaders[Index], SymtabType::Static, CBA);
-  Index = State.SN2I.get(".strtab");
-  State.initStrtabSectionHeader(SHeaders[Index], ".strtab", State.DotStrtab, CBA);
-  Index = State.SN2I.get(".shstrtab");
-  State.initStrtabSectionHeader(SHeaders[Index], ".shstrtab", State.DotShStrtab, CBA);
+  State.initSymtabSectionHeader(SHeaders[State.SN2I.get(".symtab")],
+                                SymtabType::Static, CBA);
+  State.initStrtabSectionHeader(SHeaders[State.SN2I.get(".strtab")], ".strtab",
+                                State.DotStrtab, CBA);
+  State.initStrtabSectionHeader(SHeaders[State.SN2I.get(".shstrtab")],
+                                ".shstrtab", State.DotShStrtab, CBA);
   if (!Doc.DynamicSymbols.empty()) {
-    Index = State.SN2I.get(".dynsym");
-    State.initSymtabSectionHeader(SHeaders[Index], SymtabType::Dynamic, CBA);
-    SHeaders[Index].sh_flags |= ELF::SHF_ALLOC;
-    Index = State.SN2I.get(".dynstr");
-    State.initStrtabSectionHeader(SHeaders[Index], ".dynstr", State.DotDynstr, CBA);
-    SHeaders[Index].sh_flags |= ELF::SHF_ALLOC;
+    State.initSymtabSectionHeader(SHeaders[State.SN2I.get(".dynsym")],
+                                  SymtabType::Dynamic, CBA);
+    State.initStrtabSectionHeader(SHeaders[State.SN2I.get(".dynstr")],
+                                  ".dynstr", State.DotDynstr, CBA);
   }
 
   // Now we can decide segment offsets




More information about the llvm-commits mailing list