mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-02 10:18:25 +00:00
59 lines
2.4 KiB
Rust
59 lines
2.4 KiB
Rust
// 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}
|