| // Test that Objective-C class and selector references inlined across crates |
| // get defined in this CGU but non-inline references don't. |
| |
| // ignore-tidy-linelength |
| //@ aux-build: darwin_objc_aux.rs |
| //@ revisions: x86_64_macos aarch64_macos |
| //@ [x86_64_macos] only-x86_64-apple-darwin |
| //@ [aarch64_macos] only-aarch64-apple-darwin |
| |
| #![crate_type = "lib"] |
| #![feature(darwin_objc)] |
| |
| use std::os::darwin::objc; |
| |
| extern crate darwin_objc_aux as aux; |
| |
| #[no_mangle] |
| pub fn get_object_class() -> objc::Class { |
| aux::inline_get_object_class() |
| } |
| |
| #[no_mangle] |
| pub fn get_alloc_selector() -> objc::SEL { |
| aux::inline_get_alloc_selector() |
| } |
| |
| #[no_mangle] |
| pub fn get_string_class() -> objc::Class { |
| aux::never_inline_get_string_class() |
| } |
| |
| #[no_mangle] |
| pub fn get_init_selector() -> objc::SEL { |
| aux::never_inline_get_init_selector() |
| } |
| |
| // CHECK: %struct._class_t = type { ptr, ptr, ptr, ptr, ptr } |
| |
| // CHECK: @"OBJC_CLASS_$_NSObject" = external global %struct._class_t |
| // CHECK: @"OBJC_CLASSLIST_REFERENCES_$_.{{[0-9]+}}" = internal global ptr @"OBJC_CLASS_$_NSObject", section "__DATA,__objc_classrefs,regular,no_dead_strip", align 8 |
| |
| // CHECK: @OBJC_METH_VAR_NAME_.{{[0-9]+}} = private unnamed_addr constant [6 x i8] c"alloc\00", section "__TEXT,__objc_methname,cstring_literals", align 1 |
| // CHECK: @OBJC_SELECTOR_REFERENCES_.{{[0-9]+}} = internal externally_initialized global ptr @OBJC_METH_VAR_NAME_.{{[0-9]+}}, section "__DATA,__objc_selrefs,literal_pointers,no_dead_strip", align 8 |
| |
| // CHECK-NOT: @"OBJC_CLASS_$_NSString" = external global %struct._class_t |
| // CHECK-NOT: @"OBJC_CLASSLIST_REFERENCES_$_.{{[0-9]+}}" = internal global ptr @"OBJC_CLASS_$_NSString" |
| |
| // CHECK-NOT: @OBJC_METH_VAR_NAME_.{{[0-9]+}} = private unnamed_addr constant [5 x i8] c"init\00" |
| // CHECK-NOT: @OBJC_SELECTOR_REFERENCES_.{{[0-9]+}} = internal externally_initialized global ptr @OBJC_METH_VAR_NAME_.{{[0-9]+}} |
| |
| // CHECK: load ptr, ptr @"OBJC_CLASSLIST_REFERENCES_$_.{{[0-9]+}}", align 8 |
| // CHECK: load ptr, ptr @OBJC_SELECTOR_REFERENCES_.{{[0-9]+}}, align 8 |
| |
| // CHECK: !{{[0-9]+}} = !{i32 1, !"Objective-C Version", i32 2} |
| // CHECK: !{{[0-9]+}} = !{i32 1, !"Objective-C Image Info Version", i32 0} |
| // CHECK: !{{[0-9]+}} = !{i32 1, !"Objective-C Image Info Section", !"__DATA,__objc_imageinfo,regular,no_dead_strip"} |
| // CHECK-NOT: !{{[0-9]+}} = !{i32 1, !"Objective-C Is Simulated", i32 32} |
| // CHECK: !{{[0-9]+}} = !{i32 1, !"Objective-C Class Properties", i32 64} |