[llvm-objdump] for mach-o add -bind, -lazy-bind, and -weak-bind options
This finishes the ability of llvm-objdump to print out all information from
the LC_DYLD_INFO load command.
The -bind option prints out symbolic references that dyld must resolve
immediately.
The -lazy-bind option prints out symbolc reference that are lazily resolved on
first use.
The -weak-bind option prints out information about symbols which dyld must
try to coalesce across images.
llvm-svn: 217853
diff --git a/llvm/test/tools/llvm-objdump/Inputs/bind.macho-x86_64 b/llvm/test/tools/llvm-objdump/Inputs/bind.macho-x86_64
new file mode 100755
index 0000000..51a58a7
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/Inputs/bind.macho-x86_64
Binary files differ
diff --git a/llvm/test/tools/llvm-objdump/Inputs/lazy-bind.macho-x86_64 b/llvm/test/tools/llvm-objdump/Inputs/lazy-bind.macho-x86_64
new file mode 100755
index 0000000..02a4d12
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/Inputs/lazy-bind.macho-x86_64
Binary files differ
diff --git a/llvm/test/tools/llvm-objdump/Inputs/weak-bind.macho-x86_64 b/llvm/test/tools/llvm-objdump/Inputs/weak-bind.macho-x86_64
new file mode 100755
index 0000000..6534116
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/Inputs/weak-bind.macho-x86_64
Binary files differ
diff --git a/llvm/test/tools/llvm-objdump/macho-bind.test b/llvm/test/tools/llvm-objdump/macho-bind.test
new file mode 100644
index 0000000..0db316f
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/macho-bind.test
@@ -0,0 +1,10 @@
+# RUN: llvm-objdump -macho -bind -arch x86_64 \
+# RUN: %p/Inputs/bind.macho-x86_64 | FileCheck %s
+
+
+# CHECK:__DATA __data 0x00001028 pointer 0 flat-namespace _any
+# CHECK:__DATA __data 0x00001020 pointer 0 main-executable _fromApp
+# CHECK:__DATA __data 0x00001018 pointer 0 this-image _myfunc
+# CHECK:__DATA __data 0x00001000 pointer 0 libfoo.dylib _foo
+# CHECK:__DATA __data 0x00001008 pointer 0 libbar.dylib _bar
+# CHECK:__DATA __data 0x00001010 pointer 0 libSystem.B.dylib _malloc
diff --git a/llvm/test/tools/llvm-objdump/macho-lazy-bind.test b/llvm/test/tools/llvm-objdump/macho-lazy-bind.test
new file mode 100644
index 0000000..f4a5216
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/macho-lazy-bind.test
@@ -0,0 +1,7 @@
+# RUN: llvm-objdump -macho -lazy-bind -arch x86_64 \
+# RUN: %p/Inputs/lazy-bind.macho-x86_64 | FileCheck %s
+
+
+# CHECK: __DATA __la_symbol_ptr 0x100001010 libfoo.dylib _foo
+# CHECK: __DATA __la_symbol_ptr 0x100001018 libbar.dylib _bar
+# CHECK: __DATA __la_symbol_ptr 0x100001020 libSystem.B.dylib _malloc
diff --git a/llvm/test/tools/llvm-objdump/macho-weak-bind.test b/llvm/test/tools/llvm-objdump/macho-weak-bind.test
new file mode 100644
index 0000000..9f1aa33
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/macho-weak-bind.test
@@ -0,0 +1,10 @@
+# RUN: llvm-objdump -macho -weak-bind -arch x86_64 \
+# RUN: %p/Inputs/weak-bind.macho-x86_64 | FileCheck %s
+
+
+# CHECK: __DATA __data 0x100001018 pointer 0 __ZTISt12out_of_range
+# CHECK: __DATA __data 0x100001020 pointer 0 __ZTISt12out_of_range
+# CHECK: __DATA __data 0x100001028 pointer 0 __ZTISt12out_of_range
+# CHECK: strong __ZdlPv
+# CHECK: __DATA __data 0x100001018 pointer 0 __Znam
+# CHECK: strong __Znwm