[PATCH] D58763: [llvm-objdump] Should print unknown d_tag in hex format

Xing via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 1 20:22:03 PST 2019


This revision was automatically updated to reflect the committed changes.
Closed by commit rL355262: [llvm-objdump] Should print unknown d_tag in hex format (authored by Higuoxing, committed by ).

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58763/new/

https://reviews.llvm.org/D58763

Files:
  llvm/trunk/include/llvm/Object/ELF.h
  llvm/trunk/lib/Object/ELF.cpp
  llvm/trunk/test/tools/llvm-objdump/elf-dynamic-section.test
  llvm/trunk/tools/llvm-objdump/ELFDump.cpp


Index: llvm/trunk/test/tools/llvm-objdump/elf-dynamic-section.test
===================================================================
--- llvm/trunk/test/tools/llvm-objdump/elf-dynamic-section.test
+++ llvm/trunk/test/tools/llvm-objdump/elf-dynamic-section.test
@@ -58,6 +58,7 @@
 # CHECK-NEXT:   VERNEEDNUM           0x0000000000000000
 # CHECK-NEXT:   AUXILIARY            D
 # CHECK-NEXT:   FILTER               U
+# CHECK-NEXT:   <unknown:>0x1234abcd 0x0000000000000001
 
 --- !ELF
 FileHeader:
@@ -188,6 +189,8 @@
        Value: 0x1
      - Tag:   DT_FILTER
        Value: 0x3
+     - Tag:   0x1234abcd
+       Value: 0x1
      - Tag:   DT_NULL
        Value: 0x0
 ProgramHeaders:
Index: llvm/trunk/lib/Object/ELF.cpp
===================================================================
--- llvm/trunk/lib/Object/ELF.cpp
+++ llvm/trunk/lib/Object/ELF.cpp
@@ -424,7 +424,7 @@
 }
 
 template <class ELFT>
-const char *ELFFile<ELFT>::getDynamicTagAsString(unsigned Arch,
+std::string ELFFile<ELFT>::getDynamicTagAsString(unsigned Arch,
                                                  uint64_t Type) const {
 #define DYNAMIC_STRINGIFY_ENUM(tag, value)                                     \
   case value:                                                                  \
@@ -470,12 +470,12 @@
 #undef DYNAMIC_TAG_MARKER
 #undef DYNAMIC_STRINGIFY_ENUM
   default:
-    return "unknown";
+    return "<unknown:>0x" + utohexstr(Type, true);
   }
 }
 
 template <class ELFT>
-const char *ELFFile<ELFT>::getDynamicTagAsString(uint64_t Type) const {
+std::string ELFFile<ELFT>::getDynamicTagAsString(uint64_t Type) const {
   return getDynamicTagAsString(getHeader()->e_machine, Type);
 }
 
Index: llvm/trunk/tools/llvm-objdump/ELFDump.cpp
===================================================================
--- llvm/trunk/tools/llvm-objdump/ELFDump.cpp
+++ llvm/trunk/tools/llvm-objdump/ELFDump.cpp
@@ -176,15 +176,8 @@
     if (Dyn.d_tag == ELF::DT_NULL)
       continue;
 
-    StringRef Str = StringRef(Elf->getDynamicTagAsString(Dyn.d_tag));
-
-    if (Str.empty()) {
-      std::string HexStr = utohexstr(static_cast<uint64_t>(Dyn.d_tag), true);
-      outs() << format("  0x%-19s", HexStr.c_str());
-    } else {
-      // We use "-21" in order to match GNU objdump's output.
-      outs() << format("  %-21s", Str.data());
-    }
+    std::string Str = Elf->getDynamicTagAsString(Dyn.d_tag);
+    outs() << format("  %-21s", Str.c_str());
 
     const char *Fmt =
         ELFT::Is64Bits ? "0x%016" PRIx64 "\n" : "0x%08" PRIx64 "\n";
Index: llvm/trunk/include/llvm/Object/ELF.h
===================================================================
--- llvm/trunk/include/llvm/Object/ELF.h
+++ llvm/trunk/include/llvm/Object/ELF.h
@@ -114,8 +114,8 @@
                              SmallVectorImpl<char> &Result) const;
   uint32_t getRelativeRelocationType() const;
 
-  const char *getDynamicTagAsString(unsigned Arch, uint64_t Type) const;
-  const char *getDynamicTagAsString(uint64_t Type) const;
+  std::string getDynamicTagAsString(unsigned Arch, uint64_t Type) const;
+  std::string getDynamicTagAsString(uint64_t Type) const;
 
   /// Get the symbol for a given relocation.
   Expected<const Elf_Sym *> getRelocationSymbol(const Elf_Rel *Rel,


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D58763.189028.patch
Type: text/x-patch
Size: 3254 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190302/11a87aa6/attachment.bin>


More information about the llvm-commits mailing list