Updated llvm-objdump to display local relocations in Mach-O binaries

Summary:
llvm-objdump's Mach-O parser was updated in r306037 to display external
relocations for MH_KEXT_BUNDLE file types. This change extends the Macho-O
parser to display local relocations for MH_PRELOAD files. When used with
the -macho option relocations will be displayed in a historical format.

All tests are passing for llvm, clang, and lld. llvm-objdump builds without
compiler warnings.

rdar://35778019

Reviewers: enderby

Reviewed By: enderby

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D41199

llvm-svn: 320832
diff --git a/llvm/test/tools/llvm-objdump/X86/Inputs/macho-preload-x86_64 b/llvm/test/tools/llvm-objdump/X86/Inputs/macho-preload-x86_64
new file mode 100755
index 0000000..236606e
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/X86/Inputs/macho-preload-x86_64
Binary files differ
diff --git a/llvm/test/tools/llvm-objdump/X86/macho-preload-relocations.test b/llvm/test/tools/llvm-objdump/X86/macho-preload-relocations.test
new file mode 100644
index 0000000..dda0b2b
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/X86/macho-preload-relocations.test
@@ -0,0 +1,5 @@
+// RUN: llvm-objdump -macho -r %p/Inputs/macho-preload-x86_64 | FileCheck %s
+
+CHECK: Local relocation information 1 entries
+CHECK: address  pcrel length extern type    scattered symbolnum/value
+CHECK: 00000000 False quad   False  UNSIGND False     2 (__TEXT,__cstring)
diff --git a/llvm/test/tools/llvm-objdump/X86/macho-relocations.test b/llvm/test/tools/llvm-objdump/X86/macho-relocations.test
index 536aec8..111cf0c 100644
--- a/llvm/test/tools/llvm-objdump/X86/macho-relocations.test
+++ b/llvm/test/tools/llvm-objdump/X86/macho-relocations.test
@@ -1,7 +1,9 @@
 RUN: llvm-objdump -macho -r %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s
 
-CHECK: RELOCATION RECORDS FOR [__text]:
-CHECK: 0000000000000027 X86_64_RELOC_BRANCH _printf
-CHECK: 000000000000000b X86_64_RELOC_SIGNED L_.str
-CHECK: RELOCATION RECORDS FOR [__compact_unwind]:
-CHECK: 0000000000000000 X86_64_RELOC_UNSIGNED __text
+CHECK: Relocation information (__TEXT,__text) 2 entries
+CHECK: address  pcrel length extern type    scattered symbolnum/value
+CHECK: 00000027 True  long   True   BRANCH  False     _printf
+CHECK: 0000000b True  long   True   SIGNED  False     L_.str
+CHECK: Relocation information (__LD,__compact_unwind) 1 entries
+CHECK: address  pcrel length extern type    scattered symbolnum/value
+CHECK: 00000000 False quad   False  UNSIGND False     1 (__TEXT,__text)
diff --git a/llvm/test/tools/llvm-objdump/X86/malformed-machos.test b/llvm/test/tools/llvm-objdump/X86/malformed-machos.test
index e29df46..414cf97 100644
--- a/llvm/test/tools/llvm-objdump/X86/malformed-machos.test
+++ b/llvm/test/tools/llvm-objdump/X86/malformed-machos.test
@@ -68,4 +68,4 @@
 INVALID-BIND-ENTRY: macho-invalid-bind-entry': truncated or malformed object (for BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB bad library ordinal: 83 (max 0) for opcode at: 0x0)
 
 RUN: llvm-objdump -macho -r %p/Inputs/macho-invalid-reloc-section-index | FileCheck -check-prefix INVALID-RELOC-SECTION-INDEX %s
-INVALID-RELOC-SECTION-INDEX: 0000000000000021 X86_64_RELOC_UNSIGNED 8388613 (?,?)
+INVALID-RELOC-SECTION-INDEX: 00000021 False byte   False  UNSIGND False     8388613 (?,?)