150 lines · plain
1// Test merging of __objc_imageinfo flags and ensure we can run mixed objc and2// swift code in a single jit dylib.3 4// REQUIRES: system-darwin && asserts5 6// RUN: rm -rf %t7// RUN: split-file %s %t8// RUN: pushd %t9// RUN: %clang -c *.S10// RUN: popd11 12// Check individual versions are loadable.13 14// RUN: %llvm_jitlink -num-threads=0 -debug-only=orc %t/main.o \15// RUN: %t/objc_old.o 2>&1 \16// RUN: | FileCheck %s -check-prefix=OLD17// OLD: MachOPlatform: Registered __objc_imageinfo for main18// OLD-SAME: flags = 0x000019// RUN: %llvm_jitlink -num-threads=0 -debug-only=orc %t/main.o \20// RUN: %t/objc_new.o 2>&1 \21// RUN: | FileCheck %s -check-prefix=NEW22// NEW: MachOPlatform: Registered __objc_imageinfo for main23// NEW-SAME: flags = 0x004024// RUN: %llvm_jitlink -num-threads=0 -debug-only=orc %t/main.o \25// RUN: %t/swift_4.o 2>&1 \26// RUN: | FileCheck %s -check-prefix=SWIFT_427// SWIFT_4: MachOPlatform: Registered __objc_imageinfo for main28// SWIFT_4-SAME: flags = 0x064029// RUN: %llvm_jitlink -num-threads=0 -debug-only=orc %t/main.o \30// RUN: %t/swift_5.o 2>&1 \31// RUN: | FileCheck %s -check-prefix=SWIFT_532// SWIFT_5: MachOPlatform: Registered __objc_imageinfo for main33// SWIFT_5-SAME: flags = 0x500074034// RUN: %llvm_jitlink -num-threads=0 -debug-only=orc %t/main.o \35// RUN: %t/swift_59.o 2>&1 \36// RUN: | FileCheck %s -check-prefix=SWIFT_5937// SWIFT_59: MachOPlatform: Registered __objc_imageinfo for main38// SWIFT_59-SAME: flags = 0x509074039 40// Check error conditions.41 42// RUN: not %llvm_jitlink %t/main.o %t/swift_4.o %t/swift_5.o 2>&1 | FileCheck %s -check-prefix=SWIFT_ABI43// SWIFT_ABI: Swift ABI version in {{.*}} does not match first registered flags44 45// Check merging.46 47// Take the lowest swift version.48// RUN: %llvm_jitlink -num-threads=0 -debug-only=orc %t/main.o %t/swift_59.o \49// RUN: %t/swift_5.o 2>&1 \50// RUN: | FileCheck %s -check-prefix=SWIFT_MIX151// SWIFT_MIX1: MachOPlatform: Merging __objc_imageinfo flags for main {{.*}} -> 0x500074052 53// Add swift to objc.54// RUN: %llvm_jitlink -num-threads=0 -debug-only=orc %t/main.o %t/swift_59.o \55// RUN: %t/objc_new.o 2>&1 \56// RUN: | FileCheck %s -check-prefix=SWIFT_MIX257// SWIFT_MIX2: MachOPlatform: Merging __objc_imageinfo flags for main {{.*}} -> 0x509074058 59// Add multiple swift to objc.60// RUN: %llvm_jitlink -num-threads=0 -debug-only=orc %t/main.o %t/swift_59.o \61// RUN: %t/swift_5.o %t/objc_new.o 2>&1 \62// RUN: | FileCheck %s -check-prefix=SWIFT_MIX363// SWIFT_MIX3: MachOPlatform: Merging __objc_imageinfo flags for main {{.*}} -> 0x500074064 65// Disable categories.66// RUN: %llvm_jitlink -num-threads=0 -debug-only=orc %t/main.o %t/objc_old.o \67// RUN: %t/objc_new.o 2>&1 \68// RUN: | FileCheck %s -check-prefix=SWIFT_MIX469// SWIFT_MIX4: MachOPlatform: Merging __objc_imageinfo flags for main {{.*}} -> 0x000070 71// Disable signed class_ro.72// RUN: %llvm_jitlink -num-threads=0 -debug-only=orc %t/main.o %t/objc_new.o \73// RUN: %t/objc_new_signed_ro.o 2>&1 \74// RUN: | FileCheck %s -check-prefix=SWIFT_MIX575// SWIFT_MIX5: MachOPlatform: Merging __objc_imageinfo flags for main {{.*}} -> 0x004076 77//--- main.S78.section __TEXT,__text,regular,pure_instructions79.globl _main80_main:81 mov w0, #082 ret83 84//--- objc_old.S85.section __TEXT,__text,regular,pure_instructions86.globl _objc187_objc1:88 ret89 90 .section __DATA,__objc_imageinfo,regular,no_dead_strip91L_OBJC_IMAGE_INFO:92 .long 093 .long 094 95//--- objc_new.S96.section __TEXT,__text,regular,pure_instructions97.globl _objc298_objc2:99 ret100 101 .section __DATA,__objc_imageinfo,regular,no_dead_strip102L_OBJC_IMAGE_INFO:103 .long 0104 .long 64105 106//--- objc_new_signed_ro.S107.section __TEXT,__text,regular,pure_instructions108.globl _objc3109_objc3:110 ret111 112 .section __DATA,__objc_imageinfo,regular,no_dead_strip113L_OBJC_IMAGE_INFO:114 .long 0115 .long 80116 117//--- swift_4.S118.section __TEXT,__text,regular,pure_instructions119.globl _swift4120_swift4:121 ret122 123 .section __DATA,__objc_imageinfo,regular,no_dead_strip124L_OBJC_IMAGE_INFO:125 .long 0126 .long 1600127 128//--- swift_5.S129.section __TEXT,__text,regular,pure_instructions130.globl _swift5131_swift5:132 ret133 134 .section __DATA,__objc_imageinfo,regular,no_dead_strip135L_OBJC_IMAGE_INFO:136 .long 0137 .long 83887936138 139//--- swift_59.S140.section __TEXT,__text,regular,pure_instructions141.globl _swift59142_swift59:143 ret144 145 .section __DATA,__objc_imageinfo,regular,no_dead_strip146L_OBJC_IMAGE_INFO:147 .long 0148 .long 84477760149 150