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