summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools
diff options
context:
space:
mode:
authorSeiya Nuta <nuta@seiya.me>2019-10-30 15:12:17 +0900
committerSeiya Nuta <nuta@seiya.me>2019-10-30 15:12:22 +0900
commit1e589f67ef726ecfa1135750c557d4c8f95b71cd (patch)
treebb62de792d3a17f93173567873ac42a1c133efcb /llvm/test/tools
parent358c2918d62190aef3f351aa5ed7f2d48785fd34 (diff)
downloadbcm5719-llvm-1e589f67ef726ecfa1135750c557d4c8f95b71cd.tar.gz
bcm5719-llvm-1e589f67ef726ecfa1135750c557d4c8f95b71cd.zip
[llvm-objcopy][MachO] Support indirect symbol table
Summary: Parse the indirect symbol table and update the indexes of symbol entries in the table in the writer in case they have been changed. Reviewers: alexshap, rupprecht, jhenderson Reviewed By: alexshap, rupprecht Subscribers: jakehehrlich, abrachet, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66280
Diffstat (limited to 'llvm/test/tools')
-rw-r--r--llvm/test/tools/llvm-objcopy/MachO/indirect-symbol-table-copy.s64
1 files changed, 64 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/MachO/indirect-symbol-table-copy.s b/llvm/test/tools/llvm-objcopy/MachO/indirect-symbol-table-copy.s
new file mode 100644
index 00000000000..e1a0b1836a0
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/MachO/indirect-symbol-table-copy.s
@@ -0,0 +1,64 @@
+## Show that llvm-objcopy copies the indirect symbol table properly.
+# RUN: llvm-mc -assemble -triple x86_64-apple-darwin9 -filetype=obj %s -o %t
+# RUN: llvm-objcopy %t %t.copy
+# RUN: llvm-readobj --symbols --macho-indirect-symbols %t.copy \
+# RUN: | FileCheck %s
+
+# __DATA,__nl_symbol_ptr
+.non_lazy_symbol_pointer
+bar:
+ .long 0
+baz:
+ .long 0
+
+.indirect_symbol bar
+
+# __DATA,__la_symbol_ptr
+.lazy_symbol_pointer
+foo:
+ .long 0
+
+.indirect_symbol foo
+
+# CHECK: Symbols [
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT: Name: bar (5)
+# CHECK-NEXT: Type: Section (0xE)
+# CHECK-NEXT: Section: __nl_symbol_ptr (0x2)
+# CHECK-NEXT: RefType: UndefinedNonLazy (0x0)
+# CHECK-NEXT: Flags [ (0x0)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Value: 0x0
+# CHECK-NEXT: }
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT: Name: baz (1)
+# CHECK-NEXT: Type: Section (0xE)
+# CHECK-NEXT: Section: __nl_symbol_ptr (0x2)
+# CHECK-NEXT: RefType: UndefinedNonLazy (0x0)
+# CHECK-NEXT: Flags [ (0x0)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Value: 0x4
+# CHECK-NEXT: }
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT: Name: foo (9)
+# CHECK-NEXT: Type: Section (0xE)
+# CHECK-NEXT: Section: __la_symbol_ptr (0x3)
+# CHECK-NEXT: RefType: UndefinedNonLazy (0x0)
+# CHECK-NEXT: Flags [ (0x0)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Value: 0x8
+# CHECK-NEXT: }
+# CHECK-NEXT: ]
+# CHECK-NEXT: Indirect Symbols {
+# CHECK-NEXT: Number: 2
+# CHECK-NEXT: Symbols [
+# CHECK-NEXT: Entry {
+# CHECK-NEXT: Entry Index: 0
+# CHECK-NEXT: Symbol Index: 0x80000000
+# CHECK-NEXT: }
+# CHECK-NEXT: Entry {
+# CHECK-NEXT: Entry Index: 1
+# CHECK-NEXT: Symbol Index: 0x2
+# CHECK-NEXT: }
+# CHECK-NEXT: ]
+# CHECK-NEXT: }
OpenPOWER on IntegriCloud