[PATCH] D60614: [llvm-readelf] Fix dumping of SHN_XINDEX symbols

Eugene Leviant via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 12 06:49:48 PDT 2019


evgeny777 created this revision.
evgeny777 added reviewers: jhenderson, rupprecht, jakehehrlich.
Herald added a subscriber: arphaman.

The problem was discussed in D60555 <https://reviews.llvm.org/D60555>

There is no test for PRC, OS and RSV kind of symbols. Does anyone know how to generate them?
Test case uses approach suggested by @arichardson (thanks!)


https://reviews.llvm.org/D60614

Files:
  test/tools/llvm-readobj/many-sections.test
  tools/llvm-readobj/ELFDumper.cpp


Index: tools/llvm-readobj/ELFDumper.cpp
===================================================================
--- tools/llvm-readobj/ELFDumper.cpp
+++ tools/llvm-readobj/ELFDumper.cpp
@@ -2953,9 +2953,10 @@
   case ELF::SHN_COMMON:
     return "COM";
   case ELF::SHN_XINDEX:
-    SectionIndex = unwrapOrError(object::getExtendedSymbolTableIndex<ELFT>(
-        Symbol, FirstSym, this->dumper()->getShndxTable()));
-    LLVM_FALLTHROUGH;
+    return to_string(
+        format_decimal(unwrapOrError(object::getExtendedSymbolTableIndex<ELFT>(
+                           Symbol, FirstSym, this->dumper()->getShndxTable())),
+                       3));
   default:
     // Find if:
     // Processor specific
Index: test/tools/llvm-readobj/many-sections.test
===================================================================
--- test/tools/llvm-readobj/many-sections.test
+++ test/tools/llvm-readobj/many-sections.test
@@ -0,0 +1,22 @@
+# RUN: llvm-mc %s -filetype=obj -o %t
+# RUN: llvm-readelf -s %t | FileCheck %s
+
+.macro generate_values
+  .irp i, 0, 1, 2, 3, 4, 5, 6,
+    .irp j, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+      .irp k, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+        .irp l, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+          .irp q, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+            .section sec_\i\j\k\l\q
+            .globl sym_\i\j\k\l\q
+             sym_\i\j\k\l\q:
+          .endr
+        .endr
+      .endr
+    .endr
+  .endr
+.endm
+
+generate_values
+
+# CHECK-NOT: PRC


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60614.194869.patch
Type: text/x-patch
Size: 1471 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190412/4624fdd0/attachment.bin>


More information about the llvm-commits mailing list