## Verify that -T removes Swift symbols. # RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__DATA \ # RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=8 \ # RUN: -D SECTION_CONTENT=0000000040070105 %s -o %t1 # RUN: llvm-strip -x -T %t1 # RUN: llvm-readobj -symbols %t1 | FileCheck --check-prefix=NO-SWIFT-SYMBOLS %s # RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__DATA_CONST \ # RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=8 \ # RUN: -D SECTION_CONTENT=0000000040070105 %s -o %t2 # RUN: llvm-strip -x -T %t2 # RUN: llvm-readobj -symbols %t2 | FileCheck --check-prefix=NO-SWIFT-SYMBOLS %s # RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__DATA_DIRTY \ # RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=8 \ # RUN: -D SECTION_CONTENT=0000000040070105 %s -o %t3 # RUN: llvm-strip -x -T %t3 # RUN: llvm-readobj -symbols %t3 | FileCheck --check-prefix=NO-SWIFT-SYMBOLS %s # NO-SWIFT-SYMBOLS: Symbols [ # NO-SWIFT-SYMBOLS-NEXT: Symbol { # NO-SWIFT-SYMBOLS-NEXT: Name: _main (2) # NO-SWIFT-SYMBOLS-NEXT: Extern # NO-SWIFT-SYMBOLS-NEXT: Type: Section (0xE) # NO-SWIFT-SYMBOLS-NEXT: Section: __text (0x1) # NO-SWIFT-SYMBOLS-NEXT: RefType: UndefinedNonLazy (0x0) # NO-SWIFT-SYMBOLS-NEXT: Flags [ (0x0) # NO-SWIFT-SYMBOLS-NEXT: ] # NO-SWIFT-SYMBOLS-NEXT: Value: 0x100000B70 # NO-SWIFT-SYMBOLS-NEXT: } # NO-SWIFT-SYMBOLS-NEXT: ] ## Verify that -T does not remove (public) Swift symbols when the binary ## does not contain __objc_imageinfo in one of the expected segments. # RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__DATA \ # RUN: -D SECTION_NAME=__not_objc_imageinfo -D SECTION_SIZE=8 \ # RUN: -D SECTION_CONTENT=0000000040070105 %s -o %t4 # RUN: llvm-strip -x -T %t4 # RUN: llvm-readobj -symbols %t4 | FileCheck --check-prefix=SWIFT-SYMBOLS %s # RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__NOT_DATA \ # RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=8 \ # RUN: -D SECTION_CONTENT=0000000040070105 %s -o %t5 # RUN: llvm-strip -x -T %t5 # RUN: llvm-readobj -symbols %t5 | FileCheck --check-prefix=SWIFT-SYMBOLS %s ## Verify that -T does not remove (public) Swift symbols when swift_version is zero. # RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__DATA \ # RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=8 \ # RUN: -D SECTION_CONTENT=0000000000000000 %s -o %t6 # RUN: llvm-strip -x -T %t6 # RUN: llvm-readobj -symbols %t6 | FileCheck --check-prefix=SWIFT-SYMBOLS %s ## Verify that -T does not remove (public) Swift symbols when the binary ## contains invalid (too small) __objc_imageinfo. # RUN: yaml2obj -D FLAGS=0x00200085 -D SEGMENT_NAME=__DATA \ # RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=4 \ # RUN: -D SECTION_CONTENT=00000000 %s -o %t7 # RUN: llvm-strip -x -T %t7 # RUN: llvm-readobj -symbols %t7 | FileCheck --check-prefix=SWIFT-SYMBOLS %s ## Verify that -T does not remove (public) Swift symbols ## when the flag MH_DYLDLINK is not set. # RUN: yaml2obj -D FLAGS=0x00200000 -D SEGMENT_NAME=__DATA \ # RUN: -D SECTION_NAME=__objc_imageinfo -D SECTION_SIZE=8 \ # RUN: -D SECTION_CONTENT=0000000040070105 %s -o %t8 # RUN: llvm-strip -x -T %t8 # RUN: llvm-readobj -symbols %t8 | FileCheck --check-prefix=SWIFT-SYMBOLS %s # SWIFT-SYMBOLS: Symbols [ # SWIFT-SYMBOLS-NEXT: Symbol { # SWIFT-SYMBOLS-NEXT: Name: _$S1a13PublicSymbol1Sivp (27) # SWIFT-SYMBOLS-NEXT: Extern # SWIFT-SYMBOLS-NEXT: Type: Section (0xE) # SWIFT-SYMBOLS-NEXT: Section: __text (0x1) # SWIFT-SYMBOLS-NEXT: RefType: UndefinedNonLazy (0x0) # SWIFT-SYMBOLS-NEXT: Flags [ (0x0) # SWIFT-SYMBOLS-NEXT: ] # SWIFT-SYMBOLS-NEXT: Value: 0x100001160 # SWIFT-SYMBOLS-NEXT: } # SWIFT-SYMBOLS-NEXT: Symbol { # SWIFT-SYMBOLS-NEXT: Name: _$s1a13PublicSymbol2Sivp (2) # SWIFT-SYMBOLS-NEXT: Extern # SWIFT-SYMBOLS-NEXT: Type: Section (0xE) # SWIFT-SYMBOLS-NEXT: Section: __text (0x1) # SWIFT-SYMBOLS-NEXT: RefType: UndefinedNonLazy (0x0) # SWIFT-SYMBOLS-NEXT: Flags [ (0x0) # SWIFT-SYMBOLS-NEXT: ] # SWIFT-SYMBOLS-NEXT: Value: 0x100001168 # SWIFT-SYMBOLS-NEXT: } # SWIFT-SYMBOLS-NEXT: Symbol { # SWIFT-SYMBOLS-NEXT: Name: _main (52) # SWIFT-SYMBOLS-NEXT: Extern # SWIFT-SYMBOLS-NEXT: Type: Section (0xE) # SWIFT-SYMBOLS-NEXT: Section: __text (0x1) # SWIFT-SYMBOLS-NEXT: RefType: UndefinedNonLazy (0x0) # SWIFT-SYMBOLS-NEXT: Flags [ (0x0) # SWIFT-SYMBOLS-NEXT: ] # SWIFT-SYMBOLS-NEXT: Value: 0x100000B70 # SWIFT-SYMBOLS-NEXT: } # SWIFT-SYMBOLS-NEXT: ] --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x80000003 filetype: 0x00000002 ncmds: 4 sizeofcmds: 400 flags: [[FLAGS]] reserved: 0x00000000 LoadCommands: - cmd: LC_SEGMENT_64 cmdsize: 152 segname: __TEXT vmaddr: 4294967296 vmsize: 4096 fileoff: 0 filesize: 4096 maxprot: 5 initprot: 5 nsects: 1 flags: 0 Sections: - sectname: __text segname: __TEXT addr: 0x0000000100000B70 size: 845 offset: 0x00000B70 align: 4 reloff: 0x00000000 nreloc: 0 flags: 0x80000400 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - cmd: LC_SEGMENT_64 cmdsize: 152 segname: [[SEGMENT_NAME]] vmaddr: 4294971392 vmsize: 4096 fileoff: 4096 filesize: 4096 maxprot: 3 initprot: 3 nsects: 1 flags: 0 Sections: - sectname: [[SECTION_NAME]] segname: [[SEGMENT_NAME]] addr: 0x0000000100001090 size: [[SECTION_SIZE]] offset: 0x00001090 align: 2 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 content: "[[SECTION_CONTENT]]" - cmd: LC_SEGMENT_64 cmdsize: 72 segname: __LINKEDIT vmaddr: 4294975488 vmsize: 4096 fileoff: 8192 filesize: 188 maxprot: 1 initprot: 1 nsects: 0 flags: 0 - cmd: LC_SYMTAB cmdsize: 24 symoff: 8192 nsyms: 5 stroff: 8272 strsize: 108 LinkEditData: NameList: - n_strx: 50 n_type: 0x1E n_sect: 1 n_desc: 0 n_value: 4294971760 - n_strx: 1 n_type: 0x1E n_sect: 1 n_desc: 0 n_value: 4294971768 - n_strx: 74 n_type: 0x0F n_sect: 1 n_desc: 0 n_value: 4294971744 - n_strx: 25 n_type: 0x0F n_sect: 1 n_desc: 0 n_value: 4294971752 - n_strx: 99 n_type: 0x0F n_sect: 1 n_desc: 0 n_value: 4294970224 StringTable: - '' - '_$s1a12LocalSymbol2Sivp' - '_$s1a13PublicSymbol2Sivp' - '_$S1a12LocalSymbol1Sivp' - '_$S1a13PublicSymbol1Sivp' - _main - '' - '' - '' ...