[llvm] r358396 - [llvm-readelf] Correctly dump symbols whose section id is SHN_XINDEX

Eugene Leviant via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 15 04:21:47 PDT 2019


Author: evgeny777
Date: Mon Apr 15 04:21:47 2019
New Revision: 358396

URL: http://llvm.org/viewvc/llvm-project?rev=358396&view=rev
Log:
[llvm-readelf] Correctly dump symbols whose section id is SHN_XINDEX

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

Added:
    llvm/trunk/test/tools/llvm-readobj/many-sections2.s
Modified:
    llvm/trunk/tools/llvm-readobj/ELFDumper.cpp

Added: llvm/trunk/test/tools/llvm-readobj/many-sections2.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/many-sections2.s?rev=358396&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/many-sections2.s (added)
+++ llvm/trunk/test/tools/llvm-readobj/many-sections2.s Mon Apr 15 04:21:47 2019
@@ -0,0 +1,24 @@
+# Tests that symbols whose section index is SHN_XINDEX are displayed
+# correctly. They should not be treated as processor/OS specific or
+# reserved.
+# REQUIRES: x86-registered-target
+# RUN: llvm-mc %s -filetype=obj -triple=x86_64-pc-linux -o %t
+# RUN: llvm-readelf -s %t | FileCheck %s
+
+.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
+
+# CHECK:     65278: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 65280 sym_65277
+# CHECK:     65310: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 65312 sym_65309
+# CHECK:     65342: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 65344 sym_65341

Modified: llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/ELFDumper.cpp?rev=358396&r1=358395&r2=358396&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/ELFDumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/ELFDumper.cpp Mon Apr 15 04:21:47 2019
@@ -2961,9 +2961,10 @@ std::string GNUStyle<ELFT>::getSymbolSec
   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




More information about the llvm-commits mailing list