xref: /llvm-project/llvm/test/tools/llvm-objdump/MachO/chained-fixups.test (revision 686d8ce1ab16171c66973e065eada5b6419a0c98)
1RUN: llvm-objdump -p %p/Inputs/chained-fixups.macho-x86_64 | FileCheck %s
2RUN: llvm-otool -l %p/Inputs/chained-fixups.macho-x86_64 | FileCheck %s
3
4CHECK: LC_DYLD_CHAINED_FIXUPS
5CHECK: LC_DYLD_EXPORTS_TRIE
6
7RUN: llvm-objdump --macho --chained-fixups %p/Inputs/chained-fixups.macho-x86_64 | \
8RUN:     FileCheck --check-prefix=DETAILS -DNAME=%p/Inputs/chained-fixups.macho-x86_64 %s
9RUN: llvm-otool -chained_fixups %p/Inputs/chained-fixups.macho-x86_64 | \
10RUN:     FileCheck --check-prefix=DETAILS -DNAME=%p/Inputs/chained-fixups.macho-x86_64 %s
11
12DETAILS:      [[NAME]]:
13DETAILS-NEXT: chained fixups header (LC_DYLD_CHAINED_FIXUPS)
14DETAILS-NEXT:   fixups_version = 0
15DETAILS-NEXT:   starts_offset  = 32
16DETAILS-NEXT:   imports_offset = 112
17DETAILS-NEXT:   symbols_offset = 132
18DETAILS-NEXT:   imports_count  = 5
19DETAILS-NEXT:   imports_format = 1 (DYLD_CHAINED_IMPORT)
20DETAILS-NEXT:   symbols_format = 0
21DETAILS-NEXT: chained starts in image
22DETAILS-NEXT:   seg_count = 4
23DETAILS-NEXT:     seg_offset[0] = 0 (__TEXT)
24DETAILS-NEXT:     seg_offset[1] = 24 (__DATA_CONST)
25DETAILS-NEXT:     seg_offset[2] = 48 (__DATA)
26DETAILS-NEXT:     seg_offset[3] = 0 (__LINKEDIT)
27DETAILS-NEXT: chained starts in segment 1 (__DATA_CONST)
28DETAILS-NEXT:   size = 24
29DETAILS-NEXT:   page_size = 0x1000
30DETAILS-NEXT:   pointer_format = 6 (DYLD_CHAINED_PTR_64_OFFSET)
31DETAILS-NEXT:   segment_offset = 0x3e0
32DETAILS-NEXT:   max_valid_pointer = 0
33DETAILS-NEXT:   page_count = 1
34DETAILS-NEXT:     page_start[0] = 0
35DETAILS-NEXT: chained starts in segment 2 (__DATA)
36DETAILS-NEXT:   size = 30
37DETAILS-NEXT:   page_size = 0x1000
38DETAILS-NEXT:   pointer_format = 6 (DYLD_CHAINED_PTR_64_OFFSET)
39DETAILS-NEXT:   segment_offset = 0x3f0
40DETAILS-NEXT:   max_valid_pointer = 0
41DETAILS-NEXT:   page_count = 4
42DETAILS-NEXT:     page_start[0] = 0
43DETAILS-NEXT:     page_start[1] = 32
44DETAILS-NEXT:     page_start[2] = 65535 (DYLD_CHAINED_PTR_START_NONE)
45DETAILS-NEXT:     page_start[3] = 32
46DETAILS-NEXT: dyld chained import[0]
47DETAILS-NEXT:   lib_ordinal = -2 (flat-namespace)
48DETAILS-NEXT:   weak_import = 0
49DETAILS-NEXT:   name_offset = 1 (_dynamicLookup)
50DETAILS-NEXT: dyld chained import[1]
51DETAILS-NEXT:   lib_ordinal = 1 (libdylib)
52DETAILS-NEXT:   weak_import = 1
53DETAILS-NEXT:   name_offset = 16 (_weakImport)
54DETAILS-NEXT: dyld chained import[2]
55DETAILS-NEXT:   lib_ordinal = 1 (libdylib)
56DETAILS-NEXT:   weak_import = 0
57DETAILS-NEXT:   name_offset = 28 (_dylib)
58DETAILS-NEXT: dyld chained import[3]
59DETAILS-NEXT:   lib_ordinal = -3 (weak)
60DETAILS-NEXT:   weak_import = 0
61DETAILS-NEXT:   name_offset = 35 (_weakLocal)
62DETAILS-NEXT: dyld chained import[4]
63DETAILS-NEXT:   lib_ordinal = -3 (weak)
64DETAILS-NEXT:   weak_import = 0
65DETAILS-NEXT:   name_offset = 46 (_weak)
66
67## This test checks that the output is identical to that of cctools-1001.2 (XCode 14)
68## FIXME: Print encoded values of the dyld_chained_import* entries
69##
70## The input was generated from the following files:
71##
72## --- dylib.s:
73##   .data
74##   .globl _weak, _dylib, _weakImport
75##   .weak_definition _weak
76##   _weak:
77##   _dylib:
78##   _weakImport:
79##
80##  $ clang --target=x86_64-apple-macos12 -dynamiclib dylib.s -o libdylib.dylib
81##
82## --- chained-fixups.s:
83##   .global _local, _weak, _weakLocal, _dylib, _weakImport, _dynamicLookup
84##   .weak_definition _weakLocal
85##   .weak_reference _weakImport
86##
87##   .data
88##   .p2align 4
89##   _local:
90##   _weakLocal:
91##   .quad _local
92##   .space 8
93##   .quad _weak
94##   .space 4096
95##   .p2align 4
96##   .quad _weakLocal
97##   .space 8172
98##   .p2align 4
99##   .quad _dylib
100##   .quad _dylib + 42
101##
102##   .section __DATA_CONST,__const
103##   .p2align 4
104##   .quad _weakImport
105##   .quad _dynamicLookup
106##
107## $ clang --target=x86_64-apple-macos12 -dynamiclib -L. -ldylib chained-fixups.s \
108##       -o chained-fixups.macho-x86_64 -Wl,-segalign,0x10 -Wl,-U,_dynamicLookup
109