summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2018-05-01 16:35:16 +0000
committerSam Clegg <sbc@chromium.org>2018-05-01 16:35:16 +0000
commit73812167109e7167f64d1dcae4c20c0ebbfe802d (patch)
tree1392b930fa8200dc34253be5225b1f6b01cdfe82
parent478a6a9e63f03f7c47dcece4fc1d2fc791e53dcf (diff)
downloadbcm5719-llvm-73812167109e7167f64d1dcae4c20c0ebbfe802d.tar.gz
bcm5719-llvm-73812167109e7167f64d1dcae4c20c0ebbfe802d.zip
[WebAssembly] llvm-readobj: display symbols names in relocations
Differential Revision: https://reviews.llvm.org/D46296 llvm-svn: 331279
-rw-r--r--llvm/test/MC/WebAssembly/debug-info.ll36
-rw-r--r--llvm/test/MC/WebAssembly/func-address.ll48
-rw-r--r--llvm/test/MC/WebAssembly/reloc-code.ll8
-rw-r--r--llvm/test/MC/WebAssembly/reloc-data.ll10
-rw-r--r--llvm/test/tools/llvm-readobj/relocations.test6
-rw-r--r--llvm/tools/llvm-readobj/WasmDumper.cpp17
6 files changed, 70 insertions, 55 deletions
diff --git a/llvm/test/MC/WebAssembly/debug-info.ll b/llvm/test/MC/WebAssembly/debug-info.ll
index 77d47437485..40126a7f288 100644
--- a/llvm/test/MC/WebAssembly/debug-info.ll
+++ b/llvm/test/MC/WebAssembly/debug-info.ll
@@ -133,32 +133,32 @@
; CHECK-NEXT:]
; CHECK-NEXT:Relocations [
; CHECK-NEXT: Section (6) DATA {
-; CHECK-NEXT: 0x6 R_WEBASSEMBLY_MEMORY_ADDR_I32[10] 0
-; CHECK-NEXT: 0xF R_WEBASSEMBLY_TABLE_INDEX_I32[8]
+; CHECK-NEXT: 0x6 R_WEBASSEMBLY_MEMORY_ADDR_I32 myextern 0
+; CHECK-NEXT: 0xF R_WEBASSEMBLY_TABLE_INDEX_I32 f2
; CHECK-NEXT: }
; CHECK-NEXT: Section (9) .debug_info {
-; CHECK-NEXT: 0x6 R_WEBASSEMBLY_SECTION_OFFSET_I32[1] 0
-; CHECK-NEXT: 0xC R_WEBASSEMBLY_SECTION_OFFSET_I32[0] 0
-; CHECK-NEXT: 0x12 R_WEBASSEMBLY_SECTION_OFFSET_I32[0] 55
-; CHECK-NEXT: 0x16 R_WEBASSEMBLY_SECTION_OFFSET_I32[7] 0
-; CHECK-NEXT: 0x1A R_WEBASSEMBLY_SECTION_OFFSET_I32[0] 62
-; CHECK-NEXT: 0x1E R_WEBASSEMBLY_FUNCTION_OFFSET_I32[8] 0
-; CHECK-NEXT: 0x27 R_WEBASSEMBLY_SECTION_OFFSET_I32[0] 105
-; CHECK-NEXT: 0x33 R_WEBASSEMBLY_MEMORY_ADDR_I32[9] 0
-; CHECK-NEXT: 0x3D R_WEBASSEMBLY_SECTION_OFFSET_I32[0] 109
-; CHECK-NEXT: 0x44 R_WEBASSEMBLY_SECTION_OFFSET_I32[0] 113
-; CHECK-NEXT: 0x50 R_WEBASSEMBLY_MEMORY_ADDR_I32[11] 0
-; CHECK-NEXT: 0x5B R_WEBASSEMBLY_FUNCTION_OFFSET_I32[8] 0
-; CHECK-NEXT: 0x63 R_WEBASSEMBLY_SECTION_OFFSET_I32[0] 118
+; CHECK-NEXT: 0x6 R_WEBASSEMBLY_SECTION_OFFSET_I32 .debug_abbrev 0
+; CHECK-NEXT: 0xC R_WEBASSEMBLY_SECTION_OFFSET_I32 .debug_str 0
+; CHECK-NEXT: 0x12 R_WEBASSEMBLY_SECTION_OFFSET_I32 .debug_str 55
+; CHECK-NEXT: 0x16 R_WEBASSEMBLY_SECTION_OFFSET_I32 .debug_line 0
+; CHECK-NEXT: 0x1A R_WEBASSEMBLY_SECTION_OFFSET_I32 .debug_str 62
+; CHECK-NEXT: 0x1E R_WEBASSEMBLY_FUNCTION_OFFSET_I32 f2 0
+; CHECK-NEXT: 0x27 R_WEBASSEMBLY_SECTION_OFFSET_I32 .debug_str 105
+; CHECK-NEXT: 0x33 R_WEBASSEMBLY_MEMORY_ADDR_I32 foo 0
+; CHECK-NEXT: 0x3D R_WEBASSEMBLY_SECTION_OFFSET_I32 .debug_str 109
+; CHECK-NEXT: 0x44 R_WEBASSEMBLY_SECTION_OFFSET_I32 .debug_str 113
+; CHECK-NEXT: 0x50 R_WEBASSEMBLY_MEMORY_ADDR_I32 ptr2 0
+; CHECK-NEXT: 0x5B R_WEBASSEMBLY_FUNCTION_OFFSET_I32 f2 0
+; CHECK-NEXT: 0x63 R_WEBASSEMBLY_SECTION_OFFSET_I32 .debug_str 118
; CHECK-NEXT: }
; CHECK-NEXT: Section (12) .debug_pubnames {
-; CHECK-NEXT: 0x6 R_WEBASSEMBLY_SECTION_OFFSET_I32[2] 0
+; CHECK-NEXT: 0x6 R_WEBASSEMBLY_SECTION_OFFSET_I32 .debug_info 0
; CHECK-NEXT: }
; CHECK-NEXT: Section (13) .debug_pubtypes {
-; CHECK-NEXT: 0x6 R_WEBASSEMBLY_SECTION_OFFSET_I32[2] 0
+; CHECK-NEXT: 0x6 R_WEBASSEMBLY_SECTION_OFFSET_I32 .debug_info 0
; CHECK-NEXT: }
; CHECK-NEXT: Section (14) .debug_line {
-; CHECK-NEXT: 0x2B R_WEBASSEMBLY_FUNCTION_OFFSET_I32[8] 0
+; CHECK-NEXT: 0x2B R_WEBASSEMBLY_FUNCTION_OFFSET_I32 f2 0
; CHECK-NEXT: }
; CHECK-NEXT:]
; CHECK-NEXT:Symbols [
diff --git a/llvm/test/MC/WebAssembly/func-address.ll b/llvm/test/MC/WebAssembly/func-address.ll
index 212399863ce..f29355fdaf7 100644
--- a/llvm/test/MC/WebAssembly/func-address.ll
+++ b/llvm/test/MC/WebAssembly/func-address.ll
@@ -24,26 +24,30 @@ entry:
ret void
}
-; CHECK: Section {
-; CHECK: Type: ELEM (0x9)
-; CHECK: Size: 7
-; CHECK: }
+; CHECK: Type: ELEM (0x9)
+; CHECK-NEXT: Size: 7
-; CHECK: Relocations [
-; CHECK: Section (5) CODE {
-; CHECK: Relocation {
-; CHECK: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
-; CHECK: Offset: 0x4
-; CHECK: Index: 0x1
-; CHECK: }
-; CHECK: Relocation {
-; CHECK: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
-; CHECK: Offset: 0xB
-; CHECK: Index: 0x2
-; CHECK: }
-; CHECK: Relocation {
-; CHECK: Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB (1)
-; CHECK: Offset: 0x1E
-; CHECK: Index: 0x5
-; CHECK: }
-; CHECK: }
+; CHECK: Relocations [
+; CHECK-NEXT: Section (5) CODE {
+; CHECK-NEXT: Relocation {
+; CHECK-NEXT: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
+; CHECK-NEXT: Offset: 0x4
+; CHECK-NEXT: Symbol: import1
+; CHECK-NEXT: }
+; CHECK-NEXT: Relocation {
+; CHECK-NEXT: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
+; CHECK-NEXT: Offset: 0xB
+; CHECK-NEXT: Symbol: import2
+; CHECK-NEXT: }
+; CHECK-NEXT: Relocation {
+; CHECK-NEXT: Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB (7)
+; CHECK-NEXT: Offset: 0x15
+; CHECK-NEXT: Symbol: __stack_pointer
+; CHECK-NEXT: }
+; CHECK-NEXT: Relocation {
+; CHECK-NEXT: Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB (1)
+; CHECK-NEXT: Offset: 0x1E
+; CHECK-NEXT: Symbol: import3
+; CHECK-NEXT: }
+; CHECK-NEXT: }
+; CHECK-NEXT: ]
diff --git a/llvm/test/MC/WebAssembly/reloc-code.ll b/llvm/test/MC/WebAssembly/reloc-code.ll
index e510f56c37d..4e1cd93f793 100644
--- a/llvm/test/MC/WebAssembly/reloc-code.ll
+++ b/llvm/test/MC/WebAssembly/reloc-code.ll
@@ -28,13 +28,13 @@ entry:
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_LEB (3)
; CHECK-NEXT: Offset: 0x9
-; CHECK-NEXT: Index: 0x1
+; CHECK-NEXT: Symbol: b
; CHECK-NEXT: Addend: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_LEB (3)
; CHECK-NEXT: Offset: 0x14
-; CHECK-NEXT: Index: 0x2
+; CHECK-NEXT: Symbol: a
; CHECK-NEXT: Addend: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
@@ -50,12 +50,12 @@ entry:
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
; CHECK-NEXT: Offset: 0x2D
-; CHECK-NEXT: Index: 0x3
+; CHECK-NEXT: Symbol: c
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
; CHECK-NEXT: Offset: 0x34
-; CHECK-NEXT: Index: 0x4
+; CHECK-NEXT: Symbol: d
; CHECK-NEXT: }
; CHECK-NEXT: }
; CHECK-NEXT: ]
diff --git a/llvm/test/MC/WebAssembly/reloc-data.ll b/llvm/test/MC/WebAssembly/reloc-data.ll
index c18c5638f71..ebc63356fd1 100644
--- a/llvm/test/MC/WebAssembly/reloc-data.ll
+++ b/llvm/test/MC/WebAssembly/reloc-data.ll
@@ -17,31 +17,31 @@ target triple = "wasm32-unknown-unknown-wasm"
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_I32 (5)
; CHECK-NEXT: Offset: 0x13
-; CHECK-NEXT: Index: 0x2
+; CHECK-NEXT: Symbol: foo
; CHECK-NEXT: Addend: 8
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_I32 (5)
; CHECK-NEXT: Offset: 0x1C
-; CHECK-NEXT: Index: 0x0
+; CHECK-NEXT: Symbol: bar
; CHECK-NEXT: Addend: -16
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_I32 (5)
; CHECK-NEXT: Offset: 0x25
-; CHECK-NEXT: Index: 0x2
+; CHECK-NEXT: Symbol: foo
; CHECK-NEXT: Addend: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_I32 (5)
; CHECK-NEXT: Offset: 0x29
-; CHECK-NEXT: Index: 0x2
+; CHECK-NEXT: Symbol: foo
; CHECK-NEXT: Addend: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_I32 (5)
; CHECK-NEXT: Offset: 0x2D
-; CHECK-NEXT: Index: 0x2
+; CHECK-NEXT: Symbol: foo
; CHECK-NEXT: Addend: 0
; CHECK-NEXT: }
; CHECK-NEXT: }
diff --git a/llvm/test/tools/llvm-readobj/relocations.test b/llvm/test/tools/llvm-readobj/relocations.test
index dbbbb76d9e8..be298130408 100644
--- a/llvm/test/tools/llvm-readobj/relocations.test
+++ b/llvm/test/tools/llvm-readobj/relocations.test
@@ -291,18 +291,18 @@ WASM-NEXT: Section (4) CODE {
WASM-NEXT: Relocation {
WASM-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_SLEB (4)
WASM-NEXT: Offset: 0x4
-WASM-NEXT: Index: 0x1
+WASM-NEXT: Symbol: .L.str
WASM-NEXT: Addend: 0
WASM-NEXT: }
WASM-NEXT: Relocation {
WASM-NEXT: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
WASM-NEXT: Offset: 0xA
-WASM-NEXT: Index: 0x2
+WASM-NEXT: Symbol: puts
WASM-NEXT: }
WASM-NEXT: Relocation {
WASM-NEXT: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
WASM-NEXT: Offset: 0x11
-WASM-NEXT: Index: 0x3
+WASM-NEXT: Symbol: SomeOtherFunction
WASM-NEXT: }
WASM-NEXT: }
WASM-NEXT: ]
diff --git a/llvm/tools/llvm-readobj/WasmDumper.cpp b/llvm/tools/llvm-readobj/WasmDumper.cpp
index 562c76f85be..ce224836225 100644
--- a/llvm/tools/llvm-readobj/WasmDumper.cpp
+++ b/llvm/tools/llvm-readobj/WasmDumper.cpp
@@ -80,6 +80,11 @@ void WasmDumper::printRelocation(const SectionRef &Section,
Reloc.getTypeName(RelocTypeName);
const wasm::WasmRelocation &WasmReloc = Obj->getWasmRelocation(Reloc);
+ StringRef SymName;
+ symbol_iterator SI = Reloc.getSymbol();
+ if (SI != Obj->symbol_end())
+ SymName = error(SI->getName());
+
bool HasAddend = false;
switch (RelocType) {
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_LEB:
@@ -96,13 +101,19 @@ void WasmDumper::printRelocation(const SectionRef &Section,
DictScope Group(W, "Relocation");
W.printNumber("Type", RelocTypeName, RelocType);
W.printHex("Offset", Reloc.getOffset());
- W.printHex("Index", WasmReloc.Index);
+ if (!SymName.empty())
+ W.printString("Symbol", SymName);
+ else
+ W.printHex("Index", WasmReloc.Index);
if (HasAddend)
W.printNumber("Addend", WasmReloc.Addend);
} else {
raw_ostream& OS = W.startLine();
- OS << W.hex(Reloc.getOffset()) << " " << RelocTypeName << "["
- << WasmReloc.Index << "]";
+ OS << W.hex(Reloc.getOffset()) << " " << RelocTypeName << " ";
+ if (!SymName.empty())
+ OS << SymName;
+ else
+ OS << WasmReloc.Index;
if (HasAddend)
OS << " " << WasmReloc.Addend;
OS << "\n";
OpenPOWER on IntegriCloud