1## Verify that -T removes Swift symbols. 2# RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__DATA \ 3# RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=8 \ 4# RUN: -D SECTION_CONTENT=0000000040070105 %s -o %t1 5# RUN: llvm-strip -x -T %t1 6# RUN: llvm-readobj -s %t1 | FileCheck --check-prefix=NO-SWIFT-SYMBOLS %s 7 8# RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__DATA_CONST \ 9# RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=8 \ 10# RUN: -D SECTION_CONTENT=0000000040070105 %s -o %t2 11# RUN: llvm-strip -x -T %t2 12# RUN: llvm-readobj -s %t2 | FileCheck --check-prefix=NO-SWIFT-SYMBOLS %s 13 14# RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__DATA_DIRTY \ 15# RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=8 \ 16# RUN: -D SECTION_CONTENT=0000000040070105 %s -o %t3 17# RUN: llvm-strip -x -T %t3 18# RUN: llvm-readobj -s %t3 | FileCheck --check-prefix=NO-SWIFT-SYMBOLS %s 19 20# NO-SWIFT-SYMBOLS: Symbols [ 21# NO-SWIFT-SYMBOLS-NEXT: Symbol { 22# NO-SWIFT-SYMBOLS-NEXT: Name: _main (2) 23# NO-SWIFT-SYMBOLS-NEXT: Extern 24# NO-SWIFT-SYMBOLS-NEXT: Type: Section (0xE) 25# NO-SWIFT-SYMBOLS-NEXT: Section: __text (0x1) 26# NO-SWIFT-SYMBOLS-NEXT: RefType: UndefinedNonLazy (0x0) 27# NO-SWIFT-SYMBOLS-NEXT: Flags [ (0x0) 28# NO-SWIFT-SYMBOLS-NEXT: ] 29# NO-SWIFT-SYMBOLS-NEXT: Value: 0x100000B70 30# NO-SWIFT-SYMBOLS-NEXT: } 31# NO-SWIFT-SYMBOLS-NEXT: ] 32 33## Verify that -T does not remove (public) Swift symbols when the binary 34## does not contain __objc_imageinfo in one of the expected segments. 35 36# RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__DATA \ 37# RUN: -D SECTION_NAME=__not_objc_imageinfo -D SECTION_SIZE=8 \ 38# RUN: -D SECTION_CONTENT=0000000040070105 %s -o %t4 39# RUN: llvm-strip -x -T %t4 40# RUN: llvm-readobj -s %t4 | FileCheck --check-prefix=SWIFT-SYMBOLS %s 41 42# RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__NOT_DATA \ 43# RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=8 \ 44# RUN: -D SECTION_CONTENT=0000000040070105 %s -o %t5 45# RUN: llvm-strip -x -T %t5 46# RUN: llvm-readobj -s %t5 | FileCheck --check-prefix=SWIFT-SYMBOLS %s 47 48## Verify that -T does not remove (public) Swift symbols when swift_version is zero. 49 50# RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__DATA \ 51# RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=8 \ 52# RUN: -D SECTION_CONTENT=0000000000000000 %s -o %t6 53# RUN: llvm-strip -x -T %t6 54# RUN: llvm-readobj -s %t6 | FileCheck --check-prefix=SWIFT-SYMBOLS %s 55 56## Verify that -T does not remove (public) Swift symbols when the binary 57## contains invalid (too small) __objc_imageinfo. 58 59# RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__DATA \ 60# RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=4 \ 61# RUN: -D SECTION_CONTENT=00000000 %s -o %t7 62# RUN: llvm-strip -x -T %t7 63# RUN: llvm-readobj -s %t7 | FileCheck --check-prefix=SWIFT-SYMBOLS %s 64 65## Verify that -T does not remove (public) Swift symbols 66## when the flag MH_DYLDLINK is not set. 67 68# RUN: yaml2obj -D FLAGS=0x00200000 -D SEGMENT_NAME=__DATA \ 69# RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=8 \ 70# RUN: -D SECTION_CONTENT=0000000040070105 %s -o %t8 71# RUN: llvm-strip -x -T %t8 72# RUN: llvm-readobj -s %t8 | FileCheck --check-prefix=SWIFT-SYMBOLS %s 73 74# SWIFT-SYMBOLS: Symbols [ 75# SWIFT-SYMBOLS-NEXT: Symbol { 76# SWIFT-SYMBOLS-NEXT: Name: _$S1a13PublicSymbol1Sivp (27) 77# SWIFT-SYMBOLS-NEXT: Extern 78# SWIFT-SYMBOLS-NEXT: Type: Section (0xE) 79# SWIFT-SYMBOLS-NEXT: Section: __text (0x1) 80# SWIFT-SYMBOLS-NEXT: RefType: UndefinedNonLazy (0x0) 81# SWIFT-SYMBOLS-NEXT: Flags [ (0x0) 82# SWIFT-SYMBOLS-NEXT: ] 83# SWIFT-SYMBOLS-NEXT: Value: 0x100001160 84# SWIFT-SYMBOLS-NEXT: } 85# SWIFT-SYMBOLS-NEXT: Symbol { 86# SWIFT-SYMBOLS-NEXT: Name: _$s1a13PublicSymbol2Sivp (2) 87# SWIFT-SYMBOLS-NEXT: Extern 88# SWIFT-SYMBOLS-NEXT: Type: Section (0xE) 89# SWIFT-SYMBOLS-NEXT: Section: __text (0x1) 90# SWIFT-SYMBOLS-NEXT: RefType: UndefinedNonLazy (0x0) 91# SWIFT-SYMBOLS-NEXT: Flags [ (0x0) 92# SWIFT-SYMBOLS-NEXT: ] 93# SWIFT-SYMBOLS-NEXT: Value: 0x100001168 94# SWIFT-SYMBOLS-NEXT: } 95# SWIFT-SYMBOLS-NEXT: Symbol { 96# SWIFT-SYMBOLS-NEXT: Name: _main (52) 97# SWIFT-SYMBOLS-NEXT: Extern 98# SWIFT-SYMBOLS-NEXT: Type: Section (0xE) 99# SWIFT-SYMBOLS-NEXT: Section: __text (0x1) 100# SWIFT-SYMBOLS-NEXT: RefType: UndefinedNonLazy (0x0) 101# SWIFT-SYMBOLS-NEXT: Flags [ (0x0) 102# SWIFT-SYMBOLS-NEXT: ] 103# SWIFT-SYMBOLS-NEXT: Value: 0x100000B70 104# SWIFT-SYMBOLS-NEXT: } 105# SWIFT-SYMBOLS-NEXT: ] 106 107--- !mach-o 108FileHeader: 109 magic: 0xFEEDFACF 110 cputype: 0x01000007 111 cpusubtype: 0x80000003 112 filetype: 0x00000002 113 ncmds: 4 114 sizeofcmds: 400 115 flags: [[FLAGS]] 116 reserved: 0x00000000 117LoadCommands: 118 - cmd: LC_SEGMENT_64 119 cmdsize: 152 120 segname: __TEXT 121 vmaddr: 4294967296 122 vmsize: 4096 123 fileoff: 0 124 filesize: 4096 125 maxprot: 5 126 initprot: 5 127 nsects: 1 128 flags: 0 129 Sections: 130 - sectname: __text 131 segname: __TEXT 132 addr: 0x0000000100000B70 133 size: 845 134 offset: 0x00000B70 135 align: 4 136 reloff: 0x00000000 137 nreloc: 0 138 flags: 0x80000400 139 reserved1: 0x00000000 140 reserved2: 0x00000000 141 reserved3: 0x00000000 142 - cmd: LC_SEGMENT_64 143 cmdsize: 152 144 segname: [[SEGMENT_NAME]] 145 vmaddr: 4294971392 146 vmsize: 4096 147 fileoff: 4096 148 filesize: 4096 149 maxprot: 3 150 initprot: 3 151 nsects: 1 152 flags: 0 153 Sections: 154 - sectname: [[SECTION_NAME]] 155 segname: [[SEGMENT_NAME]] 156 addr: 0x0000000100001090 157 size: [[SECTION_SIZE]] 158 offset: 0x00001090 159 align: 2 160 reloff: 0x00000000 161 nreloc: 0 162 flags: 0x00000000 163 reserved1: 0x00000000 164 reserved2: 0x00000000 165 reserved3: 0x00000000 166 content: "[[SECTION_CONTENT]]" 167 - cmd: LC_SEGMENT_64 168 cmdsize: 72 169 segname: __LINKEDIT 170 vmaddr: 4294975488 171 vmsize: 4096 172 fileoff: 8192 173 filesize: 188 174 maxprot: 1 175 initprot: 1 176 nsects: 0 177 flags: 0 178 - cmd: LC_SYMTAB 179 cmdsize: 24 180 symoff: 8192 181 nsyms: 5 182 stroff: 8272 183 strsize: 108 184LinkEditData: 185 NameList: 186 - n_strx: 50 187 n_type: 0x1E 188 n_sect: 1 189 n_desc: 0 190 n_value: 4294971760 191 - n_strx: 1 192 n_type: 0x1E 193 n_sect: 1 194 n_desc: 0 195 n_value: 4294971768 196 - n_strx: 74 197 n_type: 0x0F 198 n_sect: 1 199 n_desc: 0 200 n_value: 4294971744 201 - n_strx: 25 202 n_type: 0x0F 203 n_sect: 1 204 n_desc: 0 205 n_value: 4294971752 206 - n_strx: 99 207 n_type: 0x0F 208 n_sect: 1 209 n_desc: 0 210 n_value: 4294970224 211 StringTable: 212 - '' 213 - '_$s1a12LocalSymbol2Sivp' 214 - '_$s1a13PublicSymbol2Sivp' 215 - '_$S1a12LocalSymbol1Sivp' 216 - '_$S1a13PublicSymbol1Sivp' 217 - _main 218 - '' 219 - '' 220 - '' 221... 222