Skip to content
This repository has been archived by the owner on Jan 1, 2023. It is now read-only.

Commit

Permalink
[llvm-readelf] Correctly dump symbols whose section id is SHN_XINDEX
Browse files Browse the repository at this point in the history
Differential revision: https://reviews.llvm.org/D60614


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358396 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
eleviant777 committed Apr 15, 2019
1 parent cd4a474 commit 41ca7a7
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
24 changes: 24 additions & 0 deletions test/tools/llvm-readobj/many-sections2.s
Original file line number Diff line number Diff line change
@@ -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
7 changes: 4 additions & 3 deletions tools/llvm-readobj/ELFDumper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2961,9 +2961,10 @@ std::string GNUStyle<ELFT>::getSymbolSectionNdx(const ELFO *Obj,
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
Expand Down

0 comments on commit 41ca7a7

Please sign in to comment.