summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-06-18 22:38:20 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-06-18 22:38:20 +0000
commit28b186f3cc9730ccae156ec0069465dea45e179e (patch)
tree5ceba309df930dd9ae699bdc0c23a3d6621b3ef9
parentd30c2356b0ef695310da842cfb0e6a0b12b2658b (diff)
Improve the --expand-relocs handling of MachO.
In a relocation target can take 3 basic forms * A r_value in scattered relocations. * A symbol in external relocations. * A section is non-external relocations. Have the dump reflect that. With this change we go from CHECK-NEXT: Extern: 0 CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5) CHECK-NEXT: Symbol: 0x2 CHECK-NEXT: Scattered: 0 To just // CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5) // CHECK-NEXT: Section: __data (2) Since the relocation is with a section, we print the seciton name and don't need to say that it is not scattered or external. Someone motivated can add further special cases for things like ARM64_RELOC_ADDEND and ARM_RELOC_PAIR. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240073 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Object/MachOObjectFile.cpp6
-rw-r--r--test/CodeGen/PowerPC/hello-reloc.s38
-rw-r--r--test/MC/AArch64/arm64-leaf-compact-unwind.s16
-rw-r--r--test/MC/MachO/AArch64/classrefs.s2
-rw-r--r--test/MC/MachO/AArch64/darwin-ARM64-reloc.s56
-rw-r--r--test/MC/MachO/AArch64/ld64-workaround.s8
-rw-r--r--test/MC/MachO/AArch64/mergeable.s8
-rw-r--r--test/MC/MachO/AArch64/reloc-crash.s2
-rw-r--r--test/MC/MachO/AArch64/reloc-crash2.s2
-rw-r--r--test/MC/MachO/ARM/static-movt-relocs.s12
-rw-r--r--test/MC/MachO/darwin-x86_64-diff-reloc-assign-2.s8
-rw-r--r--test/MC/MachO/darwin-x86_64-reloc.s90
-rw-r--r--test/MC/MachO/reloc.s60
-rw-r--r--test/MC/MachO/x86_64-mergeable.s12
-rw-r--r--test/tools/llvm-readobj/relocations.test110
-rw-r--r--test/tools/llvm-readobj/sections-ext.test110
-rw-r--r--tools/llvm-readobj/MachODumper.cpp46
17 files changed, 127 insertions, 459 deletions
diff --git a/lib/Object/MachOObjectFile.cpp b/lib/Object/MachOObjectFile.cpp
index adb8cab056e..f76dd0d3f7c 100644
--- a/lib/Object/MachOObjectFile.cpp
+++ b/lib/Object/MachOObjectFile.cpp
@@ -2012,9 +2012,11 @@ MachOObjectFile::getAnyRelocationSection(
const MachO::any_relocation_info &RE) const {
if (isRelocationScattered(RE) || getPlainRelocationExternal(RE))
return *section_end();
- unsigned SecNum = getPlainRelocationSymbolNum(RE) - 1;
+ unsigned SecNum = getPlainRelocationSymbolNum(RE);
+ if (SecNum == MachO::R_ABS || SecNum > Sections.size())
+ return *section_end();
DataRefImpl DRI;
- DRI.d.a = SecNum;
+ DRI.d.a = SecNum - 1;
return SectionRef(DRI, this);
}
diff --git a/test/CodeGen/PowerPC/hello-reloc.s b/test/CodeGen/PowerPC/hello-reloc.s
index f0fd8f29b59..12f4315f675 100644
--- a/test/CodeGen/PowerPC/hello-reloc.s
+++ b/test/CodeGen/PowerPC/hello-reloc.s
@@ -66,46 +66,36 @@ L_.str: ; @.str
; DARWIN-G4-DUMP: Offset: 0x34
; DARWIN-G4-DUMP: PCRel: 1
; DARWIN-G4-DUMP: Length: 2
-; DARWIN-G4-DUMP: Extern: 0
; DARWIN-G4-DUMP: Type: PPC_RELOC_BR24 (3)
-; DARWIN-G4-DUMP: Symbol: 0x3
-; DARWIN-G4-DUMP: Scattered: 0
+; DARWIN-G4-DUMP: Section: __picsymbolstub1
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP: Relocation {
; DARWIN-G4-DUMP: Offset: 0x30
; DARWIN-G4-DUMP: PCRel: 0
; DARWIN-G4-DUMP: Length: 2
-; DARWIN-G4-DUMP: Extern: N/A
; DARWIN-G4-DUMP: Type: PPC_RELOC_LO16_SECTDIFF (11)
-; DARWIN-G4-DUMP: Symbol: 0x74
-; DARWIN-G4-DUMP: Scattered: 1
+; DARWIN-G4-DUMP: Value: 0x74
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP: Relocation {
; DARWIN-G4-DUMP: Offset: 0x0
; DARWIN-G4-DUMP: PCRel: 0
; DARWIN-G4-DUMP: Length: 2
-; DARWIN-G4-DUMP: Extern: N/A
; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1)
-; DARWIN-G4-DUMP: Symbol: 0x14
-; DARWIN-G4-DUMP: Scattered: 1
+; DARWIN-G4-DUMP: Value: 0x14
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP: Relocation {
; DARWIN-G4-DUMP: Offset: 0x2C
; DARWIN-G4-DUMP: PCRel: 0
; DARWIN-G4-DUMP: Length: 2
-; DARWIN-G4-DUMP: Extern: N/A
; DARWIN-G4-DUMP: Type: PPC_RELOC_HA16_SECTDIFF (12)
-; DARWIN-G4-DUMP: Symbol: 0x74
-; DARWIN-G4-DUMP: Scattered: 1
+; DARWIN-G4-DUMP: Value: 0x74
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP: Relocation {
; DARWIN-G4-DUMP: Offset: 0x60
; DARWIN-G4-DUMP: PCRel: 0
; DARWIN-G4-DUMP: Length: 2
-; DARWIN-G4-DUMP: Extern: N/A
; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1)
-; DARWIN-G4-DUMP: Symbol: 0x14
-; DARWIN-G4-DUMP: Scattered: 1
+; DARWIN-G4-DUMP: Value: 0x14
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP: Section __picsymbolstub1 {
@@ -113,37 +103,29 @@ L_.str: ; @.str
; DARWIN-G4-DUMP: Offset: 0x14
; DARWIN-G4-DUMP: PCRel: 0
; DARWIN-G4-DUMP: Length: 2
-; DARWIN-G4-DUMP: Extern: N/A
; DARWIN-G4-DUMP: Type: PPC_RELOC_LO16_SECTDIFF (11)
-; DARWIN-G4-DUMP: Symbol: 0x70
-; DARWIN-G4-DUMP: Scattered: 1
+; DARWIN-G4-DUMP: Value: 0x70
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP: Relocation {
; DARWIN-G4-DUMP: Offset: 0x0
; DARWIN-G4-DUMP: PCRel: 0
; DARWIN-G4-DUMP: Length: 2
-; DARWIN-G4-DUMP: Extern: N/A
; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1)
-; DARWIN-G4-DUMP: Symbol: 0x58
-; DARWIN-G4-DUMP: Scattered: 1
+; DARWIN-G4-DUMP: Value: 0x58
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP: Relocation {
; DARWIN-G4-DUMP: Offset: 0xC
; DARWIN-G4-DUMP: PCRel: 0
; DARWIN-G4-DUMP: Length: 2
-; DARWIN-G4-DUMP: Extern: N/A
; DARWIN-G4-DUMP: Type: PPC_RELOC_HA16_SECTDIFF (12)
-; DARWIN-G4-DUMP: Symbol: 0x70
-; DARWIN-G4-DUMP: Scattered: 1
+; DARWIN-G4-DUMP: Value: 0x70
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP: Relocation {
; DARWIN-G4-DUMP: Offset: 0x18
; DARWIN-G4-DUMP: PCRel: 0
; DARWIN-G4-DUMP: Length: 2
-; DARWIN-G4-DUMP: Extern: N/A
; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1)
-; DARWIN-G4-DUMP: Symbol: 0x58
-; DARWIN-G4-DUMP: Scattered: 1
+; DARWIN-G4-DUMP: Value: 0x58
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP: Section __la_symbol_ptr {
@@ -151,10 +133,8 @@ L_.str: ; @.str
; DARWIN-G4-DUMP: Offset: 0x0
; DARWIN-G4-DUMP: PCRel: 0
; DARWIN-G4-DUMP: Length: 2
-; DARWIN-G4-DUMP: Extern: 1
; DARWIN-G4-DUMP: Type: PPC_RELOC_VANILLA (0)
; DARWIN-G4-DUMP: Symbol: dyld_stub_binding_helper
-; DARWIN-G4-DUMP: Scattered: 0
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP: }
; DARWIN-G4-DUMP:]
diff --git a/test/MC/AArch64/arm64-leaf-compact-unwind.s b/test/MC/AArch64/arm64-leaf-compact-unwind.s
index 27af4dafe41..a0703f6360d 100644
--- a/test/MC/AArch64/arm64-leaf-compact-unwind.s
+++ b/test/MC/AArch64/arm64-leaf-compact-unwind.s
@@ -27,37 +27,29 @@
// CHECK-NEXT: Offset: 0x60
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT: Symbol: 0x1
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __text (1)
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x40
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT: Symbol: 0x1
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __text (1)
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x20
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT: Symbol: 0x1
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __text (1)
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x0
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
-// CHECK-NEXT: Symbol: 0x1
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __text (1)
// CHECK-NEXT: }
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
diff --git a/test/MC/MachO/AArch64/classrefs.s b/test/MC/MachO/AArch64/classrefs.s
index 5edc82ca0b1..d92bbb4a57a 100644
--- a/test/MC/MachO/AArch64/classrefs.s
+++ b/test/MC/MachO/AArch64/classrefs.s
@@ -9,10 +9,8 @@
// CHECK-NEXT: Offset: 0x0
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: Lbar
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: }
// CHECK-NEXT: ]
diff --git a/test/MC/MachO/AArch64/darwin-ARM64-reloc.s b/test/MC/MachO/AArch64/darwin-ARM64-reloc.s
index 07d52528e91..b4d0b082c8a 100644
--- a/test/MC/MachO/AArch64/darwin-ARM64-reloc.s
+++ b/test/MC/MachO/AArch64/darwin-ARM64-reloc.s
@@ -40,127 +40,99 @@ L_.str:
; CHECK-NEXT: Offset: 0x24
; CHECK-NEXT: PCRel: 1
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_PAGE21 (3)
; CHECK-NEXT: Symbol: L_.str
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x20
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_GOT_LOAD_PAGEOFF12 (6)
; CHECK-NEXT: Symbol: _data_ext
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x1C
; CHECK-NEXT: PCRel: 1
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_GOT_LOAD_PAGE21 (5)
; CHECK-NEXT: Symbol: _data_ext
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x18
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 0
; CHECK-NEXT: Type: ARM64_RELOC_ADDEND (10)
-; CHECK-NEXT: Symbol: 0x4
-; CHECK-NEXT: Scattered: 0
+; CHECK-NEXT: Section: - (4)
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x18
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_PAGEOFF12 (4)
; CHECK-NEXT: Symbol: _data
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x14
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 0
; CHECK-NEXT: Type: ARM64_RELOC_ADDEND (10)
-; CHECK-NEXT: Symbol: 0x1
-; CHECK-NEXT: Scattered: 0
+; CHECK-NEXT: Section: __text
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x14
; CHECK-NEXT: PCRel: 1
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_PAGE21 (3)
; CHECK-NEXT: Symbol: _data
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x10
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 0
; CHECK-NEXT: Type: ARM64_RELOC_ADDEND (10)
-; CHECK-NEXT: Symbol: 0x4
-; CHECK-NEXT: Scattered: 0
+; CHECK-NEXT: Section: - (4)
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x10
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_PAGEOFF12 (4)
; CHECK-NEXT: Symbol: _data
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0xC
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_PAGEOFF12 (4)
; CHECK-NEXT: Symbol: _data
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x8
; CHECK-NEXT: PCRel: 1
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_PAGE21 (3)
; CHECK-NEXT: Symbol: _data
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x4
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 0
; CHECK-NEXT: Type: ARM64_RELOC_ADDEND (10)
-; CHECK-NEXT: Symbol: 0x14
-; CHECK-NEXT: Scattered: 0
+; CHECK-NEXT: Section: - (20)
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x4
; CHECK-NEXT: PCRel: 1
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_BRANCH26 (2)
; CHECK-NEXT: Symbol: _func
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x0
; CHECK-NEXT: PCRel: 1
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_BRANCH26 (2)
; CHECK-NEXT: Symbol: _func
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: }
; CHECK-NEXT: Section __data {
@@ -168,91 +140,71 @@ L_.str:
; CHECK-NEXT: Offset: 0x2C
; CHECK-NEXT: PCRel: 1
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_POINTER_TO_GOT (7)
; CHECK-NEXT: Symbol: _foo
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x24
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 3
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_POINTER_TO_GOT (7)
; CHECK-NEXT: Symbol: _foo
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x20
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_SUBTRACTOR (1)
; CHECK-NEXT: Symbol: _bar
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x20
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
; CHECK-NEXT: Symbol: _foo
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x18
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 3
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_SUBTRACTOR (1)
; CHECK-NEXT: Symbol: _bar
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x18
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 3
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
; CHECK-NEXT: Symbol: _foo
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x10
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 3
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_SUBTRACTOR (1)
; CHECK-NEXT: Symbol: _bar
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x10
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 3
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
; CHECK-NEXT: Symbol: _foo
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x8
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 3
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
; CHECK-NEXT: Symbol: _foo
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: Relocation {
; CHECK-NEXT: Offset: 0x0
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 3
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
; CHECK-NEXT: Symbol: _foo
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: }
; CHECK-NEXT: ]
diff --git a/test/MC/MachO/AArch64/ld64-workaround.s b/test/MC/MachO/AArch64/ld64-workaround.s
index a33cacc075b..63f91705599 100644
--- a/test/MC/MachO/AArch64/ld64-workaround.s
+++ b/test/MC/MachO/AArch64/ld64-workaround.s
@@ -10,37 +10,29 @@
// CHECK-NEXT: Offset: 0x18
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: Llit16
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x10
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: Llit8
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x8
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: Llit4
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x0
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: Lcfstring
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: }
// CHECK-NEXT: ]
diff --git a/test/MC/MachO/AArch64/mergeable.s b/test/MC/MachO/AArch64/mergeable.s
index fcd83952756..4fed04c9334 100644
--- a/test/MC/MachO/AArch64/mergeable.s
+++ b/test/MC/MachO/AArch64/mergeable.s
@@ -25,37 +25,29 @@ L1:
// CHECK-NEXT: Offset: 0x18
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: L1
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x10
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: L1
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x8
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: L0
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x0
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: L0
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: }
// CHECK-NEXT: ]
diff --git a/test/MC/MachO/AArch64/reloc-crash.s b/test/MC/MachO/AArch64/reloc-crash.s
index 4984947f65b..f8ad4c4f751 100644
--- a/test/MC/MachO/AArch64/reloc-crash.s
+++ b/test/MC/MachO/AArch64/reloc-crash.s
@@ -9,10 +9,8 @@
; CHECK-NEXT: Offset: 0x0
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 3
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0)
; CHECK-NEXT: Symbol: Lbar
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: }
; CHECK-NEXT: ]
diff --git a/test/MC/MachO/AArch64/reloc-crash2.s b/test/MC/MachO/AArch64/reloc-crash2.s
index 6ae44715c63..3aa26281bc0 100644
--- a/test/MC/MachO/AArch64/reloc-crash2.s
+++ b/test/MC/MachO/AArch64/reloc-crash2.s
@@ -8,10 +8,8 @@
; CHECK-NEXT: Offset: 0x0
; CHECK-NEXT: PCRel: 0
; CHECK-NEXT: Length: 2
-; CHECK-NEXT: Extern: 1
; CHECK-NEXT: Type: ARM64_RELOC_PAGEOFF12 (4)
; CHECK-NEXT: Symbol: ltmp1
-; CHECK-NEXT: Scattered: 0
; CHECK-NEXT: }
; CHECK-NEXT: }
; CHECK-NEXT: ]
diff --git a/test/MC/MachO/ARM/static-movt-relocs.s b/test/MC/MachO/ARM/static-movt-relocs.s
index 4385549035e..d94be2f4f6c 100644
--- a/test/MC/MachO/ARM/static-movt-relocs.s
+++ b/test/MC/MachO/ARM/static-movt-relocs.s
@@ -12,37 +12,29 @@ foo:
@ CHECK-NEXT: Offset: 0x4
@ CHECK-NEXT: PCRel: 0
@ CHECK-NEXT: Length: 3
-@ CHECK-NEXT: Extern: 1
@ CHECK-NEXT: Type: ARM_RELOC_HALF (8)
@ CHECK-NEXT: Symbol: bar
-@ CHECK-NEXT: Scattered: 0
@ CHECK-NEXT: }
@ CHECK-NEXT: Relocation {
@ CHECK-NEXT: Offset: 0x10
@ CHECK-NEXT: PCRel: 0
@ CHECK-NEXT: Length: 3
-@ CHECK-NEXT: Extern: 0
@ CHECK-NEXT: Type: ARM_RELOC_PAIR (1)
-@ CHECK-NEXT: Symbol: 0xFFFFFF
-@ CHECK-NEXT: Scattered: 0
+@ CHECK-NEXT: Section: -
@ CHECK-NEXT: }
@ CHECK-NEXT: Relocation {
@ CHECK-NEXT: Offset: 0x0
@ CHECK-NEXT: PCRel: 0
@ CHECK-NEXT: Length: 2
-@ CHECK-NEXT: Extern: 1
@ CHECK-NEXT: Type: ARM_RELOC_HALF (8)
@ CHECK-NEXT: Symbol: bar
-@ CHECK-NEXT: Scattered: 0
@ CHECK-NEXT: }
@ CHECK-NEXT: Relocation {
@ CHECK-NEXT: Offset: 0x0
@ CHECK-NEXT: PCRel: 0
@ CHECK-NEXT: Length: 2
-@ CHECK-NEXT: Extern: 0
@ CHECK-NEXT: Type: ARM_RELOC_PAIR (1)
-@ CHECK-NEXT: Symbol: 0xFFFFFF
-@ CHECK-NEXT: Scattered: 0
+@ CHECK-NEXT: Section: -
@ CHECK-NEXT: }
@ CHECK-NEXT: }
@ CHECK-NEXT: ]
diff --git a/test/MC/MachO/darwin-x86_64-diff-reloc-assign-2.s b/test/MC/MachO/darwin-x86_64-diff-reloc-assign-2.s
index 9b9495e11ca..e3fa1335a0c 100644
--- a/test/MC/MachO/darwin-x86_64-diff-reloc-assign-2.s
+++ b/test/MC/MachO/darwin-x86_64-diff-reloc-assign-2.s
@@ -14,19 +14,15 @@ L_var2:
// CHECK-NEXT: Offset: 0x4
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
-// CHECK-NEXT: Symbol: 0x2
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __data (2)
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x4
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
-// CHECK-NEXT: Symbol: 0x2
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __data (2)
// CHECK-NEXT: }
// CHECK-NEXT: }
// CHECK-NEXT: ]
diff --git a/test/MC/MachO/darwin-x86_64-reloc.s b/test/MC/MachO/darwin-x86_64-reloc.s
index 48dd6b4b229..32e079879ea 100644
--- a/test/MC/MachO/darwin-x86_64-reloc.s
+++ b/test/MC/MachO/darwin-x86_64-reloc.s
@@ -93,46 +93,36 @@ L6:
// CHECK-NEXT: Offset: 0x20
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
-// CHECK-NEXT: Symbol: 0x4
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __literal8
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x18
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: f6
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x10
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
-// CHECK-NEXT: Symbol: 0x4
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __literal8
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x8
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_GOT (4)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x4
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_GOT (4)
// CHECK-NEXT: Symbol: _foobar
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: }
// CHECK-NEXT: Section __text {
@@ -140,289 +130,225 @@ L6:
// CHECK-NEXT: Offset: 0xDA
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_GOT (4)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0xD3
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
-// CHECK-NEXT: Symbol: 0x4
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __literal8
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0xCD
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
// CHECK-NEXT: Symbol: f6
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0xC7
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
-// CHECK-NEXT: Symbol: 0x4
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __literal8
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0xC1
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
-// CHECK-NEXT: Symbol: 0x1
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __data
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0xA5
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
// CHECK-NEXT: Symbol: _prev
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0xA5
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x9D
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
// CHECK-NEXT: Symbol: _prev
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x9D
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x95
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: _prev
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x8D
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: _prev
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x79
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED_4 (8)
// CHECK-NEXT: Symbol: _prev
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x71
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED_2 (7)
// CHECK-NEXT: Symbol: _prev
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x69
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED_1 (6)
// CHECK-NEXT: Symbol: _prev
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x63
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
// CHECK-NEXT: Symbol: _prev
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x5C
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
// CHECK-NEXT: Symbol: _prev
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x55
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
// CHECK-NEXT: Symbol: _bar
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x55
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x4D
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
// CHECK-NEXT: Symbol: _bar
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x4D
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x45
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
// CHECK-NEXT: Symbol: _bar
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x45
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x3D
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x35
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x2D
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED_4 (8)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x26
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED_1 (6)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x20
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x1A
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_SIGNED (1)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x14
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_GOT (4)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0xE
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_GOT_LOAD (3)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x7
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_BRANCH (2)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x2
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_BRANCH (2)
// CHECK-NEXT: Symbol: _foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: }
// CHECK-NEXT: Section __debug_frame {
@@ -430,19 +356,15 @@ L6:
// CHECK-NEXT: Offset: 0x8
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: _ext_foo
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x0
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
-// CHECK-NEXT: Symbol: 0x2
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __text
// CHECK-NEXT: }
// CHECK-NEXT: }
// CHECK-NEXT: ]
diff --git a/test/MC/MachO/reloc.s b/test/MC/MachO/reloc.s
index 55c99402529..6a78d0452ed 100644
--- a/test/MC/MachO/reloc.s
+++ b/test/MC/MachO/reloc.s
@@ -59,19 +59,15 @@ _f1:
// CHECK-NEXT: Offset: 0x6
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
-// CHECK-NEXT: Symbol: 0x3
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __const
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x1
// CHECK-NEXT: PCRel: 1
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
-// CHECK-NEXT: Symbol: 0x0
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: - (0)
// CHECK-NEXT: }
// CHECK-NEXT: }
// CHECK-NEXT: Section __data {
@@ -79,100 +75,78 @@ _f1:
// CHECK-NEXT: Offset: 0x2F
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT: Symbol: _f1
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x2B
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT: Symbol: _f1
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x2A
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 0
-// CHECK-NEXT: Extern: N/A
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
-// CHECK-NEXT: Symbol: 0x1D
-// CHECK-NEXT: Scattered: 1
+// CHECK-NEXT: Value: 0x1D
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x28
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 1
-// CHECK-NEXT: Extern: N/A
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
-// CHECK-NEXT: Symbol: 0x1D
-// CHECK-NEXT: Scattered: 1
+// CHECK-NEXT: Value: 0x1D
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x24
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: N/A
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
-// CHECK-NEXT: Symbol: 0x1D
-// CHECK-NEXT: Scattered: 1
+// CHECK-NEXT: Value: 0x1D
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x20
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: N/A
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
-// CHECK-NEXT: Symbol: 0x1D
-// CHECK-NEXT: Scattered: 1
+// CHECK-NEXT: Value: 0x1D
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x14
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: N/A
// CHECK-NEXT: Type: GENERIC_RELOC_LOCAL_SECTDIFF (4)
-// CHECK-NEXT: Symbol: 0x21
-// CHECK-NEXT: Scattered: 1
+// CHECK-NEXT: Value: 0x21
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x0
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: N/A
// CHECK-NEXT: Type: GENERIC_RELOC_PAIR (1)
-// CHECK-NEXT: Symbol: 0x29
-// CHECK-NEXT: Scattered: 1
+// CHECK-NEXT: Value: 0x29
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x8
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
-// CHECK-NEXT: Symbol: 0x2
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __data
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x4
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT: Symbol: undef
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x0
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
// CHECK-NEXT: Symbol: undef
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: }
// CHECK-NEXT: Section __const {
@@ -180,37 +154,29 @@ _f1:
// CHECK-NEXT: Offset: 0x8
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
-// CHECK-NEXT: Symbol: 0x1
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __text
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x4
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: GENERIC_RELOC_VANILLA (0)
-// CHECK-NEXT: Symbol: 0x3
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __const
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x0
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: N/A
// CHECK-NEXT: Type: GENERIC_RELOC_LOCAL_SECTDIFF (4)
-// CHECK-NEXT: Symbol: 0x1D
-// CHECK-NEXT: Scattered: 1
+// CHECK-NEXT: Value: 0x1D
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x0
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 2
-// CHECK-NEXT: Extern: N/A
// CHECK-NEXT: Type: GENERIC_RELOC_PAIR (1)
-// CHECK-NEXT: Symbol: 0x40
-// CHECK-NEXT: Scattered: 1
+// CHECK-NEXT: Value: 0x40
// CHECK-NEXT: }
// CHECK-NEXT: }
// CHECK-NEXT:]
diff --git a/test/MC/MachO/x86_64-mergeable.s b/test/MC/MachO/x86_64-mergeable.s
index 972477693ed..b7933f92c0c 100644
--- a/test/MC/MachO/x86_64-mergeable.s
+++ b/test/MC/MachO/x86_64-mergeable.s
@@ -23,37 +23,29 @@ L1:
// CHECK-NEXT: Offset: 0x18
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: L1
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x10
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
-// CHECK-NEXT: Symbol: 0x3
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __cstring (3)
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x8
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 1
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
// CHECK-NEXT: Symbol: L0
-// CHECK-NEXT: Scattered: 0
// CHECK-NEXT: }
// CHECK-NEXT: Relocation {
// CHECK-NEXT: Offset: 0x0
// CHECK-NEXT: PCRel: 0
// CHECK-NEXT: Length: 3
-// CHECK-NEXT: Extern: 0
// CHECK-NEXT: Type: X86_64_RELOC_UNSIGNED (0)
-// CHECK-NEXT: Symbol: 0x2
-// CHECK-NEXT: Scattered: 0
+// CHECK-NEXT: Section: __literal4 (2)
// CHECK-NEXT: }
// CHECK-NEXT: }
// CHECK-NEXT: ]
diff --git a/test/tools/llvm-readobj/relocations.test b/test/tools/llvm-readobj/relocations.test
index 1cab15ecb28..229fef54fb8 100644
--- a/test/tools/llvm-readobj/relocations.test
+++ b/test/tools/llvm-readobj/relocations.test
@@ -63,46 +63,36 @@ MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x24
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_LO16_SECTDIFF (11)
-MACHO-PPC-NEXT: Symbol: 0x64
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0x64
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x0
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_PAIR (1)
-MACHO-PPC-NEXT: Symbol: 0xC
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0xC
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x1C
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_HA16_SECTDIFF (12)
-MACHO-PPC-NEXT: Symbol: 0x64
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0x64
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x58
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_PAIR (1)
-MACHO-PPC-NEXT: Symbol: 0xC
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0xC
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x18
MACHO-PPC-NEXT: PCRel: 1
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: 0
MACHO-PPC-NEXT: Type: PPC_RELOC_BR24 (3)
-MACHO-PPC-NEXT: Symbol: 0x2
-MACHO-PPC-NEXT: Scattered: 0
+MACHO-PPC-NEXT: Section: __picsymbolstub1 (2)
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Section __picsymbolstub1 {
@@ -110,37 +100,29 @@ MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x14
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_LO16_SECTDIFF (11)
-MACHO-PPC-NEXT: Symbol: 0x68
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0x68
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x0
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_PAIR (1)
-MACHO-PPC-NEXT: Symbol: 0x48
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0x48
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0xC
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_HA16_SECTDIFF (12)
-MACHO-PPC-NEXT: Symbol: 0x68
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0x68
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x20
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_PAIR (1)
-MACHO-PPC-NEXT: Symbol: 0x48
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0x48
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Section __la_symbol_ptr {
@@ -148,10 +130,8 @@ MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x0
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: 1
MACHO-PPC-NEXT: Type: PPC_RELOC_VANILLA (0)
-MACHO-PPC-NEXT: Symbol: dyld_stub_binding_helper
-MACHO-PPC-NEXT: Scattered: 0
+MACHO-PPC-NEXT: Symbol: dyld_stub_binding_helper (5)
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: ]
@@ -162,46 +142,36 @@ MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x24
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (14)
-MACHO-PPC64-NEXT: Symbol: 0x64
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0x64
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x0
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (1)
-MACHO-PPC64-NEXT: Symbol: 0xC
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0xC
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x1C
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (12)
-MACHO-PPC64-NEXT: Symbol: 0x64
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0x64
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x58
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (1)
-MACHO-PPC64-NEXT: Symbol: 0xC
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0xC
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x18
MACHO-PPC64-NEXT: PCRel: 1
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: 0
MACHO-PPC64-NEXT: Type: (3)
-MACHO-PPC64-NEXT: Symbol: 0x2
-MACHO-PPC64-NEXT: Scattered: 0
+MACHO-PPC64-NEXT: Section: __picsymbolstub1 (2)
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Section __picsymbolstub1 {
@@ -209,37 +179,29 @@ MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x14
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (14)
-MACHO-PPC64-NEXT: Symbol: 0x6C
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0x6C
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x0
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (1)
-MACHO-PPC64-NEXT: Symbol: 0x48
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0x48
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0xC
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (12)
-MACHO-PPC64-NEXT: Symbol: 0x6C
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0x6C
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x24
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (1)
-MACHO-PPC64-NEXT: Symbol: 0x48
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0x48
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Section __la_symbol_ptr {
@@ -247,10 +209,8 @@ MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x0
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 3
-MACHO-PPC64-NEXT: Extern: 1
MACHO-PPC64-NEXT: Type: (0)
-MACHO-PPC64-NEXT: Symbol: dyld_stub_binding_helper
-MACHO-PPC64-NEXT: Scattered: 0
+MACHO-PPC64-NEXT: Symbol: dyld_stub_binding_helper (5)
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: ]
@@ -262,82 +222,64 @@ MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x38
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 2
-MACHO-ARM-NEXT: Extern: N/A
MACHO-ARM-NEXT: Type: ARM_RELOC_SECTDIFF (2)
-MACHO-ARM-NEXT: Symbol: 0x40
-MACHO-ARM-NEXT: Scattered: 1
+MACHO-ARM-NEXT: Value: 0x40
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x0
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 2
-MACHO-ARM-NEXT: Extern: N/A
MACHO-ARM-NEXT: Type: ARM_RELOC_PAIR (1)
-MACHO-ARM-NEXT: Symbol: 0x28
-MACHO-ARM-NEXT: Scattered: 1
+MACHO-ARM-NEXT: Value: 0x28
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x20
MACHO-ARM-NEXT: PCRel: 1
MACHO-ARM-NEXT: Length: 2
-MACHO-ARM-NEXT: Extern: 1
MACHO-ARM-NEXT: Type: ARM_RELOC_BR24 (5)
MACHO-ARM-NEXT: Symbol: _g
-MACHO-ARM-NEXT: Scattered: 0
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x1C
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 1
-MACHO-ARM-NEXT: Extern: 1
MACHO-ARM-NEXT: Type: ARM_RELOC_HALF (8)
MACHO-ARM-NEXT: Symbol: _g
-MACHO-ARM-NEXT: Scattered: 0
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x0
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 1
-MACHO-ARM-NEXT: Extern: 0
MACHO-ARM-NEXT: Type: ARM_RELOC_PAIR (1)
-MACHO-ARM-NEXT: Symbol: 0xFFFFFF
-MACHO-ARM-NEXT: Scattered: 0
+MACHO-ARM-NEXT: Section: -
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x18
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 0
-MACHO-ARM-NEXT: Extern: 1
MACHO-ARM-NEXT: Type: ARM_RELOC_HALF (8)
MACHO-ARM-NEXT: Symbol: _g
-MACHO-ARM-NEXT: Scattered: 0
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x0
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 0
-MACHO-ARM-NEXT: Extern: 0
MACHO-ARM-NEXT: Type: ARM_RELOC_PAIR (1)
-MACHO-ARM-NEXT: Symbol: 0xFFFFFF
-MACHO-ARM-NEXT: Scattered: 0
+MACHO-ARM-NEXT: Section: -
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0xC
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 2
-MACHO-ARM-NEXT: Extern: N/A
MACHO-ARM-NEXT: Type: ARM_RELOC_SECTDIFF (2)
-MACHO-ARM-NEXT: Symbol: 0x44
-MACHO-ARM-NEXT: Scattered: 1
+MACHO-ARM-NEXT: Value: 0x44
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x0
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 2
-MACHO-ARM-NEXT: Extern: N/A
MACHO-ARM-NEXT: Type: ARM_RELOC_PAIR (1)
-MACHO-ARM-NEXT: Symbol: 0x4
-MACHO-ARM-NEXT: Scattered: 1
+MACHO-ARM-NEXT: Value: 0x4
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: ]
diff --git a/test/tools/llvm-readobj/sections-ext.test b/test/tools/llvm-readobj/sections-ext.test
index 8d9252242be..19b7aa0516d 100644
--- a/test/tools/llvm-readobj/sections-ext.test
+++ b/test/tools/llvm-readobj/sections-ext.test
@@ -302,46 +302,36 @@ MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x24
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_LO16_SECTDIFF (11)
-MACHO-PPC-NEXT: Symbol: 0x64
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0x64
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x0
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_PAIR (1)
-MACHO-PPC-NEXT: Symbol: 0xC
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0xC
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x1C
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_HA16_SECTDIFF (12)
-MACHO-PPC-NEXT: Symbol: 0x64
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0x64
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x58
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_PAIR (1)
-MACHO-PPC-NEXT: Symbol: 0xC
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0xC
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x18
MACHO-PPC-NEXT: PCRel: 1
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: 0
MACHO-PPC-NEXT: Type: PPC_RELOC_BR24 (3)
-MACHO-PPC-NEXT: Symbol: 0x2
-MACHO-PPC-NEXT: Scattered: 0
+MACHO-PPC-NEXT: Section: __picsymbolstub1 (2)
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: ]
MACHO-PPC-NEXT: Symbols [
@@ -385,37 +375,29 @@ MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x14
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_LO16_SECTDIFF (11)
-MACHO-PPC-NEXT: Symbol: 0x68
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0x68
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x0
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_PAIR (1)
-MACHO-PPC-NEXT: Symbol: 0x48
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0x48
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0xC
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_HA16_SECTDIFF (12)
-MACHO-PPC-NEXT: Symbol: 0x68
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0x68
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x20
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: N/A
MACHO-PPC-NEXT: Type: PPC_RELOC_PAIR (1)
-MACHO-PPC-NEXT: Symbol: 0x48
-MACHO-PPC-NEXT: Scattered: 1
+MACHO-PPC-NEXT: Value: 0x48
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: ]
MACHO-PPC-NEXT: Symbols [
@@ -501,10 +483,8 @@ MACHO-PPC-NEXT: Relocation {
MACHO-PPC-NEXT: Offset: 0x0
MACHO-PPC-NEXT: PCRel: 0
MACHO-PPC-NEXT: Length: 2
-MACHO-PPC-NEXT: Extern: 1
MACHO-PPC-NEXT: Type: PPC_RELOC_VANILLA (0)
-MACHO-PPC-NEXT: Symbol: dyld_stub_binding_helper
-MACHO-PPC-NEXT: Scattered: 0
+MACHO-PPC-NEXT: Symbol: dyld_stub_binding_helper (5)
MACHO-PPC-NEXT: }
MACHO-PPC-NEXT: ]
MACHO-PPC-NEXT: Symbols [
@@ -539,46 +519,36 @@ MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x24
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (14)
-MACHO-PPC64-NEXT: Symbol: 0x64
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0x64
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x0
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (1)
-MACHO-PPC64-NEXT: Symbol: 0xC
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0xC
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x1C
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (12)
-MACHO-PPC64-NEXT: Symbol: 0x64
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0x64
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x58
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (1)
-MACHO-PPC64-NEXT: Symbol: 0xC
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0xC
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x18
MACHO-PPC64-NEXT: PCRel: 1
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: 0
MACHO-PPC64-NEXT: Type: (3)
-MACHO-PPC64-NEXT: Symbol: 0x2
-MACHO-PPC64-NEXT: Scattered: 0
+MACHO-PPC64-NEXT: Section: __picsymbolstub1 (2)
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: ]
MACHO-PPC64-NEXT: Symbols [
@@ -622,37 +592,29 @@ MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x14
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (14)
-MACHO-PPC64-NEXT: Symbol: 0x6C
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0x6C
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x0
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (1)
-MACHO-PPC64-NEXT: Symbol: 0x48
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0x48
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0xC
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (12)
-MACHO-PPC64-NEXT: Symbol: 0x6C
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0x6C
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x24
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 2
-MACHO-PPC64-NEXT: Extern: N/A
MACHO-PPC64-NEXT: Type: (1)
-MACHO-PPC64-NEXT: Symbol: 0x48
-MACHO-PPC64-NEXT: Scattered: 1
+MACHO-PPC64-NEXT: Value: 0x48
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: ]
MACHO-PPC64-NEXT: Symbols [
@@ -738,10 +700,8 @@ MACHO-PPC64-NEXT: Relocation {
MACHO-PPC64-NEXT: Offset: 0x0
MACHO-PPC64-NEXT: PCRel: 0
MACHO-PPC64-NEXT: Length: 3
-MACHO-PPC64-NEXT: Extern: 1
MACHO-PPC64-NEXT: Type: (0)
-MACHO-PPC64-NEXT: Symbol: dyld_stub_binding_helper
-MACHO-PPC64-NEXT: Scattered: 0
+MACHO-PPC64-NEXT: Symbol: dyld_stub_binding_helper (5)
MACHO-PPC64-NEXT: }
MACHO-PPC64-NEXT: ]
MACHO-PPC64-NEXT: Symbols [
@@ -775,82 +735,64 @@ MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x38
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 2
-MACHO-ARM-NEXT: Extern: N/A
MACHO-ARM-NEXT: Type: ARM_RELOC_SECTDIFF (2)
-MACHO-ARM-NEXT: Symbol: 0x40
-MACHO-ARM-NEXT: Scattered: 1
+MACHO-ARM-NEXT: Value: 0x40
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x0
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 2
-MACHO-ARM-NEXT: Extern: N/A
MACHO-ARM-NEXT: Type: ARM_RELOC_PAIR (1)
-MACHO-ARM-NEXT: Symbol: 0x28
-MACHO-ARM-NEXT: Scattered: 1
+MACHO-ARM-NEXT: Value: 0x28
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x20
MACHO-ARM-NEXT: PCRel: 1
MACHO-ARM-NEXT: Length: 2
-MACHO-ARM-NEXT: Extern: 1
MACHO-ARM-NEXT: Type: ARM_RELOC_BR24 (5)
MACHO-ARM-NEXT: Symbol: _g
-MACHO-ARM-NEXT: Scattered: 0
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x1C
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 1
-MACHO-ARM-NEXT: Extern: 1
MACHO-ARM-NEXT: Type: ARM_RELOC_HALF (8)
MACHO-ARM-NEXT: Symbol: _g
-MACHO-ARM-NEXT: Scattered: 0
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x0
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 1
-MACHO-ARM-NEXT: Extern: 0
MACHO-ARM-NEXT: Type: ARM_RELOC_PAIR (1)
-MACHO-ARM-NEXT: Symbol: 0xFFFFFF
-MACHO-ARM-NEXT: Scattered: 0
+MACHO-ARM-NEXT: Section: -
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x18
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 0
-MACHO-ARM-NEXT: Extern: 1
MACHO-ARM-NEXT: Type: ARM_RELOC_HALF (8)
MACHO-ARM-NEXT: Symbol: _g
-MACHO-ARM-NEXT: Scattered: 0
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x0
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 0
-MACHO-ARM-NEXT: Extern: 0
MACHO-ARM-NEXT: Type: ARM_RELOC_PAIR (1)
-MACHO-ARM-NEXT: Symbol: 0xFFFFFF
-MACHO-ARM-NEXT: Scattered: 0
+MACHO-ARM-NEXT: Section: -
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0xC
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 2
-MACHO-ARM-NEXT: Extern: N/A
MACHO-ARM-NEXT: Type: ARM_RELOC_SECTDIFF (2)
-MACHO-ARM-NEXT: Symbol: 0x44
-MACHO-ARM-NEXT: Scattered: 1
+MACHO-ARM-NEXT: Value: 0x44
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: Relocation {
MACHO-ARM-NEXT: Offset: 0x0
MACHO-ARM-NEXT: PCRel: 0
MACHO-ARM-NEXT: Length: 2
-MACHO-ARM-NEXT: Extern: N/A
MACHO-ARM-NEXT: Type: ARM_RELOC_PAIR (1)
-MACHO-ARM-NEXT: Symbol: 0x4
-MACHO-ARM-NEXT: Scattered: 1
+MACHO-ARM-NEXT: Value: 0x4
MACHO-ARM-NEXT: }
MACHO-ARM-NEXT: ]
MACHO-ARM-NEXT: Symbols [
diff --git a/tools/llvm-readobj/MachODumper.cpp b/tools/llvm-readobj/MachODumper.cpp
index 40691a222f0..9017350c403 100644
--- a/tools/llvm-readobj/MachODumper.cpp
+++ b/tools/llvm-readobj/MachODumper.cpp
@@ -469,35 +469,47 @@ void MachODumper::printRelocation(const MachOObjectFile *Obj,
DataRefImpl DR = Reloc.getRawDataRefImpl();
MachO::any_relocation_info RE = Obj->getRelocation(DR);
bool IsScattered = Obj->isRelocationScattered(RE);
- SmallString<32> SymbolNameOrOffset("0x");
- if (IsScattered) {
- // Scattered relocations don't really have an associated symbol
- // for some reason, even if one exists in the symtab at the correct address.
- SymbolNameOrOffset += utohexstr(Obj->getScatteredRelocationValue(RE));
- } else {
+ bool IsExtern = !IsScattered && Obj->getPlainRelocationExternal(RE);
+
+ StringRef TargetName;
+ if (IsExtern) {
symbol_iterator Symbol = Reloc.getSymbol();
if (Symbol != Obj->symbol_end()) {
- StringRef SymbolName;
- if (error(Symbol->getName(SymbolName)))
+ if (error(Symbol->getName(TargetName)))
return;
- SymbolNameOrOffset = SymbolName;
- } else
- SymbolNameOrOffset += utohexstr(Obj->getPlainRelocationSymbolNum(RE));
+ }
+ } else if (!IsScattered) {
+ section_iterator SecI = Reloc.getSection();
+ if (SecI != Obj->section_end()) {
+ if (error(SecI->getName(TargetName)))
+ return;
+ }
}
+ if (TargetName.empty())
+ TargetName = "-";
if (opts::ExpandRelocs) {
DictScope Group(W, "Relocation");
W.printHex("Offset", Offset);
W.printNumber("PCRel", Obj->getAnyRelocationPCRel(RE));
W.printNumber("Length", Obj->getAnyRelocationLength(RE));
- if (IsScattered)
- W.printString("Extern", StringRef("N/A"));
- else
- W.printNumber("Extern", Obj->getPlainRelocationExternal(RE));
W.printNumber("Type", RelocName, Obj->getAnyRelocationType(RE));
- W.printString("Symbol", SymbolNameOrOffset);
- W.printNumber("Scattered", IsScattered);
+ if (IsScattered) {
+ W.printHex("Value", Obj->getScatteredRelocationValue(RE));
+ } else {
+ const char *Kind = IsExtern ? "Symbol" : "Section";
+ W.printNumber(Kind, TargetName, Obj->getPlainRelocationSymbolNum(RE));
+ }
} else {
+ SmallString<32> SymbolNameOrOffset("0x");
+ if (IsScattered) {
+ // Scattered relocations don't really have an associated symbol for some
+ // reason, even if one exists in the symtab at the correct address.
+ SymbolNameOrOffset += utohexstr(Obj->getScatteredRelocationValue(RE));
+ } else {
+ SymbolNameOrOffset = TargetName;
+ }
+
raw_ostream& OS = W.startLine();
OS << W.hex(Offset)
<< " " << Obj->getAnyRelocationPCRel(RE)