From 7eb623f3bd4ba562abcebf91119ca9371bec22c0 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 3 Mar 2022 02:00:11 +0100 Subject: [PATCH 01/30] Add initial static selectors Using ordinary macros instead of hacky procedural macros like Nika Layzell originally did Co-authored-by: Nika Layzell --- objc2/Cargo.toml | 2 ++ objc2/src/macros.rs | 46 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/objc2/Cargo.toml b/objc2/Cargo.toml index 49c10ad14..89922b417 100644 --- a/objc2/Cargo.toml +++ b/objc2/Cargo.toml @@ -37,6 +37,8 @@ verify_message = ["malloc"] # TODO: Remove malloc feature here # increases compilation time. malloc = ["malloc_buf"] +static-sel = [] + # Uses nightly features to make AutoreleasePool zero-cost even in debug mode unstable-autoreleasesafe = [] diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index 86509da17..f378b39b9 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -43,6 +43,7 @@ macro_rules! class { /// let sel = sel!(setObject:forKey:); /// ``` #[macro_export] +#[cfg(not(feature = "static-sel"))] macro_rules! sel { ($first:ident $(: $($rest:ident :)*)?) => ({ static SEL: $crate::__CachedSel = $crate::__CachedSel::new(); @@ -52,6 +53,51 @@ macro_rules! sel { }); } +/// TODO +#[macro_export] +#[cfg(feature = "static-sel")] +macro_rules! sel { + ($name:ident) => { + $crate::sel!(@__inner concat!(stringify!($name), '\0')) + }; + ($($name:ident :)+) => { + $crate::sel!(@__inner concat!($(stringify!($name), ':'),+, '\0')) + }; + // Declare a function to hide unsafety, otherwise we can trigger the + // unused_unsafe lint; see rust-lang/rust#8472 + (@__inner $sel:expr) => {{ + #[inline(always)] + fn do_it() -> $crate::runtime::Sel { + const X: &[u8] = $sel.as_bytes(); + + struct Cheaty(*const [u8; X.len()]); + unsafe impl Send for Cheaty {} + unsafe impl Sync for Cheaty {} + + #[link_section = "__TEXT,__objc_methname,cstring_literals"] + static VALUE: [u8; X.len()] = { + let mut res: [u8; X.len()] = [0; X.len()]; + let mut i = 0; + while i < X.len() { + res[i] = X[i]; + i += 1; + } + res + }; + + // Place the constant value in the correct section. + #[link_section = "__DATA,__objc_selrefs,literal_pointers,no_dead_strip"] + static mut REF: Cheaty = Cheaty(&VALUE); + + // Produce a sel type as a result. + // XXX(nika): Don't use transmute? + unsafe { ::std::mem::transmute::<_, $crate::runtime::Sel>(REF.0) } + } + + do_it() + }}; +} + /// Send a message to an object or class. /// /// This is wildly `unsafe`, even more so than sending messages in From 81e8fafe74431a287158528e2a2465454636d931 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 16 Jun 2022 23:21:21 +0200 Subject: [PATCH 02/30] Add static selector assembly tests --- tests/assembly/test_msg_send_id/Cargo.toml | 3 + .../test_msg_send_static_sel/Cargo.toml | 24 ++++ .../expected/apple-aarch64.s | 91 ++++++++++++++ .../expected/apple-armv7.s | 86 +++++++++++++ .../expected/apple-armv7s.s | 89 +++++++++++++ .../expected/apple-x86.s | 107 ++++++++++++++++ .../expected/apple-x86_64.s | 70 +++++++++++ .../assembly/test_msg_send_static_sel/lib.rs | 25 ++++ .../test_msg_send_zero_cost/Cargo.toml | 3 + tests/assembly/test_msg_send_zero_cost/lib.rs | 8 +- .../test_retain_autoreleased/Cargo.toml | 3 + .../assembly/test_retain_autoreleased/lib.rs | 6 +- tests/assembly/test_static_sel/Cargo.toml | 24 ++++ .../test_static_sel/expected/apple-aarch64.s | 106 ++++++++++++++++ .../test_static_sel/expected/apple-armv7.s | 108 ++++++++++++++++ .../test_static_sel/expected/apple-armv7s.s | 107 ++++++++++++++++ .../test_static_sel/expected/apple-x86.s | 118 ++++++++++++++++++ .../test_static_sel/expected/apple-x86_64.s | 100 +++++++++++++++ tests/assembly/test_static_sel/lib.rs | 51 ++++++++ tests/src/bin/test_assembly.rs | 1 + 20 files changed, 1123 insertions(+), 7 deletions(-) create mode 100644 tests/assembly/test_msg_send_static_sel/Cargo.toml create mode 100644 tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s create mode 100644 tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s create mode 100644 tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s create mode 100644 tests/assembly/test_msg_send_static_sel/expected/apple-x86.s create mode 100644 tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s create mode 100644 tests/assembly/test_msg_send_static_sel/lib.rs create mode 100644 tests/assembly/test_static_sel/Cargo.toml create mode 100644 tests/assembly/test_static_sel/expected/apple-aarch64.s create mode 100644 tests/assembly/test_static_sel/expected/apple-armv7.s create mode 100644 tests/assembly/test_static_sel/expected/apple-armv7s.s create mode 100644 tests/assembly/test_static_sel/expected/apple-x86.s create mode 100644 tests/assembly/test_static_sel/expected/apple-x86_64.s create mode 100644 tests/assembly/test_static_sel/lib.rs diff --git a/tests/assembly/test_msg_send_id/Cargo.toml b/tests/assembly/test_msg_send_id/Cargo.toml index 387607d2a..ba21465fc 100644 --- a/tests/assembly/test_msg_send_id/Cargo.toml +++ b/tests/assembly/test_msg_send_id/Cargo.toml @@ -19,3 +19,6 @@ gnustep-1-8 = ["gnustep-1-7", "objc2/gnustep-1-8"] gnustep-1-9 = ["gnustep-1-8", "objc2/gnustep-1-9"] gnustep-2-0 = ["gnustep-1-9", "objc2/gnustep-2-0"] gnustep-2-1 = ["gnustep-2-0", "objc2/gnustep-2-1"] + +# Hack +assembly-features = [] diff --git a/tests/assembly/test_msg_send_static_sel/Cargo.toml b/tests/assembly/test_msg_send_static_sel/Cargo.toml new file mode 100644 index 000000000..dfb0649d8 --- /dev/null +++ b/tests/assembly/test_msg_send_static_sel/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "test_msg_send_static_sel" +version = "0.1.0" +edition = "2021" +publish = false + +[lib] +path = "lib.rs" + +[dependencies] +objc2 = { path = "../../../objc2", default-features = false } + +[features] +default = ["apple"] +# Runtime +apple = ["objc2/apple"] +gnustep-1-7 = ["objc2/gnustep-1-7"] +gnustep-1-8 = ["gnustep-1-7", "objc2/gnustep-1-8"] +gnustep-1-9 = ["gnustep-1-8", "objc2/gnustep-1-9"] +gnustep-2-0 = ["gnustep-1-9", "objc2/gnustep-2-0"] +gnustep-2-1 = ["gnustep-2-0", "objc2/gnustep-2-1"] + +# Hack +assembly-features = ["objc2/static-sel"] diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s new file mode 100644 index 000000000..2fdf1cd92 --- /dev/null +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -0,0 +1,91 @@ + .section __TEXT,__text,regular,pure_instructions + .globl _handle_with_sel + .p2align 2 +_handle_with_sel: +Lloh0: + adrp x1, __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h16ea9d1c425b55c9E@PAGE +Lloh1: + add x1, x1, __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h16ea9d1c425b55c9E@PAGEOFF + b _objc_msgSend + .loh AdrpAdd Lloh0, Lloh1 + + .globl _handle_alloc_init + .p2align 2 +_handle_alloc_init: + stp x29, x30, [sp, #-16]! + mov x29, sp +Lloh2: + adrp x1, __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h27da69bec7cfa7b0E@PAGE +Lloh3: + add x1, x1, __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h27da69bec7cfa7b0E@PAGEOFF + bl _objc_msgSend +Lloh4: + adrp x1, __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17hdf1c4acc22f16e29E@PAGE +Lloh5: + add x1, x1, __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17hdf1c4acc22f16e29E@PAGEOFF + ldp x29, x30, [sp], #16 + b _objc_msgSend + .loh AdrpAdd Lloh4, Lloh5 + .loh AdrpAdd Lloh2, Lloh3 + + .globl _use_generic + .p2align 2 +_use_generic: + stp x20, x19, [sp, #-32]! + stp x29, x30, [sp, #16] + add x29, sp, #16 + mov x19, x0 +Lloh6: + adrp x1, __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h226e828d50735928E@PAGE +Lloh7: + add x1, x1, __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h226e828d50735928E@PAGEOFF +Lloh8: + adrp x20, __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h4bc61eda96fa1ac8E@PAGE +Lloh9: + add x20, x20, __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h4bc61eda96fa1ac8E@PAGEOFF + mov x2, x20 + bl _objc_msgSend +Lloh10: + adrp x1, __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h2a3db9ebcc189240E@PAGE +Lloh11: + add x1, x1, __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h2a3db9ebcc189240E@PAGEOFF + mov x0, x19 + mov x2, x20 + bl _objc_msgSend +Lloh12: + adrp x1, __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h7e31e9de7919b8c1E@PAGE +Lloh13: + add x1, x1, __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h7e31e9de7919b8c1E@PAGEOFF + mov x0, x19 + mov x2, x20 + ldp x29, x30, [sp, #16] + ldp x20, x19, [sp], #32 + b _objc_msgSend + .loh AdrpAdd Lloh12, Lloh13 + .loh AdrpAdd Lloh10, Lloh11 + .loh AdrpAdd Lloh8, Lloh9 + .loh AdrpAdd Lloh6, Lloh7 + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h16ea9d1c425b55c9E: + .asciz "someSelector" + +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17hdf1c4acc22f16e29E: + .asciz "init" + +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h27da69bec7cfa7b0E: + .asciz "alloc" + +__ZN24test_msg_send_static_sel7generic5do_it5VALUE17h4bc61eda96fa1ac8E: + .asciz "generic:selector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h226e828d50735928E: + .asciz "performSelector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h2a3db9ebcc189240E: + .asciz "performSelector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h7e31e9de7919b8c1E: + .asciz "performSelector:" + +.subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s new file mode 100644 index 000000000..0a11395eb --- /dev/null +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -0,0 +1,86 @@ + .section __TEXT,__text,regular,pure_instructions + .syntax unified + .globl _handle_with_sel + .p2align 2 + .code 32 +_handle_with_sel: + movw r1, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc7c6bad48a0601f0E-(LPC0_0+8)) + movt r1, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc7c6bad48a0601f0E-(LPC0_0+8)) +LPC0_0: + add r1, pc, r1 + b _objc_msgSend + + .globl _handle_alloc_init + .p2align 2 + .code 32 +_handle_alloc_init: + push {r7, lr} + mov r7, sp + movw r1, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h580fd8fa27b5ffcbE-(LPC1_0+8)) + movt r1, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h580fd8fa27b5ffcbE-(LPC1_0+8)) +LPC1_0: + add r1, pc, r1 + bl _objc_msgSend + movw r1, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h0cbd3103e48b1841E-(LPC1_1+8)) + movt r1, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h0cbd3103e48b1841E-(LPC1_1+8)) +LPC1_1: + add r1, pc, r1 + pop {r7, lr} + b _objc_msgSend + + .globl _use_generic + .p2align 2 + .code 32 +_use_generic: + push {r4, r5, r7, lr} + add r7, sp, #8 + movw r1, :lower16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hea370ab904c591dcE-(LPC2_0+8)) + mov r4, r0 + movt r1, :upper16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hea370ab904c591dcE-(LPC2_0+8)) + movw r5, :lower16:(__ZN24test_msg_send_static_sel7generic5do_it5VALUE17hdb7b18c98f78677aE-(LPC2_1+8)) + movt r5, :upper16:(__ZN24test_msg_send_static_sel7generic5do_it5VALUE17hdb7b18c98f78677aE-(LPC2_1+8)) +LPC2_0: + add r1, pc, r1 +LPC2_1: + add r5, pc, r5 + mov r2, r5 + bl _objc_msgSend + movw r1, :lower16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hf0637c53b24a70f1E-(LPC2_2+8)) + mov r0, r4 + movt r1, :upper16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hf0637c53b24a70f1E-(LPC2_2+8)) + mov r2, r5 +LPC2_2: + add r1, pc, r1 + bl _objc_msgSend + movw r1, :lower16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hb63aece1e25549bdE-(LPC2_3+8)) + mov r0, r4 + movt r1, :upper16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hb63aece1e25549bdE-(LPC2_3+8)) + mov r2, r5 +LPC2_3: + add r1, pc, r1 + pop {r4, r5, r7, lr} + b _objc_msgSend + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc7c6bad48a0601f0E: + .asciz "someSelector" + +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h0cbd3103e48b1841E: + .asciz "init" + +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h580fd8fa27b5ffcbE: + .asciz "alloc" + +__ZN24test_msg_send_static_sel7generic5do_it5VALUE17hdb7b18c98f78677aE: + .asciz "generic:selector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hea370ab904c591dcE: + .asciz "performSelector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hf0637c53b24a70f1E: + .asciz "performSelector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hb63aece1e25549bdE: + .asciz "performSelector:" + +.subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s new file mode 100644 index 000000000..ea7db899e --- /dev/null +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -0,0 +1,89 @@ + .section __TEXT,__text,regular,pure_instructions + .syntax unified + .globl _handle_with_sel + .p2align 2 + .code 32 +_handle_with_sel: + push {r7, lr} + mov r7, sp + movw r1, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h5efd63825ac22048E-(LPC0_0+8)) + movt r1, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h5efd63825ac22048E-(LPC0_0+8)) +LPC0_0: + add r1, pc, r1 + bl _objc_msgSend + pop {r7, pc} + + .globl _handle_alloc_init + .p2align 2 + .code 32 +_handle_alloc_init: + push {r7, lr} + mov r7, sp + movw r1, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h511d9a3abe34514fE-(LPC1_0+8)) + movt r1, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h511d9a3abe34514fE-(LPC1_0+8)) +LPC1_0: + add r1, pc, r1 + bl _objc_msgSend + movw r1, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h441437e082275571E-(LPC1_1+8)) + movt r1, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h441437e082275571E-(LPC1_1+8)) +LPC1_1: + add r1, pc, r1 + bl _objc_msgSend + pop {r7, pc} + + .globl _use_generic + .p2align 2 + .code 32 +_use_generic: + push {r4, r5, r7, lr} + add r7, sp, #8 + movw r1, :lower16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hd2f614f4541f1fb6E-(LPC2_0+8)) + mov r4, r0 + movt r1, :upper16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hd2f614f4541f1fb6E-(LPC2_0+8)) + movw r5, :lower16:(__ZN24test_msg_send_static_sel7generic5do_it5VALUE17h085bf46fbd37778eE-(LPC2_1+8)) + movt r5, :upper16:(__ZN24test_msg_send_static_sel7generic5do_it5VALUE17h085bf46fbd37778eE-(LPC2_1+8)) +LPC2_0: + add r1, pc, r1 +LPC2_1: + add r5, pc, r5 + mov r2, r5 + bl _objc_msgSend + movw r1, :lower16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h4daddbacc43585e3E-(LPC2_2+8)) + mov r0, r4 + movt r1, :upper16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h4daddbacc43585e3E-(LPC2_2+8)) + mov r2, r5 +LPC2_2: + add r1, pc, r1 + bl _objc_msgSend + movw r1, :lower16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hce3635c78de3d40cE-(LPC2_3+8)) + mov r0, r4 + movt r1, :upper16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hce3635c78de3d40cE-(LPC2_3+8)) + mov r2, r5 +LPC2_3: + add r1, pc, r1 + bl _objc_msgSend + pop {r4, r5, r7, pc} + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h5efd63825ac22048E: + .asciz "someSelector" + +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h441437e082275571E: + .asciz "init" + +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h511d9a3abe34514fE: + .asciz "alloc" + +__ZN24test_msg_send_static_sel7generic5do_it5VALUE17h085bf46fbd37778eE: + .asciz "generic:selector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hd2f614f4541f1fb6E: + .asciz "performSelector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h4daddbacc43585e3E: + .asciz "performSelector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hce3635c78de3d40cE: + .asciz "performSelector:" + +.subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s new file mode 100644 index 000000000..9d3f6d12d --- /dev/null +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -0,0 +1,107 @@ + .section __TEXT,__text,regular,pure_instructions + .intel_syntax noprefix + .globl _handle_with_sel + .p2align 4, 0x90 +_handle_with_sel: + push ebp + mov ebp, esp + sub esp, 8 + call L0$pb +L0$pb: + pop eax + sub esp, 8 + lea eax, [eax + __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc9de2e17c2d2dbd7E-L0$pb] + push eax + push dword ptr [ebp + 8] + call _objc_msgSend + add esp, 24 + pop ebp + ret + + .globl _handle_alloc_init + .p2align 4, 0x90 +_handle_alloc_init: + push ebp + mov ebp, esp + push esi + push eax + call L1$pb +L1$pb: + pop esi + sub esp, 8 + lea eax, [esi + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h6331c35d7f3ca7ecE-L1$pb] + push eax + push dword ptr [ebp + 8] + call _objc_msgSend + add esp, 8 + lea ecx, [esi + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h80cf87b1cbcff62cE-L1$pb] + push ecx + push eax + call _objc_msgSend + add esp, 20 + pop esi + pop ebp + ret + + .globl _use_generic + .p2align 4, 0x90 +_use_generic: + push ebp + mov ebp, esp + push ebx + push edi + push esi + sub esp, 12 + call L2$pb +L2$pb: + pop edi + mov esi, dword ptr [ebp + 8] + sub esp, 4 + lea ebx, [edi + __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h5dc54c5eb2d3cedbE-L2$pb] + lea eax, [edi + __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hde48cd15665388c1E-L2$pb] + push ebx + push eax + push esi + call _objc_msgSend + add esp, 12 + lea eax, [edi + __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8d540a1bd5813fe5E-L2$pb] + push ebx + push eax + push esi + call _objc_msgSend + add esp, 12 + lea eax, [edi + __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h05f27bd87a98eec0E-L2$pb] + push ebx + push eax + push esi + call _objc_msgSend + add esp, 28 + pop esi + pop edi + pop ebx + pop ebp + ret + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc9de2e17c2d2dbd7E: + .asciz "someSelector" + +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h80cf87b1cbcff62cE: + .asciz "init" + +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h6331c35d7f3ca7ecE: + .asciz "alloc" + +__ZN24test_msg_send_static_sel7generic5do_it5VALUE17h5dc54c5eb2d3cedbE: + .asciz "generic:selector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hde48cd15665388c1E: + .asciz "performSelector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8d540a1bd5813fe5E: + .asciz "performSelector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h05f27bd87a98eec0E: + .asciz "performSelector:" + +.subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s new file mode 100644 index 000000000..d9edaa8e0 --- /dev/null +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -0,0 +1,70 @@ + .section __TEXT,__text,regular,pure_instructions + .intel_syntax noprefix + .globl _handle_with_sel + .p2align 4, 0x90 +_handle_with_sel: + push rbp + mov rbp, rsp + lea rsi, [rip + __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17ha271e23b04b427ddE] + pop rbp + jmp _objc_msgSend + + .globl _handle_alloc_init + .p2align 4, 0x90 +_handle_alloc_init: + push rbp + mov rbp, rsp + lea rsi, [rip + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h641723cf398488c1E] + call _objc_msgSend + lea rsi, [rip + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h18a88f0eacf39811E] + mov rdi, rax + pop rbp + jmp _objc_msgSend + + .globl _use_generic + .p2align 4, 0x90 +_use_generic: + push rbp + mov rbp, rsp + push r14 + push rbx + mov rbx, rdi + lea rsi, [rip + __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8a28567009fdf875E] + lea r14, [rip + __ZN24test_msg_send_static_sel7generic5do_it5VALUE17hd3f8e5714b07eb87E] + mov rdx, r14 + call _objc_msgSend + lea rsi, [rip + __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8efb56cf5369f387E] + mov rdi, rbx + mov rdx, r14 + call _objc_msgSend + lea rsi, [rip + __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h014eee30b271725eE] + mov rdi, rbx + mov rdx, r14 + pop rbx + pop r14 + pop rbp + jmp _objc_msgSend + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17ha271e23b04b427ddE: + .asciz "someSelector" + +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h18a88f0eacf39811E: + .asciz "init" + +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h641723cf398488c1E: + .asciz "alloc" + +__ZN24test_msg_send_static_sel7generic5do_it5VALUE17hd3f8e5714b07eb87E: + .asciz "generic:selector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8a28567009fdf875E: + .asciz "performSelector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8efb56cf5369f387E: + .asciz "performSelector:" + +__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h014eee30b271725eE: + .asciz "performSelector:" + +.subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/lib.rs b/tests/assembly/test_msg_send_static_sel/lib.rs new file mode 100644 index 000000000..dc17ab031 --- /dev/null +++ b/tests/assembly/test_msg_send_static_sel/lib.rs @@ -0,0 +1,25 @@ +//! Test how static selectors work in relation to `msg_send!` and `msg_send_id!` +use objc2::rc::{Id, Shared}; +use objc2::runtime::{Class, Object, Sel}; +use objc2::{msg_send, msg_send_id, sel}; + +#[no_mangle] +unsafe fn handle_with_sel(obj: &Object) -> *mut Object { + msg_send![obj, someSelector] +} + +#[no_mangle] +unsafe fn handle_alloc_init(cls: &Class) -> Option> { + msg_send_id![msg_send_id![cls, alloc], init] +} + +fn generic() -> Sel { + sel!(generic:selector:) +} + +#[no_mangle] +unsafe fn use_generic(obj: &Object) { + let _: () = msg_send![obj, performSelector: generic::()]; + let _: () = msg_send![obj, performSelector: generic::()]; + let _: () = msg_send![obj, performSelector: generic::()]; +} diff --git a/tests/assembly/test_msg_send_zero_cost/Cargo.toml b/tests/assembly/test_msg_send_zero_cost/Cargo.toml index b806be27f..a5c249957 100644 --- a/tests/assembly/test_msg_send_zero_cost/Cargo.toml +++ b/tests/assembly/test_msg_send_zero_cost/Cargo.toml @@ -19,3 +19,6 @@ gnustep-1-8 = ["gnustep-1-7", "objc2/gnustep-1-8"] gnustep-1-9 = ["gnustep-1-8", "objc2/gnustep-1-9"] gnustep-2-0 = ["gnustep-1-9", "objc2/gnustep-2-0"] gnustep-2-1 = ["gnustep-2-0", "objc2/gnustep-2-1"] + +# Hack +assembly-features = [] diff --git a/tests/assembly/test_msg_send_zero_cost/lib.rs b/tests/assembly/test_msg_send_zero_cost/lib.rs index b175345d7..0902a382d 100644 --- a/tests/assembly/test_msg_send_zero_cost/lib.rs +++ b/tests/assembly/test_msg_send_zero_cost/lib.rs @@ -6,8 +6,8 @@ use objc2::runtime::{Object, Sel}; use objc2::MessageReceiver; #[no_mangle] -pub fn handle(obj: &Object, sel: Sel) -> *mut Object { - unsafe { MessageReceiver::send_message(obj, sel, ()).unwrap() } +unsafe fn handle(obj: &Object, sel: Sel) -> *mut Object { + MessageReceiver::send_message(obj, sel, ()).unwrap() } // This will definitely not work, but is useful for making the assembly look @@ -22,6 +22,6 @@ fn selector() -> Sel { } #[no_mangle] -pub fn handle_with_sel(obj: &Object) -> *mut Object { - unsafe { MessageReceiver::send_message(obj, selector(), ()).unwrap() } +unsafe fn handle_with_sel(obj: &Object) -> *mut Object { + MessageReceiver::send_message(obj, selector(), ()).unwrap() } diff --git a/tests/assembly/test_retain_autoreleased/Cargo.toml b/tests/assembly/test_retain_autoreleased/Cargo.toml index 60842d60e..26dbb656d 100644 --- a/tests/assembly/test_retain_autoreleased/Cargo.toml +++ b/tests/assembly/test_retain_autoreleased/Cargo.toml @@ -19,3 +19,6 @@ gnustep-1-8 = ["gnustep-1-7", "objc2/gnustep-1-8"] gnustep-1-9 = ["gnustep-1-8", "objc2/gnustep-1-9"] gnustep-2-0 = ["gnustep-1-9", "objc2/gnustep-2-0"] gnustep-2-1 = ["gnustep-2-0", "objc2/gnustep-2-1"] + +# Hack +assembly-features = [] diff --git a/tests/assembly/test_retain_autoreleased/lib.rs b/tests/assembly/test_retain_autoreleased/lib.rs index ca1de6623..7526e9882 100644 --- a/tests/assembly/test_retain_autoreleased/lib.rs +++ b/tests/assembly/test_retain_autoreleased/lib.rs @@ -5,7 +5,7 @@ use objc2::runtime::{Object, Sel}; use objc2::MessageReceiver; #[no_mangle] -pub fn handle(obj: &Object, sel: Sel) -> Option> { - let ptr: *mut Object = unsafe { MessageReceiver::send_message(obj, sel, ()).unwrap() }; - unsafe { Id::retain_autoreleased(ptr) } +unsafe fn handle(obj: &Object, sel: Sel) -> Option> { + let ptr: *mut Object = MessageReceiver::send_message(obj, sel, ()).unwrap(); + Id::retain_autoreleased(ptr) } diff --git a/tests/assembly/test_static_sel/Cargo.toml b/tests/assembly/test_static_sel/Cargo.toml new file mode 100644 index 000000000..6ea922dae --- /dev/null +++ b/tests/assembly/test_static_sel/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "test_static_sel" +version = "0.1.0" +edition = "2021" +publish = false + +[lib] +path = "lib.rs" + +[dependencies] +objc2 = { path = "../../../objc2", default-features = false } + +[features] +default = ["apple"] +# Runtime +apple = ["objc2/apple"] +gnustep-1-7 = ["objc2/gnustep-1-7"] +gnustep-1-8 = ["gnustep-1-7", "objc2/gnustep-1-8"] +gnustep-1-9 = ["gnustep-1-8", "objc2/gnustep-1-9"] +gnustep-2-0 = ["gnustep-1-9", "objc2/gnustep-2-0"] +gnustep-2-1 = ["gnustep-2-0", "objc2/gnustep-2-1"] + +# Hack +assembly-features = ["objc2/static-sel"] diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s new file mode 100644 index 000000000..12bd52e53 --- /dev/null +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -0,0 +1,106 @@ + .section __TEXT,__text,regular,pure_instructions + .globl _get_sel + .p2align 2 +_get_sel: +Lloh0: + adrp x0, __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E@PAGE +Lloh1: + add x0, x0, __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E@PAGEOFF + ret + .loh AdrpAdd Lloh0, Lloh1 + + .globl _get_same_sel + .p2align 2 +_get_same_sel: +Lloh2: + adrp x0, __ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E@PAGE +Lloh3: + add x0, x0, __ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E@PAGEOFF + ret + .loh AdrpAdd Lloh2, Lloh3 + + .globl _get_common + .p2align 2 +_get_common: +Lloh4: + adrp x0, __ZN15test_static_sel10get_common5do_it5VALUE17hd149c186017d657dE@PAGE +Lloh5: + add x0, x0, __ZN15test_static_sel10get_common5do_it5VALUE17hd149c186017d657dE@PAGEOFF + ret + .loh AdrpAdd Lloh4, Lloh5 + + .globl _get_different_sel + .p2align 2 +_get_different_sel: +Lloh6: + adrp x0, __ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E@PAGE +Lloh7: + add x0, x0, __ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E@PAGEOFF + ret + .loh AdrpAdd Lloh6, Lloh7 + + .globl _unused_sel + .p2align 2 +_unused_sel: + ret + + .globl _use_fns + .p2align 2 +_use_fns: +Lloh8: + adrp x9, __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E@PAGE +Lloh9: + add x9, x9, __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E@PAGEOFF +Lloh10: + adrp x10, __ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E@PAGE +Lloh11: + add x10, x10, __ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E@PAGEOFF + stp x9, x10, [x8] +Lloh12: + adrp x9, __ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E@PAGE +Lloh13: + add x9, x9, __ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E@PAGEOFF +Lloh14: + adrp x10, __ZN15test_static_sel7use_fns5do_it5VALUE17hd8d355acf71c10e1E@PAGE +Lloh15: + add x10, x10, __ZN15test_static_sel7use_fns5do_it5VALUE17hd8d355acf71c10e1E@PAGEOFF + stp x9, x10, [x8, #16] + ret + .loh AdrpAdd Lloh14, Lloh15 + .loh AdrpAdd Lloh12, Lloh13 + .loh AdrpAdd Lloh10, Lloh11 + .loh AdrpAdd Lloh8, Lloh9 + + .globl _use_same_twice + .p2align 2 +_use_same_twice: +Lloh16: + adrp x9, __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E@PAGE +Lloh17: + add x9, x9, __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E@PAGEOFF + stp x9, x9, [x8] + ret + .loh AdrpAdd Lloh16, Lloh17 + + .globl _use_in_loop + .p2align 2 +_use_in_loop: + ret + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E: + .asciz "simple" + +__ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E: + .asciz "simple" + +__ZN15test_static_sel10get_common5do_it5VALUE17hd149c186017d657dE: + .asciz "alloc" + +__ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E: + .asciz "i:am:different:" + +__ZN15test_static_sel7use_fns5do_it5VALUE17hd8d355acf71c10e1E: + .asciz "fourthSel" + +.subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s new file mode 100644 index 000000000..d18e8ae1e --- /dev/null +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -0,0 +1,108 @@ + .section __TEXT,__text,regular,pure_instructions + .syntax unified + .globl _get_sel + .p2align 2 + .code 32 +_get_sel: + movw r0, :lower16:(__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E-(LPC0_0+8)) + movt r0, :upper16:(__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E-(LPC0_0+8)) +LPC0_0: + add r0, pc, r0 + bx lr + + .globl _get_same_sel + .p2align 2 + .code 32 +_get_same_sel: + movw r0, :lower16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE-(LPC1_0+8)) + movt r0, :upper16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE-(LPC1_0+8)) +LPC1_0: + add r0, pc, r0 + bx lr + + .globl _get_common + .p2align 2 + .code 32 +_get_common: + movw r0, :lower16:(__ZN15test_static_sel10get_common5do_it5VALUE17hf482623d5a0e24bcE-(LPC2_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10get_common5do_it5VALUE17hf482623d5a0e24bcE-(LPC2_0+8)) +LPC2_0: + add r0, pc, r0 + bx lr + + .globl _get_different_sel + .p2align 2 + .code 32 +_get_different_sel: + movw r0, :lower16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E-(LPC3_0+8)) + movt r0, :upper16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E-(LPC3_0+8)) +LPC3_0: + add r0, pc, r0 + bx lr + + .globl _unused_sel + .p2align 2 + .code 32 +_unused_sel: + bx lr + + .globl _use_fns + .p2align 2 + .code 32 +_use_fns: + movw r9, :lower16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E-(LPC5_0+8)) + movt r9, :upper16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E-(LPC5_0+8)) + movw r2, :lower16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE-(LPC5_1+8)) + movt r2, :upper16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE-(LPC5_1+8)) + movw r3, :lower16:(__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E-(LPC5_2+8)) + movt r3, :upper16:(__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E-(LPC5_2+8)) + movw r1, :lower16:(__ZN15test_static_sel7use_fns5do_it5VALUE17h4bcae19786cde021E-(LPC5_3+8)) + movt r1, :upper16:(__ZN15test_static_sel7use_fns5do_it5VALUE17h4bcae19786cde021E-(LPC5_3+8)) +LPC5_1: + add r2, pc, r2 +LPC5_0: + add r9, pc, r9 +LPC5_2: + add r3, pc, r3 +LPC5_3: + add r1, pc, r1 + str r3, [r0] + stmib r0, {r2, r9} + str r1, [r0, #12] + bx lr + + .globl _use_same_twice + .p2align 2 + .code 32 +_use_same_twice: + movw r1, :lower16:(__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E-(LPC6_0+8)) + movt r1, :upper16:(__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E-(LPC6_0+8)) +LPC6_0: + add r1, pc, r1 + str r1, [r0] + str r1, [r0, #4] + bx lr + + .globl _use_in_loop + .p2align 2 + .code 32 +_use_in_loop: + bx lr + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E: + .asciz "simple" + +__ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE: + .asciz "simple" + +__ZN15test_static_sel10get_common5do_it5VALUE17hf482623d5a0e24bcE: + .asciz "alloc" + +__ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E: + .asciz "i:am:different:" + +__ZN15test_static_sel7use_fns5do_it5VALUE17h4bcae19786cde021E: + .asciz "fourthSel" + +.subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s new file mode 100644 index 000000000..94635599d --- /dev/null +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -0,0 +1,107 @@ + .section __TEXT,__text,regular,pure_instructions + .syntax unified + .globl _get_sel + .p2align 2 + .code 32 +_get_sel: + movw r0, :lower16:(__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E-(LPC0_0+8)) + movt r0, :upper16:(__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E-(LPC0_0+8)) +LPC0_0: + add r0, pc, r0 + bx lr + + .globl _get_same_sel + .p2align 2 + .code 32 +_get_same_sel: + movw r0, :lower16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE-(LPC1_0+8)) + movt r0, :upper16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE-(LPC1_0+8)) +LPC1_0: + add r0, pc, r0 + bx lr + + .globl _get_common + .p2align 2 + .code 32 +_get_common: + movw r0, :lower16:(__ZN15test_static_sel10get_common5do_it5VALUE17h8f318ccc63cbbef4E-(LPC2_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10get_common5do_it5VALUE17h8f318ccc63cbbef4E-(LPC2_0+8)) +LPC2_0: + add r0, pc, r0 + bx lr + + .globl _get_different_sel + .p2align 2 + .code 32 +_get_different_sel: + movw r0, :lower16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E-(LPC3_0+8)) + movt r0, :upper16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E-(LPC3_0+8)) +LPC3_0: + add r0, pc, r0 + bx lr + + .globl _unused_sel + .p2align 2 + .code 32 +_unused_sel: + bx lr + + .globl _use_fns + .p2align 2 + .code 32 +_use_fns: + movw r9, :lower16:(__ZN15test_static_sel7use_fns5do_it5VALUE17h145936052e081cd8E-(LPC5_0+8)) + movt r9, :upper16:(__ZN15test_static_sel7use_fns5do_it5VALUE17h145936052e081cd8E-(LPC5_0+8)) + movw r2, :lower16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E-(LPC5_1+8)) + movt r2, :upper16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E-(LPC5_1+8)) + movw r3, :lower16:(__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E-(LPC5_2+8)) + movt r3, :upper16:(__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E-(LPC5_2+8)) + movw r1, :lower16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE-(LPC5_3+8)) + movt r1, :upper16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE-(LPC5_3+8)) +LPC5_2: + add r3, pc, r3 +LPC5_3: + add r1, pc, r1 +LPC5_0: + add r9, pc, r9 +LPC5_1: + add r2, pc, r2 + str r3, [r0] + stmib r0, {r1, r2, r9} + bx lr + + .globl _use_same_twice + .p2align 2 + .code 32 +_use_same_twice: + movw r1, :lower16:(__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E-(LPC6_0+8)) + movt r1, :upper16:(__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E-(LPC6_0+8)) +LPC6_0: + add r1, pc, r1 + str r1, [r0] + str r1, [r0, #4] + bx lr + + .globl _use_in_loop + .p2align 2 + .code 32 +_use_in_loop: + bx lr + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E: + .asciz "simple" + +__ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE: + .asciz "simple" + +__ZN15test_static_sel10get_common5do_it5VALUE17h8f318ccc63cbbef4E: + .asciz "alloc" + +__ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E: + .asciz "i:am:different:" + +__ZN15test_static_sel7use_fns5do_it5VALUE17h145936052e081cd8E: + .asciz "fourthSel" + +.subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s new file mode 100644 index 000000000..3404f4574 --- /dev/null +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -0,0 +1,118 @@ + .section __TEXT,__text,regular,pure_instructions + .intel_syntax noprefix + .globl _get_sel + .p2align 4, 0x90 +_get_sel: + push ebp + mov ebp, esp + call L0$pb +L0$pb: + pop eax + lea eax, [eax + __ZN15test_static_sel7get_sel5do_it5VALUE17hdc6f5bc4c8522997E-L0$pb] + pop ebp + ret + + .globl _get_same_sel + .p2align 4, 0x90 +_get_same_sel: + push ebp + mov ebp, esp + call L1$pb +L1$pb: + pop eax + lea eax, [eax + __ZN15test_static_sel12get_same_sel5do_it5VALUE17hba6507a7c7d39ef8E-L1$pb] + pop ebp + ret + + .globl _get_common + .p2align 4, 0x90 +_get_common: + push ebp + mov ebp, esp + call L2$pb +L2$pb: + pop eax + lea eax, [eax + __ZN15test_static_sel10get_common5do_it5VALUE17ha16c61a23dba9432E-L2$pb] + pop ebp + ret + + .globl _get_different_sel + .p2align 4, 0x90 +_get_different_sel: + push ebp + mov ebp, esp + call L3$pb +L3$pb: + pop eax + lea eax, [eax + __ZN15test_static_sel17get_different_sel5do_it5VALUE17h56d326a3c9259e1eE-L3$pb] + pop ebp + ret + + .globl _unused_sel + .p2align 4, 0x90 +_unused_sel: + push ebp + mov ebp, esp + pop ebp + ret + + .globl _use_fns + .p2align 4, 0x90 +_use_fns: + push ebp + mov ebp, esp + call L5$pb +L5$pb: + pop ecx + mov eax, dword ptr [ebp + 8] + lea edx, [ecx + __ZN15test_static_sel7get_sel5do_it5VALUE17hdc6f5bc4c8522997E-L5$pb] + mov dword ptr [eax], edx + lea edx, [ecx + __ZN15test_static_sel12get_same_sel5do_it5VALUE17hba6507a7c7d39ef8E-L5$pb] + mov dword ptr [eax + 4], edx + lea edx, [ecx + __ZN15test_static_sel17get_different_sel5do_it5VALUE17h56d326a3c9259e1eE-L5$pb] + mov dword ptr [eax + 8], edx + lea ecx, [ecx + __ZN15test_static_sel7use_fns5do_it5VALUE17h7ce073afa896ddd6E-L5$pb] + mov dword ptr [eax + 12], ecx + pop ebp + ret 4 + + .globl _use_same_twice + .p2align 4, 0x90 +_use_same_twice: + push ebp + mov ebp, esp + call L6$pb +L6$pb: + pop ecx + mov eax, dword ptr [ebp + 8] + lea ecx, [ecx + __ZN15test_static_sel7get_sel5do_it5VALUE17hdc6f5bc4c8522997E-L6$pb] + mov dword ptr [eax], ecx + mov dword ptr [eax + 4], ecx + pop ebp + ret 4 + + .globl _use_in_loop + .p2align 4, 0x90 +_use_in_loop: + push ebp + mov ebp, esp + pop ebp + ret + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel7get_sel5do_it5VALUE17hdc6f5bc4c8522997E: + .asciz "simple" + +__ZN15test_static_sel12get_same_sel5do_it5VALUE17hba6507a7c7d39ef8E: + .asciz "simple" + +__ZN15test_static_sel10get_common5do_it5VALUE17ha16c61a23dba9432E: + .asciz "alloc" + +__ZN15test_static_sel17get_different_sel5do_it5VALUE17h56d326a3c9259e1eE: + .asciz "i:am:different:" + +__ZN15test_static_sel7use_fns5do_it5VALUE17h7ce073afa896ddd6E: + .asciz "fourthSel" + +.subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s new file mode 100644 index 000000000..fd5935555 --- /dev/null +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -0,0 +1,100 @@ + .section __TEXT,__text,regular,pure_instructions + .intel_syntax noprefix + .globl _get_sel + .p2align 4, 0x90 +_get_sel: + push rbp + mov rbp, rsp + lea rax, [rip + __ZN15test_static_sel7get_sel5do_it5VALUE17h338b867de999a683E] + pop rbp + ret + + .globl _get_same_sel + .p2align 4, 0x90 +_get_same_sel: + push rbp + mov rbp, rsp + lea rax, [rip + __ZN15test_static_sel12get_same_sel5do_it5VALUE17hfda78dbf2d31d676E] + pop rbp + ret + + .globl _get_common + .p2align 4, 0x90 +_get_common: + push rbp + mov rbp, rsp + lea rax, [rip + __ZN15test_static_sel10get_common5do_it5VALUE17h6913f03b163cd283E] + pop rbp + ret + + .globl _get_different_sel + .p2align 4, 0x90 +_get_different_sel: + push rbp + mov rbp, rsp + lea rax, [rip + __ZN15test_static_sel17get_different_sel5do_it5VALUE17h88a6ccd34e9782e8E] + pop rbp + ret + + .globl _unused_sel + .p2align 4, 0x90 +_unused_sel: + push rbp + mov rbp, rsp + pop rbp + ret + + .globl _use_fns + .p2align 4, 0x90 +_use_fns: + push rbp + mov rbp, rsp + mov rax, rdi + lea rcx, [rip + __ZN15test_static_sel7get_sel5do_it5VALUE17h338b867de999a683E] + mov qword ptr [rdi], rcx + lea rcx, [rip + __ZN15test_static_sel12get_same_sel5do_it5VALUE17hfda78dbf2d31d676E] + mov qword ptr [rdi + 8], rcx + lea rcx, [rip + __ZN15test_static_sel17get_different_sel5do_it5VALUE17h88a6ccd34e9782e8E] + mov qword ptr [rdi + 16], rcx + lea rcx, [rip + __ZN15test_static_sel7use_fns5do_it5VALUE17h3053c06c1c5263daE] + mov qword ptr [rdi + 24], rcx + pop rbp + ret + + .globl _use_same_twice + .p2align 4, 0x90 +_use_same_twice: + push rbp + mov rbp, rsp + mov rax, rdi + lea rcx, [rip + __ZN15test_static_sel7get_sel5do_it5VALUE17h338b867de999a683E] + mov qword ptr [rdi], rcx + mov qword ptr [rdi + 8], rcx + pop rbp + ret + + .globl _use_in_loop + .p2align 4, 0x90 +_use_in_loop: + push rbp + mov rbp, rsp + pop rbp + ret + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel7get_sel5do_it5VALUE17h338b867de999a683E: + .asciz "simple" + +__ZN15test_static_sel12get_same_sel5do_it5VALUE17hfda78dbf2d31d676E: + .asciz "simple" + +__ZN15test_static_sel10get_common5do_it5VALUE17h6913f03b163cd283E: + .asciz "alloc" + +__ZN15test_static_sel17get_different_sel5do_it5VALUE17h88a6ccd34e9782e8E: + .asciz "i:am:different:" + +__ZN15test_static_sel7use_fns5do_it5VALUE17h3053c06c1c5263daE: + .asciz "fourthSel" + +.subsections_via_symbols diff --git a/tests/assembly/test_static_sel/lib.rs b/tests/assembly/test_static_sel/lib.rs new file mode 100644 index 000000000..834470014 --- /dev/null +++ b/tests/assembly/test_static_sel/lib.rs @@ -0,0 +1,51 @@ +//! Test the output of the `sel!` macro. +use objc2::runtime::Sel; +use objc2::sel; + +#[no_mangle] +fn get_sel() -> Sel { + sel!(simple) +} + +#[no_mangle] +fn get_same_sel() -> Sel { + sel!(simple) +} + +#[no_mangle] +fn get_common() -> Sel { + sel!(alloc) +} + +#[no_mangle] +fn get_different_sel() -> Sel { + sel!(i: am: different:) +} + +#[no_mangle] +fn unused_sel() { + let _ = sel!(unused); +} + +#[no_mangle] +fn use_fns() -> [Sel; 4] { + let s1 = get_sel(); + let s2 = get_same_sel(); + let s3 = get_different_sel(); + let s4 = sel!(fourthSel); + [s1, s2, s3, s4] +} + +#[no_mangle] +fn use_same_twice() -> [Sel; 2] { + // Should ideally not need to load twice + [get_sel(), get_sel()] +} + +#[no_mangle] +fn use_in_loop(n: usize) { + for _i in 0..n { + // Should ideally be a noop + let _ = sel!(loopedSelector); + } +} diff --git a/tests/src/bin/test_assembly.rs b/tests/src/bin/test_assembly.rs index 66d8032a7..d5c886a71 100644 --- a/tests/src/bin/test_assembly.rs +++ b/tests/src/bin/test_assembly.rs @@ -85,6 +85,7 @@ fn main() { .args(args().skip(2)) .arg("--release") .arg("--message-format=json-render-diagnostics") + .arg("--features=assembly-features") .arg("--") .arg("--emit=asm") // .arg("-Zplt=no") From 4c5cbcc344c4d57a4846e7c0ac028c09b2cda9e2 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 16 Jun 2022 23:20:20 +0200 Subject: [PATCH 03/30] Use a volatile read Co-authored-by: Jeff Muizelaar Co-authored-by: clavin Co-authored-by: Michael Bradshaw --- objc2/src/macros.rs | 8 +- .../expected/apple-aarch64.s | 76 ++++++------ .../expected/apple-armv7.s | 67 +++++----- .../expected/apple-armv7s.s | 67 +++++----- .../expected/apple-x86.s | 84 +++++++++---- .../expected/apple-x86_64.s | 69 +++++++++-- .../test_static_sel/expected/apple-aarch64.s | 103 ++++++++++------ .../test_static_sel/expected/apple-armv7.s | 104 +++++++++++----- .../test_static_sel/expected/apple-armv7s.s | 105 +++++++++++----- .../test_static_sel/expected/apple-x86.s | 115 ++++++++++++++++-- .../test_static_sel/expected/apple-x86_64.s | 106 +++++++++++++--- 11 files changed, 646 insertions(+), 258 deletions(-) diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index f378b39b9..70e95951b 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -89,9 +89,15 @@ macro_rules! sel { #[link_section = "__DATA,__objc_selrefs,literal_pointers,no_dead_strip"] static mut REF: Cheaty = Cheaty(&VALUE); + // The actual selector is replaced by dyld when the program is + // loaded, so we need to use a volatile read to prevent the + // optimizer from thinking it can circumvent the read through REF. + // // Produce a sel type as a result. // XXX(nika): Don't use transmute? - unsafe { ::std::mem::transmute::<_, $crate::runtime::Sel>(REF.0) } + unsafe { + ::std::mem::transmute::<_, $crate::runtime::Sel>(::std::ptr::read_volatile(&REF.0)) + } } do_it() diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index 2fdf1cd92..b287ff4d6 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -3,29 +3,29 @@ .p2align 2 _handle_with_sel: Lloh0: - adrp x1, __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h16ea9d1c425b55c9E@PAGE + adrp x8, __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h3b4abf454e7caef2E@PAGE Lloh1: - add x1, x1, __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h16ea9d1c425b55c9E@PAGEOFF + ldr x1, [x8, __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h3b4abf454e7caef2E@PAGEOFF] b _objc_msgSend - .loh AdrpAdd Lloh0, Lloh1 + .loh AdrpLdr Lloh0, Lloh1 .globl _handle_alloc_init .p2align 2 _handle_alloc_init: - stp x29, x30, [sp, #-16]! - mov x29, sp + stp x20, x19, [sp, #-32]! + stp x29, x30, [sp, #16] + add x29, sp, #16 Lloh2: - adrp x1, __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h27da69bec7cfa7b0E@PAGE + adrp x8, __MergedGlobals@PAGE Lloh3: - add x1, x1, __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h27da69bec7cfa7b0E@PAGEOFF + add x8, x8, __MergedGlobals@PAGEOFF + ldr x19, [x8] + ldr x1, [x8, #8] bl _objc_msgSend -Lloh4: - adrp x1, __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17hdf1c4acc22f16e29E@PAGE -Lloh5: - add x1, x1, __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17hdf1c4acc22f16e29E@PAGEOFF - ldp x29, x30, [sp], #16 + mov x1, x19 + ldp x29, x30, [sp, #16] + ldp x20, x19, [sp], #32 b _objc_msgSend - .loh AdrpAdd Lloh4, Lloh5 .loh AdrpAdd Lloh2, Lloh3 .globl _use_generic @@ -35,41 +35,35 @@ _use_generic: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 -Lloh6: - adrp x1, __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h226e828d50735928E@PAGE -Lloh7: - add x1, x1, __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h226e828d50735928E@PAGEOFF -Lloh8: - adrp x20, __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h4bc61eda96fa1ac8E@PAGE -Lloh9: - add x20, x20, __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h4bc61eda96fa1ac8E@PAGEOFF - mov x2, x20 +Lloh4: + adrp x20, __MergedGlobals@PAGE+16 +Lloh5: + add x20, x20, __MergedGlobals@PAGEOFF+16 + ldr x1, [x20, #8] + ldr x2, [x20] bl _objc_msgSend -Lloh10: - adrp x1, __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h2a3db9ebcc189240E@PAGE -Lloh11: - add x1, x1, __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h2a3db9ebcc189240E@PAGEOFF + ldr x1, [x20, #16] + ldr x2, [x20] mov x0, x19 - mov x2, x20 bl _objc_msgSend -Lloh12: - adrp x1, __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h7e31e9de7919b8c1E@PAGE -Lloh13: - add x1, x1, __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h7e31e9de7919b8c1E@PAGEOFF + ldr x1, [x20, #24] + ldr x2, [x20] mov x0, x19 - mov x2, x20 ldp x29, x30, [sp, #16] ldp x20, x19, [sp], #32 b _objc_msgSend - .loh AdrpAdd Lloh12, Lloh13 - .loh AdrpAdd Lloh10, Lloh11 - .loh AdrpAdd Lloh8, Lloh9 - .loh AdrpAdd Lloh6, Lloh7 + .loh AdrpAdd Lloh4, Lloh5 .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h16ea9d1c425b55c9E: .asciz "someSelector" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h3b4abf454e7caef2E: + .quad __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h16ea9d1c425b55c9E + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17hdf1c4acc22f16e29E: .asciz "init" @@ -88,4 +82,14 @@ __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h2a3db9ebcc189240E: __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h7e31e9de7919b8c1E: .asciz "performSelector:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__MergedGlobals: + .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17hdf1c4acc22f16e29E + .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h27da69bec7cfa7b0E + .quad __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h4bc61eda96fa1ac8E + .quad __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h226e828d50735928E + .quad __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h2a3db9ebcc189240E + .quad __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h7e31e9de7919b8c1E + .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index 0a11395eb..75fe9ab0c 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -4,28 +4,30 @@ .p2align 2 .code 32 _handle_with_sel: - movw r1, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc7c6bad48a0601f0E-(LPC0_0+8)) - movt r1, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc7c6bad48a0601f0E-(LPC0_0+8)) + movw r1, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h8b14204ae601938aE-(LPC0_0+8)) + movt r1, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h8b14204ae601938aE-(LPC0_0+8)) LPC0_0: - add r1, pc, r1 + ldr r1, [pc, r1] b _objc_msgSend .globl _handle_alloc_init .p2align 2 .code 32 _handle_alloc_init: - push {r7, lr} - mov r7, sp - movw r1, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h580fd8fa27b5ffcbE-(LPC1_0+8)) - movt r1, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h580fd8fa27b5ffcbE-(LPC1_0+8)) + push {r4, r7, lr} + add r7, sp, #4 + movw r1, :lower16:(__MergedGlobals-(LPC1_0+8)) + movt r1, :upper16:(__MergedGlobals-(LPC1_0+8)) + movw r4, :lower16:(__MergedGlobals-(LPC1_1+8)) LPC1_0: add r1, pc, r1 - bl _objc_msgSend - movw r1, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h0cbd3103e48b1841E-(LPC1_1+8)) - movt r1, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h0cbd3103e48b1841E-(LPC1_1+8)) + movt r4, :upper16:(__MergedGlobals-(LPC1_1+8)) LPC1_1: - add r1, pc, r1 - pop {r7, lr} + ldr r4, [pc, r4] + ldr r1, [r1, #4] + bl _objc_msgSend + mov r1, r4 + pop {r4, r7, lr} b _objc_msgSend .globl _use_generic @@ -34,30 +36,21 @@ LPC1_1: _use_generic: push {r4, r5, r7, lr} add r7, sp, #8 - movw r1, :lower16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hea370ab904c591dcE-(LPC2_0+8)) + movw r5, :lower16:(__MergedGlobals-(LPC2_0+8)) mov r4, r0 - movt r1, :upper16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hea370ab904c591dcE-(LPC2_0+8)) - movw r5, :lower16:(__ZN24test_msg_send_static_sel7generic5do_it5VALUE17hdb7b18c98f78677aE-(LPC2_1+8)) - movt r5, :upper16:(__ZN24test_msg_send_static_sel7generic5do_it5VALUE17hdb7b18c98f78677aE-(LPC2_1+8)) + movt r5, :upper16:(__MergedGlobals-(LPC2_0+8)) LPC2_0: - add r1, pc, r1 -LPC2_1: add r5, pc, r5 - mov r2, r5 + ldr r1, [r5, #12] + ldr r2, [r5, #8] bl _objc_msgSend - movw r1, :lower16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hf0637c53b24a70f1E-(LPC2_2+8)) + ldr r1, [r5, #16] mov r0, r4 - movt r1, :upper16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hf0637c53b24a70f1E-(LPC2_2+8)) - mov r2, r5 -LPC2_2: - add r1, pc, r1 + ldr r2, [r5, #8] bl _objc_msgSend - movw r1, :lower16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hb63aece1e25549bdE-(LPC2_3+8)) + ldr r1, [r5, #20] mov r0, r4 - movt r1, :upper16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hb63aece1e25549bdE-(LPC2_3+8)) - mov r2, r5 -LPC2_3: - add r1, pc, r1 + ldr r2, [r5, #8] pop {r4, r5, r7, lr} b _objc_msgSend @@ -65,6 +58,12 @@ LPC2_3: __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc7c6bad48a0601f0E: .asciz "someSelector" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h8b14204ae601938aE: + .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc7c6bad48a0601f0E + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h0cbd3103e48b1841E: .asciz "init" @@ -83,4 +82,14 @@ __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hf0637c53b24a70f1E: __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hb63aece1e25549bdE: .asciz "performSelector:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__MergedGlobals: + .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h0cbd3103e48b1841E + .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h580fd8fa27b5ffcbE + .long __ZN24test_msg_send_static_sel7generic5do_it5VALUE17hdb7b18c98f78677aE + .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hea370ab904c591dcE + .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hf0637c53b24a70f1E + .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hb63aece1e25549bdE + .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index ea7db899e..742d8ffdf 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -6,10 +6,10 @@ _handle_with_sel: push {r7, lr} mov r7, sp - movw r1, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h5efd63825ac22048E-(LPC0_0+8)) - movt r1, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h5efd63825ac22048E-(LPC0_0+8)) + movw r1, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h9a8ef11721428e5cE-(LPC0_0+8)) + movt r1, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h9a8ef11721428e5cE-(LPC0_0+8)) LPC0_0: - add r1, pc, r1 + ldr r1, [pc, r1] bl _objc_msgSend pop {r7, pc} @@ -17,19 +17,21 @@ LPC0_0: .p2align 2 .code 32 _handle_alloc_init: - push {r7, lr} - mov r7, sp - movw r1, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h511d9a3abe34514fE-(LPC1_0+8)) - movt r1, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h511d9a3abe34514fE-(LPC1_0+8)) + push {r4, r7, lr} + add r7, sp, #4 + movw r1, :lower16:(__MergedGlobals-(LPC1_0+8)) + movt r1, :upper16:(__MergedGlobals-(LPC1_0+8)) + movw r4, :lower16:(__MergedGlobals-(LPC1_1+8)) + movt r4, :upper16:(__MergedGlobals-(LPC1_1+8)) LPC1_0: add r1, pc, r1 - bl _objc_msgSend - movw r1, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h441437e082275571E-(LPC1_1+8)) - movt r1, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h441437e082275571E-(LPC1_1+8)) LPC1_1: - add r1, pc, r1 + ldr r4, [pc, r4] + ldr r1, [r1, #4] bl _objc_msgSend - pop {r7, pc} + mov r1, r4 + bl _objc_msgSend + pop {r4, r7, pc} .globl _use_generic .p2align 2 @@ -37,30 +39,21 @@ LPC1_1: _use_generic: push {r4, r5, r7, lr} add r7, sp, #8 - movw r1, :lower16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hd2f614f4541f1fb6E-(LPC2_0+8)) + movw r5, :lower16:(__MergedGlobals-(LPC2_0+8)) mov r4, r0 - movt r1, :upper16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hd2f614f4541f1fb6E-(LPC2_0+8)) - movw r5, :lower16:(__ZN24test_msg_send_static_sel7generic5do_it5VALUE17h085bf46fbd37778eE-(LPC2_1+8)) - movt r5, :upper16:(__ZN24test_msg_send_static_sel7generic5do_it5VALUE17h085bf46fbd37778eE-(LPC2_1+8)) + movt r5, :upper16:(__MergedGlobals-(LPC2_0+8)) LPC2_0: - add r1, pc, r1 -LPC2_1: add r5, pc, r5 - mov r2, r5 + ldr r1, [r5, #12] + ldr r2, [r5, #8] bl _objc_msgSend - movw r1, :lower16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h4daddbacc43585e3E-(LPC2_2+8)) + ldr r1, [r5, #16] mov r0, r4 - movt r1, :upper16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h4daddbacc43585e3E-(LPC2_2+8)) - mov r2, r5 -LPC2_2: - add r1, pc, r1 + ldr r2, [r5, #8] bl _objc_msgSend - movw r1, :lower16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hce3635c78de3d40cE-(LPC2_3+8)) + ldr r1, [r5, #20] mov r0, r4 - movt r1, :upper16:(__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hce3635c78de3d40cE-(LPC2_3+8)) - mov r2, r5 -LPC2_3: - add r1, pc, r1 + ldr r2, [r5, #8] bl _objc_msgSend pop {r4, r5, r7, pc} @@ -68,6 +61,12 @@ LPC2_3: __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h5efd63825ac22048E: .asciz "someSelector" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h9a8ef11721428e5cE: + .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h5efd63825ac22048E + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h441437e082275571E: .asciz "init" @@ -86,4 +85,14 @@ __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h4daddbacc43585e3E: __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hce3635c78de3d40cE: .asciz "performSelector:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__MergedGlobals: + .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h441437e082275571E + .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h511d9a3abe34514fE + .long __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h085bf46fbd37778eE + .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hd2f614f4541f1fb6E + .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h4daddbacc43585e3E + .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hce3635c78de3d40cE + .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index 9d3f6d12d..02490414d 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -10,8 +10,7 @@ _handle_with_sel: L0$pb: pop eax sub esp, 8 - lea eax, [eax + __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc9de2e17c2d2dbd7E-L0$pb] - push eax + push dword ptr [eax + __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h65cc25d2143f786fE-L0$pb] push dword ptr [ebp + 8] call _objc_msgSend add esp, 24 @@ -27,15 +26,14 @@ _handle_alloc_init: push eax call L1$pb L1$pb: - pop esi + pop eax + mov esi, dword ptr [eax + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h498e51a4429d4cebE-L1$pb] sub esp, 8 - lea eax, [esi + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h6331c35d7f3ca7ecE-L1$pb] - push eax + push dword ptr [eax + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h97f4b0b87078d28fE-L1$pb] push dword ptr [ebp + 8] call _objc_msgSend add esp, 8 - lea ecx, [esi + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h80cf87b1cbcff62cE-L1$pb] - push ecx + push esi push eax call _objc_msgSend add esp, 20 @@ -48,37 +46,30 @@ L1$pb: _use_generic: push ebp mov ebp, esp - push ebx push edi push esi - sub esp, 12 call L2$pb L2$pb: - pop edi - mov esi, dword ptr [ebp + 8] + pop esi + mov edi, dword ptr [ebp + 8] sub esp, 4 - lea ebx, [edi + __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h5dc54c5eb2d3cedbE-L2$pb] - lea eax, [edi + __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hde48cd15665388c1E-L2$pb] - push ebx - push eax - push esi + push dword ptr [esi + __ZN24test_msg_send_static_sel7generic5do_it3REF17h3a04d62bb3a1f3bdE-L2$pb] + push dword ptr [esi + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hedb1f43f6216ce47E-L2$pb] + push edi call _objc_msgSend add esp, 12 - lea eax, [edi + __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8d540a1bd5813fe5E-L2$pb] - push ebx - push eax - push esi + push dword ptr [esi + __ZN24test_msg_send_static_sel7generic5do_it3REF17h3a04d62bb3a1f3bdE-L2$pb] + push dword ptr [esi + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h38ebe7d8068fa384E-L2$pb] + push edi call _objc_msgSend add esp, 12 - lea eax, [edi + __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h05f27bd87a98eec0E-L2$pb] - push ebx - push eax - push esi + push dword ptr [esi + __ZN24test_msg_send_static_sel7generic5do_it3REF17h3a04d62bb3a1f3bdE-L2$pb] + push dword ptr [esi + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h4def92294f8ef6c8E-L2$pb] + push edi call _objc_msgSend - add esp, 28 + add esp, 16 pop esi pop edi - pop ebx pop ebp ret @@ -86,22 +77,63 @@ L2$pb: __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc9de2e17c2d2dbd7E: .asciz "someSelector" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h65cc25d2143f786fE: + .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc9de2e17c2d2dbd7E + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h80cf87b1cbcff62cE: .asciz "init" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h498e51a4429d4cebE: + .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h80cf87b1cbcff62cE + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h6331c35d7f3ca7ecE: .asciz "alloc" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h97f4b0b87078d28fE: + .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h6331c35d7f3ca7ecE + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h5dc54c5eb2d3cedbE: .asciz "generic:selector:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN24test_msg_send_static_sel7generic5do_it3REF17h3a04d62bb3a1f3bdE: + .long __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h5dc54c5eb2d3cedbE + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hde48cd15665388c1E: .asciz "performSelector:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN24test_msg_send_static_sel11use_generic5do_it3REF17hedb1f43f6216ce47E: + .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hde48cd15665388c1E + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8d540a1bd5813fe5E: .asciz "performSelector:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN24test_msg_send_static_sel11use_generic5do_it3REF17h38ebe7d8068fa384E: + .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8d540a1bd5813fe5E + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h05f27bd87a98eec0E: .asciz "performSelector:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN24test_msg_send_static_sel11use_generic5do_it3REF17h4def92294f8ef6c8E: + .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h05f27bd87a98eec0E + .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index d9edaa8e0..0dd906796 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -5,7 +5,7 @@ _handle_with_sel: push rbp mov rbp, rsp - lea rsi, [rip + __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17ha271e23b04b427ddE] + mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17hf309c5158f98b1fcE] pop rbp jmp _objc_msgSend @@ -14,10 +14,15 @@ _handle_with_sel: _handle_alloc_init: push rbp mov rbp, rsp - lea rsi, [rip + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h641723cf398488c1E] + push rbx + push rax + mov rbx, qword ptr [rip + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h9733de6ecff5dbb2E] + mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hb3954197f6bdef1fE] call _objc_msgSend - lea rsi, [rip + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h18a88f0eacf39811E] mov rdi, rax + mov rsi, rbx + add rsp, 8 + pop rbx pop rbp jmp _objc_msgSend @@ -26,22 +31,21 @@ _handle_alloc_init: _use_generic: push rbp mov rbp, rsp - push r14 push rbx + push rax mov rbx, rdi - lea rsi, [rip + __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8a28567009fdf875E] - lea r14, [rip + __ZN24test_msg_send_static_sel7generic5do_it5VALUE17hd3f8e5714b07eb87E] - mov rdx, r14 + mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hef0b1c0e70be6ec1E] + mov rdx, qword ptr [rip + __ZN24test_msg_send_static_sel7generic5do_it3REF17h5d75f9d29adef9eeE] call _objc_msgSend - lea rsi, [rip + __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8efb56cf5369f387E] + mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hba5110112d711d53E] + mov rdx, qword ptr [rip + __ZN24test_msg_send_static_sel7generic5do_it3REF17h5d75f9d29adef9eeE] mov rdi, rbx - mov rdx, r14 call _objc_msgSend - lea rsi, [rip + __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h014eee30b271725eE] + mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h1c094ab04f32e2afE] + mov rdx, qword ptr [rip + __ZN24test_msg_send_static_sel7generic5do_it3REF17h5d75f9d29adef9eeE] mov rdi, rbx - mov rdx, r14 + add rsp, 8 pop rbx - pop r14 pop rbp jmp _objc_msgSend @@ -49,22 +53,63 @@ _use_generic: __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17ha271e23b04b427ddE: .asciz "someSelector" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17hf309c5158f98b1fcE: + .quad __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17ha271e23b04b427ddE + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h18a88f0eacf39811E: .asciz "init" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h9733de6ecff5dbb2E: + .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h18a88f0eacf39811E + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h641723cf398488c1E: .asciz "alloc" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hb3954197f6bdef1fE: + .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h641723cf398488c1E + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel7generic5do_it5VALUE17hd3f8e5714b07eb87E: .asciz "generic:selector:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN24test_msg_send_static_sel7generic5do_it3REF17h5d75f9d29adef9eeE: + .quad __ZN24test_msg_send_static_sel7generic5do_it5VALUE17hd3f8e5714b07eb87E + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8a28567009fdf875E: .asciz "performSelector:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN24test_msg_send_static_sel11use_generic5do_it3REF17hef0b1c0e70be6ec1E: + .quad __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8a28567009fdf875E + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8efb56cf5369f387E: .asciz "performSelector:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN24test_msg_send_static_sel11use_generic5do_it3REF17hba5110112d711d53E: + .quad __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8efb56cf5369f387E + + .section __TEXT,__objc_methname,cstring_literals __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h014eee30b271725eE: .asciz "performSelector:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN24test_msg_send_static_sel11use_generic5do_it3REF17h1c094ab04f32e2afE: + .quad __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h014eee30b271725eE + .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index 12bd52e53..3d8352e93 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -3,88 +3,87 @@ .p2align 2 _get_sel: Lloh0: - adrp x0, __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E@PAGE + adrp x8, __MergedGlobals@PAGE Lloh1: - add x0, x0, __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E@PAGEOFF + ldr x0, [x8, __MergedGlobals@PAGEOFF] ret - .loh AdrpAdd Lloh0, Lloh1 + .loh AdrpLdr Lloh0, Lloh1 .globl _get_same_sel .p2align 2 _get_same_sel: Lloh2: - adrp x0, __ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E@PAGE + adrp x8, __MergedGlobals@PAGE+8 Lloh3: - add x0, x0, __ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E@PAGEOFF + ldr x0, [x8, __MergedGlobals@PAGEOFF+8] ret - .loh AdrpAdd Lloh2, Lloh3 + .loh AdrpLdr Lloh2, Lloh3 .globl _get_common .p2align 2 _get_common: Lloh4: - adrp x0, __ZN15test_static_sel10get_common5do_it5VALUE17hd149c186017d657dE@PAGE + adrp x8, __ZN15test_static_sel10get_common5do_it3REF17hc0153c8b995ae069E@PAGE Lloh5: - add x0, x0, __ZN15test_static_sel10get_common5do_it5VALUE17hd149c186017d657dE@PAGEOFF + ldr x0, [x8, __ZN15test_static_sel10get_common5do_it3REF17hc0153c8b995ae069E@PAGEOFF] ret - .loh AdrpAdd Lloh4, Lloh5 + .loh AdrpLdr Lloh4, Lloh5 .globl _get_different_sel .p2align 2 _get_different_sel: Lloh6: - adrp x0, __ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E@PAGE + adrp x8, __MergedGlobals@PAGE+16 Lloh7: - add x0, x0, __ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E@PAGEOFF + ldr x0, [x8, __MergedGlobals@PAGEOFF+16] ret - .loh AdrpAdd Lloh6, Lloh7 + .loh AdrpLdr Lloh6, Lloh7 .globl _unused_sel .p2align 2 _unused_sel: +Lloh8: + adrp x8, __ZN15test_static_sel10unused_sel5do_it3REF17h10d313b0038716f3E@PAGE +Lloh9: + ldr xzr, [x8, __ZN15test_static_sel10unused_sel5do_it3REF17h10d313b0038716f3E@PAGEOFF] ret + .loh AdrpLdr Lloh8, Lloh9 .globl _use_fns .p2align 2 _use_fns: -Lloh8: - adrp x9, __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E@PAGE -Lloh9: - add x9, x9, __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E@PAGEOFF Lloh10: - adrp x10, __ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E@PAGE + adrp x9, __MergedGlobals@PAGE Lloh11: - add x10, x10, __ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E@PAGEOFF - stp x9, x10, [x8] -Lloh12: - adrp x9, __ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E@PAGE -Lloh13: - add x9, x9, __ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E@PAGEOFF -Lloh14: - adrp x10, __ZN15test_static_sel7use_fns5do_it5VALUE17hd8d355acf71c10e1E@PAGE -Lloh15: - add x10, x10, __ZN15test_static_sel7use_fns5do_it5VALUE17hd8d355acf71c10e1E@PAGEOFF - stp x9, x10, [x8, #16] + add x9, x9, __MergedGlobals@PAGEOFF + ldr x10, [x9] + ldr x11, [x9, #8] + ldr x12, [x9, #16] + ldr x9, [x9, #24] + stp x10, x11, [x8] + stp x12, x9, [x8, #16] ret - .loh AdrpAdd Lloh14, Lloh15 - .loh AdrpAdd Lloh12, Lloh13 .loh AdrpAdd Lloh10, Lloh11 - .loh AdrpAdd Lloh8, Lloh9 .globl _use_same_twice .p2align 2 _use_same_twice: -Lloh16: - adrp x9, __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E@PAGE -Lloh17: - add x9, x9, __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E@PAGEOFF - stp x9, x9, [x8] + adrp x9, __MergedGlobals@PAGE + ldr x10, [x9, __MergedGlobals@PAGEOFF] + ldr x9, [x9, __MergedGlobals@PAGEOFF] + stp x10, x9, [x8] ret - .loh AdrpAdd Lloh16, Lloh17 .globl _use_in_loop .p2align 2 _use_in_loop: + cbz x0, LBB7_3 + adrp x8, __ZN15test_static_sel11use_in_loop5do_it3REF17hc74b5495e1d5fa3dE@PAGE +LBB7_2: + ldr xzr, [x8, __ZN15test_static_sel11use_in_loop5do_it3REF17hc74b5495e1d5fa3dE@PAGEOFF] + subs x0, x0, #1 + b.ne LBB7_2 +LBB7_3: ret .section __TEXT,__objc_methname,cstring_literals @@ -97,10 +96,40 @@ __ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E: __ZN15test_static_sel10get_common5do_it5VALUE17hd149c186017d657dE: .asciz "alloc" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN15test_static_sel10get_common5do_it3REF17hc0153c8b995ae069E: + .quad __ZN15test_static_sel10get_common5do_it5VALUE17hd149c186017d657dE + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E: .asciz "i:am:different:" +__ZN15test_static_sel10unused_sel5do_it5VALUE17h1b48bd5d3ca1c638E: + .asciz "unused" + + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN15test_static_sel10unused_sel5do_it3REF17h10d313b0038716f3E: + .quad __ZN15test_static_sel10unused_sel5do_it5VALUE17h1b48bd5d3ca1c638E + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel7use_fns5do_it5VALUE17hd8d355acf71c10e1E: .asciz "fourthSel" +__ZN15test_static_sel11use_in_loop5do_it5VALUE17he5797d44142247f6E: + .asciz "loopedSelector" + + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN15test_static_sel11use_in_loop5do_it3REF17hc74b5495e1d5fa3dE: + .quad __ZN15test_static_sel11use_in_loop5do_it5VALUE17he5797d44142247f6E + + .p2align 3 +__MergedGlobals: + .quad __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E + .quad __ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E + .quad __ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E + .quad __ZN15test_static_sel7use_fns5do_it5VALUE17hd8d355acf71c10e1E + .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index d18e8ae1e..dc870cd2c 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -4,70 +4,70 @@ .p2align 2 .code 32 _get_sel: - movw r0, :lower16:(__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E-(LPC0_0+8)) - movt r0, :upper16:(__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E-(LPC0_0+8)) + movw r0, :lower16:(__MergedGlobals-(LPC0_0+8)) + movt r0, :upper16:(__MergedGlobals-(LPC0_0+8)) LPC0_0: - add r0, pc, r0 + ldr r0, [pc, r0] bx lr .globl _get_same_sel .p2align 2 .code 32 _get_same_sel: - movw r0, :lower16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE-(LPC1_0+8)) - movt r0, :upper16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE-(LPC1_0+8)) + movw r0, :lower16:(__MergedGlobals-(LPC1_0+8)) + movt r0, :upper16:(__MergedGlobals-(LPC1_0+8)) LPC1_0: add r0, pc, r0 + ldr r0, [r0, #4] bx lr .globl _get_common .p2align 2 .code 32 _get_common: - movw r0, :lower16:(__ZN15test_static_sel10get_common5do_it5VALUE17hf482623d5a0e24bcE-(LPC2_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10get_common5do_it5VALUE17hf482623d5a0e24bcE-(LPC2_0+8)) + movw r0, :lower16:(__ZN15test_static_sel10get_common5do_it3REF17h2fcf6713cccb23c2E-(LPC2_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10get_common5do_it3REF17h2fcf6713cccb23c2E-(LPC2_0+8)) LPC2_0: - add r0, pc, r0 + ldr r0, [pc, r0] bx lr .globl _get_different_sel .p2align 2 .code 32 _get_different_sel: - movw r0, :lower16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E-(LPC3_0+8)) - movt r0, :upper16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E-(LPC3_0+8)) + movw r0, :lower16:(__MergedGlobals-(LPC3_0+8)) + movt r0, :upper16:(__MergedGlobals-(LPC3_0+8)) LPC3_0: add r0, pc, r0 + ldr r0, [r0, #8] bx lr .globl _unused_sel .p2align 2 .code 32 _unused_sel: + movw r0, :lower16:(__ZN15test_static_sel10unused_sel5do_it3REF17hd1843813254fd749E-(LPC4_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10unused_sel5do_it3REF17hd1843813254fd749E-(LPC4_0+8)) +LPC4_0: + ldr r0, [pc, r0] bx lr .globl _use_fns .p2align 2 .code 32 _use_fns: - movw r9, :lower16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E-(LPC5_0+8)) - movt r9, :upper16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E-(LPC5_0+8)) - movw r2, :lower16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE-(LPC5_1+8)) - movt r2, :upper16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE-(LPC5_1+8)) - movw r3, :lower16:(__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E-(LPC5_2+8)) - movt r3, :upper16:(__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E-(LPC5_2+8)) - movw r1, :lower16:(__ZN15test_static_sel7use_fns5do_it5VALUE17h4bcae19786cde021E-(LPC5_3+8)) - movt r1, :upper16:(__ZN15test_static_sel7use_fns5do_it5VALUE17h4bcae19786cde021E-(LPC5_3+8)) -LPC5_1: - add r2, pc, r2 + movw r1, :lower16:(__MergedGlobals-(LPC5_0+8)) + movt r1, :upper16:(__MergedGlobals-(LPC5_0+8)) + movw r2, :lower16:(__MergedGlobals-(LPC5_1+8)) + movt r2, :upper16:(__MergedGlobals-(LPC5_1+8)) LPC5_0: - add r9, pc, r9 -LPC5_2: - add r3, pc, r3 -LPC5_3: add r1, pc, r1 - str r3, [r0] - stmib r0, {r2, r9} +LPC5_1: + ldr r2, [pc, r2] + ldr r3, [r1, #4] + ldr r9, [r1, #8] + ldr r1, [r1, #12] + stm r0, {r2, r3, r9} str r1, [r0, #12] bx lr @@ -75,18 +75,30 @@ LPC5_3: .p2align 2 .code 32 _use_same_twice: - movw r1, :lower16:(__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E-(LPC6_0+8)) - movt r1, :upper16:(__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E-(LPC6_0+8)) + movw r2, :lower16:(__MergedGlobals-(LPC6_0+8)) + movt r2, :upper16:(__MergedGlobals-(LPC6_0+8)) LPC6_0: - add r1, pc, r1 - str r1, [r0] - str r1, [r0, #4] + ldr r2, [pc, r2] + movw r3, :lower16:(__MergedGlobals-(LPC6_1+8)) + movt r3, :upper16:(__MergedGlobals-(LPC6_1+8)) +LPC6_1: + ldr r3, [pc, r3] + strd r2, r3, [r0] bx lr .globl _use_in_loop .p2align 2 .code 32 _use_in_loop: + cmp r0, #0 + bxeq lr +LBB7_1: + movw r1, :lower16:(__ZN15test_static_sel11use_in_loop5do_it3REF17hc3ddbd16275c953aE-(LPC7_0+8)) + subs r0, r0, #1 + movt r1, :upper16:(__ZN15test_static_sel11use_in_loop5do_it3REF17hc3ddbd16275c953aE-(LPC7_0+8)) +LPC7_0: + ldr r1, [pc, r1] + bne LBB7_1 bx lr .section __TEXT,__objc_methname,cstring_literals @@ -99,10 +111,40 @@ __ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE: __ZN15test_static_sel10get_common5do_it5VALUE17hf482623d5a0e24bcE: .asciz "alloc" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel10get_common5do_it3REF17h2fcf6713cccb23c2E: + .long __ZN15test_static_sel10get_common5do_it5VALUE17hf482623d5a0e24bcE + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E: .asciz "i:am:different:" +__ZN15test_static_sel10unused_sel5do_it5VALUE17he425e6855951f7deE: + .asciz "unused" + + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel10unused_sel5do_it3REF17hd1843813254fd749E: + .long __ZN15test_static_sel10unused_sel5do_it5VALUE17he425e6855951f7deE + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel7use_fns5do_it5VALUE17h4bcae19786cde021E: .asciz "fourthSel" +__ZN15test_static_sel11use_in_loop5do_it5VALUE17h474e12afa6bd4102E: + .asciz "loopedSelector" + + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel11use_in_loop5do_it3REF17hc3ddbd16275c953aE: + .long __ZN15test_static_sel11use_in_loop5do_it5VALUE17h474e12afa6bd4102E + + .p2align 2 +__MergedGlobals: + .long __ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E + .long __ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE + .long __ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E + .long __ZN15test_static_sel7use_fns5do_it5VALUE17h4bcae19786cde021E + .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index 94635599d..6aee92679 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -4,88 +4,101 @@ .p2align 2 .code 32 _get_sel: - movw r0, :lower16:(__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E-(LPC0_0+8)) - movt r0, :upper16:(__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E-(LPC0_0+8)) + movw r0, :lower16:(__MergedGlobals-(LPC0_0+8)) + movt r0, :upper16:(__MergedGlobals-(LPC0_0+8)) LPC0_0: - add r0, pc, r0 + ldr r0, [pc, r0] bx lr .globl _get_same_sel .p2align 2 .code 32 _get_same_sel: - movw r0, :lower16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE-(LPC1_0+8)) - movt r0, :upper16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE-(LPC1_0+8)) + movw r0, :lower16:(__MergedGlobals-(LPC1_0+8)) + movt r0, :upper16:(__MergedGlobals-(LPC1_0+8)) LPC1_0: add r0, pc, r0 + ldr r0, [r0, #4] bx lr .globl _get_common .p2align 2 .code 32 _get_common: - movw r0, :lower16:(__ZN15test_static_sel10get_common5do_it5VALUE17h8f318ccc63cbbef4E-(LPC2_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10get_common5do_it5VALUE17h8f318ccc63cbbef4E-(LPC2_0+8)) + movw r0, :lower16:(__ZN15test_static_sel10get_common5do_it3REF17hf29cec9e09fb4cf9E-(LPC2_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10get_common5do_it3REF17hf29cec9e09fb4cf9E-(LPC2_0+8)) LPC2_0: - add r0, pc, r0 + ldr r0, [pc, r0] bx lr .globl _get_different_sel .p2align 2 .code 32 _get_different_sel: - movw r0, :lower16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E-(LPC3_0+8)) - movt r0, :upper16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E-(LPC3_0+8)) + movw r0, :lower16:(__MergedGlobals-(LPC3_0+8)) + movt r0, :upper16:(__MergedGlobals-(LPC3_0+8)) LPC3_0: add r0, pc, r0 + ldr r0, [r0, #8] bx lr .globl _unused_sel .p2align 2 .code 32 _unused_sel: + movw r0, :lower16:(__ZN15test_static_sel10unused_sel5do_it3REF17h9ea90ea259d94ab7E-(LPC4_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10unused_sel5do_it3REF17h9ea90ea259d94ab7E-(LPC4_0+8)) +LPC4_0: + ldr r0, [pc, r0] bx lr .globl _use_fns .p2align 2 .code 32 _use_fns: - movw r9, :lower16:(__ZN15test_static_sel7use_fns5do_it5VALUE17h145936052e081cd8E-(LPC5_0+8)) - movt r9, :upper16:(__ZN15test_static_sel7use_fns5do_it5VALUE17h145936052e081cd8E-(LPC5_0+8)) - movw r2, :lower16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E-(LPC5_1+8)) - movt r2, :upper16:(__ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E-(LPC5_1+8)) - movw r3, :lower16:(__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E-(LPC5_2+8)) - movt r3, :upper16:(__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E-(LPC5_2+8)) - movw r1, :lower16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE-(LPC5_3+8)) - movt r1, :upper16:(__ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE-(LPC5_3+8)) -LPC5_2: - add r3, pc, r3 -LPC5_3: - add r1, pc, r1 + movw r1, :lower16:(__MergedGlobals-(LPC5_0+8)) + movt r1, :upper16:(__MergedGlobals-(LPC5_0+8)) + movw r2, :lower16:(__MergedGlobals-(LPC5_1+8)) + movt r2, :upper16:(__MergedGlobals-(LPC5_1+8)) LPC5_0: - add r9, pc, r9 + add r1, pc, r1 LPC5_1: - add r2, pc, r2 - str r3, [r0] - stmib r0, {r1, r2, r9} + ldr r2, [pc, r2] + ldr r3, [r1, #4] + ldr r9, [r1, #8] + ldr r1, [r1, #12] + stm r0, {r2, r3, r9} + str r1, [r0, #12] bx lr .globl _use_same_twice .p2align 2 .code 32 _use_same_twice: - movw r1, :lower16:(__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E-(LPC6_0+8)) - movt r1, :upper16:(__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E-(LPC6_0+8)) + movw r2, :lower16:(__MergedGlobals-(LPC6_0+8)) + movt r2, :upper16:(__MergedGlobals-(LPC6_0+8)) LPC6_0: - add r1, pc, r1 - str r1, [r0] - str r1, [r0, #4] + ldr r2, [pc, r2] + movw r3, :lower16:(__MergedGlobals-(LPC6_1+8)) + movt r3, :upper16:(__MergedGlobals-(LPC6_1+8)) +LPC6_1: + ldr r3, [pc, r3] + strd r2, r3, [r0] bx lr .globl _use_in_loop .p2align 2 .code 32 _use_in_loop: + cmp r0, #0 + bxeq lr +LBB7_1: + movw r1, :lower16:(__ZN15test_static_sel11use_in_loop5do_it3REF17hfa6d89396a47275aE-(LPC7_0+8)) + subs r0, r0, #1 + movt r1, :upper16:(__ZN15test_static_sel11use_in_loop5do_it3REF17hfa6d89396a47275aE-(LPC7_0+8)) +LPC7_0: + ldr r1, [pc, r1] + bne LBB7_1 bx lr .section __TEXT,__objc_methname,cstring_literals @@ -98,10 +111,40 @@ __ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE: __ZN15test_static_sel10get_common5do_it5VALUE17h8f318ccc63cbbef4E: .asciz "alloc" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel10get_common5do_it3REF17hf29cec9e09fb4cf9E: + .long __ZN15test_static_sel10get_common5do_it5VALUE17h8f318ccc63cbbef4E + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E: .asciz "i:am:different:" +__ZN15test_static_sel10unused_sel5do_it5VALUE17h6c7e40953925fd60E: + .asciz "unused" + + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel10unused_sel5do_it3REF17h9ea90ea259d94ab7E: + .long __ZN15test_static_sel10unused_sel5do_it5VALUE17h6c7e40953925fd60E + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel7use_fns5do_it5VALUE17h145936052e081cd8E: .asciz "fourthSel" +__ZN15test_static_sel11use_in_loop5do_it5VALUE17ha99c5a0311c1ddcfE: + .asciz "loopedSelector" + + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel11use_in_loop5do_it3REF17hfa6d89396a47275aE: + .long __ZN15test_static_sel11use_in_loop5do_it5VALUE17ha99c5a0311c1ddcfE + + .p2align 2 +__MergedGlobals: + .long __ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E + .long __ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE + .long __ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E + .long __ZN15test_static_sel7use_fns5do_it5VALUE17h145936052e081cd8E + .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index 3404f4574..8b2b7b09d 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -8,7 +8,7 @@ _get_sel: call L0$pb L0$pb: pop eax - lea eax, [eax + __ZN15test_static_sel7get_sel5do_it5VALUE17hdc6f5bc4c8522997E-L0$pb] + mov eax, dword ptr [eax + __ZN15test_static_sel7get_sel5do_it3REF17h9474478a9beae4b3E-L0$pb] pop ebp ret @@ -20,7 +20,7 @@ _get_same_sel: call L1$pb L1$pb: pop eax - lea eax, [eax + __ZN15test_static_sel12get_same_sel5do_it5VALUE17hba6507a7c7d39ef8E-L1$pb] + mov eax, dword ptr [eax + __ZN15test_static_sel12get_same_sel5do_it3REF17h4e0f4268fe73e0d3E-L1$pb] pop ebp ret @@ -32,7 +32,7 @@ _get_common: call L2$pb L2$pb: pop eax - lea eax, [eax + __ZN15test_static_sel10get_common5do_it5VALUE17ha16c61a23dba9432E-L2$pb] + mov eax, dword ptr [eax + __ZN15test_static_sel10get_common5do_it3REF17habc9cf686995fb2cE-L2$pb] pop ebp ret @@ -44,7 +44,7 @@ _get_different_sel: call L3$pb L3$pb: pop eax - lea eax, [eax + __ZN15test_static_sel17get_different_sel5do_it5VALUE17h56d326a3c9259e1eE-L3$pb] + mov eax, dword ptr [eax + __ZN15test_static_sel17get_different_sel5do_it3REF17h3cab7071782ba0e6E-L3$pb] pop ebp ret @@ -53,6 +53,10 @@ L3$pb: _unused_sel: push ebp mov ebp, esp + call L4$pb +L4$pb: + pop eax + mov eax, dword ptr [eax + __ZN15test_static_sel10unused_sel5do_it3REF17h484805d909f89434E-L4$pb] pop ebp ret @@ -61,18 +65,22 @@ _unused_sel: _use_fns: push ebp mov ebp, esp + push edi + push esi call L5$pb L5$pb: pop ecx mov eax, dword ptr [ebp + 8] - lea edx, [ecx + __ZN15test_static_sel7get_sel5do_it5VALUE17hdc6f5bc4c8522997E-L5$pb] + mov edx, dword ptr [ecx + __ZN15test_static_sel7get_sel5do_it3REF17h9474478a9beae4b3E-L5$pb] + mov esi, dword ptr [ecx + __ZN15test_static_sel12get_same_sel5do_it3REF17h4e0f4268fe73e0d3E-L5$pb] + mov edi, dword ptr [ecx + __ZN15test_static_sel17get_different_sel5do_it3REF17h3cab7071782ba0e6E-L5$pb] + mov ecx, dword ptr [ecx + __ZN15test_static_sel7use_fns5do_it3REF17h8cd819e3c1124776E-L5$pb] mov dword ptr [eax], edx - lea edx, [ecx + __ZN15test_static_sel12get_same_sel5do_it5VALUE17hba6507a7c7d39ef8E-L5$pb] - mov dword ptr [eax + 4], edx - lea edx, [ecx + __ZN15test_static_sel17get_different_sel5do_it5VALUE17h56d326a3c9259e1eE-L5$pb] - mov dword ptr [eax + 8], edx - lea ecx, [ecx + __ZN15test_static_sel7use_fns5do_it5VALUE17h7ce073afa896ddd6E-L5$pb] + mov dword ptr [eax + 4], esi + mov dword ptr [eax + 8], edi mov dword ptr [eax + 12], ecx + pop esi + pop edi pop ebp ret 4 @@ -85,8 +93,9 @@ _use_same_twice: L6$pb: pop ecx mov eax, dword ptr [ebp + 8] - lea ecx, [ecx + __ZN15test_static_sel7get_sel5do_it5VALUE17hdc6f5bc4c8522997E-L6$pb] - mov dword ptr [eax], ecx + mov edx, dword ptr [ecx + __ZN15test_static_sel7get_sel5do_it3REF17h9474478a9beae4b3E-L6$pb] + mov ecx, dword ptr [ecx + __ZN15test_static_sel7get_sel5do_it3REF17h9474478a9beae4b3E-L6$pb] + mov dword ptr [eax], edx mov dword ptr [eax + 4], ecx pop ebp ret 4 @@ -96,6 +105,41 @@ L6$pb: _use_in_loop: push ebp mov ebp, esp + push esi + mov edx, dword ptr [ebp + 8] + test edx, edx + je LBB7_6 + call L7$pb +L7$pb: + pop eax + lea esi, [edx - 1] + mov ecx, edx + and ecx, 7 + cmp esi, 7 + jb LBB7_4 + and edx, -8 + .p2align 4, 0x90 +LBB7_3: + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] + add edx, -8 + jne LBB7_3 +LBB7_4: + test ecx, ecx + je LBB7_6 + .p2align 4, 0x90 +LBB7_5: + mov edx, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] + dec ecx + jne LBB7_5 +LBB7_6: + pop esi pop ebp ret @@ -103,16 +147,63 @@ _use_in_loop: __ZN15test_static_sel7get_sel5do_it5VALUE17hdc6f5bc4c8522997E: .asciz "simple" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel7get_sel5do_it3REF17h9474478a9beae4b3E: + .long __ZN15test_static_sel7get_sel5do_it5VALUE17hdc6f5bc4c8522997E + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel12get_same_sel5do_it5VALUE17hba6507a7c7d39ef8E: .asciz "simple" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel12get_same_sel5do_it3REF17h4e0f4268fe73e0d3E: + .long __ZN15test_static_sel12get_same_sel5do_it5VALUE17hba6507a7c7d39ef8E + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel10get_common5do_it5VALUE17ha16c61a23dba9432E: .asciz "alloc" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel10get_common5do_it3REF17habc9cf686995fb2cE: + .long __ZN15test_static_sel10get_common5do_it5VALUE17ha16c61a23dba9432E + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel17get_different_sel5do_it5VALUE17h56d326a3c9259e1eE: .asciz "i:am:different:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel17get_different_sel5do_it3REF17h3cab7071782ba0e6E: + .long __ZN15test_static_sel17get_different_sel5do_it5VALUE17h56d326a3c9259e1eE + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel10unused_sel5do_it5VALUE17h466f702aa6f94d5fE: + .asciz "unused" + + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel10unused_sel5do_it3REF17h484805d909f89434E: + .long __ZN15test_static_sel10unused_sel5do_it5VALUE17h466f702aa6f94d5fE + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel7use_fns5do_it5VALUE17h7ce073afa896ddd6E: .asciz "fourthSel" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel7use_fns5do_it3REF17h8cd819e3c1124776E: + .long __ZN15test_static_sel7use_fns5do_it5VALUE17h7ce073afa896ddd6E + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel11use_in_loop5do_it5VALUE17haac9abd8f4a72a6bE: + .asciz "loopedSelector" + + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 2 +__ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E: + .long __ZN15test_static_sel11use_in_loop5do_it5VALUE17haac9abd8f4a72a6bE + .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index fd5935555..03381122a 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -5,7 +5,7 @@ _get_sel: push rbp mov rbp, rsp - lea rax, [rip + __ZN15test_static_sel7get_sel5do_it5VALUE17h338b867de999a683E] + mov rax, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h3382eb6577a19884E] pop rbp ret @@ -14,7 +14,7 @@ _get_sel: _get_same_sel: push rbp mov rbp, rsp - lea rax, [rip + __ZN15test_static_sel12get_same_sel5do_it5VALUE17hfda78dbf2d31d676E] + mov rax, qword ptr [rip + __ZN15test_static_sel12get_same_sel5do_it3REF17hc31d191dc2fd749eE] pop rbp ret @@ -23,7 +23,7 @@ _get_same_sel: _get_common: push rbp mov rbp, rsp - lea rax, [rip + __ZN15test_static_sel10get_common5do_it5VALUE17h6913f03b163cd283E] + mov rax, qword ptr [rip + __ZN15test_static_sel10get_common5do_it3REF17hdadb6ccb121002e4E] pop rbp ret @@ -32,7 +32,7 @@ _get_common: _get_different_sel: push rbp mov rbp, rsp - lea rax, [rip + __ZN15test_static_sel17get_different_sel5do_it5VALUE17h88a6ccd34e9782e8E] + mov rax, qword ptr [rip + __ZN15test_static_sel17get_different_sel5do_it3REF17he5023edc2d5cf13dE] pop rbp ret @@ -41,6 +41,7 @@ _get_different_sel: _unused_sel: push rbp mov rbp, rsp + mov rax, qword ptr [rip + __ZN15test_static_sel10unused_sel5do_it3REF17h24fb2858983de1caE] pop rbp ret @@ -50,14 +51,14 @@ _use_fns: push rbp mov rbp, rsp mov rax, rdi - lea rcx, [rip + __ZN15test_static_sel7get_sel5do_it5VALUE17h338b867de999a683E] - mov qword ptr [rdi], rcx - lea rcx, [rip + __ZN15test_static_sel12get_same_sel5do_it5VALUE17hfda78dbf2d31d676E] - mov qword ptr [rdi + 8], rcx - lea rcx, [rip + __ZN15test_static_sel17get_different_sel5do_it5VALUE17h88a6ccd34e9782e8E] - mov qword ptr [rdi + 16], rcx - lea rcx, [rip + __ZN15test_static_sel7use_fns5do_it5VALUE17h3053c06c1c5263daE] - mov qword ptr [rdi + 24], rcx + mov rcx, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h3382eb6577a19884E] + mov rdx, qword ptr [rip + __ZN15test_static_sel12get_same_sel5do_it3REF17hc31d191dc2fd749eE] + mov rsi, qword ptr [rip + __ZN15test_static_sel17get_different_sel5do_it3REF17he5023edc2d5cf13dE] + mov rdi, qword ptr [rip + __ZN15test_static_sel7use_fns5do_it3REF17h57c91cfc799dcb29E] + mov qword ptr [rax], rcx + mov qword ptr [rax + 8], rdx + mov qword ptr [rax + 16], rsi + mov qword ptr [rax + 24], rdi pop rbp ret @@ -67,9 +68,10 @@ _use_same_twice: push rbp mov rbp, rsp mov rax, rdi - lea rcx, [rip + __ZN15test_static_sel7get_sel5do_it5VALUE17h338b867de999a683E] + mov rcx, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h3382eb6577a19884E] + mov rdx, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h3382eb6577a19884E] mov qword ptr [rdi], rcx - mov qword ptr [rdi + 8], rcx + mov qword ptr [rdi + 8], rdx pop rbp ret @@ -78,6 +80,35 @@ _use_same_twice: _use_in_loop: push rbp mov rbp, rsp + test rdi, rdi + je LBB7_6 + lea rcx, [rdi - 1] + mov eax, edi + and eax, 7 + cmp rcx, 7 + jb LBB7_4 + and rdi, -8 + .p2align 4, 0x90 +LBB7_3: + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] + add rdi, -8 + jne LBB7_3 +LBB7_4: + test rax, rax + je LBB7_6 + .p2align 4, 0x90 +LBB7_5: + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] + dec rax + jne LBB7_5 +LBB7_6: pop rbp ret @@ -85,16 +116,63 @@ _use_in_loop: __ZN15test_static_sel7get_sel5do_it5VALUE17h338b867de999a683E: .asciz "simple" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN15test_static_sel7get_sel5do_it3REF17h3382eb6577a19884E: + .quad __ZN15test_static_sel7get_sel5do_it5VALUE17h338b867de999a683E + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel12get_same_sel5do_it5VALUE17hfda78dbf2d31d676E: .asciz "simple" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN15test_static_sel12get_same_sel5do_it3REF17hc31d191dc2fd749eE: + .quad __ZN15test_static_sel12get_same_sel5do_it5VALUE17hfda78dbf2d31d676E + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel10get_common5do_it5VALUE17h6913f03b163cd283E: .asciz "alloc" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN15test_static_sel10get_common5do_it3REF17hdadb6ccb121002e4E: + .quad __ZN15test_static_sel10get_common5do_it5VALUE17h6913f03b163cd283E + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel17get_different_sel5do_it5VALUE17h88a6ccd34e9782e8E: .asciz "i:am:different:" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN15test_static_sel17get_different_sel5do_it3REF17he5023edc2d5cf13dE: + .quad __ZN15test_static_sel17get_different_sel5do_it5VALUE17h88a6ccd34e9782e8E + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel10unused_sel5do_it5VALUE17hef3d043ebac21292E: + .asciz "unused" + + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN15test_static_sel10unused_sel5do_it3REF17h24fb2858983de1caE: + .quad __ZN15test_static_sel10unused_sel5do_it5VALUE17hef3d043ebac21292E + + .section __TEXT,__objc_methname,cstring_literals __ZN15test_static_sel7use_fns5do_it5VALUE17h3053c06c1c5263daE: .asciz "fourthSel" + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN15test_static_sel7use_fns5do_it3REF17h57c91cfc799dcb29E: + .quad __ZN15test_static_sel7use_fns5do_it5VALUE17h3053c06c1c5263daE + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel11use_in_loop5do_it5VALUE17h24465c3f4d5d6e1eE: + .asciz "loopedSelector" + + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .p2align 3 +__ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E: + .quad __ZN15test_static_sel11use_in_loop5do_it5VALUE17h24465c3f4d5d6e1eE + .subsections_via_symbols From e650f6d73c48d8922cc348392a160d5871d2eeea Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 3 Mar 2022 02:12:25 +0100 Subject: [PATCH 04/30] Remove a few hacks around static selectors Co-authored-by: clavin --- objc2/src/macros.rs | 18 ++-- .../expected/apple-aarch64.s | 34 ++++---- .../expected/apple-armv7.s | 34 ++++---- .../expected/apple-armv7s.s | 34 ++++---- .../expected/apple-x86.s | 60 +++++++------- .../expected/apple-x86_64.s | 60 +++++++------- .../test_static_sel/expected/apple-aarch64.s | 46 +++++------ .../test_static_sel/expected/apple-armv7.s | 46 +++++------ .../test_static_sel/expected/apple-armv7s.s | 46 +++++------ .../test_static_sel/expected/apple-x86.s | 82 +++++++++---------- .../test_static_sel/expected/apple-x86_64.s | 82 +++++++++---------- 11 files changed, 269 insertions(+), 273 deletions(-) diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index 70e95951b..b99897a80 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -70,12 +70,8 @@ macro_rules! sel { fn do_it() -> $crate::runtime::Sel { const X: &[u8] = $sel.as_bytes(); - struct Cheaty(*const [u8; X.len()]); - unsafe impl Send for Cheaty {} - unsafe impl Sync for Cheaty {} - #[link_section = "__TEXT,__objc_methname,cstring_literals"] - static VALUE: [u8; X.len()] = { + static NAME: [u8; X.len()] = { let mut res: [u8; X.len()] = [0; X.len()]; let mut i = 0; while i < X.len() { @@ -87,17 +83,17 @@ macro_rules! sel { // Place the constant value in the correct section. #[link_section = "__DATA,__objc_selrefs,literal_pointers,no_dead_strip"] - static mut REF: Cheaty = Cheaty(&VALUE); + static mut REF: &[u8; X.len()] = &NAME; // The actual selector is replaced by dyld when the program is // loaded, so we need to use a volatile read to prevent the // optimizer from thinking it can circumvent the read through REF. // - // Produce a sel type as a result. - // XXX(nika): Don't use transmute? - unsafe { - ::std::mem::transmute::<_, $crate::runtime::Sel>(::std::ptr::read_volatile(&REF.0)) - } + // TODO: `::core` here could be replaced with some more + // sophisticated logic so we don't rely on downstream users having + // this setup. + let ptr = unsafe { ::core::ptr::read_volatile(&REF).as_ptr() as *const _ }; + unsafe { $crate::runtime::Sel::from_ptr(ptr) } } do_it() diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index b287ff4d6..83844634b 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -3,9 +3,9 @@ .p2align 2 _handle_with_sel: Lloh0: - adrp x8, __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h3b4abf454e7caef2E@PAGE + adrp x8, __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17hb9e340356cdf65b3E@PAGE Lloh1: - ldr x1, [x8, __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h3b4abf454e7caef2E@PAGEOFF] + ldr x1, [x8, __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17hb9e340356cdf65b3E@PAGEOFF] b _objc_msgSend .loh AdrpLdr Lloh0, Lloh1 @@ -55,41 +55,41 @@ Lloh5: .loh AdrpAdd Lloh4, Lloh5 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h16ea9d1c425b55c9E: +__ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h7aece036b6e79a18E: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h3b4abf454e7caef2E: - .quad __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h16ea9d1c425b55c9E +__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17hb9e340356cdf65b3E: + .quad __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h7aece036b6e79a18E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17hdf1c4acc22f16e29E: +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hb670025ce5d0664cE: .asciz "init" -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h27da69bec7cfa7b0E: +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h8ea3959c8e68879fE: .asciz "alloc" -__ZN24test_msg_send_static_sel7generic5do_it5VALUE17h4bc61eda96fa1ac8E: +__ZN24test_msg_send_static_sel7generic5do_it4NAME17hdcdd8883ef0ea4acE: .asciz "generic:selector:" -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h226e828d50735928E: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h0d958a3292955764E: .asciz "performSelector:" -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h2a3db9ebcc189240E: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h99977609f68cb784E: .asciz "performSelector:" -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h7e31e9de7919b8c1E: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hb90d314a2fdc44c8E: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 __MergedGlobals: - .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17hdf1c4acc22f16e29E - .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h27da69bec7cfa7b0E - .quad __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h4bc61eda96fa1ac8E - .quad __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h226e828d50735928E - .quad __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h2a3db9ebcc189240E - .quad __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h7e31e9de7919b8c1E + .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hb670025ce5d0664cE + .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h8ea3959c8e68879fE + .quad __ZN24test_msg_send_static_sel7generic5do_it4NAME17hdcdd8883ef0ea4acE + .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h0d958a3292955764E + .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h99977609f68cb784E + .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hb90d314a2fdc44c8E .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index 75fe9ab0c..2313b798a 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -4,8 +4,8 @@ .p2align 2 .code 32 _handle_with_sel: - movw r1, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h8b14204ae601938aE-(LPC0_0+8)) - movt r1, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h8b14204ae601938aE-(LPC0_0+8)) + movw r1, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha3faf09d3de71191E-(LPC0_0+8)) + movt r1, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha3faf09d3de71191E-(LPC0_0+8)) LPC0_0: ldr r1, [pc, r1] b _objc_msgSend @@ -55,41 +55,41 @@ LPC2_0: b _objc_msgSend .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc7c6bad48a0601f0E: +__ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h4be0477fe73c107cE: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h8b14204ae601938aE: - .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc7c6bad48a0601f0E +__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha3faf09d3de71191E: + .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h4be0477fe73c107cE .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h0cbd3103e48b1841E: +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hfb54835af2ec43c7E: .asciz "init" -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h580fd8fa27b5ffcbE: +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h8f551a75058466b2E: .asciz "alloc" -__ZN24test_msg_send_static_sel7generic5do_it5VALUE17hdb7b18c98f78677aE: +__ZN24test_msg_send_static_sel7generic5do_it4NAME17h3eb023dd38e4a0fcE: .asciz "generic:selector:" -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hea370ab904c591dcE: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h68ef93208bbbc446E: .asciz "performSelector:" -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hf0637c53b24a70f1E: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h52746d9e41762e25E: .asciz "performSelector:" -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hb63aece1e25549bdE: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hc6eea12cf00dc3ecE: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 __MergedGlobals: - .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h0cbd3103e48b1841E - .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h580fd8fa27b5ffcbE - .long __ZN24test_msg_send_static_sel7generic5do_it5VALUE17hdb7b18c98f78677aE - .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hea370ab904c591dcE - .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hf0637c53b24a70f1E - .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hb63aece1e25549bdE + .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hfb54835af2ec43c7E + .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h8f551a75058466b2E + .long __ZN24test_msg_send_static_sel7generic5do_it4NAME17h3eb023dd38e4a0fcE + .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h68ef93208bbbc446E + .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h52746d9e41762e25E + .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hc6eea12cf00dc3ecE .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index 742d8ffdf..fc7c55c5c 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -6,8 +6,8 @@ _handle_with_sel: push {r7, lr} mov r7, sp - movw r1, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h9a8ef11721428e5cE-(LPC0_0+8)) - movt r1, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h9a8ef11721428e5cE-(LPC0_0+8)) + movw r1, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h5684820907e02a7dE-(LPC0_0+8)) + movt r1, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h5684820907e02a7dE-(LPC0_0+8)) LPC0_0: ldr r1, [pc, r1] bl _objc_msgSend @@ -58,41 +58,41 @@ LPC2_0: pop {r4, r5, r7, pc} .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h5efd63825ac22048E: +__ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h1b045ce2d125ff39E: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h9a8ef11721428e5cE: - .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17h5efd63825ac22048E +__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h5684820907e02a7dE: + .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h1b045ce2d125ff39E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h441437e082275571E: +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h4e0852fc05b66326E: .asciz "init" -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h511d9a3abe34514fE: +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17ha3a756441bd0acebE: .asciz "alloc" -__ZN24test_msg_send_static_sel7generic5do_it5VALUE17h085bf46fbd37778eE: +__ZN24test_msg_send_static_sel7generic5do_it4NAME17h4c3b369edbd3aadcE: .asciz "generic:selector:" -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hd2f614f4541f1fb6E: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h639b2c9b06a336e7E: .asciz "performSelector:" -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h4daddbacc43585e3E: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hd38879191654969cE: .asciz "performSelector:" -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hce3635c78de3d40cE: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h558dcd606e4b144fE: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 __MergedGlobals: - .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h441437e082275571E - .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h511d9a3abe34514fE - .long __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h085bf46fbd37778eE - .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hd2f614f4541f1fb6E - .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h4daddbacc43585e3E - .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hce3635c78de3d40cE + .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h4e0852fc05b66326E + .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17ha3a756441bd0acebE + .long __ZN24test_msg_send_static_sel7generic5do_it4NAME17h4c3b369edbd3aadcE + .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h639b2c9b06a336e7E + .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hd38879191654969cE + .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h558dcd606e4b144fE .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index 02490414d..315a7e15e 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -10,7 +10,7 @@ _handle_with_sel: L0$pb: pop eax sub esp, 8 - push dword ptr [eax + __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h65cc25d2143f786fE-L0$pb] + push dword ptr [eax + __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h494943a1fc7f70e1E-L0$pb] push dword ptr [ebp + 8] call _objc_msgSend add esp, 24 @@ -27,9 +27,9 @@ _handle_alloc_init: call L1$pb L1$pb: pop eax - mov esi, dword ptr [eax + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h498e51a4429d4cebE-L1$pb] + mov esi, dword ptr [eax + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17he8c072a7529a9166E-L1$pb] sub esp, 8 - push dword ptr [eax + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h97f4b0b87078d28fE-L1$pb] + push dword ptr [eax + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h0a9b51fcf825b29fE-L1$pb] push dword ptr [ebp + 8] call _objc_msgSend add esp, 8 @@ -53,18 +53,18 @@ L2$pb: pop esi mov edi, dword ptr [ebp + 8] sub esp, 4 - push dword ptr [esi + __ZN24test_msg_send_static_sel7generic5do_it3REF17h3a04d62bb3a1f3bdE-L2$pb] - push dword ptr [esi + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hedb1f43f6216ce47E-L2$pb] + push dword ptr [esi + __ZN24test_msg_send_static_sel7generic5do_it3REF17hd7d99d1530d1aa53E-L2$pb] + push dword ptr [esi + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h92275f9ad829b8d2E-L2$pb] push edi call _objc_msgSend add esp, 12 - push dword ptr [esi + __ZN24test_msg_send_static_sel7generic5do_it3REF17h3a04d62bb3a1f3bdE-L2$pb] - push dword ptr [esi + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h38ebe7d8068fa384E-L2$pb] + push dword ptr [esi + __ZN24test_msg_send_static_sel7generic5do_it3REF17hd7d99d1530d1aa53E-L2$pb] + push dword ptr [esi + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hec8af9726862a51fE-L2$pb] push edi call _objc_msgSend add esp, 12 - push dword ptr [esi + __ZN24test_msg_send_static_sel7generic5do_it3REF17h3a04d62bb3a1f3bdE-L2$pb] - push dword ptr [esi + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h4def92294f8ef6c8E-L2$pb] + push dword ptr [esi + __ZN24test_msg_send_static_sel7generic5do_it3REF17hd7d99d1530d1aa53E-L2$pb] + push dword ptr [esi + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h4ca08a2f79beb685E-L2$pb] push edi call _objc_msgSend add esp, 16 @@ -74,66 +74,66 @@ L2$pb: ret .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc9de2e17c2d2dbd7E: +__ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17heabddaa6f4c9743dE: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h65cc25d2143f786fE: - .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17hc9de2e17c2d2dbd7E +__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h494943a1fc7f70e1E: + .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17heabddaa6f4c9743dE .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h80cf87b1cbcff62cE: +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17ha7bfa87c9398e80eE: .asciz "init" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h498e51a4429d4cebE: - .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h80cf87b1cbcff62cE +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17he8c072a7529a9166E: + .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17ha7bfa87c9398e80eE .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h6331c35d7f3ca7ecE: +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h91c65e3829956b99E: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h97f4b0b87078d28fE: - .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h6331c35d7f3ca7ecE +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h0a9b51fcf825b29fE: + .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h91c65e3829956b99E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel7generic5do_it5VALUE17h5dc54c5eb2d3cedbE: +__ZN24test_msg_send_static_sel7generic5do_it4NAME17h327a9f2556c00325E: .asciz "generic:selector:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN24test_msg_send_static_sel7generic5do_it3REF17h3a04d62bb3a1f3bdE: - .long __ZN24test_msg_send_static_sel7generic5do_it5VALUE17h5dc54c5eb2d3cedbE +__ZN24test_msg_send_static_sel7generic5do_it3REF17hd7d99d1530d1aa53E: + .long __ZN24test_msg_send_static_sel7generic5do_it4NAME17h327a9f2556c00325E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hde48cd15665388c1E: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hbf99e9b9cc3551bbE: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN24test_msg_send_static_sel11use_generic5do_it3REF17hedb1f43f6216ce47E: - .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17hde48cd15665388c1E +__ZN24test_msg_send_static_sel11use_generic5do_it3REF17h92275f9ad829b8d2E: + .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hbf99e9b9cc3551bbE .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8d540a1bd5813fe5E: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h38dee9b38eec502dE: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN24test_msg_send_static_sel11use_generic5do_it3REF17h38ebe7d8068fa384E: - .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8d540a1bd5813fe5E +__ZN24test_msg_send_static_sel11use_generic5do_it3REF17hec8af9726862a51fE: + .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h38dee9b38eec502dE .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h05f27bd87a98eec0E: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h21b73c7a226720e8E: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN24test_msg_send_static_sel11use_generic5do_it3REF17h4def92294f8ef6c8E: - .long __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h05f27bd87a98eec0E +__ZN24test_msg_send_static_sel11use_generic5do_it3REF17h4ca08a2f79beb685E: + .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h21b73c7a226720e8E .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index 0dd906796..ddbf949db 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -5,7 +5,7 @@ _handle_with_sel: push rbp mov rbp, rsp - mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17hf309c5158f98b1fcE] + mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha4d87ecf6e77d3d8E] pop rbp jmp _objc_msgSend @@ -16,8 +16,8 @@ _handle_alloc_init: mov rbp, rsp push rbx push rax - mov rbx, qword ptr [rip + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h9733de6ecff5dbb2E] - mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hb3954197f6bdef1fE] + mov rbx, qword ptr [rip + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hf24926dd82f1328eE] + mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hba215860b5dbdc32E] call _objc_msgSend mov rdi, rax mov rsi, rbx @@ -34,15 +34,15 @@ _use_generic: push rbx push rax mov rbx, rdi - mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hef0b1c0e70be6ec1E] - mov rdx, qword ptr [rip + __ZN24test_msg_send_static_sel7generic5do_it3REF17h5d75f9d29adef9eeE] + mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h845175a6204d5101E] + mov rdx, qword ptr [rip + __ZN24test_msg_send_static_sel7generic5do_it3REF17h4fb667c67ff2fee7E] call _objc_msgSend - mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hba5110112d711d53E] - mov rdx, qword ptr [rip + __ZN24test_msg_send_static_sel7generic5do_it3REF17h5d75f9d29adef9eeE] + mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hc2064b35e83288e1E] + mov rdx, qword ptr [rip + __ZN24test_msg_send_static_sel7generic5do_it3REF17h4fb667c67ff2fee7E] mov rdi, rbx call _objc_msgSend - mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h1c094ab04f32e2afE] - mov rdx, qword ptr [rip + __ZN24test_msg_send_static_sel7generic5do_it3REF17h5d75f9d29adef9eeE] + mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17ha259adabc85c9a3dE] + mov rdx, qword ptr [rip + __ZN24test_msg_send_static_sel7generic5do_it3REF17h4fb667c67ff2fee7E] mov rdi, rbx add rsp, 8 pop rbx @@ -50,66 +50,66 @@ _use_generic: jmp _objc_msgSend .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17ha271e23b04b427ddE: +__ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17hebe8ea07b55a546cE: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17hf309c5158f98b1fcE: - .quad __ZN24test_msg_send_static_sel15handle_with_sel5do_it5VALUE17ha271e23b04b427ddE +__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha4d87ecf6e77d3d8E: + .quad __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17hebe8ea07b55a546cE .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h18a88f0eacf39811E: +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hbe28dbabc7e7cfb8E: .asciz "init" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h9733de6ecff5dbb2E: - .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h18a88f0eacf39811E +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hf24926dd82f1328eE: + .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hbe28dbabc7e7cfb8E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h641723cf398488c1E: +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h51e1533dabc0a607E: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hb3954197f6bdef1fE: - .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it5VALUE17h641723cf398488c1E +__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hba215860b5dbdc32E: + .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h51e1533dabc0a607E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel7generic5do_it5VALUE17hd3f8e5714b07eb87E: +__ZN24test_msg_send_static_sel7generic5do_it4NAME17h2f8048ba9a24f713E: .asciz "generic:selector:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN24test_msg_send_static_sel7generic5do_it3REF17h5d75f9d29adef9eeE: - .quad __ZN24test_msg_send_static_sel7generic5do_it5VALUE17hd3f8e5714b07eb87E +__ZN24test_msg_send_static_sel7generic5do_it3REF17h4fb667c67ff2fee7E: + .quad __ZN24test_msg_send_static_sel7generic5do_it4NAME17h2f8048ba9a24f713E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8a28567009fdf875E: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hbb02489017cc6d09E: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN24test_msg_send_static_sel11use_generic5do_it3REF17hef0b1c0e70be6ec1E: - .quad __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8a28567009fdf875E +__ZN24test_msg_send_static_sel11use_generic5do_it3REF17h845175a6204d5101E: + .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hbb02489017cc6d09E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8efb56cf5369f387E: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h7596ed8d4d33ce59E: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN24test_msg_send_static_sel11use_generic5do_it3REF17hba5110112d711d53E: - .quad __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h8efb56cf5369f387E +__ZN24test_msg_send_static_sel11use_generic5do_it3REF17hc2064b35e83288e1E: + .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h7596ed8d4d33ce59E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h014eee30b271725eE: +__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17he928f70016dd8da3E: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN24test_msg_send_static_sel11use_generic5do_it3REF17h1c094ab04f32e2afE: - .quad __ZN24test_msg_send_static_sel11use_generic5do_it5VALUE17h014eee30b271725eE +__ZN24test_msg_send_static_sel11use_generic5do_it3REF17ha259adabc85c9a3dE: + .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17he928f70016dd8da3E .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index 3d8352e93..5f7e508fd 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -23,9 +23,9 @@ Lloh3: .p2align 2 _get_common: Lloh4: - adrp x8, __ZN15test_static_sel10get_common5do_it3REF17hc0153c8b995ae069E@PAGE + adrp x8, __ZN15test_static_sel10get_common5do_it3REF17h04d7420870ee0084E@PAGE Lloh5: - ldr x0, [x8, __ZN15test_static_sel10get_common5do_it3REF17hc0153c8b995ae069E@PAGEOFF] + ldr x0, [x8, __ZN15test_static_sel10get_common5do_it3REF17h04d7420870ee0084E@PAGEOFF] ret .loh AdrpLdr Lloh4, Lloh5 @@ -43,9 +43,9 @@ Lloh7: .p2align 2 _unused_sel: Lloh8: - adrp x8, __ZN15test_static_sel10unused_sel5do_it3REF17h10d313b0038716f3E@PAGE + adrp x8, __ZN15test_static_sel10unused_sel5do_it3REF17h08e2222b7f31b61dE@PAGE Lloh9: - ldr xzr, [x8, __ZN15test_static_sel10unused_sel5do_it3REF17h10d313b0038716f3E@PAGEOFF] + ldr xzr, [x8, __ZN15test_static_sel10unused_sel5do_it3REF17h08e2222b7f31b61dE@PAGEOFF] ret .loh AdrpLdr Lloh8, Lloh9 @@ -78,58 +78,58 @@ _use_same_twice: .p2align 2 _use_in_loop: cbz x0, LBB7_3 - adrp x8, __ZN15test_static_sel11use_in_loop5do_it3REF17hc74b5495e1d5fa3dE@PAGE + adrp x8, __ZN15test_static_sel11use_in_loop5do_it3REF17hdd95e73e2d016191E@PAGE LBB7_2: - ldr xzr, [x8, __ZN15test_static_sel11use_in_loop5do_it3REF17hc74b5495e1d5fa3dE@PAGEOFF] + ldr xzr, [x8, __ZN15test_static_sel11use_in_loop5do_it3REF17hdd95e73e2d016191E@PAGEOFF] subs x0, x0, #1 b.ne LBB7_2 LBB7_3: ret .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E: +__ZN15test_static_sel7get_sel5do_it4NAME17hdceeb5c3708f29bfE: .asciz "simple" -__ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E: +__ZN15test_static_sel12get_same_sel5do_it4NAME17h4e648ed7466261caE: .asciz "simple" -__ZN15test_static_sel10get_common5do_it5VALUE17hd149c186017d657dE: +__ZN15test_static_sel10get_common5do_it4NAME17hfd368362e2d25fffE: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN15test_static_sel10get_common5do_it3REF17hc0153c8b995ae069E: - .quad __ZN15test_static_sel10get_common5do_it5VALUE17hd149c186017d657dE +__ZN15test_static_sel10get_common5do_it3REF17h04d7420870ee0084E: + .quad __ZN15test_static_sel10get_common5do_it4NAME17hfd368362e2d25fffE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E: +__ZN15test_static_sel17get_different_sel5do_it4NAME17h073785bcd4aaf0b5E: .asciz "i:am:different:" -__ZN15test_static_sel10unused_sel5do_it5VALUE17h1b48bd5d3ca1c638E: +__ZN15test_static_sel10unused_sel5do_it4NAME17h0804808ebe10326eE: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN15test_static_sel10unused_sel5do_it3REF17h10d313b0038716f3E: - .quad __ZN15test_static_sel10unused_sel5do_it5VALUE17h1b48bd5d3ca1c638E +__ZN15test_static_sel10unused_sel5do_it3REF17h08e2222b7f31b61dE: + .quad __ZN15test_static_sel10unused_sel5do_it4NAME17h0804808ebe10326eE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns5do_it5VALUE17hd8d355acf71c10e1E: +__ZN15test_static_sel7use_fns5do_it4NAME17h6498c06488ad7ff3E: .asciz "fourthSel" -__ZN15test_static_sel11use_in_loop5do_it5VALUE17he5797d44142247f6E: +__ZN15test_static_sel11use_in_loop5do_it4NAME17hc07464c5efd1d06bE: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN15test_static_sel11use_in_loop5do_it3REF17hc74b5495e1d5fa3dE: - .quad __ZN15test_static_sel11use_in_loop5do_it5VALUE17he5797d44142247f6E +__ZN15test_static_sel11use_in_loop5do_it3REF17hdd95e73e2d016191E: + .quad __ZN15test_static_sel11use_in_loop5do_it4NAME17hc07464c5efd1d06bE .p2align 3 __MergedGlobals: - .quad __ZN15test_static_sel7get_sel5do_it5VALUE17hbe84d58afa6acbd3E - .quad __ZN15test_static_sel12get_same_sel5do_it5VALUE17heb382f8971b53283E - .quad __ZN15test_static_sel17get_different_sel5do_it5VALUE17hf787bc78eaf65504E - .quad __ZN15test_static_sel7use_fns5do_it5VALUE17hd8d355acf71c10e1E + .quad __ZN15test_static_sel7get_sel5do_it4NAME17hdceeb5c3708f29bfE + .quad __ZN15test_static_sel12get_same_sel5do_it4NAME17h4e648ed7466261caE + .quad __ZN15test_static_sel17get_different_sel5do_it4NAME17h073785bcd4aaf0b5E + .quad __ZN15test_static_sel7use_fns5do_it4NAME17h6498c06488ad7ff3E .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index dc870cd2c..13d484225 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -25,8 +25,8 @@ LPC1_0: .p2align 2 .code 32 _get_common: - movw r0, :lower16:(__ZN15test_static_sel10get_common5do_it3REF17h2fcf6713cccb23c2E-(LPC2_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10get_common5do_it3REF17h2fcf6713cccb23c2E-(LPC2_0+8)) + movw r0, :lower16:(__ZN15test_static_sel10get_common5do_it3REF17h88c0b345ea50045dE-(LPC2_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10get_common5do_it3REF17h88c0b345ea50045dE-(LPC2_0+8)) LPC2_0: ldr r0, [pc, r0] bx lr @@ -46,8 +46,8 @@ LPC3_0: .p2align 2 .code 32 _unused_sel: - movw r0, :lower16:(__ZN15test_static_sel10unused_sel5do_it3REF17hd1843813254fd749E-(LPC4_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10unused_sel5do_it3REF17hd1843813254fd749E-(LPC4_0+8)) + movw r0, :lower16:(__ZN15test_static_sel10unused_sel5do_it3REF17h3456b073979c4c05E-(LPC4_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10unused_sel5do_it3REF17h3456b073979c4c05E-(LPC4_0+8)) LPC4_0: ldr r0, [pc, r0] bx lr @@ -93,58 +93,58 @@ _use_in_loop: cmp r0, #0 bxeq lr LBB7_1: - movw r1, :lower16:(__ZN15test_static_sel11use_in_loop5do_it3REF17hc3ddbd16275c953aE-(LPC7_0+8)) + movw r1, :lower16:(__ZN15test_static_sel11use_in_loop5do_it3REF17ha9a536f99ddb0372E-(LPC7_0+8)) subs r0, r0, #1 - movt r1, :upper16:(__ZN15test_static_sel11use_in_loop5do_it3REF17hc3ddbd16275c953aE-(LPC7_0+8)) + movt r1, :upper16:(__ZN15test_static_sel11use_in_loop5do_it3REF17ha9a536f99ddb0372E-(LPC7_0+8)) LPC7_0: ldr r1, [pc, r1] bne LBB7_1 bx lr .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E: +__ZN15test_static_sel7get_sel5do_it4NAME17h2b52ef278f5b8d4dE: .asciz "simple" -__ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE: +__ZN15test_static_sel12get_same_sel5do_it4NAME17h50d386fa227c6606E: .asciz "simple" -__ZN15test_static_sel10get_common5do_it5VALUE17hf482623d5a0e24bcE: +__ZN15test_static_sel10get_common5do_it4NAME17h179213a48bde1076E: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel10get_common5do_it3REF17h2fcf6713cccb23c2E: - .long __ZN15test_static_sel10get_common5do_it5VALUE17hf482623d5a0e24bcE +__ZN15test_static_sel10get_common5do_it3REF17h88c0b345ea50045dE: + .long __ZN15test_static_sel10get_common5do_it4NAME17h179213a48bde1076E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E: +__ZN15test_static_sel17get_different_sel5do_it4NAME17h6f683b1d018a42d4E: .asciz "i:am:different:" -__ZN15test_static_sel10unused_sel5do_it5VALUE17he425e6855951f7deE: +__ZN15test_static_sel10unused_sel5do_it4NAME17h52310f431dc7fa86E: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel10unused_sel5do_it3REF17hd1843813254fd749E: - .long __ZN15test_static_sel10unused_sel5do_it5VALUE17he425e6855951f7deE +__ZN15test_static_sel10unused_sel5do_it3REF17h3456b073979c4c05E: + .long __ZN15test_static_sel10unused_sel5do_it4NAME17h52310f431dc7fa86E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns5do_it5VALUE17h4bcae19786cde021E: +__ZN15test_static_sel7use_fns5do_it4NAME17h00d062c3767274a5E: .asciz "fourthSel" -__ZN15test_static_sel11use_in_loop5do_it5VALUE17h474e12afa6bd4102E: +__ZN15test_static_sel11use_in_loop5do_it4NAME17h212e17b8e008601dE: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel11use_in_loop5do_it3REF17hc3ddbd16275c953aE: - .long __ZN15test_static_sel11use_in_loop5do_it5VALUE17h474e12afa6bd4102E +__ZN15test_static_sel11use_in_loop5do_it3REF17ha9a536f99ddb0372E: + .long __ZN15test_static_sel11use_in_loop5do_it4NAME17h212e17b8e008601dE .p2align 2 __MergedGlobals: - .long __ZN15test_static_sel7get_sel5do_it5VALUE17h2b7d0292b914b628E - .long __ZN15test_static_sel12get_same_sel5do_it5VALUE17h150bb3bb3ef538caE - .long __ZN15test_static_sel17get_different_sel5do_it5VALUE17he4401ae12495c648E - .long __ZN15test_static_sel7use_fns5do_it5VALUE17h4bcae19786cde021E + .long __ZN15test_static_sel7get_sel5do_it4NAME17h2b52ef278f5b8d4dE + .long __ZN15test_static_sel12get_same_sel5do_it4NAME17h50d386fa227c6606E + .long __ZN15test_static_sel17get_different_sel5do_it4NAME17h6f683b1d018a42d4E + .long __ZN15test_static_sel7use_fns5do_it4NAME17h00d062c3767274a5E .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index 6aee92679..b6165b5f3 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -25,8 +25,8 @@ LPC1_0: .p2align 2 .code 32 _get_common: - movw r0, :lower16:(__ZN15test_static_sel10get_common5do_it3REF17hf29cec9e09fb4cf9E-(LPC2_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10get_common5do_it3REF17hf29cec9e09fb4cf9E-(LPC2_0+8)) + movw r0, :lower16:(__ZN15test_static_sel10get_common5do_it3REF17h46c060c4347a38e4E-(LPC2_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10get_common5do_it3REF17h46c060c4347a38e4E-(LPC2_0+8)) LPC2_0: ldr r0, [pc, r0] bx lr @@ -46,8 +46,8 @@ LPC3_0: .p2align 2 .code 32 _unused_sel: - movw r0, :lower16:(__ZN15test_static_sel10unused_sel5do_it3REF17h9ea90ea259d94ab7E-(LPC4_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10unused_sel5do_it3REF17h9ea90ea259d94ab7E-(LPC4_0+8)) + movw r0, :lower16:(__ZN15test_static_sel10unused_sel5do_it3REF17h7b1fdae0240cf991E-(LPC4_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10unused_sel5do_it3REF17h7b1fdae0240cf991E-(LPC4_0+8)) LPC4_0: ldr r0, [pc, r0] bx lr @@ -93,58 +93,58 @@ _use_in_loop: cmp r0, #0 bxeq lr LBB7_1: - movw r1, :lower16:(__ZN15test_static_sel11use_in_loop5do_it3REF17hfa6d89396a47275aE-(LPC7_0+8)) + movw r1, :lower16:(__ZN15test_static_sel11use_in_loop5do_it3REF17h5c831b42249b63fbE-(LPC7_0+8)) subs r0, r0, #1 - movt r1, :upper16:(__ZN15test_static_sel11use_in_loop5do_it3REF17hfa6d89396a47275aE-(LPC7_0+8)) + movt r1, :upper16:(__ZN15test_static_sel11use_in_loop5do_it3REF17h5c831b42249b63fbE-(LPC7_0+8)) LPC7_0: ldr r1, [pc, r1] bne LBB7_1 bx lr .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E: +__ZN15test_static_sel7get_sel5do_it4NAME17h2dffbace724e41c8E: .asciz "simple" -__ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE: +__ZN15test_static_sel12get_same_sel5do_it4NAME17h505a1d4eeb4946fbE: .asciz "simple" -__ZN15test_static_sel10get_common5do_it5VALUE17h8f318ccc63cbbef4E: +__ZN15test_static_sel10get_common5do_it4NAME17h3d2d64c9c4874f50E: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel10get_common5do_it3REF17hf29cec9e09fb4cf9E: - .long __ZN15test_static_sel10get_common5do_it5VALUE17h8f318ccc63cbbef4E +__ZN15test_static_sel10get_common5do_it3REF17h46c060c4347a38e4E: + .long __ZN15test_static_sel10get_common5do_it4NAME17h3d2d64c9c4874f50E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E: +__ZN15test_static_sel17get_different_sel5do_it4NAME17hbbe758ed5ef72d9eE: .asciz "i:am:different:" -__ZN15test_static_sel10unused_sel5do_it5VALUE17h6c7e40953925fd60E: +__ZN15test_static_sel10unused_sel5do_it4NAME17h4683c999360858fbE: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel10unused_sel5do_it3REF17h9ea90ea259d94ab7E: - .long __ZN15test_static_sel10unused_sel5do_it5VALUE17h6c7e40953925fd60E +__ZN15test_static_sel10unused_sel5do_it3REF17h7b1fdae0240cf991E: + .long __ZN15test_static_sel10unused_sel5do_it4NAME17h4683c999360858fbE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns5do_it5VALUE17h145936052e081cd8E: +__ZN15test_static_sel7use_fns5do_it4NAME17hfc4272ae24fa0543E: .asciz "fourthSel" -__ZN15test_static_sel11use_in_loop5do_it5VALUE17ha99c5a0311c1ddcfE: +__ZN15test_static_sel11use_in_loop5do_it4NAME17hc35160b73d726a00E: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel11use_in_loop5do_it3REF17hfa6d89396a47275aE: - .long __ZN15test_static_sel11use_in_loop5do_it5VALUE17ha99c5a0311c1ddcfE +__ZN15test_static_sel11use_in_loop5do_it3REF17h5c831b42249b63fbE: + .long __ZN15test_static_sel11use_in_loop5do_it4NAME17hc35160b73d726a00E .p2align 2 __MergedGlobals: - .long __ZN15test_static_sel7get_sel5do_it5VALUE17hd5cef0cedc2e7124E - .long __ZN15test_static_sel12get_same_sel5do_it5VALUE17hd4d7a88675d577ceE - .long __ZN15test_static_sel17get_different_sel5do_it5VALUE17h00902267a93f7400E - .long __ZN15test_static_sel7use_fns5do_it5VALUE17h145936052e081cd8E + .long __ZN15test_static_sel7get_sel5do_it4NAME17h2dffbace724e41c8E + .long __ZN15test_static_sel12get_same_sel5do_it4NAME17h505a1d4eeb4946fbE + .long __ZN15test_static_sel17get_different_sel5do_it4NAME17hbbe758ed5ef72d9eE + .long __ZN15test_static_sel7use_fns5do_it4NAME17hfc4272ae24fa0543E .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index 8b2b7b09d..690bad520 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -8,7 +8,7 @@ _get_sel: call L0$pb L0$pb: pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel7get_sel5do_it3REF17h9474478a9beae4b3E-L0$pb] + mov eax, dword ptr [eax + __ZN15test_static_sel7get_sel5do_it3REF17h228c7cd1be7c0069E-L0$pb] pop ebp ret @@ -20,7 +20,7 @@ _get_same_sel: call L1$pb L1$pb: pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel12get_same_sel5do_it3REF17h4e0f4268fe73e0d3E-L1$pb] + mov eax, dword ptr [eax + __ZN15test_static_sel12get_same_sel5do_it3REF17h2d56ac8d4cf2a355E-L1$pb] pop ebp ret @@ -32,7 +32,7 @@ _get_common: call L2$pb L2$pb: pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel10get_common5do_it3REF17habc9cf686995fb2cE-L2$pb] + mov eax, dword ptr [eax + __ZN15test_static_sel10get_common5do_it3REF17hbce043dcabf60bd8E-L2$pb] pop ebp ret @@ -44,7 +44,7 @@ _get_different_sel: call L3$pb L3$pb: pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel17get_different_sel5do_it3REF17h3cab7071782ba0e6E-L3$pb] + mov eax, dword ptr [eax + __ZN15test_static_sel17get_different_sel5do_it3REF17h46c19195af72a6afE-L3$pb] pop ebp ret @@ -56,7 +56,7 @@ _unused_sel: call L4$pb L4$pb: pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel10unused_sel5do_it3REF17h484805d909f89434E-L4$pb] + mov eax, dword ptr [eax + __ZN15test_static_sel10unused_sel5do_it3REF17hb665a83c664ebefbE-L4$pb] pop ebp ret @@ -71,10 +71,10 @@ _use_fns: L5$pb: pop ecx mov eax, dword ptr [ebp + 8] - mov edx, dword ptr [ecx + __ZN15test_static_sel7get_sel5do_it3REF17h9474478a9beae4b3E-L5$pb] - mov esi, dword ptr [ecx + __ZN15test_static_sel12get_same_sel5do_it3REF17h4e0f4268fe73e0d3E-L5$pb] - mov edi, dword ptr [ecx + __ZN15test_static_sel17get_different_sel5do_it3REF17h3cab7071782ba0e6E-L5$pb] - mov ecx, dword ptr [ecx + __ZN15test_static_sel7use_fns5do_it3REF17h8cd819e3c1124776E-L5$pb] + mov edx, dword ptr [ecx + __ZN15test_static_sel7get_sel5do_it3REF17h228c7cd1be7c0069E-L5$pb] + mov esi, dword ptr [ecx + __ZN15test_static_sel12get_same_sel5do_it3REF17h2d56ac8d4cf2a355E-L5$pb] + mov edi, dword ptr [ecx + __ZN15test_static_sel17get_different_sel5do_it3REF17h46c19195af72a6afE-L5$pb] + mov ecx, dword ptr [ecx + __ZN15test_static_sel7use_fns5do_it3REF17h4ce7e1055d208b06E-L5$pb] mov dword ptr [eax], edx mov dword ptr [eax + 4], esi mov dword ptr [eax + 8], edi @@ -93,8 +93,8 @@ _use_same_twice: L6$pb: pop ecx mov eax, dword ptr [ebp + 8] - mov edx, dword ptr [ecx + __ZN15test_static_sel7get_sel5do_it3REF17h9474478a9beae4b3E-L6$pb] - mov ecx, dword ptr [ecx + __ZN15test_static_sel7get_sel5do_it3REF17h9474478a9beae4b3E-L6$pb] + mov edx, dword ptr [ecx + __ZN15test_static_sel7get_sel5do_it3REF17h228c7cd1be7c0069E-L6$pb] + mov ecx, dword ptr [ecx + __ZN15test_static_sel7get_sel5do_it3REF17h228c7cd1be7c0069E-L6$pb] mov dword ptr [eax], edx mov dword ptr [eax + 4], ecx pop ebp @@ -120,14 +120,14 @@ L7$pb: and edx, -8 .p2align 4, 0x90 LBB7_3: - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] + mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] add edx, -8 jne LBB7_3 LBB7_4: @@ -135,7 +135,7 @@ LBB7_4: je LBB7_6 .p2align 4, 0x90 LBB7_5: - mov edx, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E-L7$pb] + mov edx, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] dec ecx jne LBB7_5 LBB7_6: @@ -144,66 +144,66 @@ LBB7_6: ret .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel5do_it5VALUE17hdc6f5bc4c8522997E: +__ZN15test_static_sel7get_sel5do_it4NAME17h6c6d257dd8fb3617E: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel7get_sel5do_it3REF17h9474478a9beae4b3E: - .long __ZN15test_static_sel7get_sel5do_it5VALUE17hdc6f5bc4c8522997E +__ZN15test_static_sel7get_sel5do_it3REF17h228c7cd1be7c0069E: + .long __ZN15test_static_sel7get_sel5do_it4NAME17h6c6d257dd8fb3617E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel12get_same_sel5do_it5VALUE17hba6507a7c7d39ef8E: +__ZN15test_static_sel12get_same_sel5do_it4NAME17h3c19b4f1b67d375cE: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel12get_same_sel5do_it3REF17h4e0f4268fe73e0d3E: - .long __ZN15test_static_sel12get_same_sel5do_it5VALUE17hba6507a7c7d39ef8E +__ZN15test_static_sel12get_same_sel5do_it3REF17h2d56ac8d4cf2a355E: + .long __ZN15test_static_sel12get_same_sel5do_it4NAME17h3c19b4f1b67d375cE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10get_common5do_it5VALUE17ha16c61a23dba9432E: +__ZN15test_static_sel10get_common5do_it4NAME17hcb2f2f30b61e60e6E: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel10get_common5do_it3REF17habc9cf686995fb2cE: - .long __ZN15test_static_sel10get_common5do_it5VALUE17ha16c61a23dba9432E +__ZN15test_static_sel10get_common5do_it3REF17hbce043dcabf60bd8E: + .long __ZN15test_static_sel10get_common5do_it4NAME17hcb2f2f30b61e60e6E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel5do_it5VALUE17h56d326a3c9259e1eE: +__ZN15test_static_sel17get_different_sel5do_it4NAME17hf72482e04f464b16E: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel17get_different_sel5do_it3REF17h3cab7071782ba0e6E: - .long __ZN15test_static_sel17get_different_sel5do_it5VALUE17h56d326a3c9259e1eE +__ZN15test_static_sel17get_different_sel5do_it3REF17h46c19195af72a6afE: + .long __ZN15test_static_sel17get_different_sel5do_it4NAME17hf72482e04f464b16E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10unused_sel5do_it5VALUE17h466f702aa6f94d5fE: +__ZN15test_static_sel10unused_sel5do_it4NAME17h47c97c765e901021E: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel10unused_sel5do_it3REF17h484805d909f89434E: - .long __ZN15test_static_sel10unused_sel5do_it5VALUE17h466f702aa6f94d5fE +__ZN15test_static_sel10unused_sel5do_it3REF17hb665a83c664ebefbE: + .long __ZN15test_static_sel10unused_sel5do_it4NAME17h47c97c765e901021E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns5do_it5VALUE17h7ce073afa896ddd6E: +__ZN15test_static_sel7use_fns5do_it4NAME17hf963d790d76ff9aaE: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel7use_fns5do_it3REF17h8cd819e3c1124776E: - .long __ZN15test_static_sel7use_fns5do_it5VALUE17h7ce073afa896ddd6E +__ZN15test_static_sel7use_fns5do_it3REF17h4ce7e1055d208b06E: + .long __ZN15test_static_sel7use_fns5do_it4NAME17hf963d790d76ff9aaE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel11use_in_loop5do_it5VALUE17haac9abd8f4a72a6bE: +__ZN15test_static_sel11use_in_loop5do_it4NAME17h13b3be67c555f0a5E: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 2 -__ZN15test_static_sel11use_in_loop5do_it3REF17h6c8decc396b6a708E: - .long __ZN15test_static_sel11use_in_loop5do_it5VALUE17haac9abd8f4a72a6bE +__ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE: + .long __ZN15test_static_sel11use_in_loop5do_it4NAME17h13b3be67c555f0a5E .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index 03381122a..6906558ed 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -5,7 +5,7 @@ _get_sel: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h3382eb6577a19884E] + mov rax, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h782882fcc02d9d8aE] pop rbp ret @@ -14,7 +14,7 @@ _get_sel: _get_same_sel: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel12get_same_sel5do_it3REF17hc31d191dc2fd749eE] + mov rax, qword ptr [rip + __ZN15test_static_sel12get_same_sel5do_it3REF17h2d67e358172fa45dE] pop rbp ret @@ -23,7 +23,7 @@ _get_same_sel: _get_common: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel10get_common5do_it3REF17hdadb6ccb121002e4E] + mov rax, qword ptr [rip + __ZN15test_static_sel10get_common5do_it3REF17hbd5f5d11cc1d359fE] pop rbp ret @@ -32,7 +32,7 @@ _get_common: _get_different_sel: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel17get_different_sel5do_it3REF17he5023edc2d5cf13dE] + mov rax, qword ptr [rip + __ZN15test_static_sel17get_different_sel5do_it3REF17h95db9b19a0d861e2E] pop rbp ret @@ -41,7 +41,7 @@ _get_different_sel: _unused_sel: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel10unused_sel5do_it3REF17h24fb2858983de1caE] + mov rax, qword ptr [rip + __ZN15test_static_sel10unused_sel5do_it3REF17hc65ecc2272129c12E] pop rbp ret @@ -51,10 +51,10 @@ _use_fns: push rbp mov rbp, rsp mov rax, rdi - mov rcx, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h3382eb6577a19884E] - mov rdx, qword ptr [rip + __ZN15test_static_sel12get_same_sel5do_it3REF17hc31d191dc2fd749eE] - mov rsi, qword ptr [rip + __ZN15test_static_sel17get_different_sel5do_it3REF17he5023edc2d5cf13dE] - mov rdi, qword ptr [rip + __ZN15test_static_sel7use_fns5do_it3REF17h57c91cfc799dcb29E] + mov rcx, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h782882fcc02d9d8aE] + mov rdx, qword ptr [rip + __ZN15test_static_sel12get_same_sel5do_it3REF17h2d67e358172fa45dE] + mov rsi, qword ptr [rip + __ZN15test_static_sel17get_different_sel5do_it3REF17h95db9b19a0d861e2E] + mov rdi, qword ptr [rip + __ZN15test_static_sel7use_fns5do_it3REF17h588d7388fcda7afcE] mov qword ptr [rax], rcx mov qword ptr [rax + 8], rdx mov qword ptr [rax + 16], rsi @@ -68,8 +68,8 @@ _use_same_twice: push rbp mov rbp, rsp mov rax, rdi - mov rcx, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h3382eb6577a19884E] - mov rdx, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h3382eb6577a19884E] + mov rcx, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h782882fcc02d9d8aE] + mov rdx, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h782882fcc02d9d8aE] mov qword ptr [rdi], rcx mov qword ptr [rdi + 8], rdx pop rbp @@ -90,14 +90,14 @@ _use_in_loop: and rdi, -8 .p2align 4, 0x90 LBB7_3: - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] add rdi, -8 jne LBB7_3 LBB7_4: @@ -105,7 +105,7 @@ LBB7_4: je LBB7_6 .p2align 4, 0x90 LBB7_5: - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E] + mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] dec rax jne LBB7_5 LBB7_6: @@ -113,66 +113,66 @@ LBB7_6: ret .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel5do_it5VALUE17h338b867de999a683E: +__ZN15test_static_sel7get_sel5do_it4NAME17h9e9003947df30d5bE: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN15test_static_sel7get_sel5do_it3REF17h3382eb6577a19884E: - .quad __ZN15test_static_sel7get_sel5do_it5VALUE17h338b867de999a683E +__ZN15test_static_sel7get_sel5do_it3REF17h782882fcc02d9d8aE: + .quad __ZN15test_static_sel7get_sel5do_it4NAME17h9e9003947df30d5bE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel12get_same_sel5do_it5VALUE17hfda78dbf2d31d676E: +__ZN15test_static_sel12get_same_sel5do_it4NAME17h8b1a946a162bf505E: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN15test_static_sel12get_same_sel5do_it3REF17hc31d191dc2fd749eE: - .quad __ZN15test_static_sel12get_same_sel5do_it5VALUE17hfda78dbf2d31d676E +__ZN15test_static_sel12get_same_sel5do_it3REF17h2d67e358172fa45dE: + .quad __ZN15test_static_sel12get_same_sel5do_it4NAME17h8b1a946a162bf505E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10get_common5do_it5VALUE17h6913f03b163cd283E: +__ZN15test_static_sel10get_common5do_it4NAME17h584eb2aaa202befbE: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN15test_static_sel10get_common5do_it3REF17hdadb6ccb121002e4E: - .quad __ZN15test_static_sel10get_common5do_it5VALUE17h6913f03b163cd283E +__ZN15test_static_sel10get_common5do_it3REF17hbd5f5d11cc1d359fE: + .quad __ZN15test_static_sel10get_common5do_it4NAME17h584eb2aaa202befbE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel5do_it5VALUE17h88a6ccd34e9782e8E: +__ZN15test_static_sel17get_different_sel5do_it4NAME17h771c17e46b379ccbE: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN15test_static_sel17get_different_sel5do_it3REF17he5023edc2d5cf13dE: - .quad __ZN15test_static_sel17get_different_sel5do_it5VALUE17h88a6ccd34e9782e8E +__ZN15test_static_sel17get_different_sel5do_it3REF17h95db9b19a0d861e2E: + .quad __ZN15test_static_sel17get_different_sel5do_it4NAME17h771c17e46b379ccbE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10unused_sel5do_it5VALUE17hef3d043ebac21292E: +__ZN15test_static_sel10unused_sel5do_it4NAME17h00f91d535bf5e92eE: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN15test_static_sel10unused_sel5do_it3REF17h24fb2858983de1caE: - .quad __ZN15test_static_sel10unused_sel5do_it5VALUE17hef3d043ebac21292E +__ZN15test_static_sel10unused_sel5do_it3REF17hc65ecc2272129c12E: + .quad __ZN15test_static_sel10unused_sel5do_it4NAME17h00f91d535bf5e92eE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns5do_it5VALUE17h3053c06c1c5263daE: +__ZN15test_static_sel7use_fns5do_it4NAME17hff47d49a940f1428E: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN15test_static_sel7use_fns5do_it3REF17h57c91cfc799dcb29E: - .quad __ZN15test_static_sel7use_fns5do_it5VALUE17h3053c06c1c5263daE +__ZN15test_static_sel7use_fns5do_it3REF17h588d7388fcda7afcE: + .quad __ZN15test_static_sel7use_fns5do_it4NAME17hff47d49a940f1428E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel11use_in_loop5do_it5VALUE17h24465c3f4d5d6e1eE: +__ZN15test_static_sel11use_in_loop5do_it4NAME17hfb93cf0b2231dd8eE: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .p2align 3 -__ZN15test_static_sel11use_in_loop5do_it3REF17hbcc9fc4e6297cac5E: - .quad __ZN15test_static_sel11use_in_loop5do_it5VALUE17h24465c3f4d5d6e1eE +__ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE: + .quad __ZN15test_static_sel11use_in_loop5do_it4NAME17hfb93cf0b2231dd8eE .subsections_via_symbols From ca065ab54805d7b4e8e231f6b6d23d2fac9c389d Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 3 Mar 2022 02:13:02 +0100 Subject: [PATCH 05/30] Allow dead_stripping Co-authored-by: Jeff Muizelaar --- objc2/src/macros.rs | 2 +- .../expected/apple-aarch64.s | 4 ++-- .../expected/apple-armv7.s | 4 ++-- .../expected/apple-armv7s.s | 4 ++-- .../test_msg_send_static_sel/expected/apple-x86.s | 14 +++++++------- .../expected/apple-x86_64.s | 14 +++++++------- .../test_static_sel/expected/apple-aarch64.s | 6 +++--- .../test_static_sel/expected/apple-armv7.s | 6 +++--- .../test_static_sel/expected/apple-armv7s.s | 6 +++--- .../assembly/test_static_sel/expected/apple-x86.s | 14 +++++++------- .../test_static_sel/expected/apple-x86_64.s | 14 +++++++------- 11 files changed, 44 insertions(+), 44 deletions(-) diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index b99897a80..d3d48579f 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -82,7 +82,7 @@ macro_rules! sel { }; // Place the constant value in the correct section. - #[link_section = "__DATA,__objc_selrefs,literal_pointers,no_dead_strip"] + #[link_section = "__DATA,__objc_selrefs,literal_pointers"] static mut REF: &[u8; X.len()] = &NAME; // The actual selector is replaced by dyld when the program is diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index 83844634b..a25e48e06 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -58,7 +58,7 @@ Lloh5: __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h7aece036b6e79a18E: .asciz "someSelector" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17hb9e340356cdf65b3E: .quad __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h7aece036b6e79a18E @@ -82,7 +82,7 @@ __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h99977609f68cb784E: __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hb90d314a2fdc44c8E: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __MergedGlobals: .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hb670025ce5d0664cE diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index 2313b798a..cf4190209 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -58,7 +58,7 @@ LPC2_0: __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h4be0477fe73c107cE: .asciz "someSelector" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha3faf09d3de71191E: .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h4be0477fe73c107cE @@ -82,7 +82,7 @@ __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h52746d9e41762e25E: __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hc6eea12cf00dc3ecE: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __MergedGlobals: .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hfb54835af2ec43c7E diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index fc7c55c5c..8ad10ef52 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -61,7 +61,7 @@ LPC2_0: __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h1b045ce2d125ff39E: .asciz "someSelector" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h5684820907e02a7dE: .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h1b045ce2d125ff39E @@ -85,7 +85,7 @@ __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hd38879191654969cE: __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h558dcd606e4b144fE: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __MergedGlobals: .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h4e0852fc05b66326E diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index 315a7e15e..8239ea1ec 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -77,7 +77,7 @@ L2$pb: __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17heabddaa6f4c9743dE: .asciz "someSelector" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h494943a1fc7f70e1E: .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17heabddaa6f4c9743dE @@ -86,7 +86,7 @@ __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h494943a1fc7f70e1E: __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17ha7bfa87c9398e80eE: .asciz "init" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17he8c072a7529a9166E: .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17ha7bfa87c9398e80eE @@ -95,7 +95,7 @@ __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17he8c072a7529a9166E: __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h91c65e3829956b99E: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h0a9b51fcf825b29fE: .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h91c65e3829956b99E @@ -104,7 +104,7 @@ __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h0a9b51fcf825b29fE: __ZN24test_msg_send_static_sel7generic5do_it4NAME17h327a9f2556c00325E: .asciz "generic:selector:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN24test_msg_send_static_sel7generic5do_it3REF17hd7d99d1530d1aa53E: .long __ZN24test_msg_send_static_sel7generic5do_it4NAME17h327a9f2556c00325E @@ -113,7 +113,7 @@ __ZN24test_msg_send_static_sel7generic5do_it3REF17hd7d99d1530d1aa53E: __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hbf99e9b9cc3551bbE: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h92275f9ad829b8d2E: .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hbf99e9b9cc3551bbE @@ -122,7 +122,7 @@ __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h92275f9ad829b8d2E: __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h38dee9b38eec502dE: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hec8af9726862a51fE: .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h38dee9b38eec502dE @@ -131,7 +131,7 @@ __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hec8af9726862a51fE: __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h21b73c7a226720e8E: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h4ca08a2f79beb685E: .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h21b73c7a226720e8E diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index ddbf949db..965c66e44 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -53,7 +53,7 @@ _use_generic: __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17hebe8ea07b55a546cE: .asciz "someSelector" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha4d87ecf6e77d3d8E: .quad __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17hebe8ea07b55a546cE @@ -62,7 +62,7 @@ __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha4d87ecf6e77d3d8E: __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hbe28dbabc7e7cfb8E: .asciz "init" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hf24926dd82f1328eE: .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hbe28dbabc7e7cfb8E @@ -71,7 +71,7 @@ __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hf24926dd82f1328eE: __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h51e1533dabc0a607E: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hba215860b5dbdc32E: .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h51e1533dabc0a607E @@ -80,7 +80,7 @@ __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hba215860b5dbdc32E: __ZN24test_msg_send_static_sel7generic5do_it4NAME17h2f8048ba9a24f713E: .asciz "generic:selector:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN24test_msg_send_static_sel7generic5do_it3REF17h4fb667c67ff2fee7E: .quad __ZN24test_msg_send_static_sel7generic5do_it4NAME17h2f8048ba9a24f713E @@ -89,7 +89,7 @@ __ZN24test_msg_send_static_sel7generic5do_it3REF17h4fb667c67ff2fee7E: __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hbb02489017cc6d09E: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h845175a6204d5101E: .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hbb02489017cc6d09E @@ -98,7 +98,7 @@ __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h845175a6204d5101E: __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h7596ed8d4d33ce59E: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hc2064b35e83288e1E: .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h7596ed8d4d33ce59E @@ -107,7 +107,7 @@ __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hc2064b35e83288e1E: __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17he928f70016dd8da3E: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN24test_msg_send_static_sel11use_generic5do_it3REF17ha259adabc85c9a3dE: .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17he928f70016dd8da3E diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index 5f7e508fd..256c1678e 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -96,7 +96,7 @@ __ZN15test_static_sel12get_same_sel5do_it4NAME17h4e648ed7466261caE: __ZN15test_static_sel10get_common5do_it4NAME17hfd368362e2d25fffE: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN15test_static_sel10get_common5do_it3REF17h04d7420870ee0084E: .quad __ZN15test_static_sel10get_common5do_it4NAME17hfd368362e2d25fffE @@ -108,7 +108,7 @@ __ZN15test_static_sel17get_different_sel5do_it4NAME17h073785bcd4aaf0b5E: __ZN15test_static_sel10unused_sel5do_it4NAME17h0804808ebe10326eE: .asciz "unused" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN15test_static_sel10unused_sel5do_it3REF17h08e2222b7f31b61dE: .quad __ZN15test_static_sel10unused_sel5do_it4NAME17h0804808ebe10326eE @@ -120,7 +120,7 @@ __ZN15test_static_sel7use_fns5do_it4NAME17h6498c06488ad7ff3E: __ZN15test_static_sel11use_in_loop5do_it4NAME17hc07464c5efd1d06bE: .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN15test_static_sel11use_in_loop5do_it3REF17hdd95e73e2d016191E: .quad __ZN15test_static_sel11use_in_loop5do_it4NAME17hc07464c5efd1d06bE diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index 13d484225..c3fbbdaba 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -111,7 +111,7 @@ __ZN15test_static_sel12get_same_sel5do_it4NAME17h50d386fa227c6606E: __ZN15test_static_sel10get_common5do_it4NAME17h179213a48bde1076E: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel10get_common5do_it3REF17h88c0b345ea50045dE: .long __ZN15test_static_sel10get_common5do_it4NAME17h179213a48bde1076E @@ -123,7 +123,7 @@ __ZN15test_static_sel17get_different_sel5do_it4NAME17h6f683b1d018a42d4E: __ZN15test_static_sel10unused_sel5do_it4NAME17h52310f431dc7fa86E: .asciz "unused" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel10unused_sel5do_it3REF17h3456b073979c4c05E: .long __ZN15test_static_sel10unused_sel5do_it4NAME17h52310f431dc7fa86E @@ -135,7 +135,7 @@ __ZN15test_static_sel7use_fns5do_it4NAME17h00d062c3767274a5E: __ZN15test_static_sel11use_in_loop5do_it4NAME17h212e17b8e008601dE: .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel11use_in_loop5do_it3REF17ha9a536f99ddb0372E: .long __ZN15test_static_sel11use_in_loop5do_it4NAME17h212e17b8e008601dE diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index b6165b5f3..71b59abbc 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -111,7 +111,7 @@ __ZN15test_static_sel12get_same_sel5do_it4NAME17h505a1d4eeb4946fbE: __ZN15test_static_sel10get_common5do_it4NAME17h3d2d64c9c4874f50E: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel10get_common5do_it3REF17h46c060c4347a38e4E: .long __ZN15test_static_sel10get_common5do_it4NAME17h3d2d64c9c4874f50E @@ -123,7 +123,7 @@ __ZN15test_static_sel17get_different_sel5do_it4NAME17hbbe758ed5ef72d9eE: __ZN15test_static_sel10unused_sel5do_it4NAME17h4683c999360858fbE: .asciz "unused" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel10unused_sel5do_it3REF17h7b1fdae0240cf991E: .long __ZN15test_static_sel10unused_sel5do_it4NAME17h4683c999360858fbE @@ -135,7 +135,7 @@ __ZN15test_static_sel7use_fns5do_it4NAME17hfc4272ae24fa0543E: __ZN15test_static_sel11use_in_loop5do_it4NAME17hc35160b73d726a00E: .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel11use_in_loop5do_it3REF17h5c831b42249b63fbE: .long __ZN15test_static_sel11use_in_loop5do_it4NAME17hc35160b73d726a00E diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index 690bad520..b111cc334 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -147,7 +147,7 @@ LBB7_6: __ZN15test_static_sel7get_sel5do_it4NAME17h6c6d257dd8fb3617E: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel7get_sel5do_it3REF17h228c7cd1be7c0069E: .long __ZN15test_static_sel7get_sel5do_it4NAME17h6c6d257dd8fb3617E @@ -156,7 +156,7 @@ __ZN15test_static_sel7get_sel5do_it3REF17h228c7cd1be7c0069E: __ZN15test_static_sel12get_same_sel5do_it4NAME17h3c19b4f1b67d375cE: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel12get_same_sel5do_it3REF17h2d56ac8d4cf2a355E: .long __ZN15test_static_sel12get_same_sel5do_it4NAME17h3c19b4f1b67d375cE @@ -165,7 +165,7 @@ __ZN15test_static_sel12get_same_sel5do_it3REF17h2d56ac8d4cf2a355E: __ZN15test_static_sel10get_common5do_it4NAME17hcb2f2f30b61e60e6E: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel10get_common5do_it3REF17hbce043dcabf60bd8E: .long __ZN15test_static_sel10get_common5do_it4NAME17hcb2f2f30b61e60e6E @@ -174,7 +174,7 @@ __ZN15test_static_sel10get_common5do_it3REF17hbce043dcabf60bd8E: __ZN15test_static_sel17get_different_sel5do_it4NAME17hf72482e04f464b16E: .asciz "i:am:different:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel17get_different_sel5do_it3REF17h46c19195af72a6afE: .long __ZN15test_static_sel17get_different_sel5do_it4NAME17hf72482e04f464b16E @@ -183,7 +183,7 @@ __ZN15test_static_sel17get_different_sel5do_it3REF17h46c19195af72a6afE: __ZN15test_static_sel10unused_sel5do_it4NAME17h47c97c765e901021E: .asciz "unused" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel10unused_sel5do_it3REF17hb665a83c664ebefbE: .long __ZN15test_static_sel10unused_sel5do_it4NAME17h47c97c765e901021E @@ -192,7 +192,7 @@ __ZN15test_static_sel10unused_sel5do_it3REF17hb665a83c664ebefbE: __ZN15test_static_sel7use_fns5do_it4NAME17hf963d790d76ff9aaE: .asciz "fourthSel" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel7use_fns5do_it3REF17h4ce7e1055d208b06E: .long __ZN15test_static_sel7use_fns5do_it4NAME17hf963d790d76ff9aaE @@ -201,7 +201,7 @@ __ZN15test_static_sel7use_fns5do_it3REF17h4ce7e1055d208b06E: __ZN15test_static_sel11use_in_loop5do_it4NAME17h13b3be67c555f0a5E: .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE: .long __ZN15test_static_sel11use_in_loop5do_it4NAME17h13b3be67c555f0a5E diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index 6906558ed..e6a74687d 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -116,7 +116,7 @@ LBB7_6: __ZN15test_static_sel7get_sel5do_it4NAME17h9e9003947df30d5bE: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN15test_static_sel7get_sel5do_it3REF17h782882fcc02d9d8aE: .quad __ZN15test_static_sel7get_sel5do_it4NAME17h9e9003947df30d5bE @@ -125,7 +125,7 @@ __ZN15test_static_sel7get_sel5do_it3REF17h782882fcc02d9d8aE: __ZN15test_static_sel12get_same_sel5do_it4NAME17h8b1a946a162bf505E: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN15test_static_sel12get_same_sel5do_it3REF17h2d67e358172fa45dE: .quad __ZN15test_static_sel12get_same_sel5do_it4NAME17h8b1a946a162bf505E @@ -134,7 +134,7 @@ __ZN15test_static_sel12get_same_sel5do_it3REF17h2d67e358172fa45dE: __ZN15test_static_sel10get_common5do_it4NAME17h584eb2aaa202befbE: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN15test_static_sel10get_common5do_it3REF17hbd5f5d11cc1d359fE: .quad __ZN15test_static_sel10get_common5do_it4NAME17h584eb2aaa202befbE @@ -143,7 +143,7 @@ __ZN15test_static_sel10get_common5do_it3REF17hbd5f5d11cc1d359fE: __ZN15test_static_sel17get_different_sel5do_it4NAME17h771c17e46b379ccbE: .asciz "i:am:different:" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN15test_static_sel17get_different_sel5do_it3REF17h95db9b19a0d861e2E: .quad __ZN15test_static_sel17get_different_sel5do_it4NAME17h771c17e46b379ccbE @@ -152,7 +152,7 @@ __ZN15test_static_sel17get_different_sel5do_it3REF17h95db9b19a0d861e2E: __ZN15test_static_sel10unused_sel5do_it4NAME17h00f91d535bf5e92eE: .asciz "unused" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN15test_static_sel10unused_sel5do_it3REF17hc65ecc2272129c12E: .quad __ZN15test_static_sel10unused_sel5do_it4NAME17h00f91d535bf5e92eE @@ -161,7 +161,7 @@ __ZN15test_static_sel10unused_sel5do_it3REF17hc65ecc2272129c12E: __ZN15test_static_sel7use_fns5do_it4NAME17hff47d49a940f1428E: .asciz "fourthSel" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN15test_static_sel7use_fns5do_it3REF17h588d7388fcda7afcE: .quad __ZN15test_static_sel7use_fns5do_it4NAME17hff47d49a940f1428E @@ -170,7 +170,7 @@ __ZN15test_static_sel7use_fns5do_it3REF17h588d7388fcda7afcE: __ZN15test_static_sel11use_in_loop5do_it4NAME17hfb93cf0b2231dd8eE: .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE: .quad __ZN15test_static_sel11use_in_loop5do_it4NAME17hfb93cf0b2231dd8eE From a8803e3cb7859306b843076f0b210232b8a66b6b Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 3 Mar 2022 02:13:51 +0100 Subject: [PATCH 06/30] Use a hack to make the compiler group internal selector functions into the same codegen unit Co-authored-by: clavin --- objc2/src/macros.rs | 11 +- .../expected/apple-aarch64.s | 176 ++++++++++--- .../expected/apple-armv7.s | 180 +++++++++---- .../expected/apple-armv7s.s | 183 +++++++++---- .../expected/apple-x86.s | 181 +++++++++---- .../expected/apple-x86_64.s | 147 ++++++++--- .../test_static_sel/expected/apple-aarch64.s | 206 ++++++++++----- .../test_static_sel/expected/apple-armv7.s | 219 ++++++++++------ .../test_static_sel/expected/apple-armv7s.s | 234 +++++++++++------ .../test_static_sel/expected/apple-x86.s | 242 +++++++++++------- .../test_static_sel/expected/apple-x86_64.s | 195 +++++++++----- 11 files changed, 1365 insertions(+), 609 deletions(-) diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index d3d48579f..cbee28aae 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -63,11 +63,12 @@ macro_rules! sel { ($($name:ident :)+) => { $crate::sel!(@__inner concat!($(stringify!($name), ':'),+, '\0')) }; - // Declare a function to hide unsafety, otherwise we can trigger the - // unused_unsafe lint; see rust-lang/rust#8472 (@__inner $sel:expr) => {{ - #[inline(always)] - fn do_it() -> $crate::runtime::Sel { + // HACK: Wrap the statics in a non-generic, `#[inline(never)]` + // function to "coerce" the compiler to group all of them into the + // same codegen unit to avoid link errors + #[inline(never)] + fn objc_static_workaround() -> $crate::runtime::Sel { const X: &[u8] = $sel.as_bytes(); #[link_section = "__TEXT,__objc_methname,cstring_literals"] @@ -96,7 +97,7 @@ macro_rules! sel { unsafe { $crate::runtime::Sel::from_ptr(ptr) } } - do_it() + objc_static_workaround() }}; } diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index a25e48e06..71cb65bed 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -2,12 +2,16 @@ .globl _handle_with_sel .p2align 2 _handle_with_sel: -Lloh0: - adrp x8, __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17hb9e340356cdf65b3E@PAGE -Lloh1: - ldr x1, [x8, __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17hb9e340356cdf65b3E@PAGEOFF] + stp x20, x19, [sp, #-32]! + stp x29, x30, [sp, #16] + add x29, sp, #16 + mov x19, x0 + bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h4bd2e0f12aead0a7E + mov x1, x0 + mov x0, x19 + ldp x29, x30, [sp, #16] + ldp x20, x19, [sp], #32 b _objc_msgSend - .loh AdrpLdr Lloh0, Lloh1 .globl _handle_alloc_init .p2align 2 @@ -15,18 +19,17 @@ _handle_alloc_init: stp x20, x19, [sp, #-32]! stp x29, x30, [sp, #16] add x29, sp, #16 -Lloh2: - adrp x8, __MergedGlobals@PAGE -Lloh3: - add x8, x8, __MergedGlobals@PAGEOFF - ldr x19, [x8] - ldr x1, [x8, #8] + mov x19, x0 + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h527035549ca8e16bE + mov x20, x0 + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hb38636f8b33d47f4E + mov x1, x0 + mov x0, x19 bl _objc_msgSend - mov x1, x19 + mov x1, x20 ldp x29, x30, [sp, #16] ldp x20, x19, [sp], #32 b _objc_msgSend - .loh AdrpAdd Lloh2, Lloh3 .globl _use_generic .p2align 2 @@ -35,61 +38,154 @@ _use_generic: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 -Lloh4: - adrp x20, __MergedGlobals@PAGE+16 -Lloh5: - add x20, x20, __MergedGlobals@PAGEOFF+16 - ldr x1, [x20, #8] - ldr x2, [x20] + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h88b4b045cc9efedaE + mov x20, x0 + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hd455b7ba208abb35E + mov x2, x0 + mov x0, x19 + mov x1, x20 bl _objc_msgSend - ldr x1, [x20, #16] - ldr x2, [x20] + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3045dd61383fe46dE + mov x20, x0 + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hd455b7ba208abb35E + mov x2, x0 mov x0, x19 + mov x1, x20 bl _objc_msgSend - ldr x1, [x20, #24] - ldr x2, [x20] + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17haef494cf629bf43fE + mov x20, x0 + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hd455b7ba208abb35E + mov x2, x0 mov x0, x19 + mov x1, x20 ldp x29, x30, [sp, #16] ldp x20, x19, [sp], #32 b _objc_msgSend - .loh AdrpAdd Lloh4, Lloh5 + + .p2align 2 +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h4bd2e0f12aead0a7E: +Lloh0: + adrp x8, __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17hac048478e2245505E@PAGE +Lloh1: + ldr x0, [x8, __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17hac048478e2245505E@PAGEOFF] + ret + .loh AdrpLdr Lloh0, Lloh1 + + .p2align 2 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h527035549ca8e16bE: +Lloh2: + adrp x8, __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h8d106c43f8f016acE@PAGE +Lloh3: + ldr x0, [x8, __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h8d106c43f8f016acE@PAGEOFF] + ret + .loh AdrpLdr Lloh2, Lloh3 + + .p2align 2 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hb38636f8b33d47f4E: +Lloh4: + adrp x8, __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h9a45824596ee4331E@PAGE +Lloh5: + ldr x0, [x8, __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h9a45824596ee4331E@PAGEOFF] + ret + .loh AdrpLdr Lloh4, Lloh5 + + .p2align 2 +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17hd455b7ba208abb35E: +Lloh6: + adrp x8, __ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17hc4072be78a5a5a1bE@PAGE +Lloh7: + ldr x0, [x8, __ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17hc4072be78a5a5a1bE@PAGEOFF] + ret + .loh AdrpLdr Lloh6, Lloh7 + + .p2align 2 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h88b4b045cc9efedaE: +Lloh8: + adrp x8, __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hc8472725ff869ed6E@PAGE +Lloh9: + ldr x0, [x8, __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hc8472725ff869ed6E@PAGEOFF] + ret + .loh AdrpLdr Lloh8, Lloh9 + + .p2align 2 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3045dd61383fe46dE: +Lloh10: + adrp x8, __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h6b07e7885c87d486E@PAGE +Lloh11: + ldr x0, [x8, __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h6b07e7885c87d486E@PAGEOFF] + ret + .loh AdrpLdr Lloh10, Lloh11 + + .p2align 2 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17haef494cf629bf43fE: +Lloh12: + adrp x8, __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h23a1cd3c801b23b5E@PAGE +Lloh13: + ldr x0, [x8, __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h23a1cd3c801b23b5E@PAGEOFF] + ret + .loh AdrpLdr Lloh12, Lloh13 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h7aece036b6e79a18E: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h374ab5fe13218218E: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17hb9e340356cdf65b3E: - .quad __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h7aece036b6e79a18E +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17hac048478e2245505E: + .quad __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h374ab5fe13218218E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hb670025ce5d0664cE: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h85d1b2a3012cd21bE: .asciz "init" -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h8ea3959c8e68879fE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 3 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h8d106c43f8f016acE: + .quad __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h85d1b2a3012cd21bE + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h947eb119c81ac655E: .asciz "alloc" -__ZN24test_msg_send_static_sel7generic5do_it4NAME17hdcdd8883ef0ea4acE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 3 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h9a45824596ee4331E: + .quad __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h947eb119c81ac655E + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h0195309ec581b392E: .asciz "generic:selector:" -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h0d958a3292955764E: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 3 +__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17hc4072be78a5a5a1bE: + .quad __ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h0195309ec581b392E + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h42056f820f677913E: .asciz "performSelector:" -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h99977609f68cb784E: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 3 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hc8472725ff869ed6E: + .quad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h42056f820f677913E + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17he0c88f86b370a316E: .asciz "performSelector:" -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hb90d314a2fdc44c8E: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 3 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h6b07e7885c87d486E: + .quad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17he0c88f86b370a316E + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h3ee106e8027713a3E: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__MergedGlobals: - .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hb670025ce5d0664cE - .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h8ea3959c8e68879fE - .quad __ZN24test_msg_send_static_sel7generic5do_it4NAME17hdcdd8883ef0ea4acE - .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h0d958a3292955764E - .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h99977609f68cb784E - .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hb90d314a2fdc44c8E +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h23a1cd3c801b23b5E: + .quad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h3ee106e8027713a3E .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index cf4190209..a9b5792cf 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -4,30 +4,30 @@ .p2align 2 .code 32 _handle_with_sel: - movw r1, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha3faf09d3de71191E-(LPC0_0+8)) - movt r1, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha3faf09d3de71191E-(LPC0_0+8)) -LPC0_0: - ldr r1, [pc, r1] + push {r4, r7, lr} + add r7, sp, #4 + mov r4, r0 + bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h8840e188dc899306E + mov r1, r0 + mov r0, r4 + pop {r4, r7, lr} b _objc_msgSend .globl _handle_alloc_init .p2align 2 .code 32 _handle_alloc_init: - push {r4, r7, lr} - add r7, sp, #4 - movw r1, :lower16:(__MergedGlobals-(LPC1_0+8)) - movt r1, :upper16:(__MergedGlobals-(LPC1_0+8)) - movw r4, :lower16:(__MergedGlobals-(LPC1_1+8)) -LPC1_0: - add r1, pc, r1 - movt r4, :upper16:(__MergedGlobals-(LPC1_1+8)) -LPC1_1: - ldr r4, [pc, r4] - ldr r1, [r1, #4] + push {r4, r5, r7, lr} + add r7, sp, #8 + mov r4, r0 + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h6885ad1b2e8dc9baE + mov r5, r0 + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h58e80aa8a9adf276E + mov r1, r0 + mov r0, r4 bl _objc_msgSend - mov r1, r4 - pop {r4, r7, lr} + mov r1, r5 + pop {r4, r5, r7, lr} b _objc_msgSend .globl _use_generic @@ -36,60 +36,154 @@ LPC1_1: _use_generic: push {r4, r5, r7, lr} add r7, sp, #8 - movw r5, :lower16:(__MergedGlobals-(LPC2_0+8)) mov r4, r0 - movt r5, :upper16:(__MergedGlobals-(LPC2_0+8)) -LPC2_0: - add r5, pc, r5 - ldr r1, [r5, #12] - ldr r2, [r5, #8] + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h2bd60fb737aa3a73E + mov r5, r0 + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h099d48e890343afaE + mov r2, r0 + mov r0, r4 + mov r1, r5 bl _objc_msgSend - ldr r1, [r5, #16] + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha61194771669e257E + mov r5, r0 + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h099d48e890343afaE + mov r2, r0 mov r0, r4 - ldr r2, [r5, #8] + mov r1, r5 bl _objc_msgSend - ldr r1, [r5, #20] + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h0981e22b69330471E + mov r5, r0 + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h099d48e890343afaE + mov r2, r0 mov r0, r4 - ldr r2, [r5, #8] + mov r1, r5 pop {r4, r5, r7, lr} b _objc_msgSend + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h8840e188dc899306E: + movw r0, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h3880a6b55dd508fdE-(LPC3_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h3880a6b55dd508fdE-(LPC3_0+8)) +LPC3_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h6885ad1b2e8dc9baE: + movw r0, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17hb403c2227a4556eaE-(LPC4_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17hb403c2227a4556eaE-(LPC4_0+8)) +LPC4_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h58e80aa8a9adf276E: + movw r0, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h9a421e5e16879b72E-(LPC5_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h9a421e5e16879b72E-(LPC5_0+8)) +LPC5_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h099d48e890343afaE: + movw r0, :lower16:(__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h04ee696a1f722b85E-(LPC6_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h04ee696a1f722b85E-(LPC6_0+8)) +LPC6_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h2bd60fb737aa3a73E: + movw r0, :lower16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h67da2d48b5d85e71E-(LPC7_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h67da2d48b5d85e71E-(LPC7_0+8)) +LPC7_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha61194771669e257E: + movw r0, :lower16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hec3e445d56420b81E-(LPC8_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hec3e445d56420b81E-(LPC8_0+8)) +LPC8_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h0981e22b69330471E: + movw r0, :lower16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h8288fa628cf38b02E-(LPC9_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h8288fa628cf38b02E-(LPC9_0+8)) +LPC9_0: + ldr r0, [pc, r0] + bx lr + .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h4be0477fe73c107cE: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h374ccf94d0633775E: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha3faf09d3de71191E: - .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h4be0477fe73c107cE +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h3880a6b55dd508fdE: + .long __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h374ccf94d0633775E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hfb54835af2ec43c7E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h4549b59da4b18fa1E: .asciz "init" -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h8f551a75058466b2E: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17hb403c2227a4556eaE: + .long __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h4549b59da4b18fa1E + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h43004b1b9153fea2E: .asciz "alloc" -__ZN24test_msg_send_static_sel7generic5do_it4NAME17h3eb023dd38e4a0fcE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h9a421e5e16879b72E: + .long __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h43004b1b9153fea2E + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h76925b222cc28afaE: .asciz "generic:selector:" -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h68ef93208bbbc446E: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h04ee696a1f722b85E: + .long __ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h76925b222cc28afaE + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17hb9c72b88c79dd4b6E: .asciz "performSelector:" -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h52746d9e41762e25E: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h67da2d48b5d85e71E: + .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17hb9c72b88c79dd4b6E + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17hf7d8172547f73868E: .asciz "performSelector:" -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hc6eea12cf00dc3ecE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hec3e445d56420b81E: + .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17hf7d8172547f73868E + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h4c7e1e7c7657946eE: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__MergedGlobals: - .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hfb54835af2ec43c7E - .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h8f551a75058466b2E - .long __ZN24test_msg_send_static_sel7generic5do_it4NAME17h3eb023dd38e4a0fcE - .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h68ef93208bbbc446E - .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h52746d9e41762e25E - .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hc6eea12cf00dc3ecE +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h8288fa628cf38b02E: + .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h4c7e1e7c7657946eE .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index 8ad10ef52..956f86172 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -4,34 +4,31 @@ .p2align 2 .code 32 _handle_with_sel: - push {r7, lr} - mov r7, sp - movw r1, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h5684820907e02a7dE-(LPC0_0+8)) - movt r1, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h5684820907e02a7dE-(LPC0_0+8)) -LPC0_0: - ldr r1, [pc, r1] + push {r4, r7, lr} + add r7, sp, #4 + mov r4, r0 + bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hf2801f55a2385362E + mov r1, r0 + mov r0, r4 bl _objc_msgSend - pop {r7, pc} + pop {r4, r7, pc} .globl _handle_alloc_init .p2align 2 .code 32 _handle_alloc_init: - push {r4, r7, lr} - add r7, sp, #4 - movw r1, :lower16:(__MergedGlobals-(LPC1_0+8)) - movt r1, :upper16:(__MergedGlobals-(LPC1_0+8)) - movw r4, :lower16:(__MergedGlobals-(LPC1_1+8)) - movt r4, :upper16:(__MergedGlobals-(LPC1_1+8)) -LPC1_0: - add r1, pc, r1 -LPC1_1: - ldr r4, [pc, r4] - ldr r1, [r1, #4] + push {r4, r5, r7, lr} + add r7, sp, #8 + mov r4, r0 + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7c6d883b994711aeE + mov r5, r0 + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hac26443520976ad4E + mov r1, r0 + mov r0, r4 bl _objc_msgSend - mov r1, r4 + mov r1, r5 bl _objc_msgSend - pop {r4, r7, pc} + pop {r4, r5, r7, pc} .globl _use_generic .p2align 2 @@ -39,60 +36,154 @@ LPC1_1: _use_generic: push {r4, r5, r7, lr} add r7, sp, #8 - movw r5, :lower16:(__MergedGlobals-(LPC2_0+8)) mov r4, r0 - movt r5, :upper16:(__MergedGlobals-(LPC2_0+8)) -LPC2_0: - add r5, pc, r5 - ldr r1, [r5, #12] - ldr r2, [r5, #8] + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h945fbaf0c124eab9E + mov r5, r0 + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h376904f2996327c9E + mov r2, r0 + mov r0, r4 + mov r1, r5 bl _objc_msgSend - ldr r1, [r5, #16] + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h03112b6cac679e4bE + mov r5, r0 + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h376904f2996327c9E + mov r2, r0 mov r0, r4 - ldr r2, [r5, #8] + mov r1, r5 bl _objc_msgSend - ldr r1, [r5, #20] + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h17015ecab548b281E + mov r5, r0 + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h376904f2996327c9E + mov r2, r0 mov r0, r4 - ldr r2, [r5, #8] + mov r1, r5 bl _objc_msgSend pop {r4, r5, r7, pc} + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hf2801f55a2385362E: + movw r0, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17hce6b3d95b6bcbb85E-(LPC3_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17hce6b3d95b6bcbb85E-(LPC3_0+8)) +LPC3_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7c6d883b994711aeE: + movw r0, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h3f5f4ba3789d7134E-(LPC4_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h3f5f4ba3789d7134E-(LPC4_0+8)) +LPC4_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hac26443520976ad4E: + movw r0, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h2fb4ecd06397a741E-(LPC5_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h2fb4ecd06397a741E-(LPC5_0+8)) +LPC5_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h376904f2996327c9E: + movw r0, :lower16:(__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h54efb4374be3eaadE-(LPC6_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h54efb4374be3eaadE-(LPC6_0+8)) +LPC6_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h945fbaf0c124eab9E: + movw r0, :lower16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hd4fed20bec515f63E-(LPC7_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hd4fed20bec515f63E-(LPC7_0+8)) +LPC7_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h03112b6cac679e4bE: + movw r0, :lower16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h45fc54a9172d9f80E-(LPC8_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h45fc54a9172d9f80E-(LPC8_0+8)) +LPC8_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h17015ecab548b281E: + movw r0, :lower16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hf335b3712f9d9cf1E-(LPC9_0+8)) + movt r0, :upper16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hf335b3712f9d9cf1E-(LPC9_0+8)) +LPC9_0: + ldr r0, [pc, r0] + bx lr + .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h1b045ce2d125ff39E: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h60ee841e6e2b2881E: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h5684820907e02a7dE: - .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17h1b045ce2d125ff39E +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17hce6b3d95b6bcbb85E: + .long __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h60ee841e6e2b2881E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h4e0852fc05b66326E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17hb6f6b554e76f0d73E: .asciz "init" -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17ha3a756441bd0acebE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h3f5f4ba3789d7134E: + .long __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17hb6f6b554e76f0d73E + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17ha71a9b8e90260cc1E: .asciz "alloc" -__ZN24test_msg_send_static_sel7generic5do_it4NAME17h4c3b369edbd3aadcE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h2fb4ecd06397a741E: + .long __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17ha71a9b8e90260cc1E + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17hd2b41be12cc743f1E: .asciz "generic:selector:" -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h639b2c9b06a336e7E: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h54efb4374be3eaadE: + .long __ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17hd2b41be12cc743f1E + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17hd419b68b3cb425bbE: .asciz "performSelector:" -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hd38879191654969cE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hd4fed20bec515f63E: + .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17hd419b68b3cb425bbE + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17he119ab22173d8451E: .asciz "performSelector:" -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h558dcd606e4b144fE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h45fc54a9172d9f80E: + .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17he119ab22173d8451E + + .section __TEXT,__objc_methname,cstring_literals +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h77c600195720ccb0E: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__MergedGlobals: - .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h4e0852fc05b66326E - .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17ha3a756441bd0acebE - .long __ZN24test_msg_send_static_sel7generic5do_it4NAME17h4c3b369edbd3aadcE - .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h639b2c9b06a336e7E - .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hd38879191654969cE - .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h558dcd606e4b144fE +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hf335b3712f9d9cf1E: + .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h77c600195720ccb0E .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index 8239ea1ec..6fa910b42 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -5,15 +5,16 @@ _handle_with_sel: push ebp mov ebp, esp + push esi + push eax + mov esi, dword ptr [ebp + 8] + call __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h54173f14552949d2E sub esp, 8 - call L0$pb -L0$pb: - pop eax - sub esp, 8 - push dword ptr [eax + __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h494943a1fc7f70e1E-L0$pb] - push dword ptr [ebp + 8] + push eax + push esi call _objc_msgSend - add esp, 24 + add esp, 20 + pop esi pop ebp ret @@ -22,22 +23,23 @@ L0$pb: _handle_alloc_init: push ebp mov ebp, esp + push edi push esi - push eax - call L1$pb -L1$pb: - pop eax - mov esi, dword ptr [eax + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17he8c072a7529a9166E-L1$pb] + mov edi, dword ptr [ebp + 8] + call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h71624dd5125cec62E + mov esi, eax + call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h3fb39dd7fdd57a60E sub esp, 8 - push dword ptr [eax + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h0a9b51fcf825b29fE-L1$pb] - push dword ptr [ebp + 8] + push eax + push edi call _objc_msgSend add esp, 8 push esi push eax call _objc_msgSend - add esp, 20 + add esp, 16 pop esi + pop edi pop ebp ret @@ -48,23 +50,31 @@ _use_generic: mov ebp, esp push edi push esi - call L2$pb -L2$pb: - pop esi mov edi, dword ptr [ebp + 8] + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h04600c743bfbbabbE + mov esi, eax + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h1c856d65f822badbE sub esp, 4 - push dword ptr [esi + __ZN24test_msg_send_static_sel7generic5do_it3REF17hd7d99d1530d1aa53E-L2$pb] - push dword ptr [esi + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h92275f9ad829b8d2E-L2$pb] + push eax + push esi push edi call _objc_msgSend - add esp, 12 - push dword ptr [esi + __ZN24test_msg_send_static_sel7generic5do_it3REF17hd7d99d1530d1aa53E-L2$pb] - push dword ptr [esi + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hec8af9726862a51fE-L2$pb] + add esp, 16 + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd72d07b382ff6ef9E + mov esi, eax + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h1c856d65f822badbE + sub esp, 4 + push eax + push esi push edi call _objc_msgSend - add esp, 12 - push dword ptr [esi + __ZN24test_msg_send_static_sel7generic5do_it3REF17hd7d99d1530d1aa53E-L2$pb] - push dword ptr [esi + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h4ca08a2f79beb685E-L2$pb] + add esp, 16 + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd8ba6c1819f0e9e4E + mov esi, eax + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h1c856d65f822badbE + sub esp, 4 + push eax + push esi push edi call _objc_msgSend add esp, 16 @@ -73,67 +83,144 @@ L2$pb: pop ebp ret + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h54173f14552949d2E: + push ebp + mov ebp, esp + call L3$pb +L3$pb: + pop eax + mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h5e1ebbc4849be566E-L3$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h71624dd5125cec62E: + push ebp + mov ebp, esp + call L4$pb +L4$pb: + pop eax + mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17ha2b6d0788f464ae7E-L4$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h3fb39dd7fdd57a60E: + push ebp + mov ebp, esp + call L5$pb +L5$pb: + pop eax + mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h361219fab0d04681E-L5$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h1c856d65f822badbE: + push ebp + mov ebp, esp + call L6$pb +L6$pb: + pop eax + mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h2b1b65d00f097392E-L6$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h04600c743bfbbabbE: + push ebp + mov ebp, esp + call L7$pb +L7$pb: + pop eax + mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hc08656a638ae4ef4E-L7$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd72d07b382ff6ef9E: + push ebp + mov ebp, esp + call L8$pb +L8$pb: + pop eax + mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h0e7e70309040c696E-L8$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd8ba6c1819f0e9e4E: + push ebp + mov ebp, esp + call L9$pb +L9$pb: + pop eax + mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h48d6ef0c68f60e9aE-L9$pb] + pop ebp + ret + .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17heabddaa6f4c9743dE: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17ha22895543d278f79E: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17h494943a1fc7f70e1E: - .long __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17heabddaa6f4c9743dE +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h5e1ebbc4849be566E: + .long __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17ha22895543d278f79E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17ha7bfa87c9398e80eE: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17hb75868d081570b88E: .asciz "init" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17he8c072a7529a9166E: - .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17ha7bfa87c9398e80eE +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17ha2b6d0788f464ae7E: + .long __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17hb75868d081570b88E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h91c65e3829956b99E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h4e50417aff254a08E: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17h0a9b51fcf825b29fE: - .long __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h91c65e3829956b99E +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h361219fab0d04681E: + .long __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h4e50417aff254a08E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel7generic5do_it4NAME17h327a9f2556c00325E: +__ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h4772d8f4b62a3fffE: .asciz "generic:selector:" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN24test_msg_send_static_sel7generic5do_it3REF17hd7d99d1530d1aa53E: - .long __ZN24test_msg_send_static_sel7generic5do_it4NAME17h327a9f2556c00325E +__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h2b1b65d00f097392E: + .long __ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h4772d8f4b62a3fffE .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hbf99e9b9cc3551bbE: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17had8c28baa7c5a8fbE: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN24test_msg_send_static_sel11use_generic5do_it3REF17h92275f9ad829b8d2E: - .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hbf99e9b9cc3551bbE +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hc08656a638ae4ef4E: + .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17had8c28baa7c5a8fbE .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h38dee9b38eec502dE: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h2832cf14fc32e7c8E: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN24test_msg_send_static_sel11use_generic5do_it3REF17hec8af9726862a51fE: - .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h38dee9b38eec502dE +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h0e7e70309040c696E: + .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h2832cf14fc32e7c8E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h21b73c7a226720e8E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h306e66092660f4c2E: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN24test_msg_send_static_sel11use_generic5do_it3REF17h4ca08a2f79beb685E: - .long __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h21b73c7a226720e8E +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h48d6ef0c68f60e9aE: + .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h306e66092660f4c2E .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index 965c66e44..2a1c98d33 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -5,7 +5,14 @@ _handle_with_sel: push rbp mov rbp, rsp - mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha4d87ecf6e77d3d8E] + push rbx + push rax + mov rbx, rdi + call __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hc26d924341981882E + mov rdi, rbx + mov rsi, rax + add rsp, 8 + pop rbx pop rbp jmp _objc_msgSend @@ -14,15 +21,19 @@ _handle_with_sel: _handle_alloc_init: push rbp mov rbp, rsp + push r14 push rbx - push rax - mov rbx, qword ptr [rip + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hf24926dd82f1328eE] - mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hba215860b5dbdc32E] + mov rbx, rdi + call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h54157f2130f0b136E + mov r14, rax + call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h9609094b6546c715E + mov rdi, rbx + mov rsi, rax call _objc_msgSend mov rdi, rax - mov rsi, rbx - add rsp, 8 + mov rsi, r14 pop rbx + pop r14 pop rbp jmp _objc_msgSend @@ -31,85 +42,151 @@ _handle_alloc_init: _use_generic: push rbp mov rbp, rsp + push r14 push rbx - push rax mov rbx, rdi - mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17h845175a6204d5101E] - mov rdx, qword ptr [rip + __ZN24test_msg_send_static_sel7generic5do_it3REF17h4fb667c67ff2fee7E] + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h9a0f8d2843b3161bE + mov r14, rax + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h47b00e7465514baaE + mov rdi, rbx + mov rsi, r14 + mov rdx, rax call _objc_msgSend - mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17hc2064b35e83288e1E] - mov rdx, qword ptr [rip + __ZN24test_msg_send_static_sel7generic5do_it3REF17h4fb667c67ff2fee7E] + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h4b3385059b35f065E + mov r14, rax + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h47b00e7465514baaE mov rdi, rbx + mov rsi, r14 + mov rdx, rax call _objc_msgSend - mov rsi, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic5do_it3REF17ha259adabc85c9a3dE] - mov rdx, qword ptr [rip + __ZN24test_msg_send_static_sel7generic5do_it3REF17h4fb667c67ff2fee7E] + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc3bc04da3b46a52cE + mov r14, rax + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h47b00e7465514baaE mov rdi, rbx - add rsp, 8 + mov rsi, r14 + mov rdx, rax pop rbx + pop r14 pop rbp jmp _objc_msgSend + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hc26d924341981882E: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h389d6e8b38dbcd5aE] + pop rbp + ret + + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h54157f2130f0b136E: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17hcc4dca8f09f1c5b0E] + pop rbp + ret + + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h9609094b6546c715E: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h7ea13d63769dc5d9E] + pop rbp + ret + + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h47b00e7465514baaE: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17hc2551bb3b45b0465E] + pop rbp + ret + + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h9a0f8d2843b3161bE: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h0720ebf54b124315E] + pop rbp + ret + + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h4b3385059b35f065E: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h119b0b79569e4509E] + pop rbp + ret + + .p2align 4, 0x90 +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc3bc04da3b46a52cE: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h79f9a2e492042379E] + pop rbp + ret + .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17hebe8ea07b55a546cE: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h203f5fb6d284e62aE: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN24test_msg_send_static_sel15handle_with_sel5do_it3REF17ha4d87ecf6e77d3d8E: - .quad __ZN24test_msg_send_static_sel15handle_with_sel5do_it4NAME17hebe8ea07b55a546cE +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h389d6e8b38dbcd5aE: + .quad __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h203f5fb6d284e62aE .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hbe28dbabc7e7cfb8E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h9a964ceeb1e3c851E: .asciz "init" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hf24926dd82f1328eE: - .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17hbe28dbabc7e7cfb8E +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17hcc4dca8f09f1c5b0E: + .quad __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h9a964ceeb1e3c851E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h51e1533dabc0a607E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h76dc0bdfc53c4746E: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN24test_msg_send_static_sel17handle_alloc_init5do_it3REF17hba215860b5dbdc32E: - .quad __ZN24test_msg_send_static_sel17handle_alloc_init5do_it4NAME17h51e1533dabc0a607E +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h7ea13d63769dc5d9E: + .quad __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h76dc0bdfc53c4746E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel7generic5do_it4NAME17h2f8048ba9a24f713E: +__ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h2b80e03389f4de51E: .asciz "generic:selector:" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN24test_msg_send_static_sel7generic5do_it3REF17h4fb667c67ff2fee7E: - .quad __ZN24test_msg_send_static_sel7generic5do_it4NAME17h2f8048ba9a24f713E +__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17hc2551bb3b45b0465E: + .quad __ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h2b80e03389f4de51E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hbb02489017cc6d09E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h325389a1196cfbceE: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN24test_msg_send_static_sel11use_generic5do_it3REF17h845175a6204d5101E: - .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17hbb02489017cc6d09E +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h0720ebf54b124315E: + .quad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h325389a1196cfbceE .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h7596ed8d4d33ce59E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h1ff5ca3b6260f1b5E: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN24test_msg_send_static_sel11use_generic5do_it3REF17hc2064b35e83288e1E: - .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17h7596ed8d4d33ce59E +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h119b0b79569e4509E: + .quad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h1ff5ca3b6260f1b5E .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic5do_it4NAME17he928f70016dd8da3E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h36b925d060e0191fE: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN24test_msg_send_static_sel11use_generic5do_it3REF17ha259adabc85c9a3dE: - .quad __ZN24test_msg_send_static_sel11use_generic5do_it4NAME17he928f70016dd8da3E +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h79f9a2e492042379E: + .quad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h36b925d060e0191fE .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index 256c1678e..11eea486e 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -2,134 +2,206 @@ .globl _get_sel .p2align 2 _get_sel: + b __ZN15test_static_sel7get_sel22objc_static_workaround17h13c8afaaf6336561E + + .globl _get_same_sel + .p2align 2 +_get_same_sel: + b __ZN15test_static_sel12get_same_sel22objc_static_workaround17hcc291441d7e8a59fE + + .globl _get_common + .p2align 2 +_get_common: + b __ZN15test_static_sel10get_common22objc_static_workaround17hce555de02adf8700E + + .globl _get_different_sel + .p2align 2 +_get_different_sel: + b __ZN15test_static_sel17get_different_sel22objc_static_workaround17hfa539aa3b979256cE + + .globl _unused_sel + .p2align 2 +_unused_sel: + b __ZN15test_static_sel10unused_sel22objc_static_workaround17h0a7026e7e912a1c5E + + .globl _use_fns + .p2align 2 +_use_fns: + stp x22, x21, [sp, #-48]! + stp x20, x19, [sp, #16] + stp x29, x30, [sp, #32] + add x29, sp, #32 + mov x19, x8 + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h13c8afaaf6336561E + mov x20, x0 + bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17hcc291441d7e8a59fE + mov x21, x0 + bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17hfa539aa3b979256cE + mov x22, x0 + bl __ZN15test_static_sel7use_fns22objc_static_workaround17h5f244955651662d0E + stp x20, x21, [x19] + stp x22, x0, [x19, #16] + ldp x29, x30, [sp, #32] + ldp x20, x19, [sp, #16] + ldp x22, x21, [sp], #48 + ret + + .globl _use_same_twice + .p2align 2 +_use_same_twice: + stp x20, x19, [sp, #-32]! + stp x29, x30, [sp, #16] + add x29, sp, #16 + mov x19, x8 + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h13c8afaaf6336561E + mov x20, x0 + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h13c8afaaf6336561E + stp x20, x0, [x19] + ldp x29, x30, [sp, #16] + ldp x20, x19, [sp], #32 + ret + + .globl _use_in_loop + .p2align 2 +_use_in_loop: + stp x20, x19, [sp, #-32]! + stp x29, x30, [sp, #16] + add x29, sp, #16 + cbz x0, LBB7_3 + mov x19, x0 +LBB7_2: + bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17h835e149ff2fe6f9bE + subs x19, x19, #1 + b.ne LBB7_2 +LBB7_3: + ldp x29, x30, [sp, #16] + ldp x20, x19, [sp], #32 + ret + + .p2align 2 +__ZN15test_static_sel7get_sel22objc_static_workaround17h13c8afaaf6336561E: Lloh0: - adrp x8, __MergedGlobals@PAGE + adrp x8, __ZN15test_static_sel7get_sel22objc_static_workaround3REF17hb6b95604312c057fE@PAGE Lloh1: - ldr x0, [x8, __MergedGlobals@PAGEOFF] + ldr x0, [x8, __ZN15test_static_sel7get_sel22objc_static_workaround3REF17hb6b95604312c057fE@PAGEOFF] ret .loh AdrpLdr Lloh0, Lloh1 - .globl _get_same_sel .p2align 2 -_get_same_sel: +__ZN15test_static_sel12get_same_sel22objc_static_workaround17hcc291441d7e8a59fE: Lloh2: - adrp x8, __MergedGlobals@PAGE+8 + adrp x8, __ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hf2d20958868b8e47E@PAGE Lloh3: - ldr x0, [x8, __MergedGlobals@PAGEOFF+8] + ldr x0, [x8, __ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hf2d20958868b8e47E@PAGEOFF] ret .loh AdrpLdr Lloh2, Lloh3 - .globl _get_common .p2align 2 -_get_common: +__ZN15test_static_sel10get_common22objc_static_workaround17hce555de02adf8700E: Lloh4: - adrp x8, __ZN15test_static_sel10get_common5do_it3REF17h04d7420870ee0084E@PAGE + adrp x8, __ZN15test_static_sel10get_common22objc_static_workaround3REF17hbc6679a9cff6619cE@PAGE Lloh5: - ldr x0, [x8, __ZN15test_static_sel10get_common5do_it3REF17h04d7420870ee0084E@PAGEOFF] + ldr x0, [x8, __ZN15test_static_sel10get_common22objc_static_workaround3REF17hbc6679a9cff6619cE@PAGEOFF] ret .loh AdrpLdr Lloh4, Lloh5 - .globl _get_different_sel .p2align 2 -_get_different_sel: +__ZN15test_static_sel17get_different_sel22objc_static_workaround17hfa539aa3b979256cE: Lloh6: - adrp x8, __MergedGlobals@PAGE+16 + adrp x8, __ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17hdb6933336b563c79E@PAGE Lloh7: - ldr x0, [x8, __MergedGlobals@PAGEOFF+16] + ldr x0, [x8, __ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17hdb6933336b563c79E@PAGEOFF] ret .loh AdrpLdr Lloh6, Lloh7 - .globl _unused_sel .p2align 2 -_unused_sel: +__ZN15test_static_sel10unused_sel22objc_static_workaround17h0a7026e7e912a1c5E: Lloh8: - adrp x8, __ZN15test_static_sel10unused_sel5do_it3REF17h08e2222b7f31b61dE@PAGE + adrp x8, __ZN15test_static_sel10unused_sel22objc_static_workaround3REF17h40777f2046a98be5E@PAGE Lloh9: - ldr xzr, [x8, __ZN15test_static_sel10unused_sel5do_it3REF17h08e2222b7f31b61dE@PAGEOFF] + ldr xzr, [x8, __ZN15test_static_sel10unused_sel22objc_static_workaround3REF17h40777f2046a98be5E@PAGEOFF] ret .loh AdrpLdr Lloh8, Lloh9 - .globl _use_fns .p2align 2 -_use_fns: +__ZN15test_static_sel7use_fns22objc_static_workaround17h5f244955651662d0E: Lloh10: - adrp x9, __MergedGlobals@PAGE + adrp x8, __ZN15test_static_sel7use_fns22objc_static_workaround3REF17hdaf81138d104b376E@PAGE Lloh11: - add x9, x9, __MergedGlobals@PAGEOFF - ldr x10, [x9] - ldr x11, [x9, #8] - ldr x12, [x9, #16] - ldr x9, [x9, #24] - stp x10, x11, [x8] - stp x12, x9, [x8, #16] + ldr x0, [x8, __ZN15test_static_sel7use_fns22objc_static_workaround3REF17hdaf81138d104b376E@PAGEOFF] ret - .loh AdrpAdd Lloh10, Lloh11 + .loh AdrpLdr Lloh10, Lloh11 - .globl _use_same_twice .p2align 2 -_use_same_twice: - adrp x9, __MergedGlobals@PAGE - ldr x10, [x9, __MergedGlobals@PAGEOFF] - ldr x9, [x9, __MergedGlobals@PAGEOFF] - stp x10, x9, [x8] - ret - - .globl _use_in_loop - .p2align 2 -_use_in_loop: - cbz x0, LBB7_3 - adrp x8, __ZN15test_static_sel11use_in_loop5do_it3REF17hdd95e73e2d016191E@PAGE -LBB7_2: - ldr xzr, [x8, __ZN15test_static_sel11use_in_loop5do_it3REF17hdd95e73e2d016191E@PAGEOFF] - subs x0, x0, #1 - b.ne LBB7_2 -LBB7_3: +__ZN15test_static_sel11use_in_loop22objc_static_workaround17h835e149ff2fe6f9bE: +Lloh12: + adrp x8, __ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h31ccfb6b27d8c440E@PAGE +Lloh13: + ldr xzr, [x8, __ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h31ccfb6b27d8c440E@PAGEOFF] ret + .loh AdrpLdr Lloh12, Lloh13 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel5do_it4NAME17hdceeb5c3708f29bfE: +__ZN15test_static_sel7get_sel22objc_static_workaround4NAME17hdc8765740ecc3d11E: .asciz "simple" -__ZN15test_static_sel12get_same_sel5do_it4NAME17h4e648ed7466261caE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 3 +__ZN15test_static_sel7get_sel22objc_static_workaround3REF17hb6b95604312c057fE: + .quad __ZN15test_static_sel7get_sel22objc_static_workaround4NAME17hdc8765740ecc3d11E + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17hf316d81d46a5ef66E: .asciz "simple" -__ZN15test_static_sel10get_common5do_it4NAME17hfd368362e2d25fffE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 3 +__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hf2d20958868b8e47E: + .quad __ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17hf316d81d46a5ef66E + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel10get_common22objc_static_workaround4NAME17h455f306cf0f80e51E: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN15test_static_sel10get_common5do_it3REF17h04d7420870ee0084E: - .quad __ZN15test_static_sel10get_common5do_it4NAME17hfd368362e2d25fffE +__ZN15test_static_sel10get_common22objc_static_workaround3REF17hbc6679a9cff6619cE: + .quad __ZN15test_static_sel10get_common22objc_static_workaround4NAME17h455f306cf0f80e51E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel5do_it4NAME17h073785bcd4aaf0b5E: +__ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17hbce34864cd8eb8ffE: .asciz "i:am:different:" -__ZN15test_static_sel10unused_sel5do_it4NAME17h0804808ebe10326eE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 3 +__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17hdb6933336b563c79E: + .quad __ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17hbce34864cd8eb8ffE + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17hfc0e0c35212550d0E: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN15test_static_sel10unused_sel5do_it3REF17h08e2222b7f31b61dE: - .quad __ZN15test_static_sel10unused_sel5do_it4NAME17h0804808ebe10326eE +__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17h40777f2046a98be5E: + .quad __ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17hfc0e0c35212550d0E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns5do_it4NAME17h6498c06488ad7ff3E: +__ZN15test_static_sel7use_fns22objc_static_workaround4NAME17h33067d740a4050feE: .asciz "fourthSel" -__ZN15test_static_sel11use_in_loop5do_it4NAME17hc07464c5efd1d06bE: - .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN15test_static_sel11use_in_loop5do_it3REF17hdd95e73e2d016191E: - .quad __ZN15test_static_sel11use_in_loop5do_it4NAME17hc07464c5efd1d06bE +__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hdaf81138d104b376E: + .quad __ZN15test_static_sel7use_fns22objc_static_workaround4NAME17h33067d740a4050feE + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17h7946000586832262E: + .asciz "loopedSelector" + + .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__MergedGlobals: - .quad __ZN15test_static_sel7get_sel5do_it4NAME17hdceeb5c3708f29bfE - .quad __ZN15test_static_sel12get_same_sel5do_it4NAME17h4e648ed7466261caE - .quad __ZN15test_static_sel17get_different_sel5do_it4NAME17h073785bcd4aaf0b5E - .quad __ZN15test_static_sel7use_fns5do_it4NAME17h6498c06488ad7ff3E +__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h31ccfb6b27d8c440E: + .quad __ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17h7946000586832262E .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index c3fbbdaba..503ba6b38 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -4,147 +4,210 @@ .p2align 2 .code 32 _get_sel: - movw r0, :lower16:(__MergedGlobals-(LPC0_0+8)) - movt r0, :upper16:(__MergedGlobals-(LPC0_0+8)) -LPC0_0: - ldr r0, [pc, r0] - bx lr + b __ZN15test_static_sel7get_sel22objc_static_workaround17h72e7bc422453dd4bE .globl _get_same_sel .p2align 2 .code 32 _get_same_sel: - movw r0, :lower16:(__MergedGlobals-(LPC1_0+8)) - movt r0, :upper16:(__MergedGlobals-(LPC1_0+8)) -LPC1_0: - add r0, pc, r0 - ldr r0, [r0, #4] - bx lr + b __ZN15test_static_sel12get_same_sel22objc_static_workaround17hd2469b9e7fb1c0f2E .globl _get_common .p2align 2 .code 32 _get_common: - movw r0, :lower16:(__ZN15test_static_sel10get_common5do_it3REF17h88c0b345ea50045dE-(LPC2_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10get_common5do_it3REF17h88c0b345ea50045dE-(LPC2_0+8)) -LPC2_0: - ldr r0, [pc, r0] - bx lr + b __ZN15test_static_sel10get_common22objc_static_workaround17h3f794ff9f42acf9eE .globl _get_different_sel .p2align 2 .code 32 _get_different_sel: - movw r0, :lower16:(__MergedGlobals-(LPC3_0+8)) - movt r0, :upper16:(__MergedGlobals-(LPC3_0+8)) -LPC3_0: - add r0, pc, r0 - ldr r0, [r0, #8] - bx lr + b __ZN15test_static_sel17get_different_sel22objc_static_workaround17h01062977b636a32dE .globl _unused_sel .p2align 2 .code 32 _unused_sel: - movw r0, :lower16:(__ZN15test_static_sel10unused_sel5do_it3REF17h3456b073979c4c05E-(LPC4_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10unused_sel5do_it3REF17h3456b073979c4c05E-(LPC4_0+8)) -LPC4_0: - ldr r0, [pc, r0] - bx lr + b __ZN15test_static_sel10unused_sel22objc_static_workaround17h6da711f1e3b49352E .globl _use_fns .p2align 2 .code 32 _use_fns: - movw r1, :lower16:(__MergedGlobals-(LPC5_0+8)) - movt r1, :upper16:(__MergedGlobals-(LPC5_0+8)) - movw r2, :lower16:(__MergedGlobals-(LPC5_1+8)) - movt r2, :upper16:(__MergedGlobals-(LPC5_1+8)) -LPC5_0: - add r1, pc, r1 -LPC5_1: - ldr r2, [pc, r2] - ldr r3, [r1, #4] - ldr r9, [r1, #8] - ldr r1, [r1, #12] - stm r0, {r2, r3, r9} - str r1, [r0, #12] - bx lr + push {r4, r5, r6, r7, lr} + add r7, sp, #12 + push {r8} + mov r4, r0 + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h72e7bc422453dd4bE + mov r8, r0 + bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17hd2469b9e7fb1c0f2E + mov r6, r0 + bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h01062977b636a32dE + mov r5, r0 + bl __ZN15test_static_sel7use_fns22objc_static_workaround17h0114609dfd50ccc2E + str r8, [r4] + str r6, [r4, #4] + str r5, [r4, #8] + str r0, [r4, #12] + pop {r8} + pop {r4, r5, r6, r7, pc} .globl _use_same_twice .p2align 2 .code 32 _use_same_twice: - movw r2, :lower16:(__MergedGlobals-(LPC6_0+8)) - movt r2, :upper16:(__MergedGlobals-(LPC6_0+8)) -LPC6_0: - ldr r2, [pc, r2] - movw r3, :lower16:(__MergedGlobals-(LPC6_1+8)) - movt r3, :upper16:(__MergedGlobals-(LPC6_1+8)) -LPC6_1: - ldr r3, [pc, r3] - strd r2, r3, [r0] - bx lr + push {r4, r7, lr} + add r7, sp, #4 + push {r8} + mov r4, r0 + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h72e7bc422453dd4bE + mov r8, r0 + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h72e7bc422453dd4bE + mov r9, r0 + strd r8, r9, [r4] + pop {r8} + pop {r4, r7, pc} .globl _use_in_loop .p2align 2 .code 32 _use_in_loop: + push {r4, r7, lr} + add r7, sp, #4 cmp r0, #0 - bxeq lr + popeq {r4, r7, pc} LBB7_1: - movw r1, :lower16:(__ZN15test_static_sel11use_in_loop5do_it3REF17ha9a536f99ddb0372E-(LPC7_0+8)) - subs r0, r0, #1 - movt r1, :upper16:(__ZN15test_static_sel11use_in_loop5do_it3REF17ha9a536f99ddb0372E-(LPC7_0+8)) -LPC7_0: - ldr r1, [pc, r1] - bne LBB7_1 + mov r4, r0 +LBB7_2: + bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17hfddcd2cc792b0ea4E + subs r4, r4, #1 + bne LBB7_2 + pop {r4, r7, pc} + + .p2align 2 + .code 32 +__ZN15test_static_sel7get_sel22objc_static_workaround17h72e7bc422453dd4bE: + movw r0, :lower16:(__ZN15test_static_sel7get_sel22objc_static_workaround3REF17haed2d29deaa594a5E-(LPC8_0+8)) + movt r0, :upper16:(__ZN15test_static_sel7get_sel22objc_static_workaround3REF17haed2d29deaa594a5E-(LPC8_0+8)) +LPC8_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN15test_static_sel12get_same_sel22objc_static_workaround17hd2469b9e7fb1c0f2E: + movw r0, :lower16:(__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17ha96ad30cde590111E-(LPC9_0+8)) + movt r0, :upper16:(__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17ha96ad30cde590111E-(LPC9_0+8)) +LPC9_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN15test_static_sel10get_common22objc_static_workaround17h3f794ff9f42acf9eE: + movw r0, :lower16:(__ZN15test_static_sel10get_common22objc_static_workaround3REF17h9dd8d669df75f145E-(LPC10_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10get_common22objc_static_workaround3REF17h9dd8d669df75f145E-(LPC10_0+8)) +LPC10_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN15test_static_sel17get_different_sel22objc_static_workaround17h01062977b636a32dE: + movw r0, :lower16:(__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17hfbfc6a5f52210736E-(LPC11_0+8)) + movt r0, :upper16:(__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17hfbfc6a5f52210736E-(LPC11_0+8)) +LPC11_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN15test_static_sel10unused_sel22objc_static_workaround17h6da711f1e3b49352E: + movw r0, :lower16:(__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17h3f6ed3f067235ff3E-(LPC12_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17h3f6ed3f067235ff3E-(LPC12_0+8)) +LPC12_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN15test_static_sel7use_fns22objc_static_workaround17h0114609dfd50ccc2E: + movw r0, :lower16:(__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hd9b45383a5f14d7fE-(LPC13_0+8)) + movt r0, :upper16:(__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hd9b45383a5f14d7fE-(LPC13_0+8)) +LPC13_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN15test_static_sel11use_in_loop22objc_static_workaround17hfddcd2cc792b0ea4E: + movw r0, :lower16:(__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h4273a0a2541d4d90E-(LPC14_0+8)) + movt r0, :upper16:(__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h4273a0a2541d4d90E-(LPC14_0+8)) +LPC14_0: + ldr r0, [pc, r0] bx lr .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel5do_it4NAME17h2b52ef278f5b8d4dE: +__ZN15test_static_sel7get_sel22objc_static_workaround4NAME17ha3f8077c962753c6E: .asciz "simple" -__ZN15test_static_sel12get_same_sel5do_it4NAME17h50d386fa227c6606E: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN15test_static_sel7get_sel22objc_static_workaround3REF17haed2d29deaa594a5E: + .long __ZN15test_static_sel7get_sel22objc_static_workaround4NAME17ha3f8077c962753c6E + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17h414b71130d291bcbE: .asciz "simple" -__ZN15test_static_sel10get_common5do_it4NAME17h179213a48bde1076E: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17ha96ad30cde590111E: + .long __ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17h414b71130d291bcbE + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel10get_common22objc_static_workaround4NAME17h59407464b3ae7e14E: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel10get_common5do_it3REF17h88c0b345ea50045dE: - .long __ZN15test_static_sel10get_common5do_it4NAME17h179213a48bde1076E +__ZN15test_static_sel10get_common22objc_static_workaround3REF17h9dd8d669df75f145E: + .long __ZN15test_static_sel10get_common22objc_static_workaround4NAME17h59407464b3ae7e14E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel5do_it4NAME17h6f683b1d018a42d4E: +__ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17hf259bc1c6d7a8474E: .asciz "i:am:different:" -__ZN15test_static_sel10unused_sel5do_it4NAME17h52310f431dc7fa86E: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17hfbfc6a5f52210736E: + .long __ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17hf259bc1c6d7a8474E + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17h524d9abe91019351E: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel10unused_sel5do_it3REF17h3456b073979c4c05E: - .long __ZN15test_static_sel10unused_sel5do_it4NAME17h52310f431dc7fa86E +__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17h3f6ed3f067235ff3E: + .long __ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17h524d9abe91019351E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns5do_it4NAME17h00d062c3767274a5E: +__ZN15test_static_sel7use_fns22objc_static_workaround4NAME17he05a8a8a090de466E: .asciz "fourthSel" -__ZN15test_static_sel11use_in_loop5do_it4NAME17h212e17b8e008601dE: - .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel11use_in_loop5do_it3REF17ha9a536f99ddb0372E: - .long __ZN15test_static_sel11use_in_loop5do_it4NAME17h212e17b8e008601dE +__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hd9b45383a5f14d7fE: + .long __ZN15test_static_sel7use_fns22objc_static_workaround4NAME17he05a8a8a090de466E + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17hd8d7210562c66839E: + .asciz "loopedSelector" + + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__MergedGlobals: - .long __ZN15test_static_sel7get_sel5do_it4NAME17h2b52ef278f5b8d4dE - .long __ZN15test_static_sel12get_same_sel5do_it4NAME17h50d386fa227c6606E - .long __ZN15test_static_sel17get_different_sel5do_it4NAME17h6f683b1d018a42d4E - .long __ZN15test_static_sel7use_fns5do_it4NAME17h00d062c3767274a5E +__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h4273a0a2541d4d90E: + .long __ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17hd8d7210562c66839E .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index 71b59abbc..e8b66bbb0 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -4,147 +4,225 @@ .p2align 2 .code 32 _get_sel: - movw r0, :lower16:(__MergedGlobals-(LPC0_0+8)) - movt r0, :upper16:(__MergedGlobals-(LPC0_0+8)) -LPC0_0: - ldr r0, [pc, r0] - bx lr + push {r7, lr} + mov r7, sp + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h727796eb777ca212E + pop {r7, pc} .globl _get_same_sel .p2align 2 .code 32 _get_same_sel: - movw r0, :lower16:(__MergedGlobals-(LPC1_0+8)) - movt r0, :upper16:(__MergedGlobals-(LPC1_0+8)) -LPC1_0: - add r0, pc, r0 - ldr r0, [r0, #4] - bx lr + push {r7, lr} + mov r7, sp + bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h05bab5e52e062a47E + pop {r7, pc} .globl _get_common .p2align 2 .code 32 _get_common: - movw r0, :lower16:(__ZN15test_static_sel10get_common5do_it3REF17h46c060c4347a38e4E-(LPC2_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10get_common5do_it3REF17h46c060c4347a38e4E-(LPC2_0+8)) -LPC2_0: - ldr r0, [pc, r0] - bx lr + push {r7, lr} + mov r7, sp + bl __ZN15test_static_sel10get_common22objc_static_workaround17hd33621f07152712dE + pop {r7, pc} .globl _get_different_sel .p2align 2 .code 32 _get_different_sel: - movw r0, :lower16:(__MergedGlobals-(LPC3_0+8)) - movt r0, :upper16:(__MergedGlobals-(LPC3_0+8)) -LPC3_0: - add r0, pc, r0 - ldr r0, [r0, #8] - bx lr + push {r7, lr} + mov r7, sp + bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h20e00ed4cf62ec6cE + pop {r7, pc} .globl _unused_sel .p2align 2 .code 32 _unused_sel: - movw r0, :lower16:(__ZN15test_static_sel10unused_sel5do_it3REF17h7b1fdae0240cf991E-(LPC4_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10unused_sel5do_it3REF17h7b1fdae0240cf991E-(LPC4_0+8)) -LPC4_0: - ldr r0, [pc, r0] - bx lr + push {r7, lr} + mov r7, sp + bl __ZN15test_static_sel10unused_sel22objc_static_workaround17hd8ba138112e5d612E + pop {r7, pc} .globl _use_fns .p2align 2 .code 32 _use_fns: - movw r1, :lower16:(__MergedGlobals-(LPC5_0+8)) - movt r1, :upper16:(__MergedGlobals-(LPC5_0+8)) - movw r2, :lower16:(__MergedGlobals-(LPC5_1+8)) - movt r2, :upper16:(__MergedGlobals-(LPC5_1+8)) -LPC5_0: - add r1, pc, r1 -LPC5_1: - ldr r2, [pc, r2] - ldr r3, [r1, #4] - ldr r9, [r1, #8] - ldr r1, [r1, #12] - stm r0, {r2, r3, r9} - str r1, [r0, #12] - bx lr + push {r4, r5, r6, r7, lr} + add r7, sp, #12 + push {r8} + mov r4, r0 + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h727796eb777ca212E + mov r8, r0 + bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h05bab5e52e062a47E + mov r6, r0 + bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h20e00ed4cf62ec6cE + mov r5, r0 + bl __ZN15test_static_sel7use_fns22objc_static_workaround17h613888fa0e7e36bdE + str r8, [r4] + str r6, [r4, #4] + str r5, [r4, #8] + str r0, [r4, #12] + pop {r8} + pop {r4, r5, r6, r7, pc} .globl _use_same_twice .p2align 2 .code 32 _use_same_twice: - movw r2, :lower16:(__MergedGlobals-(LPC6_0+8)) - movt r2, :upper16:(__MergedGlobals-(LPC6_0+8)) -LPC6_0: - ldr r2, [pc, r2] - movw r3, :lower16:(__MergedGlobals-(LPC6_1+8)) - movt r3, :upper16:(__MergedGlobals-(LPC6_1+8)) -LPC6_1: - ldr r3, [pc, r3] - strd r2, r3, [r0] - bx lr + push {r4, r7, lr} + add r7, sp, #4 + push {r8} + mov r4, r0 + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h727796eb777ca212E + mov r8, r0 + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h727796eb777ca212E + mov r9, r0 + strd r8, r9, [r4] + pop {r8} + pop {r4, r7, pc} .globl _use_in_loop .p2align 2 .code 32 _use_in_loop: + push {r4, r7, lr} + add r7, sp, #4 cmp r0, #0 - bxeq lr + popeq {r4, r7, pc} LBB7_1: - movw r1, :lower16:(__ZN15test_static_sel11use_in_loop5do_it3REF17h5c831b42249b63fbE-(LPC7_0+8)) - subs r0, r0, #1 - movt r1, :upper16:(__ZN15test_static_sel11use_in_loop5do_it3REF17h5c831b42249b63fbE-(LPC7_0+8)) -LPC7_0: - ldr r1, [pc, r1] - bne LBB7_1 + mov r4, r0 +LBB7_2: + bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17h806742d54569416eE + subs r4, r4, #1 + bne LBB7_2 + pop {r4, r7, pc} + + .p2align 2 + .code 32 +__ZN15test_static_sel7get_sel22objc_static_workaround17h727796eb777ca212E: + movw r0, :lower16:(__ZN15test_static_sel7get_sel22objc_static_workaround3REF17hefeb1efa701445a4E-(LPC8_0+8)) + movt r0, :upper16:(__ZN15test_static_sel7get_sel22objc_static_workaround3REF17hefeb1efa701445a4E-(LPC8_0+8)) +LPC8_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN15test_static_sel12get_same_sel22objc_static_workaround17h05bab5e52e062a47E: + movw r0, :lower16:(__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hc58f200ac0b74570E-(LPC9_0+8)) + movt r0, :upper16:(__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hc58f200ac0b74570E-(LPC9_0+8)) +LPC9_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN15test_static_sel10get_common22objc_static_workaround17hd33621f07152712dE: + movw r0, :lower16:(__ZN15test_static_sel10get_common22objc_static_workaround3REF17h11bf08c1651e11acE-(LPC10_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10get_common22objc_static_workaround3REF17h11bf08c1651e11acE-(LPC10_0+8)) +LPC10_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN15test_static_sel17get_different_sel22objc_static_workaround17h20e00ed4cf62ec6cE: + movw r0, :lower16:(__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17h31f43ec056144797E-(LPC11_0+8)) + movt r0, :upper16:(__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17h31f43ec056144797E-(LPC11_0+8)) +LPC11_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN15test_static_sel10unused_sel22objc_static_workaround17hd8ba138112e5d612E: + movw r0, :lower16:(__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hbfa5418e3430bd57E-(LPC12_0+8)) + movt r0, :upper16:(__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hbfa5418e3430bd57E-(LPC12_0+8)) +LPC12_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN15test_static_sel7use_fns22objc_static_workaround17h613888fa0e7e36bdE: + movw r0, :lower16:(__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hd98abf55861d9c7eE-(LPC13_0+8)) + movt r0, :upper16:(__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hd98abf55861d9c7eE-(LPC13_0+8)) +LPC13_0: + ldr r0, [pc, r0] + bx lr + + .p2align 2 + .code 32 +__ZN15test_static_sel11use_in_loop22objc_static_workaround17h806742d54569416eE: + movw r0, :lower16:(__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h3be3974baf782dd5E-(LPC14_0+8)) + movt r0, :upper16:(__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h3be3974baf782dd5E-(LPC14_0+8)) +LPC14_0: + ldr r0, [pc, r0] bx lr .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel5do_it4NAME17h2dffbace724e41c8E: +__ZN15test_static_sel7get_sel22objc_static_workaround4NAME17h15c0f2d5bb72484eE: .asciz "simple" -__ZN15test_static_sel12get_same_sel5do_it4NAME17h505a1d4eeb4946fbE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN15test_static_sel7get_sel22objc_static_workaround3REF17hefeb1efa701445a4E: + .long __ZN15test_static_sel7get_sel22objc_static_workaround4NAME17h15c0f2d5bb72484eE + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17h9742a2b7783b7cf1E: .asciz "simple" -__ZN15test_static_sel10get_common5do_it4NAME17h3d2d64c9c4874f50E: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hc58f200ac0b74570E: + .long __ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17h9742a2b7783b7cf1E + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel10get_common22objc_static_workaround4NAME17h5666fd5c6ed96293E: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel10get_common5do_it3REF17h46c060c4347a38e4E: - .long __ZN15test_static_sel10get_common5do_it4NAME17h3d2d64c9c4874f50E +__ZN15test_static_sel10get_common22objc_static_workaround3REF17h11bf08c1651e11acE: + .long __ZN15test_static_sel10get_common22objc_static_workaround4NAME17h5666fd5c6ed96293E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel5do_it4NAME17hbbe758ed5ef72d9eE: +__ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17hd7e073585b5ca385E: .asciz "i:am:different:" -__ZN15test_static_sel10unused_sel5do_it4NAME17h4683c999360858fbE: + .section __DATA,__objc_selrefs,literal_pointers + .p2align 2 +__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17h31f43ec056144797E: + .long __ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17hd7e073585b5ca385E + + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17h57ecf7de5ba63d5dE: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel10unused_sel5do_it3REF17h7b1fdae0240cf991E: - .long __ZN15test_static_sel10unused_sel5do_it4NAME17h4683c999360858fbE +__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hbfa5418e3430bd57E: + .long __ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17h57ecf7de5ba63d5dE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns5do_it4NAME17hfc4272ae24fa0543E: +__ZN15test_static_sel7use_fns22objc_static_workaround4NAME17h9496e7395093f09bE: .asciz "fourthSel" -__ZN15test_static_sel11use_in_loop5do_it4NAME17hc35160b73d726a00E: - .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel11use_in_loop5do_it3REF17h5c831b42249b63fbE: - .long __ZN15test_static_sel11use_in_loop5do_it4NAME17hc35160b73d726a00E +__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hd98abf55861d9c7eE: + .long __ZN15test_static_sel7use_fns22objc_static_workaround4NAME17h9496e7395093f09bE + .section __TEXT,__objc_methname,cstring_literals +__ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17hf5353e0a47539e1dE: + .asciz "loopedSelector" + + .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__MergedGlobals: - .long __ZN15test_static_sel7get_sel5do_it4NAME17h2dffbace724e41c8E - .long __ZN15test_static_sel12get_same_sel5do_it4NAME17h505a1d4eeb4946fbE - .long __ZN15test_static_sel17get_different_sel5do_it4NAME17hbbe758ed5ef72d9eE - .long __ZN15test_static_sel7use_fns5do_it4NAME17hfc4272ae24fa0543E +__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h3be3974baf782dd5E: + .long __ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17hf5353e0a47539e1dE .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index b111cc334..08da70b6b 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -5,82 +5,68 @@ _get_sel: push ebp mov ebp, esp - call L0$pb -L0$pb: - pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel7get_sel5do_it3REF17h228c7cd1be7c0069E-L0$pb] pop ebp - ret + jmp __ZN15test_static_sel7get_sel22objc_static_workaround17h81b7b987eca6a3a4E .globl _get_same_sel .p2align 4, 0x90 _get_same_sel: push ebp mov ebp, esp - call L1$pb -L1$pb: - pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel12get_same_sel5do_it3REF17h2d56ac8d4cf2a355E-L1$pb] pop ebp - ret + jmp __ZN15test_static_sel12get_same_sel22objc_static_workaround17h42fe6964f04a7ccaE .globl _get_common .p2align 4, 0x90 _get_common: push ebp mov ebp, esp - call L2$pb -L2$pb: - pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel10get_common5do_it3REF17hbce043dcabf60bd8E-L2$pb] pop ebp - ret + jmp __ZN15test_static_sel10get_common22objc_static_workaround17h8ab540c389e482ebE .globl _get_different_sel .p2align 4, 0x90 _get_different_sel: push ebp mov ebp, esp - call L3$pb -L3$pb: - pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel17get_different_sel5do_it3REF17h46c19195af72a6afE-L3$pb] pop ebp - ret + jmp __ZN15test_static_sel17get_different_sel22objc_static_workaround17h728dd0c6759019a1E .globl _unused_sel .p2align 4, 0x90 _unused_sel: push ebp mov ebp, esp - call L4$pb -L4$pb: - pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel10unused_sel5do_it3REF17hb665a83c664ebefbE-L4$pb] pop ebp - ret + jmp __ZN15test_static_sel10unused_sel22objc_static_workaround17hde06c029659e697eE .globl _use_fns .p2align 4, 0x90 _use_fns: push ebp mov ebp, esp + push ebx push edi push esi - call L5$pb -L5$pb: - pop ecx - mov eax, dword ptr [ebp + 8] - mov edx, dword ptr [ecx + __ZN15test_static_sel7get_sel5do_it3REF17h228c7cd1be7c0069E-L5$pb] - mov esi, dword ptr [ecx + __ZN15test_static_sel12get_same_sel5do_it3REF17h2d56ac8d4cf2a355E-L5$pb] - mov edi, dword ptr [ecx + __ZN15test_static_sel17get_different_sel5do_it3REF17h46c19195af72a6afE-L5$pb] - mov ecx, dword ptr [ecx + __ZN15test_static_sel7use_fns5do_it3REF17h4ce7e1055d208b06E-L5$pb] - mov dword ptr [eax], edx - mov dword ptr [eax + 4], esi - mov dword ptr [eax + 8], edi - mov dword ptr [eax + 12], ecx + sub esp, 12 + mov esi, dword ptr [ebp + 8] + call __ZN15test_static_sel7get_sel22objc_static_workaround17h81b7b987eca6a3a4E + mov dword ptr [ebp - 16], eax + call __ZN15test_static_sel12get_same_sel22objc_static_workaround17h42fe6964f04a7ccaE + mov ebx, eax + call __ZN15test_static_sel17get_different_sel22objc_static_workaround17h728dd0c6759019a1E + mov edi, eax + call __ZN15test_static_sel7use_fns22objc_static_workaround17ha83e06d45bafd771E + mov ecx, dword ptr [ebp - 16] + mov dword ptr [esi], ecx + mov dword ptr [esi + 4], ebx + mov dword ptr [esi + 8], edi + mov dword ptr [esi + 12], eax + mov eax, esi + add esp, 12 pop esi pop edi + pop ebx pop ebp ret 4 @@ -89,14 +75,17 @@ L5$pb: _use_same_twice: push ebp mov ebp, esp - call L6$pb -L6$pb: - pop ecx - mov eax, dword ptr [ebp + 8] - mov edx, dword ptr [ecx + __ZN15test_static_sel7get_sel5do_it3REF17h228c7cd1be7c0069E-L6$pb] - mov ecx, dword ptr [ecx + __ZN15test_static_sel7get_sel5do_it3REF17h228c7cd1be7c0069E-L6$pb] - mov dword ptr [eax], edx - mov dword ptr [eax + 4], ecx + push edi + push esi + mov esi, dword ptr [ebp + 8] + call __ZN15test_static_sel7get_sel22objc_static_workaround17h81b7b987eca6a3a4E + mov edi, eax + call __ZN15test_static_sel7get_sel22objc_static_workaround17h81b7b987eca6a3a4E + mov dword ptr [esi], edi + mov dword ptr [esi + 4], eax + mov eax, esi + pop esi + pop edi pop ebp ret 4 @@ -106,104 +95,159 @@ _use_in_loop: push ebp mov ebp, esp push esi - mov edx, dword ptr [ebp + 8] - test edx, edx - je LBB7_6 - call L7$pb -L7$pb: - pop eax - lea esi, [edx - 1] - mov ecx, edx - and ecx, 7 - cmp esi, 7 - jb LBB7_4 - and edx, -8 - .p2align 4, 0x90 -LBB7_3: - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] - mov esi, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] - add edx, -8 - jne LBB7_3 -LBB7_4: - test ecx, ecx - je LBB7_6 - .p2align 4, 0x90 -LBB7_5: - mov edx, dword ptr [eax + __ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE-L7$pb] - dec ecx - jne LBB7_5 -LBB7_6: + push eax + mov esi, dword ptr [ebp + 8] + test esi, esi + je LBB7_2 + .p2align 4, 0x90 +LBB7_1: + call __ZN15test_static_sel11use_in_loop22objc_static_workaround17h601e1f59fa6876fdE + dec esi + jne LBB7_1 +LBB7_2: + add esp, 4 pop esi pop ebp ret + .p2align 4, 0x90 +__ZN15test_static_sel7get_sel22objc_static_workaround17h81b7b987eca6a3a4E: + push ebp + mov ebp, esp + call L8$pb +L8$pb: + pop eax + mov eax, dword ptr [eax + __ZN15test_static_sel7get_sel22objc_static_workaround3REF17hc37abb4197ef951bE-L8$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel12get_same_sel22objc_static_workaround17h42fe6964f04a7ccaE: + push ebp + mov ebp, esp + call L9$pb +L9$pb: + pop eax + mov eax, dword ptr [eax + __ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hd3b05de0d9a96eecE-L9$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel10get_common22objc_static_workaround17h8ab540c389e482ebE: + push ebp + mov ebp, esp + call L10$pb +L10$pb: + pop eax + mov eax, dword ptr [eax + __ZN15test_static_sel10get_common22objc_static_workaround3REF17h3d670595527dbbb7E-L10$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel17get_different_sel22objc_static_workaround17h728dd0c6759019a1E: + push ebp + mov ebp, esp + call L11$pb +L11$pb: + pop eax + mov eax, dword ptr [eax + __ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17h5c87d7158e6ff828E-L11$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel10unused_sel22objc_static_workaround17hde06c029659e697eE: + push ebp + mov ebp, esp + call L12$pb +L12$pb: + pop eax + mov eax, dword ptr [eax + __ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hb7b3ebb79de7386dE-L12$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel7use_fns22objc_static_workaround17ha83e06d45bafd771E: + push ebp + mov ebp, esp + call L13$pb +L13$pb: + pop eax + mov eax, dword ptr [eax + __ZN15test_static_sel7use_fns22objc_static_workaround3REF17h1a4a387de8da6e06E-L13$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel11use_in_loop22objc_static_workaround17h601e1f59fa6876fdE: + push ebp + mov ebp, esp + call L14$pb +L14$pb: + pop eax + mov eax, dword ptr [eax + __ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17hafed3287c99de420E-L14$pb] + pop ebp + ret + .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel5do_it4NAME17h6c6d257dd8fb3617E: +__ZN15test_static_sel7get_sel22objc_static_workaround4NAME17h90deb32c3cc9afbfE: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel7get_sel5do_it3REF17h228c7cd1be7c0069E: - .long __ZN15test_static_sel7get_sel5do_it4NAME17h6c6d257dd8fb3617E +__ZN15test_static_sel7get_sel22objc_static_workaround3REF17hc37abb4197ef951bE: + .long __ZN15test_static_sel7get_sel22objc_static_workaround4NAME17h90deb32c3cc9afbfE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel12get_same_sel5do_it4NAME17h3c19b4f1b67d375cE: +__ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17h79fb7ea50d2382ecE: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel12get_same_sel5do_it3REF17h2d56ac8d4cf2a355E: - .long __ZN15test_static_sel12get_same_sel5do_it4NAME17h3c19b4f1b67d375cE +__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hd3b05de0d9a96eecE: + .long __ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17h79fb7ea50d2382ecE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10get_common5do_it4NAME17hcb2f2f30b61e60e6E: +__ZN15test_static_sel10get_common22objc_static_workaround4NAME17h4c782c7fdf617c72E: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel10get_common5do_it3REF17hbce043dcabf60bd8E: - .long __ZN15test_static_sel10get_common5do_it4NAME17hcb2f2f30b61e60e6E +__ZN15test_static_sel10get_common22objc_static_workaround3REF17h3d670595527dbbb7E: + .long __ZN15test_static_sel10get_common22objc_static_workaround4NAME17h4c782c7fdf617c72E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel5do_it4NAME17hf72482e04f464b16E: +__ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17h69a9c6cf0d4df9cbE: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel17get_different_sel5do_it3REF17h46c19195af72a6afE: - .long __ZN15test_static_sel17get_different_sel5do_it4NAME17hf72482e04f464b16E +__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17h5c87d7158e6ff828E: + .long __ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17h69a9c6cf0d4df9cbE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10unused_sel5do_it4NAME17h47c97c765e901021E: +__ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17h7123d51632cd4661E: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel10unused_sel5do_it3REF17hb665a83c664ebefbE: - .long __ZN15test_static_sel10unused_sel5do_it4NAME17h47c97c765e901021E +__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hb7b3ebb79de7386dE: + .long __ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17h7123d51632cd4661E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns5do_it4NAME17hf963d790d76ff9aaE: +__ZN15test_static_sel7use_fns22objc_static_workaround4NAME17ha768eb127f2dc8a6E: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel7use_fns5do_it3REF17h4ce7e1055d208b06E: - .long __ZN15test_static_sel7use_fns5do_it4NAME17hf963d790d76ff9aaE +__ZN15test_static_sel7use_fns22objc_static_workaround3REF17h1a4a387de8da6e06E: + .long __ZN15test_static_sel7use_fns22objc_static_workaround4NAME17ha768eb127f2dc8a6E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel11use_in_loop5do_it4NAME17h13b3be67c555f0a5E: +__ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17hff06965bc2df53daE: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers .p2align 2 -__ZN15test_static_sel11use_in_loop5do_it3REF17h82744bfcc90580aeE: - .long __ZN15test_static_sel11use_in_loop5do_it4NAME17h13b3be67c555f0a5E +__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17hafed3287c99de420E: + .long __ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17hff06965bc2df53daE .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index e6a74687d..e0a5a2043 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -5,60 +5,67 @@ _get_sel: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h782882fcc02d9d8aE] pop rbp - ret + jmp __ZN15test_static_sel7get_sel22objc_static_workaround17h1cbb0c161f2bac9aE .globl _get_same_sel .p2align 4, 0x90 _get_same_sel: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel12get_same_sel5do_it3REF17h2d67e358172fa45dE] pop rbp - ret + jmp __ZN15test_static_sel12get_same_sel22objc_static_workaround17hc1a2360c3d4bddd0E .globl _get_common .p2align 4, 0x90 _get_common: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel10get_common5do_it3REF17hbd5f5d11cc1d359fE] pop rbp - ret + jmp __ZN15test_static_sel10get_common22objc_static_workaround17h65f6e72e4d407b78E .globl _get_different_sel .p2align 4, 0x90 _get_different_sel: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel17get_different_sel5do_it3REF17h95db9b19a0d861e2E] pop rbp - ret + jmp __ZN15test_static_sel17get_different_sel22objc_static_workaround17h87e0092168d40157E .globl _unused_sel .p2align 4, 0x90 _unused_sel: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel10unused_sel5do_it3REF17hc65ecc2272129c12E] pop rbp - ret + jmp __ZN15test_static_sel10unused_sel22objc_static_workaround17h8da61a9c5502ca9aE .globl _use_fns .p2align 4, 0x90 _use_fns: push rbp mov rbp, rsp - mov rax, rdi - mov rcx, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h782882fcc02d9d8aE] - mov rdx, qword ptr [rip + __ZN15test_static_sel12get_same_sel5do_it3REF17h2d67e358172fa45dE] - mov rsi, qword ptr [rip + __ZN15test_static_sel17get_different_sel5do_it3REF17h95db9b19a0d861e2E] - mov rdi, qword ptr [rip + __ZN15test_static_sel7use_fns5do_it3REF17h588d7388fcda7afcE] - mov qword ptr [rax], rcx - mov qword ptr [rax + 8], rdx - mov qword ptr [rax + 16], rsi - mov qword ptr [rax + 24], rdi + push r15 + push r14 + push r12 + push rbx + mov rbx, rdi + call __ZN15test_static_sel7get_sel22objc_static_workaround17h1cbb0c161f2bac9aE + mov r14, rax + call __ZN15test_static_sel12get_same_sel22objc_static_workaround17hc1a2360c3d4bddd0E + mov r15, rax + call __ZN15test_static_sel17get_different_sel22objc_static_workaround17h87e0092168d40157E + mov r12, rax + call __ZN15test_static_sel7use_fns22objc_static_workaround17h38f61cd0d3e1beb6E + mov qword ptr [rbx], r14 + mov qword ptr [rbx + 8], r15 + mov qword ptr [rbx + 16], r12 + mov qword ptr [rbx + 24], rax + mov rax, rbx + pop rbx + pop r12 + pop r14 + pop r15 pop rbp ret @@ -67,11 +74,17 @@ _use_fns: _use_same_twice: push rbp mov rbp, rsp - mov rax, rdi - mov rcx, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h782882fcc02d9d8aE] - mov rdx, qword ptr [rip + __ZN15test_static_sel7get_sel5do_it3REF17h782882fcc02d9d8aE] - mov qword ptr [rdi], rcx - mov qword ptr [rdi + 8], rdx + push r14 + push rbx + mov rbx, rdi + call __ZN15test_static_sel7get_sel22objc_static_workaround17h1cbb0c161f2bac9aE + mov r14, rax + call __ZN15test_static_sel7get_sel22objc_static_workaround17h1cbb0c161f2bac9aE + mov qword ptr [rbx], r14 + mov qword ptr [rbx + 8], rax + mov rax, rbx + pop rbx + pop r14 pop rbp ret @@ -80,99 +93,139 @@ _use_same_twice: _use_in_loop: push rbp mov rbp, rsp + push rbx + push rax test rdi, rdi - je LBB7_6 - lea rcx, [rdi - 1] - mov eax, edi - and eax, 7 - cmp rcx, 7 - jb LBB7_4 - and rdi, -8 + je LBB7_3 + mov rbx, rdi .p2align 4, 0x90 +LBB7_2: + call __ZN15test_static_sel11use_in_loop22objc_static_workaround17hb648681a47b1fb9eE + dec rbx + jne LBB7_2 LBB7_3: - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] - add rdi, -8 - jne LBB7_3 -LBB7_4: - test rax, rax - je LBB7_6 - .p2align 4, 0x90 -LBB7_5: - mov rcx, qword ptr [rip + __ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE] - dec rax - jne LBB7_5 -LBB7_6: + add rsp, 8 + pop rbx + pop rbp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel7get_sel22objc_static_workaround17h1cbb0c161f2bac9aE: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN15test_static_sel7get_sel22objc_static_workaround3REF17he1cced5ed20eba38E] + pop rbp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel12get_same_sel22objc_static_workaround17hc1a2360c3d4bddd0E: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17h8453f9968f695650E] + pop rbp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel10get_common22objc_static_workaround17h65f6e72e4d407b78E: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN15test_static_sel10get_common22objc_static_workaround3REF17h8fda95d0c1daa73eE] + pop rbp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel17get_different_sel22objc_static_workaround17h87e0092168d40157E: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17he72c56ab87ae659fE] + pop rbp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel10unused_sel22objc_static_workaround17h8da61a9c5502ca9aE: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hc3e929842d683b1cE] + pop rbp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel7use_fns22objc_static_workaround17h38f61cd0d3e1beb6E: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN15test_static_sel7use_fns22objc_static_workaround3REF17head6b4f5de386e04E] + pop rbp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel11use_in_loop22objc_static_workaround17hb648681a47b1fb9eE: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + __ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17habfe315ed82cbd83E] pop rbp ret .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel5do_it4NAME17h9e9003947df30d5bE: +__ZN15test_static_sel7get_sel22objc_static_workaround4NAME17hc48a6857ae4ba570E: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN15test_static_sel7get_sel5do_it3REF17h782882fcc02d9d8aE: - .quad __ZN15test_static_sel7get_sel5do_it4NAME17h9e9003947df30d5bE +__ZN15test_static_sel7get_sel22objc_static_workaround3REF17he1cced5ed20eba38E: + .quad __ZN15test_static_sel7get_sel22objc_static_workaround4NAME17hc48a6857ae4ba570E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel12get_same_sel5do_it4NAME17h8b1a946a162bf505E: +__ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17hcf1f699e31314f2fE: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN15test_static_sel12get_same_sel5do_it3REF17h2d67e358172fa45dE: - .quad __ZN15test_static_sel12get_same_sel5do_it4NAME17h8b1a946a162bf505E +__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17h8453f9968f695650E: + .quad __ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17hcf1f699e31314f2fE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10get_common5do_it4NAME17h584eb2aaa202befbE: +__ZN15test_static_sel10get_common22objc_static_workaround4NAME17h3ea1273e7725867cE: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN15test_static_sel10get_common5do_it3REF17hbd5f5d11cc1d359fE: - .quad __ZN15test_static_sel10get_common5do_it4NAME17h584eb2aaa202befbE +__ZN15test_static_sel10get_common22objc_static_workaround3REF17h8fda95d0c1daa73eE: + .quad __ZN15test_static_sel10get_common22objc_static_workaround4NAME17h3ea1273e7725867cE .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel5do_it4NAME17h771c17e46b379ccbE: +__ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17h010a4d89cb2f6290E: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN15test_static_sel17get_different_sel5do_it3REF17h95db9b19a0d861e2E: - .quad __ZN15test_static_sel17get_different_sel5do_it4NAME17h771c17e46b379ccbE +__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17he72c56ab87ae659fE: + .quad __ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17h010a4d89cb2f6290E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10unused_sel5do_it4NAME17h00f91d535bf5e92eE: +__ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17hf83654e332b09713E: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN15test_static_sel10unused_sel5do_it3REF17hc65ecc2272129c12E: - .quad __ZN15test_static_sel10unused_sel5do_it4NAME17h00f91d535bf5e92eE +__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hc3e929842d683b1cE: + .quad __ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17hf83654e332b09713E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns5do_it4NAME17hff47d49a940f1428E: +__ZN15test_static_sel7use_fns22objc_static_workaround4NAME17h3b3319caba6cf9f3E: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN15test_static_sel7use_fns5do_it3REF17h588d7388fcda7afcE: - .quad __ZN15test_static_sel7use_fns5do_it4NAME17hff47d49a940f1428E +__ZN15test_static_sel7use_fns22objc_static_workaround3REF17head6b4f5de386e04E: + .quad __ZN15test_static_sel7use_fns22objc_static_workaround4NAME17h3b3319caba6cf9f3E .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel11use_in_loop5do_it4NAME17hfb93cf0b2231dd8eE: +__ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17he5e1c1e1a2ca8028E: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers .p2align 3 -__ZN15test_static_sel11use_in_loop5do_it3REF17he7523abb0b72310bE: - .quad __ZN15test_static_sel11use_in_loop5do_it4NAME17hfb93cf0b2231dd8eE +__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17habfe315ed82cbd83E: + .quad __ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17he5e1c1e1a2ca8028E .subsections_via_symbols From 5ef826c4203338274d98981da1d0054485b86672 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Fri, 17 Jun 2022 01:16:54 +0200 Subject: [PATCH 07/30] Add static selector export names with generated hashes Co-authored-by: clavin --- objc2-proc-macros/Cargo.toml | 2 +- objc2-proc-macros/src/lib.rs | 56 ++++++++ objc2/Cargo.toml | 3 +- objc2/src/lib.rs | 4 + objc2/src/macros.rs | 8 +- .../expected/apple-aarch64.s | 116 +++++++++-------- .../expected/apple-armv7.s | 116 +++++++++-------- .../expected/apple-armv7s.s | 116 +++++++++-------- .../expected/apple-x86.s | 102 ++++++++------- .../expected/apple-x86_64.s | 102 ++++++++------- .../test_static_sel/expected/apple-aarch64.s | 122 ++++++++++-------- .../test_static_sel/expected/apple-armv7.s | 122 ++++++++++-------- .../test_static_sel/expected/apple-armv7s.s | 122 ++++++++++-------- .../test_static_sel/expected/apple-x86.s | 108 +++++++++------- .../test_static_sel/expected/apple-x86_64.s | 108 +++++++++------- 15 files changed, 705 insertions(+), 502 deletions(-) diff --git a/objc2-proc-macros/Cargo.toml b/objc2-proc-macros/Cargo.toml index 2e017b637..345c243ea 100644 --- a/objc2-proc-macros/Cargo.toml +++ b/objc2-proc-macros/Cargo.toml @@ -2,7 +2,7 @@ name = "objc2-proc-macros" # Remember to update html_root_url in lib.rs version = "0.0.0" -authors = ["Mads Marquart "] +authors = ["Mads Marquart ", "Calvin Watford"] edition = "2021" description = "Procedural macros for the objc2 project" diff --git a/objc2-proc-macros/src/lib.rs b/objc2-proc-macros/src/lib.rs index d31452f14..cb1d2552c 100644 --- a/objc2-proc-macros/src/lib.rs +++ b/objc2-proc-macros/src/lib.rs @@ -16,3 +16,59 @@ #[cfg(doctest)] #[doc = include_str!("../README.md")] extern "C" {} + +use core::hash::{Hash, Hasher}; + +use proc_macro::Ident; +use proc_macro::Literal; +use proc_macro::TokenStream; +use proc_macro::TokenTree; + +/// Quick n' dirty way to extract the idents given by the `sel!` macro. +fn get_idents(input: TokenStream) -> impl Iterator { + input.into_iter().flat_map(|token| { + if let TokenTree::Group(group) = token { + group + .stream() + .into_iter() + .map(|token| { + if let TokenTree::Ident(ident) = token { + ident + } else { + panic!("Expected ident, got {:?}", token) + } + }) + .collect::>() + .into_iter() + } else if let TokenTree::Ident(ident) = token { + vec![ident].into_iter() + } else { + panic!("Expected group or ident, got {:?}", token) + } + }) +} + +/// Creates a hash from the input and source code locations in the provided +/// idents. +#[proc_macro] +pub fn hash_idents(input: TokenStream) -> TokenStream { + // Create the hasher + let mut hasher = std::collections::hash_map::DefaultHasher::new(); + + // Hash each ident + for ident in get_idents(input) { + ident.to_string().hash(&mut hasher); + + // Hash the source code location of the ident + // + // HACK: the only somewhat-reasonable way to get "unique" data in a + // proc macro right now is from the `Debug` formatter for spans which + // includes the source code location... so just hash the whole `Debug` + // format output of the span + format!("{:?}", ident.span()).hash(&mut hasher); + } + + // Get the hash from the hasher and return it as 16 hexadecimal characters + let s = format!("{:016x}", hasher.finish()); + TokenTree::Literal(Literal::string(&s)).into() +} diff --git a/objc2/Cargo.toml b/objc2/Cargo.toml index 89922b417..e978521bf 100644 --- a/objc2/Cargo.toml +++ b/objc2/Cargo.toml @@ -37,7 +37,7 @@ verify_message = ["malloc"] # TODO: Remove malloc feature here # increases compilation time. malloc = ["malloc_buf"] -static-sel = [] +static-sel = ["objc2-proc-macros"] # Uses nightly features to make AutoreleasePool zero-cost even in debug mode unstable-autoreleasesafe = [] @@ -54,6 +54,7 @@ gnustep-2-1 = ["gnustep-2-0", "objc-sys/gnustep-2-1"] malloc_buf = { version = "1.0", optional = true } objc-sys = { path = "../objc-sys", version = "=0.2.0-beta.0", default-features = false } objc2-encode = { path = "../objc2-encode", version = "=2.0.0-pre.0", default-features = false } +objc2-proc-macros = { path = "../objc2-proc-macros", optional = true } [dev-dependencies] iai = { version = "0.1", git = "https://github.com/madsmtm/iai", branch = "callgrind" } diff --git a/objc2/src/lib.rs b/objc2/src/lib.rs index ad14b3b71..fd2431a08 100644 --- a/objc2/src/lib.rs +++ b/objc2/src/lib.rs @@ -181,6 +181,10 @@ extern crate alloc; extern crate std; +#[cfg(feature = "static-sel")] +#[doc(hidden)] +pub extern crate objc2_proc_macros as __proc_macros; + // The example uses NSObject without doing the __gnustep_hack #[cfg(all(feature = "apple", doctest))] #[doc = include_str!("../README.md")] diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index cbee28aae..b8a70c559 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -58,12 +58,12 @@ macro_rules! sel { #[cfg(feature = "static-sel")] macro_rules! sel { ($name:ident) => { - $crate::sel!(@__inner concat!(stringify!($name), '\0')) + $crate::sel!(@__inner concat!(stringify!($name), '\0'), $name) }; ($($name:ident :)+) => { - $crate::sel!(@__inner concat!($(stringify!($name), ':'),+, '\0')) + $crate::sel!(@__inner concat!($(stringify!($name), ':'),+, '\0'), $($name),+) }; - (@__inner $sel:expr) => {{ + (@__inner $sel:expr, $($idents:ident),+) => {{ // HACK: Wrap the statics in a non-generic, `#[inline(never)]` // function to "coerce" the compiler to group all of them into the // same codegen unit to avoid link errors @@ -72,6 +72,7 @@ macro_rules! sel { const X: &[u8] = $sel.as_bytes(); #[link_section = "__TEXT,__objc_methname,cstring_literals"] + #[export_name = concat!("\x01L_OBJC_METH_VAR_NAME_", $crate::__proc_macros::hash_idents!($($idents)+))] static NAME: [u8; X.len()] = { let mut res: [u8; X.len()] = [0; X.len()]; let mut i = 0; @@ -84,6 +85,7 @@ macro_rules! sel { // Place the constant value in the correct section. #[link_section = "__DATA,__objc_selrefs,literal_pointers"] + #[export_name = concat!("\x01L_OBJC_SELECTOR_REFERENCES_", $crate::__proc_macros::hash_idents!($($idents)+))] static mut REF: &[u8; X.len()] = &NAME; // The actual selector is replaced by dyld when the program is diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index 71cb65bed..2b7b51859 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -6,7 +6,7 @@ _handle_with_sel: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h4bd2e0f12aead0a7E + bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h7e2219bd31d55268E mov x1, x0 mov x0, x19 ldp x29, x30, [sp, #16] @@ -20,9 +20,9 @@ _handle_alloc_init: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h527035549ca8e16bE + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h3d919388c23fdf68E mov x20, x0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hb38636f8b33d47f4E + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h208b45a18d15451eE mov x1, x0 mov x0, x19 bl _objc_msgSend @@ -38,23 +38,23 @@ _use_generic: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h88b4b045cc9efedaE + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h29677622e36cf330E mov x20, x0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hd455b7ba208abb35E + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h432a20390f91c26fE mov x2, x0 mov x0, x19 mov x1, x20 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3045dd61383fe46dE + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h777a3aa99de98b73E mov x20, x0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hd455b7ba208abb35E + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h432a20390f91c26fE mov x2, x0 mov x0, x19 mov x1, x20 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17haef494cf629bf43fE + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h82d96cce58f7d605E mov x20, x0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hd455b7ba208abb35E + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h432a20390f91c26fE mov x2, x0 mov x0, x19 mov x1, x20 @@ -63,129 +63,143 @@ _use_generic: b _objc_msgSend .p2align 2 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h4bd2e0f12aead0a7E: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h7e2219bd31d55268E: Lloh0: - adrp x8, __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17hac048478e2245505E@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGE Lloh1: - ldr x0, [x8, __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17hac048478e2245505E@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGEOFF] ret .loh AdrpLdr Lloh0, Lloh1 .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h527035549ca8e16bE: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h3d919388c23fdf68E: Lloh2: - adrp x8, __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h8d106c43f8f016acE@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGE Lloh3: - ldr x0, [x8, __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h8d106c43f8f016acE@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGEOFF] ret .loh AdrpLdr Lloh2, Lloh3 .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hb38636f8b33d47f4E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h208b45a18d15451eE: Lloh4: - adrp x8, __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h9a45824596ee4331E@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGE Lloh5: - ldr x0, [x8, __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h9a45824596ee4331E@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGEOFF] ret .loh AdrpLdr Lloh4, Lloh5 .p2align 2 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17hd455b7ba208abb35E: +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h432a20390f91c26fE: Lloh6: - adrp x8, __ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17hc4072be78a5a5a1bE@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGE Lloh7: - ldr x0, [x8, __ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17hc4072be78a5a5a1bE@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGEOFF] ret .loh AdrpLdr Lloh6, Lloh7 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h88b4b045cc9efedaE: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h29677622e36cf330E: Lloh8: - adrp x8, __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hc8472725ff869ed6E@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGE Lloh9: - ldr x0, [x8, __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hc8472725ff869ed6E@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGEOFF] ret .loh AdrpLdr Lloh8, Lloh9 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3045dd61383fe46dE: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h777a3aa99de98b73E: Lloh10: - adrp x8, __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h6b07e7885c87d486E@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGE Lloh11: - ldr x0, [x8, __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h6b07e7885c87d486E@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGEOFF] ret .loh AdrpLdr Lloh10, Lloh11 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17haef494cf629bf43fE: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h82d96cce58f7d605E: Lloh12: - adrp x8, __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h23a1cd3c801b23b5E@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGE Lloh13: - ldr x0, [x8, __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h23a1cd3c801b23b5E@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGEOFF] ret .loh AdrpLdr Lloh12, Lloh13 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h374ab5fe13218218E: + .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 +L_OBJC_METH_VAR_NAME_40f5b12005284286: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 .p2align 3 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17hac048478e2245505E: - .quad __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h374ab5fe13218218E +L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: + .quad L_OBJC_METH_VAR_NAME_40f5b12005284286 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h85d1b2a3012cd21bE: + .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 +L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: .asciz "init" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 .p2align 3 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h8d106c43f8f016acE: - .quad __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h85d1b2a3012cd21bE +L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: + .quad L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h947eb119c81ac655E: + .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 +L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 .p2align 3 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h9a45824596ee4331E: - .quad __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h947eb119c81ac655E +L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: + .quad L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h0195309ec581b392E: + .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 +L_OBJC_METH_VAR_NAME_31f63858e271db32: .asciz "generic:selector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 .p2align 3 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17hc4072be78a5a5a1bE: - .quad __ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h0195309ec581b392E +L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: + .quad L_OBJC_METH_VAR_NAME_31f63858e271db32 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h42056f820f677913E: + .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 +L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 .p2align 3 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hc8472725ff869ed6E: - .quad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h42056f820f677913E +L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: + .quad L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17he0c88f86b370a316E: + .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 +L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 .p2align 3 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h6b07e7885c87d486E: - .quad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17he0c88f86b370a316E +L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: + .quad L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h3ee106e8027713a3E: + .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 +L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 .p2align 3 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h23a1cd3c801b23b5E: - .quad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h3ee106e8027713a3E +L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: + .quad L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index a9b5792cf..43ff1ed7f 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -7,7 +7,7 @@ _handle_with_sel: push {r4, r7, lr} add r7, sp, #4 mov r4, r0 - bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h8840e188dc899306E + bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hbbdda4be504e4b8dE mov r1, r0 mov r0, r4 pop {r4, r7, lr} @@ -20,9 +20,9 @@ _handle_alloc_init: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h6885ad1b2e8dc9baE + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h64a8dce59c4dc94aE mov r5, r0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h58e80aa8a9adf276E + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h4470f95a700d9c7bE mov r1, r0 mov r0, r4 bl _objc_msgSend @@ -37,23 +37,23 @@ _use_generic: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h2bd60fb737aa3a73E + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hebd2347ba98b0bafE mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h099d48e890343afaE + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hbfbca3fddd47cf1dE mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha61194771669e257E + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h5467f850ea7c1791E mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h099d48e890343afaE + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hbfbca3fddd47cf1dE mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h0981e22b69330471E + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha138f577d13053ebE mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h099d48e890343afaE + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hbfbca3fddd47cf1dE mov r2, r0 mov r0, r4 mov r1, r5 @@ -62,128 +62,142 @@ _use_generic: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h8840e188dc899306E: - movw r0, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h3880a6b55dd508fdE-(LPC3_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h3880a6b55dd508fdE-(LPC3_0+8)) +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hbbdda4be504e4b8dE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) LPC3_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h6885ad1b2e8dc9baE: - movw r0, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17hb403c2227a4556eaE-(LPC4_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17hb403c2227a4556eaE-(LPC4_0+8)) +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h64a8dce59c4dc94aE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) LPC4_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h58e80aa8a9adf276E: - movw r0, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h9a421e5e16879b72E-(LPC5_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h9a421e5e16879b72E-(LPC5_0+8)) +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h4470f95a700d9c7bE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) LPC5_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h099d48e890343afaE: - movw r0, :lower16:(__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h04ee696a1f722b85E-(LPC6_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h04ee696a1f722b85E-(LPC6_0+8)) +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17hbfbca3fddd47cf1dE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) LPC6_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h2bd60fb737aa3a73E: - movw r0, :lower16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h67da2d48b5d85e71E-(LPC7_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h67da2d48b5d85e71E-(LPC7_0+8)) +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hebd2347ba98b0bafE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) LPC7_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha61194771669e257E: - movw r0, :lower16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hec3e445d56420b81E-(LPC8_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hec3e445d56420b81E-(LPC8_0+8)) +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h5467f850ea7c1791E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) LPC8_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h0981e22b69330471E: - movw r0, :lower16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h8288fa628cf38b02E-(LPC9_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h8288fa628cf38b02E-(LPC9_0+8)) +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha138f577d13053ebE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) LPC9_0: ldr r0, [pc, r0] bx lr .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h374ccf94d0633775E: + .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 +L_OBJC_METH_VAR_NAME_40f5b12005284286: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 .p2align 2 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h3880a6b55dd508fdE: - .long __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h374ccf94d0633775E +L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: + .long L_OBJC_METH_VAR_NAME_40f5b12005284286 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h4549b59da4b18fa1E: + .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 +L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: .asciz "init" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17hb403c2227a4556eaE: - .long __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h4549b59da4b18fa1E +L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: + .long L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h43004b1b9153fea2E: + .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 +L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h9a421e5e16879b72E: - .long __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h43004b1b9153fea2E +L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: + .long L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h76925b222cc28afaE: + .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 +L_OBJC_METH_VAR_NAME_31f63858e271db32: .asciz "generic:selector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 .p2align 2 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h04ee696a1f722b85E: - .long __ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h76925b222cc28afaE +L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: + .long L_OBJC_METH_VAR_NAME_31f63858e271db32 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17hb9c72b88c79dd4b6E: + .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 +L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h67da2d48b5d85e71E: - .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17hb9c72b88c79dd4b6E +L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: + .long L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17hf7d8172547f73868E: + .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 +L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hec3e445d56420b81E: - .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17hf7d8172547f73868E +L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: + .long L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h4c7e1e7c7657946eE: + .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 +L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h8288fa628cf38b02E: - .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h4c7e1e7c7657946eE +L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: + .long L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index 956f86172..87fdba666 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -7,7 +7,7 @@ _handle_with_sel: push {r4, r7, lr} add r7, sp, #4 mov r4, r0 - bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hf2801f55a2385362E + bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h8e8912e05611baf8E mov r1, r0 mov r0, r4 bl _objc_msgSend @@ -20,9 +20,9 @@ _handle_alloc_init: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7c6d883b994711aeE + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h98b7256dded064d1E mov r5, r0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hac26443520976ad4E + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h8bd68890a8be4b94E mov r1, r0 mov r0, r4 bl _objc_msgSend @@ -37,23 +37,23 @@ _use_generic: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h945fbaf0c124eab9E + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h4db106eab2ec1470E mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h376904f2996327c9E + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h137ede0f8414f244E mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h03112b6cac679e4bE + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h68391fe30382cbbeE mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h376904f2996327c9E + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h137ede0f8414f244E mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h17015ecab548b281E + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd7ee6447198a8703E mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h376904f2996327c9E + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h137ede0f8414f244E mov r2, r0 mov r0, r4 mov r1, r5 @@ -62,128 +62,142 @@ _use_generic: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hf2801f55a2385362E: - movw r0, :lower16:(__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17hce6b3d95b6bcbb85E-(LPC3_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17hce6b3d95b6bcbb85E-(LPC3_0+8)) +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h8e8912e05611baf8E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) LPC3_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7c6d883b994711aeE: - movw r0, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h3f5f4ba3789d7134E-(LPC4_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h3f5f4ba3789d7134E-(LPC4_0+8)) +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h98b7256dded064d1E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) LPC4_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hac26443520976ad4E: - movw r0, :lower16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h2fb4ecd06397a741E-(LPC5_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h2fb4ecd06397a741E-(LPC5_0+8)) +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h8bd68890a8be4b94E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) LPC5_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h376904f2996327c9E: - movw r0, :lower16:(__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h54efb4374be3eaadE-(LPC6_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h54efb4374be3eaadE-(LPC6_0+8)) +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h137ede0f8414f244E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) LPC6_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h945fbaf0c124eab9E: - movw r0, :lower16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hd4fed20bec515f63E-(LPC7_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hd4fed20bec515f63E-(LPC7_0+8)) +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h4db106eab2ec1470E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) LPC7_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h03112b6cac679e4bE: - movw r0, :lower16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h45fc54a9172d9f80E-(LPC8_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h45fc54a9172d9f80E-(LPC8_0+8)) +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h68391fe30382cbbeE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) LPC8_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h17015ecab548b281E: - movw r0, :lower16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hf335b3712f9d9cf1E-(LPC9_0+8)) - movt r0, :upper16:(__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hf335b3712f9d9cf1E-(LPC9_0+8)) +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd7ee6447198a8703E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) LPC9_0: ldr r0, [pc, r0] bx lr .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h60ee841e6e2b2881E: + .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 +L_OBJC_METH_VAR_NAME_40f5b12005284286: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 .p2align 2 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17hce6b3d95b6bcbb85E: - .long __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h60ee841e6e2b2881E +L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: + .long L_OBJC_METH_VAR_NAME_40f5b12005284286 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17hb6f6b554e76f0d73E: + .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 +L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: .asciz "init" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h3f5f4ba3789d7134E: - .long __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17hb6f6b554e76f0d73E +L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: + .long L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17ha71a9b8e90260cc1E: + .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 +L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h2fb4ecd06397a741E: - .long __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17ha71a9b8e90260cc1E +L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: + .long L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17hd2b41be12cc743f1E: + .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 +L_OBJC_METH_VAR_NAME_31f63858e271db32: .asciz "generic:selector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 .p2align 2 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h54efb4374be3eaadE: - .long __ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17hd2b41be12cc743f1E +L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: + .long L_OBJC_METH_VAR_NAME_31f63858e271db32 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17hd419b68b3cb425bbE: + .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 +L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hd4fed20bec515f63E: - .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17hd419b68b3cb425bbE +L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: + .long L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17he119ab22173d8451E: + .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 +L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h45fc54a9172d9f80E: - .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17he119ab22173d8451E +L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: + .long L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h77c600195720ccb0E: + .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 +L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hf335b3712f9d9cf1E: - .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h77c600195720ccb0E +L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: + .long L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index 6fa910b42..82bdb5e24 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -8,7 +8,7 @@ _handle_with_sel: push esi push eax mov esi, dword ptr [ebp + 8] - call __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h54173f14552949d2E + call __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h713350a8d234436dE sub esp, 8 push eax push esi @@ -26,9 +26,9 @@ _handle_alloc_init: push edi push esi mov edi, dword ptr [ebp + 8] - call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h71624dd5125cec62E + call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7e789f29e463517aE mov esi, eax - call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h3fb39dd7fdd57a60E + call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h8a2e6aa05f9c9dbdE sub esp, 8 push eax push edi @@ -51,27 +51,27 @@ _use_generic: push edi push esi mov edi, dword ptr [ebp + 8] - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h04600c743bfbbabbE + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h2996e77ce6841ac6E mov esi, eax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h1c856d65f822badbE + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h69a1eaae9cce6de4E sub esp, 4 push eax push esi push edi call _objc_msgSend add esp, 16 - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd72d07b382ff6ef9E + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h8127295802f21218E mov esi, eax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h1c856d65f822badbE + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h69a1eaae9cce6de4E sub esp, 4 push eax push esi push edi call _objc_msgSend add esp, 16 - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd8ba6c1819f0e9e4E + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17he3ad303312f2a9d3E mov esi, eax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h1c856d65f822badbE + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h69a1eaae9cce6de4E sub esp, 4 push eax push esi @@ -84,143 +84,157 @@ _use_generic: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h54173f14552949d2E: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h713350a8d234436dE: push ebp mov ebp, esp call L3$pb L3$pb: pop eax - mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h5e1ebbc4849be566E-L3$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-L3$pb] pop ebp ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h71624dd5125cec62E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7e789f29e463517aE: push ebp mov ebp, esp call L4$pb L4$pb: pop eax - mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17ha2b6d0788f464ae7E-L4$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-L4$pb] pop ebp ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h3fb39dd7fdd57a60E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h8a2e6aa05f9c9dbdE: push ebp mov ebp, esp call L5$pb L5$pb: pop eax - mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h361219fab0d04681E-L5$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-L5$pb] pop ebp ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h1c856d65f822badbE: +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h69a1eaae9cce6de4E: push ebp mov ebp, esp call L6$pb L6$pb: pop eax - mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h2b1b65d00f097392E-L6$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-L6$pb] pop ebp ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h04600c743bfbbabbE: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h2996e77ce6841ac6E: push ebp mov ebp, esp call L7$pb L7$pb: pop eax - mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hc08656a638ae4ef4E-L7$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-L7$pb] pop ebp ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd72d07b382ff6ef9E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h8127295802f21218E: push ebp mov ebp, esp call L8$pb L8$pb: pop eax - mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h0e7e70309040c696E-L8$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-L8$pb] pop ebp ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd8ba6c1819f0e9e4E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17he3ad303312f2a9d3E: push ebp mov ebp, esp call L9$pb L9$pb: pop eax - mov eax, dword ptr [eax + __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h48d6ef0c68f60e9aE-L9$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-L9$pb] pop ebp ret .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17ha22895543d278f79E: + .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 +L_OBJC_METH_VAR_NAME_40f5b12005284286: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 .p2align 2 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h5e1ebbc4849be566E: - .long __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17ha22895543d278f79E +L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: + .long L_OBJC_METH_VAR_NAME_40f5b12005284286 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17hb75868d081570b88E: + .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 +L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: .asciz "init" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17ha2b6d0788f464ae7E: - .long __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17hb75868d081570b88E +L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: + .long L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h4e50417aff254a08E: + .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 +L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h361219fab0d04681E: - .long __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h4e50417aff254a08E +L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: + .long L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h4772d8f4b62a3fffE: + .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 +L_OBJC_METH_VAR_NAME_31f63858e271db32: .asciz "generic:selector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 .p2align 2 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17h2b1b65d00f097392E: - .long __ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h4772d8f4b62a3fffE +L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: + .long L_OBJC_METH_VAR_NAME_31f63858e271db32 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17had8c28baa7c5a8fbE: + .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 +L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17hc08656a638ae4ef4E: - .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17had8c28baa7c5a8fbE +L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: + .long L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h2832cf14fc32e7c8E: + .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 +L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h0e7e70309040c696E: - .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h2832cf14fc32e7c8E +L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: + .long L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h306e66092660f4c2E: + .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 +L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h48d6ef0c68f60e9aE: - .long __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h306e66092660f4c2E +L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: + .long L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 .subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index 2a1c98d33..4d8d457c3 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -8,7 +8,7 @@ _handle_with_sel: push rbx push rax mov rbx, rdi - call __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hc26d924341981882E + call __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17ha942fb2a10f030e2E mov rdi, rbx mov rsi, rax add rsp, 8 @@ -24,9 +24,9 @@ _handle_alloc_init: push r14 push rbx mov rbx, rdi - call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h54157f2130f0b136E + call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd4cb31996e6a0379E mov r14, rax - call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h9609094b6546c715E + call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h5f238466fcc6efaeE mov rdi, rbx mov rsi, rax call _objc_msgSend @@ -45,23 +45,23 @@ _use_generic: push r14 push rbx mov rbx, rdi - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h9a0f8d2843b3161bE + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3464617adbf28153E mov r14, rax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h47b00e7465514baaE + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb033E mov rdi, rbx mov rsi, r14 mov rdx, rax call _objc_msgSend - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h4b3385059b35f065E + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfa132600ad7bf08dE mov r14, rax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h47b00e7465514baaE + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb033E mov rdi, rbx mov rsi, r14 mov rdx, rax call _objc_msgSend - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc3bc04da3b46a52cE + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbd4ba246c21e9c56E mov r14, rax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h47b00e7465514baaE + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb033E mov rdi, rbx mov rsi, r14 mov rdx, rax @@ -71,122 +71,136 @@ _use_generic: jmp _objc_msgSend .p2align 4, 0x90 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hc26d924341981882E: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17ha942fb2a10f030e2E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h389d6e8b38dbcd5aE] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286] pop rbp ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h54157f2130f0b136E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd4cb31996e6a0379E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17hcc4dca8f09f1c5b0E] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9] pop rbp ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h9609094b6546c715E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h5f238466fcc6efaeE: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h7ea13d63769dc5d9E] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9] pop rbp ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h47b00e7465514baaE: +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb033E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17hc2551bb3b45b0465E] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32] pop rbp ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h9a0f8d2843b3161bE: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3464617adbf28153E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h0720ebf54b124315E] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4] pop rbp ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h4b3385059b35f065E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfa132600ad7bf08dE: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h119b0b79569e4509E] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1] pop rbp ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc3bc04da3b46a52cE: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbd4ba246c21e9c56E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h79f9a2e492042379E] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720] pop rbp ret .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h203f5fb6d284e62aE: + .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 +L_OBJC_METH_VAR_NAME_40f5b12005284286: .asciz "someSelector" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 .p2align 3 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround3REF17h389d6e8b38dbcd5aE: - .quad __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround4NAME17h203f5fb6d284e62aE +L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: + .quad L_OBJC_METH_VAR_NAME_40f5b12005284286 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h9a964ceeb1e3c851E: + .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 +L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: .asciz "init" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 .p2align 3 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17hcc4dca8f09f1c5b0E: - .quad __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h9a964ceeb1e3c851E +L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: + .quad L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h76dc0bdfc53c4746E: + .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 +L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 .p2align 3 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround3REF17h7ea13d63769dc5d9E: - .quad __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround4NAME17h76dc0bdfc53c4746E +L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: + .quad L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h2b80e03389f4de51E: + .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 +L_OBJC_METH_VAR_NAME_31f63858e271db32: .asciz "generic:selector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 .p2align 3 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround3REF17hc2551bb3b45b0465E: - .quad __ZN24test_msg_send_static_sel7generic22objc_static_workaround4NAME17h2b80e03389f4de51E +L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: + .quad L_OBJC_METH_VAR_NAME_31f63858e271db32 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h325389a1196cfbceE: + .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 +L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 .p2align 3 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h0720ebf54b124315E: - .quad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h325389a1196cfbceE +L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: + .quad L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h1ff5ca3b6260f1b5E: + .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 +L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 .p2align 3 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h119b0b79569e4509E: - .quad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h1ff5ca3b6260f1b5E +L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: + .quad L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 .section __TEXT,__objc_methname,cstring_literals -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h36b925d060e0191fE: + .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 +L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: .asciz "performSelector:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 .p2align 3 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround3REF17h79f9a2e492042379E: - .quad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround4NAME17h36b925d060e0191fE +L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: + .quad L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index 11eea486e..1fd903624 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -2,27 +2,27 @@ .globl _get_sel .p2align 2 _get_sel: - b __ZN15test_static_sel7get_sel22objc_static_workaround17h13c8afaaf6336561E + b __ZN15test_static_sel7get_sel22objc_static_workaround17hd01b8e03bc7ee2f2E .globl _get_same_sel .p2align 2 _get_same_sel: - b __ZN15test_static_sel12get_same_sel22objc_static_workaround17hcc291441d7e8a59fE + b __ZN15test_static_sel12get_same_sel22objc_static_workaround17h6fded10733d3d13eE .globl _get_common .p2align 2 _get_common: - b __ZN15test_static_sel10get_common22objc_static_workaround17hce555de02adf8700E + b __ZN15test_static_sel10get_common22objc_static_workaround17h3099714314719ae4E .globl _get_different_sel .p2align 2 _get_different_sel: - b __ZN15test_static_sel17get_different_sel22objc_static_workaround17hfa539aa3b979256cE + b __ZN15test_static_sel17get_different_sel22objc_static_workaround17h2df9cd4849db8a71E .globl _unused_sel .p2align 2 _unused_sel: - b __ZN15test_static_sel10unused_sel22objc_static_workaround17h0a7026e7e912a1c5E + b __ZN15test_static_sel10unused_sel22objc_static_workaround17h751ade9083325dbfE .globl _use_fns .p2align 2 @@ -32,13 +32,13 @@ _use_fns: stp x29, x30, [sp, #32] add x29, sp, #32 mov x19, x8 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h13c8afaaf6336561E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hd01b8e03bc7ee2f2E mov x20, x0 - bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17hcc291441d7e8a59fE + bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h6fded10733d3d13eE mov x21, x0 - bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17hfa539aa3b979256cE + bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h2df9cd4849db8a71E mov x22, x0 - bl __ZN15test_static_sel7use_fns22objc_static_workaround17h5f244955651662d0E + bl __ZN15test_static_sel7use_fns22objc_static_workaround17h0a4a70767a5df0c7E stp x20, x21, [x19] stp x22, x0, [x19, #16] ldp x29, x30, [sp, #32] @@ -53,9 +53,9 @@ _use_same_twice: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x8 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h13c8afaaf6336561E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hd01b8e03bc7ee2f2E mov x20, x0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h13c8afaaf6336561E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hd01b8e03bc7ee2f2E stp x20, x0, [x19] ldp x29, x30, [sp, #16] ldp x20, x19, [sp], #32 @@ -70,7 +70,7 @@ _use_in_loop: cbz x0, LBB7_3 mov x19, x0 LBB7_2: - bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17h835e149ff2fe6f9bE + bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17hd571f39365fc8d75E subs x19, x19, #1 b.ne LBB7_2 LBB7_3: @@ -79,129 +79,143 @@ LBB7_3: ret .p2align 2 -__ZN15test_static_sel7get_sel22objc_static_workaround17h13c8afaaf6336561E: +__ZN15test_static_sel7get_sel22objc_static_workaround17hd01b8e03bc7ee2f2E: Lloh0: - adrp x8, __ZN15test_static_sel7get_sel22objc_static_workaround3REF17hb6b95604312c057fE@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGE Lloh1: - ldr x0, [x8, __ZN15test_static_sel7get_sel22objc_static_workaround3REF17hb6b95604312c057fE@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGEOFF] ret .loh AdrpLdr Lloh0, Lloh1 .p2align 2 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17hcc291441d7e8a59fE: +__ZN15test_static_sel12get_same_sel22objc_static_workaround17h6fded10733d3d13eE: Lloh2: - adrp x8, __ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hf2d20958868b8e47E@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35@PAGE Lloh3: - ldr x0, [x8, __ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hf2d20958868b8e47E@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35@PAGEOFF] ret .loh AdrpLdr Lloh2, Lloh3 .p2align 2 -__ZN15test_static_sel10get_common22objc_static_workaround17hce555de02adf8700E: +__ZN15test_static_sel10get_common22objc_static_workaround17h3099714314719ae4E: Lloh4: - adrp x8, __ZN15test_static_sel10get_common22objc_static_workaround3REF17hbc6679a9cff6619cE@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964@PAGE Lloh5: - ldr x0, [x8, __ZN15test_static_sel10get_common22objc_static_workaround3REF17hbc6679a9cff6619cE@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964@PAGEOFF] ret .loh AdrpLdr Lloh4, Lloh5 .p2align 2 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17hfa539aa3b979256cE: +__ZN15test_static_sel17get_different_sel22objc_static_workaround17h2df9cd4849db8a71E: Lloh6: - adrp x8, __ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17hdb6933336b563c79E@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b@PAGE Lloh7: - ldr x0, [x8, __ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17hdb6933336b563c79E@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b@PAGEOFF] ret .loh AdrpLdr Lloh6, Lloh7 .p2align 2 -__ZN15test_static_sel10unused_sel22objc_static_workaround17h0a7026e7e912a1c5E: +__ZN15test_static_sel10unused_sel22objc_static_workaround17h751ade9083325dbfE: Lloh8: - adrp x8, __ZN15test_static_sel10unused_sel22objc_static_workaround3REF17h40777f2046a98be5E@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477@PAGE Lloh9: - ldr xzr, [x8, __ZN15test_static_sel10unused_sel22objc_static_workaround3REF17h40777f2046a98be5E@PAGEOFF] + ldr xzr, [x8, L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477@PAGEOFF] ret .loh AdrpLdr Lloh8, Lloh9 .p2align 2 -__ZN15test_static_sel7use_fns22objc_static_workaround17h5f244955651662d0E: +__ZN15test_static_sel7use_fns22objc_static_workaround17h0a4a70767a5df0c7E: Lloh10: - adrp x8, __ZN15test_static_sel7use_fns22objc_static_workaround3REF17hdaf81138d104b376E@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860@PAGE Lloh11: - ldr x0, [x8, __ZN15test_static_sel7use_fns22objc_static_workaround3REF17hdaf81138d104b376E@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860@PAGEOFF] ret .loh AdrpLdr Lloh10, Lloh11 .p2align 2 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17h835e149ff2fe6f9bE: +__ZN15test_static_sel11use_in_loop22objc_static_workaround17hd571f39365fc8d75E: Lloh12: - adrp x8, __ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h31ccfb6b27d8c440E@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07@PAGE Lloh13: - ldr xzr, [x8, __ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h31ccfb6b27d8c440E@PAGEOFF] + ldr xzr, [x8, L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07@PAGEOFF] ret .loh AdrpLdr Lloh12, Lloh13 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel22objc_static_workaround4NAME17hdc8765740ecc3d11E: + .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 +L_OBJC_METH_VAR_NAME_68381ba894e318e9: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 .p2align 3 -__ZN15test_static_sel7get_sel22objc_static_workaround3REF17hb6b95604312c057fE: - .quad __ZN15test_static_sel7get_sel22objc_static_workaround4NAME17hdc8765740ecc3d11E +L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: + .quad L_OBJC_METH_VAR_NAME_68381ba894e318e9 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17hf316d81d46a5ef66E: + .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 +L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 .p2align 3 -__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hf2d20958868b8e47E: - .quad __ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17hf316d81d46a5ef66E +L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: + .quad L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10get_common22objc_static_workaround4NAME17h455f306cf0f80e51E: + .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 +L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964 .p2align 3 -__ZN15test_static_sel10get_common22objc_static_workaround3REF17hbc6679a9cff6619cE: - .quad __ZN15test_static_sel10get_common22objc_static_workaround4NAME17h455f306cf0f80e51E +L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: + .quad L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17hbce34864cd8eb8ffE: + .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b +L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b .p2align 3 -__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17hdb6933336b563c79E: - .quad __ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17hbce34864cd8eb8ffE +L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: + .quad L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17hfc0e0c35212550d0E: + .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 +L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477 .p2align 3 -__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17h40777f2046a98be5E: - .quad __ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17hfc0e0c35212550d0E +L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: + .quad L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns22objc_static_workaround4NAME17h33067d740a4050feE: + .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 +L_OBJC_METH_VAR_NAME_1d27e854714b8860: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860 .p2align 3 -__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hdaf81138d104b376E: - .quad __ZN15test_static_sel7use_fns22objc_static_workaround4NAME17h33067d740a4050feE +L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: + .quad L_OBJC_METH_VAR_NAME_1d27e854714b8860 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17h7946000586832262E: + .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 +L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07 .p2align 3 -__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h31ccfb6b27d8c440E: - .quad __ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17h7946000586832262E +L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07: + .quad L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index 503ba6b38..689e0fc25 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -4,31 +4,31 @@ .p2align 2 .code 32 _get_sel: - b __ZN15test_static_sel7get_sel22objc_static_workaround17h72e7bc422453dd4bE + b __ZN15test_static_sel7get_sel22objc_static_workaround17hb4f8ebf12620f024E .globl _get_same_sel .p2align 2 .code 32 _get_same_sel: - b __ZN15test_static_sel12get_same_sel22objc_static_workaround17hd2469b9e7fb1c0f2E + b __ZN15test_static_sel12get_same_sel22objc_static_workaround17ha0db901a0e219311E .globl _get_common .p2align 2 .code 32 _get_common: - b __ZN15test_static_sel10get_common22objc_static_workaround17h3f794ff9f42acf9eE + b __ZN15test_static_sel10get_common22objc_static_workaround17h8e0d36867c2deb3fE .globl _get_different_sel .p2align 2 .code 32 _get_different_sel: - b __ZN15test_static_sel17get_different_sel22objc_static_workaround17h01062977b636a32dE + b __ZN15test_static_sel17get_different_sel22objc_static_workaround17hac89f9a0e9ae4aafE .globl _unused_sel .p2align 2 .code 32 _unused_sel: - b __ZN15test_static_sel10unused_sel22objc_static_workaround17h6da711f1e3b49352E + b __ZN15test_static_sel10unused_sel22objc_static_workaround17h7e5361a34aa0b8f3E .globl _use_fns .p2align 2 @@ -38,13 +38,13 @@ _use_fns: add r7, sp, #12 push {r8} mov r4, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h72e7bc422453dd4bE + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hb4f8ebf12620f024E mov r8, r0 - bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17hd2469b9e7fb1c0f2E + bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17ha0db901a0e219311E mov r6, r0 - bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h01062977b636a32dE + bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17hac89f9a0e9ae4aafE mov r5, r0 - bl __ZN15test_static_sel7use_fns22objc_static_workaround17h0114609dfd50ccc2E + bl __ZN15test_static_sel7use_fns22objc_static_workaround17h8513ca3de8f36ba6E str r8, [r4] str r6, [r4, #4] str r5, [r4, #8] @@ -60,9 +60,9 @@ _use_same_twice: add r7, sp, #4 push {r8} mov r4, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h72e7bc422453dd4bE + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hb4f8ebf12620f024E mov r8, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h72e7bc422453dd4bE + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hb4f8ebf12620f024E mov r9, r0 strd r8, r9, [r4] pop {r8} @@ -79,135 +79,149 @@ _use_in_loop: LBB7_1: mov r4, r0 LBB7_2: - bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17hfddcd2cc792b0ea4E + bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17h0b1654ea6eda9039E subs r4, r4, #1 bne LBB7_2 pop {r4, r7, pc} .p2align 2 .code 32 -__ZN15test_static_sel7get_sel22objc_static_workaround17h72e7bc422453dd4bE: - movw r0, :lower16:(__ZN15test_static_sel7get_sel22objc_static_workaround3REF17haed2d29deaa594a5E-(LPC8_0+8)) - movt r0, :upper16:(__ZN15test_static_sel7get_sel22objc_static_workaround3REF17haed2d29deaa594a5E-(LPC8_0+8)) +__ZN15test_static_sel7get_sel22objc_static_workaround17hb4f8ebf12620f024E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) LPC8_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17hd2469b9e7fb1c0f2E: - movw r0, :lower16:(__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17ha96ad30cde590111E-(LPC9_0+8)) - movt r0, :upper16:(__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17ha96ad30cde590111E-(LPC9_0+8)) +__ZN15test_static_sel12get_same_sel22objc_static_workaround17ha0db901a0e219311E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) LPC9_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel10get_common22objc_static_workaround17h3f794ff9f42acf9eE: - movw r0, :lower16:(__ZN15test_static_sel10get_common22objc_static_workaround3REF17h9dd8d669df75f145E-(LPC10_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10get_common22objc_static_workaround3REF17h9dd8d669df75f145E-(LPC10_0+8)) +__ZN15test_static_sel10get_common22objc_static_workaround17h8e0d36867c2deb3fE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) LPC10_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17h01062977b636a32dE: - movw r0, :lower16:(__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17hfbfc6a5f52210736E-(LPC11_0+8)) - movt r0, :upper16:(__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17hfbfc6a5f52210736E-(LPC11_0+8)) +__ZN15test_static_sel17get_different_sel22objc_static_workaround17hac89f9a0e9ae4aafE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) LPC11_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel10unused_sel22objc_static_workaround17h6da711f1e3b49352E: - movw r0, :lower16:(__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17h3f6ed3f067235ff3E-(LPC12_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17h3f6ed3f067235ff3E-(LPC12_0+8)) +__ZN15test_static_sel10unused_sel22objc_static_workaround17h7e5361a34aa0b8f3E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) LPC12_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel7use_fns22objc_static_workaround17h0114609dfd50ccc2E: - movw r0, :lower16:(__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hd9b45383a5f14d7fE-(LPC13_0+8)) - movt r0, :upper16:(__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hd9b45383a5f14d7fE-(LPC13_0+8)) +__ZN15test_static_sel7use_fns22objc_static_workaround17h8513ca3de8f36ba6E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) LPC13_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17hfddcd2cc792b0ea4E: - movw r0, :lower16:(__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h4273a0a2541d4d90E-(LPC14_0+8)) - movt r0, :upper16:(__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h4273a0a2541d4d90E-(LPC14_0+8)) +__ZN15test_static_sel11use_in_loop22objc_static_workaround17h0b1654ea6eda9039E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) LPC14_0: ldr r0, [pc, r0] bx lr .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel22objc_static_workaround4NAME17ha3f8077c962753c6E: + .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 +L_OBJC_METH_VAR_NAME_68381ba894e318e9: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 .p2align 2 -__ZN15test_static_sel7get_sel22objc_static_workaround3REF17haed2d29deaa594a5E: - .long __ZN15test_static_sel7get_sel22objc_static_workaround4NAME17ha3f8077c962753c6E +L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: + .long L_OBJC_METH_VAR_NAME_68381ba894e318e9 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17h414b71130d291bcbE: + .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 +L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 .p2align 2 -__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17ha96ad30cde590111E: - .long __ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17h414b71130d291bcbE +L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: + .long L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10get_common22objc_static_workaround4NAME17h59407464b3ae7e14E: + .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 +L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964 .p2align 2 -__ZN15test_static_sel10get_common22objc_static_workaround3REF17h9dd8d669df75f145E: - .long __ZN15test_static_sel10get_common22objc_static_workaround4NAME17h59407464b3ae7e14E +L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: + .long L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17hf259bc1c6d7a8474E: + .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b +L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b .p2align 2 -__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17hfbfc6a5f52210736E: - .long __ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17hf259bc1c6d7a8474E +L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: + .long L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17h524d9abe91019351E: + .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 +L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477 .p2align 2 -__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17h3f6ed3f067235ff3E: - .long __ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17h524d9abe91019351E +L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: + .long L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns22objc_static_workaround4NAME17he05a8a8a090de466E: + .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 +L_OBJC_METH_VAR_NAME_1d27e854714b8860: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860 .p2align 2 -__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hd9b45383a5f14d7fE: - .long __ZN15test_static_sel7use_fns22objc_static_workaround4NAME17he05a8a8a090de466E +L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: + .long L_OBJC_METH_VAR_NAME_1d27e854714b8860 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17hd8d7210562c66839E: + .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 +L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07 .p2align 2 -__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h4273a0a2541d4d90E: - .long __ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17hd8d7210562c66839E +L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07: + .long L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index e8b66bbb0..2ea02a737 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -6,7 +6,7 @@ _get_sel: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h727796eb777ca212E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hfbc0e8d2d2b9b0faE pop {r7, pc} .globl _get_same_sel @@ -15,7 +15,7 @@ _get_sel: _get_same_sel: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h05bab5e52e062a47E + bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h206241f3cdb815f2E pop {r7, pc} .globl _get_common @@ -24,7 +24,7 @@ _get_same_sel: _get_common: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel10get_common22objc_static_workaround17hd33621f07152712dE + bl __ZN15test_static_sel10get_common22objc_static_workaround17h43aa5ab975f84968E pop {r7, pc} .globl _get_different_sel @@ -33,7 +33,7 @@ _get_common: _get_different_sel: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h20e00ed4cf62ec6cE + bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h6d4d0b19565e8bbaE pop {r7, pc} .globl _unused_sel @@ -42,7 +42,7 @@ _get_different_sel: _unused_sel: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel10unused_sel22objc_static_workaround17hd8ba138112e5d612E + bl __ZN15test_static_sel10unused_sel22objc_static_workaround17hccfdb864c1636284E pop {r7, pc} .globl _use_fns @@ -53,13 +53,13 @@ _use_fns: add r7, sp, #12 push {r8} mov r4, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h727796eb777ca212E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hfbc0e8d2d2b9b0faE mov r8, r0 - bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h05bab5e52e062a47E + bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h206241f3cdb815f2E mov r6, r0 - bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h20e00ed4cf62ec6cE + bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h6d4d0b19565e8bbaE mov r5, r0 - bl __ZN15test_static_sel7use_fns22objc_static_workaround17h613888fa0e7e36bdE + bl __ZN15test_static_sel7use_fns22objc_static_workaround17h08f64a44e1d1f6ffE str r8, [r4] str r6, [r4, #4] str r5, [r4, #8] @@ -75,9 +75,9 @@ _use_same_twice: add r7, sp, #4 push {r8} mov r4, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h727796eb777ca212E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hfbc0e8d2d2b9b0faE mov r8, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h727796eb777ca212E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hfbc0e8d2d2b9b0faE mov r9, r0 strd r8, r9, [r4] pop {r8} @@ -94,135 +94,149 @@ _use_in_loop: LBB7_1: mov r4, r0 LBB7_2: - bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17h806742d54569416eE + bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17hef7c0204ccd46c76E subs r4, r4, #1 bne LBB7_2 pop {r4, r7, pc} .p2align 2 .code 32 -__ZN15test_static_sel7get_sel22objc_static_workaround17h727796eb777ca212E: - movw r0, :lower16:(__ZN15test_static_sel7get_sel22objc_static_workaround3REF17hefeb1efa701445a4E-(LPC8_0+8)) - movt r0, :upper16:(__ZN15test_static_sel7get_sel22objc_static_workaround3REF17hefeb1efa701445a4E-(LPC8_0+8)) +__ZN15test_static_sel7get_sel22objc_static_workaround17hfbc0e8d2d2b9b0faE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) LPC8_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17h05bab5e52e062a47E: - movw r0, :lower16:(__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hc58f200ac0b74570E-(LPC9_0+8)) - movt r0, :upper16:(__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hc58f200ac0b74570E-(LPC9_0+8)) +__ZN15test_static_sel12get_same_sel22objc_static_workaround17h206241f3cdb815f2E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) LPC9_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel10get_common22objc_static_workaround17hd33621f07152712dE: - movw r0, :lower16:(__ZN15test_static_sel10get_common22objc_static_workaround3REF17h11bf08c1651e11acE-(LPC10_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10get_common22objc_static_workaround3REF17h11bf08c1651e11acE-(LPC10_0+8)) +__ZN15test_static_sel10get_common22objc_static_workaround17h43aa5ab975f84968E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) LPC10_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17h20e00ed4cf62ec6cE: - movw r0, :lower16:(__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17h31f43ec056144797E-(LPC11_0+8)) - movt r0, :upper16:(__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17h31f43ec056144797E-(LPC11_0+8)) +__ZN15test_static_sel17get_different_sel22objc_static_workaround17h6d4d0b19565e8bbaE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) LPC11_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel10unused_sel22objc_static_workaround17hd8ba138112e5d612E: - movw r0, :lower16:(__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hbfa5418e3430bd57E-(LPC12_0+8)) - movt r0, :upper16:(__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hbfa5418e3430bd57E-(LPC12_0+8)) +__ZN15test_static_sel10unused_sel22objc_static_workaround17hccfdb864c1636284E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) LPC12_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel7use_fns22objc_static_workaround17h613888fa0e7e36bdE: - movw r0, :lower16:(__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hd98abf55861d9c7eE-(LPC13_0+8)) - movt r0, :upper16:(__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hd98abf55861d9c7eE-(LPC13_0+8)) +__ZN15test_static_sel7use_fns22objc_static_workaround17h08f64a44e1d1f6ffE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) LPC13_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17h806742d54569416eE: - movw r0, :lower16:(__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h3be3974baf782dd5E-(LPC14_0+8)) - movt r0, :upper16:(__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h3be3974baf782dd5E-(LPC14_0+8)) +__ZN15test_static_sel11use_in_loop22objc_static_workaround17hef7c0204ccd46c76E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) LPC14_0: ldr r0, [pc, r0] bx lr .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel22objc_static_workaround4NAME17h15c0f2d5bb72484eE: + .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 +L_OBJC_METH_VAR_NAME_68381ba894e318e9: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 .p2align 2 -__ZN15test_static_sel7get_sel22objc_static_workaround3REF17hefeb1efa701445a4E: - .long __ZN15test_static_sel7get_sel22objc_static_workaround4NAME17h15c0f2d5bb72484eE +L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: + .long L_OBJC_METH_VAR_NAME_68381ba894e318e9 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17h9742a2b7783b7cf1E: + .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 +L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 .p2align 2 -__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hc58f200ac0b74570E: - .long __ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17h9742a2b7783b7cf1E +L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: + .long L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10get_common22objc_static_workaround4NAME17h5666fd5c6ed96293E: + .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 +L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964 .p2align 2 -__ZN15test_static_sel10get_common22objc_static_workaround3REF17h11bf08c1651e11acE: - .long __ZN15test_static_sel10get_common22objc_static_workaround4NAME17h5666fd5c6ed96293E +L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: + .long L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17hd7e073585b5ca385E: + .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b +L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b .p2align 2 -__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17h31f43ec056144797E: - .long __ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17hd7e073585b5ca385E +L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: + .long L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17h57ecf7de5ba63d5dE: + .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 +L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477 .p2align 2 -__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hbfa5418e3430bd57E: - .long __ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17h57ecf7de5ba63d5dE +L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: + .long L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns22objc_static_workaround4NAME17h9496e7395093f09bE: + .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 +L_OBJC_METH_VAR_NAME_1d27e854714b8860: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860 .p2align 2 -__ZN15test_static_sel7use_fns22objc_static_workaround3REF17hd98abf55861d9c7eE: - .long __ZN15test_static_sel7use_fns22objc_static_workaround4NAME17h9496e7395093f09bE +L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: + .long L_OBJC_METH_VAR_NAME_1d27e854714b8860 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17hf5353e0a47539e1dE: + .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 +L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07 .p2align 2 -__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17h3be3974baf782dd5E: - .long __ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17hf5353e0a47539e1dE +L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07: + .long L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index 08da70b6b..ac93b3570 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -6,7 +6,7 @@ _get_sel: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel7get_sel22objc_static_workaround17h81b7b987eca6a3a4E + jmp __ZN15test_static_sel7get_sel22objc_static_workaround17hbd28d1f4da2b6e6eE .globl _get_same_sel .p2align 4, 0x90 @@ -14,7 +14,7 @@ _get_same_sel: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel12get_same_sel22objc_static_workaround17h42fe6964f04a7ccaE + jmp __ZN15test_static_sel12get_same_sel22objc_static_workaround17hcf8c438d0e807292E .globl _get_common .p2align 4, 0x90 @@ -22,7 +22,7 @@ _get_common: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel10get_common22objc_static_workaround17h8ab540c389e482ebE + jmp __ZN15test_static_sel10get_common22objc_static_workaround17hd73a38a3512c60a4E .globl _get_different_sel .p2align 4, 0x90 @@ -30,7 +30,7 @@ _get_different_sel: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel17get_different_sel22objc_static_workaround17h728dd0c6759019a1E + jmp __ZN15test_static_sel17get_different_sel22objc_static_workaround17h0437e7638527cbcbE .globl _unused_sel .p2align 4, 0x90 @@ -38,7 +38,7 @@ _unused_sel: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel10unused_sel22objc_static_workaround17hde06c029659e697eE + jmp __ZN15test_static_sel10unused_sel22objc_static_workaround17h9d08c6f2f30054acE .globl _use_fns .p2align 4, 0x90 @@ -50,13 +50,13 @@ _use_fns: push esi sub esp, 12 mov esi, dword ptr [ebp + 8] - call __ZN15test_static_sel7get_sel22objc_static_workaround17h81b7b987eca6a3a4E + call __ZN15test_static_sel7get_sel22objc_static_workaround17hbd28d1f4da2b6e6eE mov dword ptr [ebp - 16], eax - call __ZN15test_static_sel12get_same_sel22objc_static_workaround17h42fe6964f04a7ccaE + call __ZN15test_static_sel12get_same_sel22objc_static_workaround17hcf8c438d0e807292E mov ebx, eax - call __ZN15test_static_sel17get_different_sel22objc_static_workaround17h728dd0c6759019a1E + call __ZN15test_static_sel17get_different_sel22objc_static_workaround17h0437e7638527cbcbE mov edi, eax - call __ZN15test_static_sel7use_fns22objc_static_workaround17ha83e06d45bafd771E + call __ZN15test_static_sel7use_fns22objc_static_workaround17hb2af229df09794e6E mov ecx, dword ptr [ebp - 16] mov dword ptr [esi], ecx mov dword ptr [esi + 4], ebx @@ -78,9 +78,9 @@ _use_same_twice: push edi push esi mov esi, dword ptr [ebp + 8] - call __ZN15test_static_sel7get_sel22objc_static_workaround17h81b7b987eca6a3a4E + call __ZN15test_static_sel7get_sel22objc_static_workaround17hbd28d1f4da2b6e6eE mov edi, eax - call __ZN15test_static_sel7get_sel22objc_static_workaround17h81b7b987eca6a3a4E + call __ZN15test_static_sel7get_sel22objc_static_workaround17hbd28d1f4da2b6e6eE mov dword ptr [esi], edi mov dword ptr [esi + 4], eax mov eax, esi @@ -101,7 +101,7 @@ _use_in_loop: je LBB7_2 .p2align 4, 0x90 LBB7_1: - call __ZN15test_static_sel11use_in_loop22objc_static_workaround17h601e1f59fa6876fdE + call __ZN15test_static_sel11use_in_loop22objc_static_workaround17h0d03d9d1392db5daE dec esi jne LBB7_1 LBB7_2: @@ -111,143 +111,157 @@ LBB7_2: ret .p2align 4, 0x90 -__ZN15test_static_sel7get_sel22objc_static_workaround17h81b7b987eca6a3a4E: +__ZN15test_static_sel7get_sel22objc_static_workaround17hbd28d1f4da2b6e6eE: push ebp mov ebp, esp call L8$pb L8$pb: pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel7get_sel22objc_static_workaround3REF17hc37abb4197ef951bE-L8$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-L8$pb] pop ebp ret .p2align 4, 0x90 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17h42fe6964f04a7ccaE: +__ZN15test_static_sel12get_same_sel22objc_static_workaround17hcf8c438d0e807292E: push ebp mov ebp, esp call L9$pb L9$pb: pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hd3b05de0d9a96eecE-L9$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-L9$pb] pop ebp ret .p2align 4, 0x90 -__ZN15test_static_sel10get_common22objc_static_workaround17h8ab540c389e482ebE: +__ZN15test_static_sel10get_common22objc_static_workaround17hd73a38a3512c60a4E: push ebp mov ebp, esp call L10$pb L10$pb: pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel10get_common22objc_static_workaround3REF17h3d670595527dbbb7E-L10$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-L10$pb] pop ebp ret .p2align 4, 0x90 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17h728dd0c6759019a1E: +__ZN15test_static_sel17get_different_sel22objc_static_workaround17h0437e7638527cbcbE: push ebp mov ebp, esp call L11$pb L11$pb: pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17h5c87d7158e6ff828E-L11$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-L11$pb] pop ebp ret .p2align 4, 0x90 -__ZN15test_static_sel10unused_sel22objc_static_workaround17hde06c029659e697eE: +__ZN15test_static_sel10unused_sel22objc_static_workaround17h9d08c6f2f30054acE: push ebp mov ebp, esp call L12$pb L12$pb: pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hb7b3ebb79de7386dE-L12$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-L12$pb] pop ebp ret .p2align 4, 0x90 -__ZN15test_static_sel7use_fns22objc_static_workaround17ha83e06d45bafd771E: +__ZN15test_static_sel7use_fns22objc_static_workaround17hb2af229df09794e6E: push ebp mov ebp, esp call L13$pb L13$pb: pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel7use_fns22objc_static_workaround3REF17h1a4a387de8da6e06E-L13$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-L13$pb] pop ebp ret .p2align 4, 0x90 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17h601e1f59fa6876fdE: +__ZN15test_static_sel11use_in_loop22objc_static_workaround17h0d03d9d1392db5daE: push ebp mov ebp, esp call L14$pb L14$pb: pop eax - mov eax, dword ptr [eax + __ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17hafed3287c99de420E-L14$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-L14$pb] pop ebp ret .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel22objc_static_workaround4NAME17h90deb32c3cc9afbfE: + .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 +L_OBJC_METH_VAR_NAME_68381ba894e318e9: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 .p2align 2 -__ZN15test_static_sel7get_sel22objc_static_workaround3REF17hc37abb4197ef951bE: - .long __ZN15test_static_sel7get_sel22objc_static_workaround4NAME17h90deb32c3cc9afbfE +L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: + .long L_OBJC_METH_VAR_NAME_68381ba894e318e9 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17h79fb7ea50d2382ecE: + .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 +L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 .p2align 2 -__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17hd3b05de0d9a96eecE: - .long __ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17h79fb7ea50d2382ecE +L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: + .long L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10get_common22objc_static_workaround4NAME17h4c782c7fdf617c72E: + .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 +L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964 .p2align 2 -__ZN15test_static_sel10get_common22objc_static_workaround3REF17h3d670595527dbbb7E: - .long __ZN15test_static_sel10get_common22objc_static_workaround4NAME17h4c782c7fdf617c72E +L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: + .long L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17h69a9c6cf0d4df9cbE: + .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b +L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b .p2align 2 -__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17h5c87d7158e6ff828E: - .long __ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17h69a9c6cf0d4df9cbE +L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: + .long L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17h7123d51632cd4661E: + .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 +L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477 .p2align 2 -__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hb7b3ebb79de7386dE: - .long __ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17h7123d51632cd4661E +L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: + .long L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns22objc_static_workaround4NAME17ha768eb127f2dc8a6E: + .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 +L_OBJC_METH_VAR_NAME_1d27e854714b8860: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860 .p2align 2 -__ZN15test_static_sel7use_fns22objc_static_workaround3REF17h1a4a387de8da6e06E: - .long __ZN15test_static_sel7use_fns22objc_static_workaround4NAME17ha768eb127f2dc8a6E +L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: + .long L_OBJC_METH_VAR_NAME_1d27e854714b8860 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17hff06965bc2df53daE: + .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 +L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07 .p2align 2 -__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17hafed3287c99de420E: - .long __ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17hff06965bc2df53daE +L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07: + .long L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index e0a5a2043..8649912e1 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -6,7 +6,7 @@ _get_sel: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel7get_sel22objc_static_workaround17h1cbb0c161f2bac9aE + jmp __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E .globl _get_same_sel .p2align 4, 0x90 @@ -14,7 +14,7 @@ _get_same_sel: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel12get_same_sel22objc_static_workaround17hc1a2360c3d4bddd0E + jmp __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9d8d966f2cacb6adE .globl _get_common .p2align 4, 0x90 @@ -22,7 +22,7 @@ _get_common: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel10get_common22objc_static_workaround17h65f6e72e4d407b78E + jmp __ZN15test_static_sel10get_common22objc_static_workaround17h294a2c5d7fde0460E .globl _get_different_sel .p2align 4, 0x90 @@ -30,7 +30,7 @@ _get_different_sel: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel17get_different_sel22objc_static_workaround17h87e0092168d40157E + jmp __ZN15test_static_sel17get_different_sel22objc_static_workaround17hec1d04928285e256E .globl _unused_sel .p2align 4, 0x90 @@ -38,7 +38,7 @@ _unused_sel: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel10unused_sel22objc_static_workaround17h8da61a9c5502ca9aE + jmp __ZN15test_static_sel10unused_sel22objc_static_workaround17h1c4a686117a5fc41E .globl _use_fns .p2align 4, 0x90 @@ -50,13 +50,13 @@ _use_fns: push r12 push rbx mov rbx, rdi - call __ZN15test_static_sel7get_sel22objc_static_workaround17h1cbb0c161f2bac9aE + call __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E mov r14, rax - call __ZN15test_static_sel12get_same_sel22objc_static_workaround17hc1a2360c3d4bddd0E + call __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9d8d966f2cacb6adE mov r15, rax - call __ZN15test_static_sel17get_different_sel22objc_static_workaround17h87e0092168d40157E + call __ZN15test_static_sel17get_different_sel22objc_static_workaround17hec1d04928285e256E mov r12, rax - call __ZN15test_static_sel7use_fns22objc_static_workaround17h38f61cd0d3e1beb6E + call __ZN15test_static_sel7use_fns22objc_static_workaround17h276ee743b1a511dcE mov qword ptr [rbx], r14 mov qword ptr [rbx + 8], r15 mov qword ptr [rbx + 16], r12 @@ -77,9 +77,9 @@ _use_same_twice: push r14 push rbx mov rbx, rdi - call __ZN15test_static_sel7get_sel22objc_static_workaround17h1cbb0c161f2bac9aE + call __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E mov r14, rax - call __ZN15test_static_sel7get_sel22objc_static_workaround17h1cbb0c161f2bac9aE + call __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E mov qword ptr [rbx], r14 mov qword ptr [rbx + 8], rax mov rax, rbx @@ -100,7 +100,7 @@ _use_in_loop: mov rbx, rdi .p2align 4, 0x90 LBB7_2: - call __ZN15test_static_sel11use_in_loop22objc_static_workaround17hb648681a47b1fb9eE + call __ZN15test_static_sel11use_in_loop22objc_static_workaround17hba715066d6ed34d0E dec rbx jne LBB7_2 LBB7_3: @@ -110,122 +110,136 @@ LBB7_3: ret .p2align 4, 0x90 -__ZN15test_static_sel7get_sel22objc_static_workaround17h1cbb0c161f2bac9aE: +__ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel7get_sel22objc_static_workaround3REF17he1cced5ed20eba38E] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9] pop rbp ret .p2align 4, 0x90 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17hc1a2360c3d4bddd0E: +__ZN15test_static_sel12get_same_sel22objc_static_workaround17h9d8d966f2cacb6adE: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17h8453f9968f695650E] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35] pop rbp ret .p2align 4, 0x90 -__ZN15test_static_sel10get_common22objc_static_workaround17h65f6e72e4d407b78E: +__ZN15test_static_sel10get_common22objc_static_workaround17h294a2c5d7fde0460E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel10get_common22objc_static_workaround3REF17h8fda95d0c1daa73eE] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964] pop rbp ret .p2align 4, 0x90 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17h87e0092168d40157E: +__ZN15test_static_sel17get_different_sel22objc_static_workaround17hec1d04928285e256E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17he72c56ab87ae659fE] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b] pop rbp ret .p2align 4, 0x90 -__ZN15test_static_sel10unused_sel22objc_static_workaround17h8da61a9c5502ca9aE: +__ZN15test_static_sel10unused_sel22objc_static_workaround17h1c4a686117a5fc41E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hc3e929842d683b1cE] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477] pop rbp ret .p2align 4, 0x90 -__ZN15test_static_sel7use_fns22objc_static_workaround17h38f61cd0d3e1beb6E: +__ZN15test_static_sel7use_fns22objc_static_workaround17h276ee743b1a511dcE: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel7use_fns22objc_static_workaround3REF17head6b4f5de386e04E] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860] pop rbp ret .p2align 4, 0x90 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17hb648681a47b1fb9eE: +__ZN15test_static_sel11use_in_loop22objc_static_workaround17hba715066d6ed34d0E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + __ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17habfe315ed82cbd83E] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07] pop rbp ret .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7get_sel22objc_static_workaround4NAME17hc48a6857ae4ba570E: + .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 +L_OBJC_METH_VAR_NAME_68381ba894e318e9: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 .p2align 3 -__ZN15test_static_sel7get_sel22objc_static_workaround3REF17he1cced5ed20eba38E: - .quad __ZN15test_static_sel7get_sel22objc_static_workaround4NAME17hc48a6857ae4ba570E +L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: + .quad L_OBJC_METH_VAR_NAME_68381ba894e318e9 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17hcf1f699e31314f2fE: + .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 +L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: .asciz "simple" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 .p2align 3 -__ZN15test_static_sel12get_same_sel22objc_static_workaround3REF17h8453f9968f695650E: - .quad __ZN15test_static_sel12get_same_sel22objc_static_workaround4NAME17hcf1f699e31314f2fE +L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: + .quad L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10get_common22objc_static_workaround4NAME17h3ea1273e7725867cE: + .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 +L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964 .p2align 3 -__ZN15test_static_sel10get_common22objc_static_workaround3REF17h8fda95d0c1daa73eE: - .quad __ZN15test_static_sel10get_common22objc_static_workaround4NAME17h3ea1273e7725867cE +L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: + .quad L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17h010a4d89cb2f6290E: + .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b +L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b .p2align 3 -__ZN15test_static_sel17get_different_sel22objc_static_workaround3REF17he72c56ab87ae659fE: - .quad __ZN15test_static_sel17get_different_sel22objc_static_workaround4NAME17h010a4d89cb2f6290E +L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: + .quad L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17hf83654e332b09713E: + .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 +L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477 .p2align 3 -__ZN15test_static_sel10unused_sel22objc_static_workaround3REF17hc3e929842d683b1cE: - .quad __ZN15test_static_sel10unused_sel22objc_static_workaround4NAME17hf83654e332b09713E +L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: + .quad L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel7use_fns22objc_static_workaround4NAME17h3b3319caba6cf9f3E: + .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 +L_OBJC_METH_VAR_NAME_1d27e854714b8860: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860 .p2align 3 -__ZN15test_static_sel7use_fns22objc_static_workaround3REF17head6b4f5de386e04E: - .quad __ZN15test_static_sel7use_fns22objc_static_workaround4NAME17h3b3319caba6cf9f3E +L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: + .quad L_OBJC_METH_VAR_NAME_1d27e854714b8860 .section __TEXT,__objc_methname,cstring_literals -__ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17he5e1c1e1a2ca8028E: + .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 +L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07 .p2align 3 -__ZN15test_static_sel11use_in_loop22objc_static_workaround3REF17habfe315ed82cbd83E: - .quad __ZN15test_static_sel11use_in_loop22objc_static_workaround4NAME17he5e1c1e1a2ca8028E +L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07: + .quad L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 .subsections_via_symbols From 7c3434187b91aa7a37144e5832d044fecb440388 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 3 Mar 2022 02:15:12 +0100 Subject: [PATCH 08/30] Add hack to set up the __objc_imageinfo section Co-authored-by: Jeff Muizelaar Co-authored-by: clavin --- objc2/src/lib.rs | 10 +++ objc2/src/macros.rs | 2 + objc2/tests/use_macros.rs | 3 + .../expected/apple-aarch64.s | 28 +++++++++ .../expected/apple-armv7.s | 35 ++++++++--- .../expected/apple-armv7s.s | 35 ++++++++--- .../expected/apple-x86.s | 63 ++++++++++++++----- .../expected/apple-x86_64.s | 7 +++ .../test_static_sel/expected/apple-aarch64.s | 28 +++++++++ .../test_static_sel/expected/apple-armv7.s | 35 ++++++++--- .../test_static_sel/expected/apple-armv7s.s | 35 ++++++++--- .../test_static_sel/expected/apple-x86.s | 63 ++++++++++++++----- .../test_static_sel/expected/apple-x86_64.s | 7 +++ 13 files changed, 295 insertions(+), 56 deletions(-) diff --git a/objc2/src/lib.rs b/objc2/src/lib.rs index fd2431a08..ad4241b82 100644 --- a/objc2/src/lib.rs +++ b/objc2/src/lib.rs @@ -204,6 +204,16 @@ pub use crate::cache::CachedSel as __CachedSel; #[macro_use] mod macros; +#[doc(hidden)] +pub fn image_info() { + #[link_section = "__DATA,__objc_imageinfo,regular,no_dead_strip"] + #[used] + static _IMAGE_INFO: [u32; 2] = [ + 0, // Version + 64, // Flags + ]; +} + mod bool; mod cache; pub mod declare; diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index b8a70c559..d56c2079b 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -71,6 +71,8 @@ macro_rules! sel { fn objc_static_workaround() -> $crate::runtime::Sel { const X: &[u8] = $sel.as_bytes(); + $crate::image_info(); + #[link_section = "__TEXT,__objc_methname,cstring_literals"] #[export_name = concat!("\x01L_OBJC_METH_VAR_NAME_", $crate::__proc_macros::hash_idents!($($idents)+))] static NAME: [u8; X.len()] = { diff --git a/objc2/tests/use_macros.rs b/objc2/tests/use_macros.rs index b58ebe190..e60b73ec0 100644 --- a/objc2/tests/use_macros.rs +++ b/objc2/tests/use_macros.rs @@ -9,6 +9,9 @@ fn ensure_linkage() { #[test] fn use_class_and_msg_send() { + // TEMPORARY! + objc2::image_info(); + unsafe { let cls = class!(NSObject); let obj: *mut Object = msg_send![cls, new]; diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index 2b7b51859..84ebc5fd4 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -64,64 +64,92 @@ _use_generic: .p2align 2 __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h7e2219bd31d55268E: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh0: adrp x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGE Lloh1: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh0, Lloh1 .p2align 2 __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h3d919388c23fdf68E: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh2: adrp x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGE Lloh3: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh2, Lloh3 .p2align 2 __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h208b45a18d15451eE: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh4: adrp x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGE Lloh5: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh4, Lloh5 .p2align 2 __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h432a20390f91c26fE: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh6: adrp x8, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGE Lloh7: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh6, Lloh7 .p2align 2 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h29677622e36cf330E: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh8: adrp x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGE Lloh9: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh8, Lloh9 .p2align 2 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h777a3aa99de98b73E: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh10: adrp x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGE Lloh11: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh10, Lloh11 .p2align 2 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h82d96cce58f7d605E: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh12: adrp x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGE Lloh13: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh12, Lloh13 diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index 43ff1ed7f..f3b6cca04 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -63,65 +63,86 @@ _use_generic: .p2align 2 .code 32 __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hbbdda4be504e4b8dE: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) LPC3_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h64a8dce59c4dc94aE: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) LPC4_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h4470f95a700d9c7bE: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) LPC5_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hbfbca3fddd47cf1dE: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) LPC6_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hebd2347ba98b0bafE: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) LPC7_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h5467f850ea7c1791E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) LPC8_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha138f577d13053ebE: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) LPC9_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index 87fdba666..e5ced32e5 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -63,65 +63,86 @@ _use_generic: .p2align 2 .code 32 __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h8e8912e05611baf8E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) LPC3_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h98b7256dded064d1E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) LPC4_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h8bd68890a8be4b94E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) LPC5_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h137ede0f8414f244E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) LPC6_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h4db106eab2ec1470E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) LPC7_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h68391fe30382cbbeE: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) LPC8_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd7ee6447198a8703E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) LPC9_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index 82bdb5e24..4a3be51ab 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -87,10 +87,15 @@ _use_generic: __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h713350a8d234436dE: push ebp mov ebp, esp + push esi + push eax call L3$pb L3$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-L3$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-L3$pb] + add esp, 4 + pop esi pop ebp ret @@ -98,10 +103,15 @@ L3$pb: __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7e789f29e463517aE: push ebp mov ebp, esp + push esi + push eax call L4$pb L4$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-L4$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-L4$pb] + add esp, 4 + pop esi pop ebp ret @@ -109,10 +119,15 @@ L4$pb: __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h8a2e6aa05f9c9dbdE: push ebp mov ebp, esp + push esi + push eax call L5$pb L5$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-L5$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-L5$pb] + add esp, 4 + pop esi pop ebp ret @@ -120,10 +135,15 @@ L5$pb: __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h69a1eaae9cce6de4E: push ebp mov ebp, esp + push esi + push eax call L6$pb L6$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-L6$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-L6$pb] + add esp, 4 + pop esi pop ebp ret @@ -131,10 +151,15 @@ L6$pb: __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h2996e77ce6841ac6E: push ebp mov ebp, esp + push esi + push eax call L7$pb L7$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-L7$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-L7$pb] + add esp, 4 + pop esi pop ebp ret @@ -142,10 +167,15 @@ L7$pb: __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h8127295802f21218E: push ebp mov ebp, esp + push esi + push eax call L8$pb L8$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-L8$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-L8$pb] + add esp, 4 + pop esi pop ebp ret @@ -153,10 +183,15 @@ L8$pb: __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17he3ad303312f2a9d3E: push ebp mov ebp, esp + push esi + push eax call L9$pb L9$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-L9$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-L9$pb] + add esp, 4 + pop esi pop ebp ret diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index 4d8d457c3..ef652ce55 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -74,6 +74,7 @@ _use_generic: __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17ha942fb2a10f030e2E: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286] pop rbp ret @@ -82,6 +83,7 @@ __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17ha942fb __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd4cb31996e6a0379E: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9] pop rbp ret @@ -90,6 +92,7 @@ __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd4cb __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h5f238466fcc6efaeE: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9] pop rbp ret @@ -98,6 +101,7 @@ __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h5f23 __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb033E: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32] pop rbp ret @@ -106,6 +110,7 @@ __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb03 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3464617adbf28153E: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4] pop rbp ret @@ -114,6 +119,7 @@ __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3464617adb __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfa132600ad7bf08dE: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1] pop rbp ret @@ -122,6 +128,7 @@ __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfa132600ad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbd4ba246c21e9c56E: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720] pop rbp ret diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index 1fd903624..9be58dfab 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -80,64 +80,92 @@ LBB7_3: .p2align 2 __ZN15test_static_sel7get_sel22objc_static_workaround17hd01b8e03bc7ee2f2E: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh0: adrp x8, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGE Lloh1: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh0, Lloh1 .p2align 2 __ZN15test_static_sel12get_same_sel22objc_static_workaround17h6fded10733d3d13eE: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh2: adrp x8, L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35@PAGE Lloh3: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh2, Lloh3 .p2align 2 __ZN15test_static_sel10get_common22objc_static_workaround17h3099714314719ae4E: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh4: adrp x8, L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964@PAGE Lloh5: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh4, Lloh5 .p2align 2 __ZN15test_static_sel17get_different_sel22objc_static_workaround17h2df9cd4849db8a71E: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh6: adrp x8, L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b@PAGE Lloh7: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh6, Lloh7 .p2align 2 __ZN15test_static_sel10unused_sel22objc_static_workaround17h751ade9083325dbfE: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh8: adrp x8, L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477@PAGE Lloh9: ldr xzr, [x8, L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh8, Lloh9 .p2align 2 __ZN15test_static_sel7use_fns22objc_static_workaround17h0a4a70767a5df0c7E: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh10: adrp x8, L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860@PAGE Lloh11: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh10, Lloh11 .p2align 2 __ZN15test_static_sel11use_in_loop22objc_static_workaround17hd571f39365fc8d75E: + stp x29, x30, [sp, #-16]! + mov x29, sp + bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh12: adrp x8, L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07@PAGE Lloh13: ldr xzr, [x8, L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07@PAGEOFF] + ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh12, Lloh13 diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index 689e0fc25..b8828e22d 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -87,65 +87,86 @@ LBB7_2: .p2align 2 .code 32 __ZN15test_static_sel7get_sel22objc_static_workaround17hb4f8ebf12620f024E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) LPC8_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN15test_static_sel12get_same_sel22objc_static_workaround17ha0db901a0e219311E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) LPC9_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN15test_static_sel10get_common22objc_static_workaround17h8e0d36867c2deb3fE: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) LPC10_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN15test_static_sel17get_different_sel22objc_static_workaround17hac89f9a0e9ae4aafE: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) LPC11_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN15test_static_sel10unused_sel22objc_static_workaround17h7e5361a34aa0b8f3E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) LPC12_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN15test_static_sel7use_fns22objc_static_workaround17h8513ca3de8f36ba6E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) LPC13_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN15test_static_sel11use_in_loop22objc_static_workaround17h0b1654ea6eda9039E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) LPC14_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index 2ea02a737..f15ee2069 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -102,65 +102,86 @@ LBB7_2: .p2align 2 .code 32 __ZN15test_static_sel7get_sel22objc_static_workaround17hfbc0e8d2d2b9b0faE: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) LPC8_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN15test_static_sel12get_same_sel22objc_static_workaround17h206241f3cdb815f2E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) LPC9_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN15test_static_sel10get_common22objc_static_workaround17h43aa5ab975f84968E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) LPC10_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN15test_static_sel17get_different_sel22objc_static_workaround17h6d4d0b19565e8bbaE: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) LPC11_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN15test_static_sel10unused_sel22objc_static_workaround17hccfdb864c1636284E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) LPC12_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN15test_static_sel7use_fns22objc_static_workaround17h08f64a44e1d1f6ffE: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) LPC13_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .p2align 2 .code 32 __ZN15test_static_sel11use_in_loop22objc_static_workaround17hef7c0204ccd46c76E: + push {r7, lr} + mov r7, sp + bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) LPC14_0: ldr r0, [pc, r0] - bx lr + pop {r7, pc} .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index ac93b3570..ffdc1a3c4 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -114,10 +114,15 @@ LBB7_2: __ZN15test_static_sel7get_sel22objc_static_workaround17hbd28d1f4da2b6e6eE: push ebp mov ebp, esp + push esi + push eax call L8$pb L8$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-L8$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-L8$pb] + add esp, 4 + pop esi pop ebp ret @@ -125,10 +130,15 @@ L8$pb: __ZN15test_static_sel12get_same_sel22objc_static_workaround17hcf8c438d0e807292E: push ebp mov ebp, esp + push esi + push eax call L9$pb L9$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-L9$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-L9$pb] + add esp, 4 + pop esi pop ebp ret @@ -136,10 +146,15 @@ L9$pb: __ZN15test_static_sel10get_common22objc_static_workaround17hd73a38a3512c60a4E: push ebp mov ebp, esp + push esi + push eax call L10$pb L10$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-L10$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-L10$pb] + add esp, 4 + pop esi pop ebp ret @@ -147,10 +162,15 @@ L10$pb: __ZN15test_static_sel17get_different_sel22objc_static_workaround17h0437e7638527cbcbE: push ebp mov ebp, esp + push esi + push eax call L11$pb L11$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-L11$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-L11$pb] + add esp, 4 + pop esi pop ebp ret @@ -158,10 +178,15 @@ L11$pb: __ZN15test_static_sel10unused_sel22objc_static_workaround17h9d08c6f2f30054acE: push ebp mov ebp, esp + push esi + push eax call L12$pb L12$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-L12$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-L12$pb] + add esp, 4 + pop esi pop ebp ret @@ -169,10 +194,15 @@ L12$pb: __ZN15test_static_sel7use_fns22objc_static_workaround17hb2af229df09794e6E: push ebp mov ebp, esp + push esi + push eax call L13$pb L13$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-L13$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-L13$pb] + add esp, 4 + pop esi pop ebp ret @@ -180,10 +210,15 @@ L13$pb: __ZN15test_static_sel11use_in_loop22objc_static_workaround17h0d03d9d1392db5daE: push ebp mov ebp, esp + push esi + push eax call L14$pb L14$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-L14$pb] + pop esi + call __ZN5objc210image_info17h161d8f860d694f33E + mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-L14$pb] + add esp, 4 + pop esi pop ebp ret diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index 8649912e1..086dab4db 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -113,6 +113,7 @@ LBB7_3: __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9] pop rbp ret @@ -121,6 +122,7 @@ __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E: __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9d8d966f2cacb6adE: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35] pop rbp ret @@ -129,6 +131,7 @@ __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9d8d966f2cacb6adE: __ZN15test_static_sel10get_common22objc_static_workaround17h294a2c5d7fde0460E: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964] pop rbp ret @@ -137,6 +140,7 @@ __ZN15test_static_sel10get_common22objc_static_workaround17h294a2c5d7fde0460E: __ZN15test_static_sel17get_different_sel22objc_static_workaround17hec1d04928285e256E: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b] pop rbp ret @@ -145,6 +149,7 @@ __ZN15test_static_sel17get_different_sel22objc_static_workaround17hec1d04928285e __ZN15test_static_sel10unused_sel22objc_static_workaround17h1c4a686117a5fc41E: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477] pop rbp ret @@ -153,6 +158,7 @@ __ZN15test_static_sel10unused_sel22objc_static_workaround17h1c4a686117a5fc41E: __ZN15test_static_sel7use_fns22objc_static_workaround17h276ee743b1a511dcE: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860] pop rbp ret @@ -161,6 +167,7 @@ __ZN15test_static_sel7use_fns22objc_static_workaround17h276ee743b1a511dcE: __ZN15test_static_sel11use_in_loop22objc_static_workaround17hba715066d6ed34d0E: push rbp mov rbp, rsp + call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07] pop rbp ret From 3b33d8ba9353ef5aac9699b936281b105974ded0 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 3 Mar 2022 02:16:59 +0100 Subject: [PATCH 09/30] Add always present image tag --- objc2/src/macros.rs | 5 +- .../expected/apple-aarch64.s | 70 +++++++----- .../expected/apple-armv7.s | 77 ++++++++----- .../expected/apple-armv7s.s | 77 ++++++++----- .../expected/apple-x86.s | 105 ++++++++++-------- .../expected/apple-x86_64.s | 49 ++++++-- .../test_static_sel/expected/apple-aarch64.s | 70 +++++++----- .../test_static_sel/expected/apple-armv7.s | 77 ++++++++----- .../test_static_sel/expected/apple-armv7s.s | 77 ++++++++----- .../test_static_sel/expected/apple-x86.s | 105 ++++++++++-------- .../test_static_sel/expected/apple-x86_64.s | 49 ++++++-- 11 files changed, 480 insertions(+), 281 deletions(-) diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index d56c2079b..2711e833a 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -71,7 +71,10 @@ macro_rules! sel { fn objc_static_workaround() -> $crate::runtime::Sel { const X: &[u8] = $sel.as_bytes(); - $crate::image_info(); + #[link_section = "__DATA,__objc_imageinfo,regular,no_dead_strip"] + #[export_name = concat!("\x01L_OBJC_IMAGE_INFO_", $crate::__proc_macros::hash_idents!($($idents)+))] + #[used] + static _IMAGE_TAG: [u32; 2] = [0, 0]; #[link_section = "__TEXT,__objc_methname,cstring_literals"] #[export_name = concat!("\x01L_OBJC_METH_VAR_NAME_", $crate::__proc_macros::hash_idents!($($idents)+))] diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index 84ebc5fd4..8577319bd 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -64,95 +64,73 @@ _use_generic: .p2align 2 __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h7e2219bd31d55268E: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh0: adrp x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGE Lloh1: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh0, Lloh1 .p2align 2 __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h3d919388c23fdf68E: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh2: adrp x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGE Lloh3: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh2, Lloh3 .p2align 2 __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h208b45a18d15451eE: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh4: adrp x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGE Lloh5: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh4, Lloh5 .p2align 2 __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h432a20390f91c26fE: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh6: adrp x8, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGE Lloh7: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh6, Lloh7 .p2align 2 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h29677622e36cf330E: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh8: adrp x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGE Lloh9: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh8, Lloh9 .p2align 2 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h777a3aa99de98b73E: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh10: adrp x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGE Lloh11: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh10, Lloh11 .p2align 2 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h82d96cce58f7d605E: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh12: adrp x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGE Lloh13: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh12, Lloh13 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_40f5b12005284286 + .p2align 2 +L_OBJC_IMAGE_INFO_40f5b12005284286: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 L_OBJC_METH_VAR_NAME_40f5b12005284286: @@ -164,6 +142,12 @@ L_OBJC_METH_VAR_NAME_40f5b12005284286: L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: .quad L_OBJC_METH_VAR_NAME_40f5b12005284286 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 + .p2align 2 +L_OBJC_IMAGE_INFO_904c14aa63c4eec9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: @@ -175,6 +159,12 @@ L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: .quad L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 + .p2align 2 +L_OBJC_IMAGE_INFO_b1ab35d3713395f9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: @@ -186,6 +176,12 @@ L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: .quad L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_31f63858e271db32 + .p2align 2 +L_OBJC_IMAGE_INFO_31f63858e271db32: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 L_OBJC_METH_VAR_NAME_31f63858e271db32: @@ -197,6 +193,12 @@ L_OBJC_METH_VAR_NAME_31f63858e271db32: L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: .quad L_OBJC_METH_VAR_NAME_31f63858e271db32 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 + .p2align 2 +L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: @@ -208,6 +210,12 @@ L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: .quad L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 + .p2align 2 +L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: @@ -219,6 +227,12 @@ L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: .quad L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 + .p2align 2 +L_OBJC_IMAGE_INFO_8e0840c6b39b7720: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index f3b6cca04..e4fc4a01b 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -63,86 +63,71 @@ _use_generic: .p2align 2 .code 32 __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hbbdda4be504e4b8dE: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) LPC3_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h64a8dce59c4dc94aE: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) LPC4_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h4470f95a700d9c7bE: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) LPC5_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hbfbca3fddd47cf1dE: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) LPC6_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hebd2347ba98b0bafE: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) LPC7_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h5467f850ea7c1791E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) LPC8_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha138f577d13053ebE: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) LPC9_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr + + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_40f5b12005284286 + .p2align 2 +L_OBJC_IMAGE_INFO_40f5b12005284286: + .space 8 .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 @@ -155,6 +140,12 @@ L_OBJC_METH_VAR_NAME_40f5b12005284286: L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: .long L_OBJC_METH_VAR_NAME_40f5b12005284286 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 + .p2align 2 +L_OBJC_IMAGE_INFO_904c14aa63c4eec9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: @@ -166,6 +157,12 @@ L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: .long L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 + .p2align 2 +L_OBJC_IMAGE_INFO_b1ab35d3713395f9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: @@ -177,6 +174,12 @@ L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: .long L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_31f63858e271db32 + .p2align 2 +L_OBJC_IMAGE_INFO_31f63858e271db32: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 L_OBJC_METH_VAR_NAME_31f63858e271db32: @@ -188,6 +191,12 @@ L_OBJC_METH_VAR_NAME_31f63858e271db32: L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: .long L_OBJC_METH_VAR_NAME_31f63858e271db32 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 + .p2align 2 +L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: @@ -199,6 +208,12 @@ L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: .long L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 + .p2align 2 +L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: @@ -210,6 +225,12 @@ L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: .long L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 + .p2align 2 +L_OBJC_IMAGE_INFO_8e0840c6b39b7720: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index e5ced32e5..f7f390649 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -63,86 +63,71 @@ _use_generic: .p2align 2 .code 32 __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h8e8912e05611baf8E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) LPC3_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h98b7256dded064d1E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) LPC4_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h8bd68890a8be4b94E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) LPC5_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h137ede0f8414f244E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) LPC6_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h4db106eab2ec1470E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) LPC7_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h68391fe30382cbbeE: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) LPC8_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd7ee6447198a8703E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) LPC9_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr + + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_40f5b12005284286 + .p2align 2 +L_OBJC_IMAGE_INFO_40f5b12005284286: + .space 8 .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 @@ -155,6 +140,12 @@ L_OBJC_METH_VAR_NAME_40f5b12005284286: L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: .long L_OBJC_METH_VAR_NAME_40f5b12005284286 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 + .p2align 2 +L_OBJC_IMAGE_INFO_904c14aa63c4eec9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: @@ -166,6 +157,12 @@ L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: .long L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 + .p2align 2 +L_OBJC_IMAGE_INFO_b1ab35d3713395f9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: @@ -177,6 +174,12 @@ L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: .long L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_31f63858e271db32 + .p2align 2 +L_OBJC_IMAGE_INFO_31f63858e271db32: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 L_OBJC_METH_VAR_NAME_31f63858e271db32: @@ -188,6 +191,12 @@ L_OBJC_METH_VAR_NAME_31f63858e271db32: L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: .long L_OBJC_METH_VAR_NAME_31f63858e271db32 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 + .p2align 2 +L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: @@ -199,6 +208,12 @@ L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: .long L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 + .p2align 2 +L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: @@ -210,6 +225,12 @@ L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: .long L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 + .p2align 2 +L_OBJC_IMAGE_INFO_8e0840c6b39b7720: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index 4a3be51ab..345003db9 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -87,15 +87,10 @@ _use_generic: __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h713350a8d234436dE: push ebp mov ebp, esp - push esi - push eax call L3$pb L3$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-L3$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-L3$pb] pop ebp ret @@ -103,15 +98,10 @@ L3$pb: __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7e789f29e463517aE: push ebp mov ebp, esp - push esi - push eax call L4$pb L4$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-L4$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-L4$pb] pop ebp ret @@ -119,15 +109,10 @@ L4$pb: __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h8a2e6aa05f9c9dbdE: push ebp mov ebp, esp - push esi - push eax call L5$pb L5$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-L5$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-L5$pb] pop ebp ret @@ -135,15 +120,10 @@ L5$pb: __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h69a1eaae9cce6de4E: push ebp mov ebp, esp - push esi - push eax call L6$pb L6$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-L6$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-L6$pb] pop ebp ret @@ -151,15 +131,10 @@ L6$pb: __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h2996e77ce6841ac6E: push ebp mov ebp, esp - push esi - push eax call L7$pb L7$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-L7$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-L7$pb] pop ebp ret @@ -167,15 +142,10 @@ L7$pb: __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h8127295802f21218E: push ebp mov ebp, esp - push esi - push eax call L8$pb L8$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-L8$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-L8$pb] pop ebp ret @@ -183,18 +153,19 @@ L8$pb: __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17he3ad303312f2a9d3E: push ebp mov ebp, esp - push esi - push eax call L9$pb L9$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-L9$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-L9$pb] pop ebp ret + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_40f5b12005284286 + .p2align 2 +L_OBJC_IMAGE_INFO_40f5b12005284286: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 L_OBJC_METH_VAR_NAME_40f5b12005284286: @@ -206,6 +177,12 @@ L_OBJC_METH_VAR_NAME_40f5b12005284286: L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: .long L_OBJC_METH_VAR_NAME_40f5b12005284286 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 + .p2align 2 +L_OBJC_IMAGE_INFO_904c14aa63c4eec9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: @@ -217,6 +194,12 @@ L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: .long L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 + .p2align 2 +L_OBJC_IMAGE_INFO_b1ab35d3713395f9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: @@ -228,6 +211,12 @@ L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: .long L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_31f63858e271db32 + .p2align 2 +L_OBJC_IMAGE_INFO_31f63858e271db32: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 L_OBJC_METH_VAR_NAME_31f63858e271db32: @@ -239,6 +228,12 @@ L_OBJC_METH_VAR_NAME_31f63858e271db32: L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: .long L_OBJC_METH_VAR_NAME_31f63858e271db32 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 + .p2align 2 +L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: @@ -250,6 +245,12 @@ L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: .long L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 + .p2align 2 +L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: @@ -261,6 +262,12 @@ L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: .long L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 + .p2align 2 +L_OBJC_IMAGE_INFO_8e0840c6b39b7720: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index ef652ce55..a2f02341a 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -74,7 +74,6 @@ _use_generic: __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17ha942fb2a10f030e2E: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286] pop rbp ret @@ -83,7 +82,6 @@ __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17ha942fb __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd4cb31996e6a0379E: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9] pop rbp ret @@ -92,7 +90,6 @@ __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd4cb __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h5f238466fcc6efaeE: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9] pop rbp ret @@ -101,7 +98,6 @@ __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h5f23 __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb033E: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32] pop rbp ret @@ -110,7 +106,6 @@ __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb03 __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3464617adbf28153E: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4] pop rbp ret @@ -119,7 +114,6 @@ __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3464617adb __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfa132600ad7bf08dE: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1] pop rbp ret @@ -128,11 +122,16 @@ __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfa132600ad __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbd4ba246c21e9c56E: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720] pop rbp ret + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_40f5b12005284286 + .p2align 2 +L_OBJC_IMAGE_INFO_40f5b12005284286: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 L_OBJC_METH_VAR_NAME_40f5b12005284286: @@ -144,6 +143,12 @@ L_OBJC_METH_VAR_NAME_40f5b12005284286: L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: .quad L_OBJC_METH_VAR_NAME_40f5b12005284286 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 + .p2align 2 +L_OBJC_IMAGE_INFO_904c14aa63c4eec9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: @@ -155,6 +160,12 @@ L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: .quad L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 + .p2align 2 +L_OBJC_IMAGE_INFO_b1ab35d3713395f9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: @@ -166,6 +177,12 @@ L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: .quad L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_31f63858e271db32 + .p2align 2 +L_OBJC_IMAGE_INFO_31f63858e271db32: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 L_OBJC_METH_VAR_NAME_31f63858e271db32: @@ -177,6 +194,12 @@ L_OBJC_METH_VAR_NAME_31f63858e271db32: L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: .quad L_OBJC_METH_VAR_NAME_31f63858e271db32 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 + .p2align 2 +L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: @@ -188,6 +211,12 @@ L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: .quad L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 + .p2align 2 +L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: @@ -199,6 +228,12 @@ L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: .quad L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 + .p2align 2 +L_OBJC_IMAGE_INFO_8e0840c6b39b7720: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index 9be58dfab..f2375279c 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -80,95 +80,73 @@ LBB7_3: .p2align 2 __ZN15test_static_sel7get_sel22objc_static_workaround17hd01b8e03bc7ee2f2E: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh0: adrp x8, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGE Lloh1: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh0, Lloh1 .p2align 2 __ZN15test_static_sel12get_same_sel22objc_static_workaround17h6fded10733d3d13eE: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh2: adrp x8, L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35@PAGE Lloh3: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh2, Lloh3 .p2align 2 __ZN15test_static_sel10get_common22objc_static_workaround17h3099714314719ae4E: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh4: adrp x8, L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964@PAGE Lloh5: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh4, Lloh5 .p2align 2 __ZN15test_static_sel17get_different_sel22objc_static_workaround17h2df9cd4849db8a71E: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh6: adrp x8, L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b@PAGE Lloh7: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh6, Lloh7 .p2align 2 __ZN15test_static_sel10unused_sel22objc_static_workaround17h751ade9083325dbfE: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh8: adrp x8, L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477@PAGE Lloh9: ldr xzr, [x8, L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh8, Lloh9 .p2align 2 __ZN15test_static_sel7use_fns22objc_static_workaround17h0a4a70767a5df0c7E: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh10: adrp x8, L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860@PAGE Lloh11: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh10, Lloh11 .p2align 2 __ZN15test_static_sel11use_in_loop22objc_static_workaround17hd571f39365fc8d75E: - stp x29, x30, [sp, #-16]! - mov x29, sp - bl __ZN5objc210image_info17h1a00393fd20ac219E Lloh12: adrp x8, L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07@PAGE Lloh13: ldr xzr, [x8, L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07@PAGEOFF] - ldp x29, x30, [sp], #16 ret .loh AdrpLdr Lloh12, Lloh13 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 + .p2align 2 +L_OBJC_IMAGE_INFO_68381ba894e318e9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 L_OBJC_METH_VAR_NAME_68381ba894e318e9: @@ -180,6 +158,12 @@ L_OBJC_METH_VAR_NAME_68381ba894e318e9: L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: .quad L_OBJC_METH_VAR_NAME_68381ba894e318e9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 + .p2align 2 +L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: @@ -191,6 +175,12 @@ L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .quad L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_34d6c3ed70e85964 + .p2align 2 +L_OBJC_IMAGE_INFO_34d6c3ed70e85964: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: @@ -202,6 +192,12 @@ L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: .quad L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_ab5e106a55f71e5b + .p2align 2 +L_OBJC_IMAGE_INFO_ab5e106a55f71e5b: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: @@ -213,6 +209,12 @@ L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: .quad L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_6f2d5ee51a69c477 + .p2align 2 +L_OBJC_IMAGE_INFO_6f2d5ee51a69c477: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: @@ -224,6 +226,12 @@ L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: .quad L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_1d27e854714b8860 + .p2align 2 +L_OBJC_IMAGE_INFO_1d27e854714b8860: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 L_OBJC_METH_VAR_NAME_1d27e854714b8860: @@ -235,6 +243,12 @@ L_OBJC_METH_VAR_NAME_1d27e854714b8860: L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: .quad L_OBJC_METH_VAR_NAME_1d27e854714b8860 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_e56637a4c1a15b07 + .p2align 2 +L_OBJC_IMAGE_INFO_e56637a4c1a15b07: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index b8828e22d..c855a3c73 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -87,86 +87,71 @@ LBB7_2: .p2align 2 .code 32 __ZN15test_static_sel7get_sel22objc_static_workaround17hb4f8ebf12620f024E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) LPC8_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN15test_static_sel12get_same_sel22objc_static_workaround17ha0db901a0e219311E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) LPC9_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN15test_static_sel10get_common22objc_static_workaround17h8e0d36867c2deb3fE: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) LPC10_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN15test_static_sel17get_different_sel22objc_static_workaround17hac89f9a0e9ae4aafE: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) LPC11_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN15test_static_sel10unused_sel22objc_static_workaround17h7e5361a34aa0b8f3E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) LPC12_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN15test_static_sel7use_fns22objc_static_workaround17h8513ca3de8f36ba6E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) LPC13_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN15test_static_sel11use_in_loop22objc_static_workaround17h0b1654ea6eda9039E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17hff543f5950f0a780E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) LPC14_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr + + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 + .p2align 2 +L_OBJC_IMAGE_INFO_68381ba894e318e9: + .space 8 .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 @@ -179,6 +164,12 @@ L_OBJC_METH_VAR_NAME_68381ba894e318e9: L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: .long L_OBJC_METH_VAR_NAME_68381ba894e318e9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 + .p2align 2 +L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: @@ -190,6 +181,12 @@ L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .long L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_34d6c3ed70e85964 + .p2align 2 +L_OBJC_IMAGE_INFO_34d6c3ed70e85964: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: @@ -201,6 +198,12 @@ L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: .long L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_ab5e106a55f71e5b + .p2align 2 +L_OBJC_IMAGE_INFO_ab5e106a55f71e5b: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: @@ -212,6 +215,12 @@ L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: .long L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_6f2d5ee51a69c477 + .p2align 2 +L_OBJC_IMAGE_INFO_6f2d5ee51a69c477: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: @@ -223,6 +232,12 @@ L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: .long L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_1d27e854714b8860 + .p2align 2 +L_OBJC_IMAGE_INFO_1d27e854714b8860: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 L_OBJC_METH_VAR_NAME_1d27e854714b8860: @@ -234,6 +249,12 @@ L_OBJC_METH_VAR_NAME_1d27e854714b8860: L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: .long L_OBJC_METH_VAR_NAME_1d27e854714b8860 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_e56637a4c1a15b07 + .p2align 2 +L_OBJC_IMAGE_INFO_e56637a4c1a15b07: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index f15ee2069..32137f6c8 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -102,86 +102,71 @@ LBB7_2: .p2align 2 .code 32 __ZN15test_static_sel7get_sel22objc_static_workaround17hfbc0e8d2d2b9b0faE: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) LPC8_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN15test_static_sel12get_same_sel22objc_static_workaround17h206241f3cdb815f2E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) LPC9_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN15test_static_sel10get_common22objc_static_workaround17h43aa5ab975f84968E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) LPC10_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN15test_static_sel17get_different_sel22objc_static_workaround17h6d4d0b19565e8bbaE: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) LPC11_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN15test_static_sel10unused_sel22objc_static_workaround17hccfdb864c1636284E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) LPC12_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN15test_static_sel7use_fns22objc_static_workaround17h08f64a44e1d1f6ffE: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) LPC13_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr .p2align 2 .code 32 __ZN15test_static_sel11use_in_loop22objc_static_workaround17hef7c0204ccd46c76E: - push {r7, lr} - mov r7, sp - bl __ZN5objc210image_info17h43072185f7d30955E movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) LPC14_0: ldr r0, [pc, r0] - pop {r7, pc} + bx lr + + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 + .p2align 2 +L_OBJC_IMAGE_INFO_68381ba894e318e9: + .space 8 .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 @@ -194,6 +179,12 @@ L_OBJC_METH_VAR_NAME_68381ba894e318e9: L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: .long L_OBJC_METH_VAR_NAME_68381ba894e318e9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 + .p2align 2 +L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: @@ -205,6 +196,12 @@ L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .long L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_34d6c3ed70e85964 + .p2align 2 +L_OBJC_IMAGE_INFO_34d6c3ed70e85964: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: @@ -216,6 +213,12 @@ L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: .long L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_ab5e106a55f71e5b + .p2align 2 +L_OBJC_IMAGE_INFO_ab5e106a55f71e5b: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: @@ -227,6 +230,12 @@ L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: .long L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_6f2d5ee51a69c477 + .p2align 2 +L_OBJC_IMAGE_INFO_6f2d5ee51a69c477: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: @@ -238,6 +247,12 @@ L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: .long L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_1d27e854714b8860 + .p2align 2 +L_OBJC_IMAGE_INFO_1d27e854714b8860: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 L_OBJC_METH_VAR_NAME_1d27e854714b8860: @@ -249,6 +264,12 @@ L_OBJC_METH_VAR_NAME_1d27e854714b8860: L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: .long L_OBJC_METH_VAR_NAME_1d27e854714b8860 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_e56637a4c1a15b07 + .p2align 2 +L_OBJC_IMAGE_INFO_e56637a4c1a15b07: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index ffdc1a3c4..ee8bdd2bf 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -114,15 +114,10 @@ LBB7_2: __ZN15test_static_sel7get_sel22objc_static_workaround17hbd28d1f4da2b6e6eE: push ebp mov ebp, esp - push esi - push eax call L8$pb L8$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-L8$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-L8$pb] pop ebp ret @@ -130,15 +125,10 @@ L8$pb: __ZN15test_static_sel12get_same_sel22objc_static_workaround17hcf8c438d0e807292E: push ebp mov ebp, esp - push esi - push eax call L9$pb L9$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-L9$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-L9$pb] pop ebp ret @@ -146,15 +136,10 @@ L9$pb: __ZN15test_static_sel10get_common22objc_static_workaround17hd73a38a3512c60a4E: push ebp mov ebp, esp - push esi - push eax call L10$pb L10$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-L10$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-L10$pb] pop ebp ret @@ -162,15 +147,10 @@ L10$pb: __ZN15test_static_sel17get_different_sel22objc_static_workaround17h0437e7638527cbcbE: push ebp mov ebp, esp - push esi - push eax call L11$pb L11$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-L11$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-L11$pb] pop ebp ret @@ -178,15 +158,10 @@ L11$pb: __ZN15test_static_sel10unused_sel22objc_static_workaround17h9d08c6f2f30054acE: push ebp mov ebp, esp - push esi - push eax call L12$pb L12$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-L12$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-L12$pb] pop ebp ret @@ -194,15 +169,10 @@ L12$pb: __ZN15test_static_sel7use_fns22objc_static_workaround17hb2af229df09794e6E: push ebp mov ebp, esp - push esi - push eax call L13$pb L13$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-L13$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-L13$pb] pop ebp ret @@ -210,18 +180,19 @@ L13$pb: __ZN15test_static_sel11use_in_loop22objc_static_workaround17h0d03d9d1392db5daE: push ebp mov ebp, esp - push esi - push eax call L14$pb L14$pb: - pop esi - call __ZN5objc210image_info17h161d8f860d694f33E - mov eax, dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-L14$pb] - add esp, 4 - pop esi + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-L14$pb] pop ebp ret + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 + .p2align 2 +L_OBJC_IMAGE_INFO_68381ba894e318e9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 L_OBJC_METH_VAR_NAME_68381ba894e318e9: @@ -233,6 +204,12 @@ L_OBJC_METH_VAR_NAME_68381ba894e318e9: L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: .long L_OBJC_METH_VAR_NAME_68381ba894e318e9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 + .p2align 2 +L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: @@ -244,6 +221,12 @@ L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .long L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_34d6c3ed70e85964 + .p2align 2 +L_OBJC_IMAGE_INFO_34d6c3ed70e85964: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: @@ -255,6 +238,12 @@ L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: .long L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_ab5e106a55f71e5b + .p2align 2 +L_OBJC_IMAGE_INFO_ab5e106a55f71e5b: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: @@ -266,6 +255,12 @@ L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: .long L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_6f2d5ee51a69c477 + .p2align 2 +L_OBJC_IMAGE_INFO_6f2d5ee51a69c477: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: @@ -277,6 +272,12 @@ L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: .long L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_1d27e854714b8860 + .p2align 2 +L_OBJC_IMAGE_INFO_1d27e854714b8860: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 L_OBJC_METH_VAR_NAME_1d27e854714b8860: @@ -288,6 +289,12 @@ L_OBJC_METH_VAR_NAME_1d27e854714b8860: L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: .long L_OBJC_METH_VAR_NAME_1d27e854714b8860 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_e56637a4c1a15b07 + .p2align 2 +L_OBJC_IMAGE_INFO_e56637a4c1a15b07: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index 086dab4db..53feae49e 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -113,7 +113,6 @@ LBB7_3: __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9] pop rbp ret @@ -122,7 +121,6 @@ __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E: __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9d8d966f2cacb6adE: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35] pop rbp ret @@ -131,7 +129,6 @@ __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9d8d966f2cacb6adE: __ZN15test_static_sel10get_common22objc_static_workaround17h294a2c5d7fde0460E: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964] pop rbp ret @@ -140,7 +137,6 @@ __ZN15test_static_sel10get_common22objc_static_workaround17h294a2c5d7fde0460E: __ZN15test_static_sel17get_different_sel22objc_static_workaround17hec1d04928285e256E: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b] pop rbp ret @@ -149,7 +145,6 @@ __ZN15test_static_sel17get_different_sel22objc_static_workaround17hec1d04928285e __ZN15test_static_sel10unused_sel22objc_static_workaround17h1c4a686117a5fc41E: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477] pop rbp ret @@ -158,7 +153,6 @@ __ZN15test_static_sel10unused_sel22objc_static_workaround17h1c4a686117a5fc41E: __ZN15test_static_sel7use_fns22objc_static_workaround17h276ee743b1a511dcE: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860] pop rbp ret @@ -167,11 +161,16 @@ __ZN15test_static_sel7use_fns22objc_static_workaround17h276ee743b1a511dcE: __ZN15test_static_sel11use_in_loop22objc_static_workaround17hba715066d6ed34d0E: push rbp mov rbp, rsp - call __ZN5objc210image_info17h37aa854479a69509E mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07] pop rbp ret + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 + .p2align 2 +L_OBJC_IMAGE_INFO_68381ba894e318e9: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 L_OBJC_METH_VAR_NAME_68381ba894e318e9: @@ -183,6 +182,12 @@ L_OBJC_METH_VAR_NAME_68381ba894e318e9: L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: .quad L_OBJC_METH_VAR_NAME_68381ba894e318e9 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 + .p2align 2 +L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: @@ -194,6 +199,12 @@ L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .quad L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_34d6c3ed70e85964 + .p2align 2 +L_OBJC_IMAGE_INFO_34d6c3ed70e85964: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: @@ -205,6 +216,12 @@ L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: .quad L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_ab5e106a55f71e5b + .p2align 2 +L_OBJC_IMAGE_INFO_ab5e106a55f71e5b: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: @@ -216,6 +233,12 @@ L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: .quad L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_6f2d5ee51a69c477 + .p2align 2 +L_OBJC_IMAGE_INFO_6f2d5ee51a69c477: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: @@ -227,6 +250,12 @@ L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: .quad L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_1d27e854714b8860 + .p2align 2 +L_OBJC_IMAGE_INFO_1d27e854714b8860: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 L_OBJC_METH_VAR_NAME_1d27e854714b8860: @@ -238,6 +267,12 @@ L_OBJC_METH_VAR_NAME_1d27e854714b8860: L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: .quad L_OBJC_METH_VAR_NAME_1d27e854714b8860 + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_e56637a4c1a15b07 + .p2align 2 +L_OBJC_IMAGE_INFO_e56637a4c1a15b07: + .space 8 + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: From 70fdff9458d324c13877c7233a18ebb737625ec2 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Sun, 2 Jan 2022 03:42:26 +0100 Subject: [PATCH 10/30] Test static selectors in CI --- .github/workflows/ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 39ff86ae0..933dd19bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -378,6 +378,13 @@ jobs: # Not using --all-features because that would enable e.g. gnustep args: ${{ env.ARGS }} ${{ env.TESTARGS }} --features ${{ env.FEATURES }},${{ env.UNSTABLE_FEATURES }} + - name: Test static selectors + if: ${{ !matrix.dinghy }} + uses: actions-rs/cargo@v1 + with: + command: test + args: --features static-sel ${{ env.TESTARGS }} + - name: Run assembly tests # Not run on GNUStep yet since a lot of function labels are mangled and # not inlined (and hence quite hard to match on, at some point we'll From 279d458a6af8fc891904b98fe9f4307d77cc7a85 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Wed, 30 Mar 2022 01:22:37 +0200 Subject: [PATCH 11/30] Comment and clean up static-sel --- objc2/src/__macro_helpers.rs | 7 +++--- objc2/src/lib.rs | 4 ---- objc2/src/macros.rs | 42 +++++++++++++++++++----------------- objc2/src/runtime.rs | 2 +- 4 files changed, 26 insertions(+), 29 deletions(-) diff --git a/objc2/src/__macro_helpers.rs b/objc2/src/__macro_helpers.rs index e8a25c457..fb61b8a50 100644 --- a/objc2/src/__macro_helpers.rs +++ b/objc2/src/__macro_helpers.rs @@ -2,8 +2,10 @@ use crate::rc::{Id, Ownership}; use crate::runtime::{Class, Sel}; use crate::{Message, MessageArguments, MessageError, MessageReceiver}; -#[doc(hidden)] pub use core::compile_error; +pub use core::ptr::read_volatile; +#[cfg(feature = "static-sel")] +pub use objc2_proc_macros::hash_idents; /// Helper for specifying the retain semantics for a given selector family. /// @@ -28,7 +30,6 @@ pub use core::compile_error; /// ARC though! /// /// -#[doc(hidden)] pub struct RetainSemantics< // `new` family const NEW: bool, @@ -40,7 +41,6 @@ pub struct RetainSemantics< const COPY_OR_MUT_COPY: bool, > {} -#[doc(hidden)] pub trait MsgSendId { unsafe fn send_message_id( obj: T, @@ -131,7 +131,6 @@ impl MsgSendId> /// Checks whether a given selector is said to be in a given selector family. /// /// -#[doc(hidden)] pub const fn in_selector_family(mut selector: &[u8], mut family: &[u8]) -> bool { // Skip leading underscores from selector loop { diff --git a/objc2/src/lib.rs b/objc2/src/lib.rs index ad4241b82..d53090cd0 100644 --- a/objc2/src/lib.rs +++ b/objc2/src/lib.rs @@ -181,10 +181,6 @@ extern crate alloc; extern crate std; -#[cfg(feature = "static-sel")] -#[doc(hidden)] -pub extern crate objc2_proc_macros as __proc_macros; - // The example uses NSObject without doing the __gnustep_hack #[cfg(all(feature = "apple", doctest))] #[doc = include_str!("../README.md")] diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index 2711e833a..632bf483f 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -57,28 +57,28 @@ macro_rules! sel { #[macro_export] #[cfg(feature = "static-sel")] macro_rules! sel { - ($name:ident) => { - $crate::sel!(@__inner concat!(stringify!($name), '\0'), $name) - }; - ($($name:ident :)+) => { - $crate::sel!(@__inner concat!($(stringify!($name), ':'),+, '\0'), $($name),+) - }; - (@__inner $sel:expr, $($idents:ident),+) => {{ + ($first:ident $(: $($rest:ident :)*)?) => ({ // HACK: Wrap the statics in a non-generic, `#[inline(never)]` // function to "coerce" the compiler to group all of them into the // same codegen unit to avoid link errors #[inline(never)] fn objc_static_workaround() -> $crate::runtime::Sel { - const X: &[u8] = $sel.as_bytes(); - #[link_section = "__DATA,__objc_imageinfo,regular,no_dead_strip"] - #[export_name = concat!("\x01L_OBJC_IMAGE_INFO_", $crate::__proc_macros::hash_idents!($($idents)+))] + #[export_name = concat!("\x01L_OBJC_IMAGE_INFO_", $crate::__macro_helpers::hash_idents!($first $($($rest)*)?))] #[used] static _IMAGE_TAG: [u32; 2] = [0, 0]; + // Intermediate selecter data. + const X: &[u8] = concat!(stringify!($first), $(':', $(stringify!($rest), ':',)*)? '\0').as_bytes(); + + // Marked with `unnamed_addr` in Objective-C's LLVM. + // See rust-lang/rust#18297 + // Should only be an optimization (?) #[link_section = "__TEXT,__objc_methname,cstring_literals"] - #[export_name = concat!("\x01L_OBJC_METH_VAR_NAME_", $crate::__proc_macros::hash_idents!($($idents)+))] - static NAME: [u8; X.len()] = { + #[export_name = concat!("\x01L_OBJC_METH_VAR_NAME_", $crate::__macro_helpers::hash_idents!($first $($($rest)*)?))] + static NAME_DATA: [u8; X.len()] = { + // Convert the `&[u8]` slice to an array with known length, so + // that we can place that directly in a static. let mut res: [u8; X.len()] = [0; X.len()]; let mut i = 0; while i < X.len() { @@ -89,23 +89,25 @@ macro_rules! sel { }; // Place the constant value in the correct section. + // + // Clang uses `no_dead_strip` here for some reason? #[link_section = "__DATA,__objc_selrefs,literal_pointers"] - #[export_name = concat!("\x01L_OBJC_SELECTOR_REFERENCES_", $crate::__proc_macros::hash_idents!($($idents)+))] - static mut REF: &[u8; X.len()] = &NAME; + #[export_name = concat!("\x01L_OBJC_SELECTOR_REFERENCES_", $crate::__macro_helpers::hash_idents!($first $($($rest)*)?))] + static mut REF: $crate::runtime::Sel = unsafe { + $crate::runtime::Sel::from_ptr(NAME_DATA.as_ptr().cast()) + }; // The actual selector is replaced by dyld when the program is // loaded, so we need to use a volatile read to prevent the // optimizer from thinking it can circumvent the read through REF. // - // TODO: `::core` here could be replaced with some more - // sophisticated logic so we don't rely on downstream users having - // this setup. - let ptr = unsafe { ::core::ptr::read_volatile(&REF).as_ptr() as *const _ }; - unsafe { $crate::runtime::Sel::from_ptr(ptr) } + // Clang avoids this by marking `REF` with LLVM's + // `externally_initialized`. + unsafe { $crate::__macro_helpers::read_volatile(&REF) } } objc_static_workaround() - }}; + }); } /// Send a message to an object or class. diff --git a/objc2/src/runtime.rs b/objc2/src/runtime.rs index d2eb3d66e..52c51330b 100644 --- a/objc2/src/runtime.rs +++ b/objc2/src/runtime.rs @@ -118,7 +118,7 @@ impl Sel { /// /// This is almost never what you want; use [`Sel::register`] instead. #[inline] - pub unsafe fn from_ptr(ptr: *const c_void) -> Self { + pub const unsafe fn from_ptr(ptr: *const c_void) -> Self { Self { ptr: ptr.cast() } } From 959c991ef3f544feb4bdad4e5415b1b499609e1b Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Fri, 17 Jun 2022 02:25:19 +0200 Subject: [PATCH 12/30] Rename feature to `unstable-static-sel` --- .github/workflows/ci.yml | 2 +- objc2/Cargo.toml | 10 +++++++++- objc2/src/__macro_helpers.rs | 2 +- objc2/src/macros.rs | 4 ++-- tests/assembly/test_msg_send_static_sel/Cargo.toml | 4 ++-- tests/assembly/test_static_sel/Cargo.toml | 4 ++-- 6 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 933dd19bf..c47986282 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -383,7 +383,7 @@ jobs: uses: actions-rs/cargo@v1 with: command: test - args: --features static-sel ${{ env.TESTARGS }} + args: ${{ env.ARGS }} ${{ env.TESTARGS }} --features unstable-static-sel - name: Run assembly tests # Not run on GNUStep yet since a lot of function labels are mangled and diff --git a/objc2/Cargo.toml b/objc2/Cargo.toml index e978521bf..1a553a95f 100644 --- a/objc2/Cargo.toml +++ b/objc2/Cargo.toml @@ -37,7 +37,15 @@ verify_message = ["malloc"] # TODO: Remove malloc feature here # increases compilation time. malloc = ["malloc_buf"] -static-sel = ["objc2-proc-macros"] +# Make the `sel!` macro look up the selector statically. +# +# The plan is to enable this by default, but right now we are uncertain of +# it's stability, and it might need significant changes before being fully +# ready! +# +# Please test it, and report any issues you may find: +# https://github.com/madsmtm/objc2/issues/new +unstable-static-sel = ["objc2-proc-macros"] # Uses nightly features to make AutoreleasePool zero-cost even in debug mode unstable-autoreleasesafe = [] diff --git a/objc2/src/__macro_helpers.rs b/objc2/src/__macro_helpers.rs index fb61b8a50..b613d6db9 100644 --- a/objc2/src/__macro_helpers.rs +++ b/objc2/src/__macro_helpers.rs @@ -4,7 +4,7 @@ use crate::{Message, MessageArguments, MessageError, MessageReceiver}; pub use core::compile_error; pub use core::ptr::read_volatile; -#[cfg(feature = "static-sel")] +#[cfg(feature = "unstable-static-sel")] pub use objc2_proc_macros::hash_idents; /// Helper for specifying the retain semantics for a given selector family. diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index 632bf483f..3f9d04ede 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -43,7 +43,7 @@ macro_rules! class { /// let sel = sel!(setObject:forKey:); /// ``` #[macro_export] -#[cfg(not(feature = "static-sel"))] +#[cfg(not(feature = "unstable-static-sel"))] macro_rules! sel { ($first:ident $(: $($rest:ident :)*)?) => ({ static SEL: $crate::__CachedSel = $crate::__CachedSel::new(); @@ -55,7 +55,7 @@ macro_rules! sel { /// TODO #[macro_export] -#[cfg(feature = "static-sel")] +#[cfg(feature = "unstable-static-sel")] macro_rules! sel { ($first:ident $(: $($rest:ident :)*)?) => ({ // HACK: Wrap the statics in a non-generic, `#[inline(never)]` diff --git a/tests/assembly/test_msg_send_static_sel/Cargo.toml b/tests/assembly/test_msg_send_static_sel/Cargo.toml index dfb0649d8..28548979e 100644 --- a/tests/assembly/test_msg_send_static_sel/Cargo.toml +++ b/tests/assembly/test_msg_send_static_sel/Cargo.toml @@ -20,5 +20,5 @@ gnustep-1-9 = ["gnustep-1-8", "objc2/gnustep-1-9"] gnustep-2-0 = ["gnustep-1-9", "objc2/gnustep-2-0"] gnustep-2-1 = ["gnustep-2-0", "objc2/gnustep-2-1"] -# Hack -assembly-features = ["objc2/static-sel"] +# Hack to prevent the feature flag from being enabled in the entire project +assembly-features = ["objc2/unstable-static-sel"] diff --git a/tests/assembly/test_static_sel/Cargo.toml b/tests/assembly/test_static_sel/Cargo.toml index 6ea922dae..2f7b76616 100644 --- a/tests/assembly/test_static_sel/Cargo.toml +++ b/tests/assembly/test_static_sel/Cargo.toml @@ -20,5 +20,5 @@ gnustep-1-9 = ["gnustep-1-8", "objc2/gnustep-1-9"] gnustep-2-0 = ["gnustep-1-9", "objc2/gnustep-2-0"] gnustep-2-1 = ["gnustep-2-0", "objc2/gnustep-2-1"] -# Hack -assembly-features = ["objc2/static-sel"] +# Hack to prevent the feature flag from being enabled in the entire project +assembly-features = ["objc2/unstable-static-sel"] From 69cca7717d4aaf4d1fd58dcb6c5cdd0374d4b480 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Fri, 17 Jun 2022 03:03:15 +0200 Subject: [PATCH 13/30] Show docs on sel! macro with the `unstable-static-sel` feature --- objc2-proc-macros/src/lib.rs | 3 ++- objc2/src/__macro_helpers.rs | 2 +- objc2/src/macros.rs | 35 ++++++++++++++++++++++------------- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/objc2-proc-macros/src/lib.rs b/objc2-proc-macros/src/lib.rs index cb1d2552c..399eedf8c 100644 --- a/objc2-proc-macros/src/lib.rs +++ b/objc2-proc-macros/src/lib.rs @@ -51,7 +51,8 @@ fn get_idents(input: TokenStream) -> impl Iterator { /// Creates a hash from the input and source code locations in the provided /// idents. #[proc_macro] -pub fn hash_idents(input: TokenStream) -> TokenStream { +#[doc(hidden)] +pub fn __hash_idents(input: TokenStream) -> TokenStream { // Create the hasher let mut hasher = std::collections::hash_map::DefaultHasher::new(); diff --git a/objc2/src/__macro_helpers.rs b/objc2/src/__macro_helpers.rs index b613d6db9..de3b2e7cd 100644 --- a/objc2/src/__macro_helpers.rs +++ b/objc2/src/__macro_helpers.rs @@ -5,7 +5,7 @@ use crate::{Message, MessageArguments, MessageError, MessageReceiver}; pub use core::compile_error; pub use core::ptr::read_volatile; #[cfg(feature = "unstable-static-sel")] -pub use objc2_proc_macros::hash_idents; +pub use objc2_proc_macros::__hash_idents; /// Helper for specifying the retain semantics for a given selector family. /// diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index 3f9d04ede..ac72b5f53 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -43,39 +43,48 @@ macro_rules! class { /// let sel = sel!(setObject:forKey:); /// ``` #[macro_export] -#[cfg(not(feature = "unstable-static-sel"))] macro_rules! sel { ($first:ident $(: $($rest:ident :)*)?) => ({ + const SELECTOR_DATA: &str = concat!(stringify!($first), $(':', $(stringify!($rest), ':',)*)? '\0'); + $crate::__sel_inner!(SELECTOR_DATA, $first $($($rest)*)?) + }); +} + +#[doc(hidden)] +#[macro_export] +#[cfg(not(feature = "unstable-static-sel"))] +macro_rules! __sel_inner { + ($data:ident, $($idents:ident)+) => {{ static SEL: $crate::__CachedSel = $crate::__CachedSel::new(); - let name = concat!(stringify!($first), $(':', $(stringify!($rest), ':',)*)? '\0'); #[allow(unused_unsafe)] - unsafe { SEL.get(name) } - }); + unsafe { + SEL.get($data) + } + }}; } -/// TODO +#[doc(hidden)] #[macro_export] #[cfg(feature = "unstable-static-sel")] -macro_rules! sel { - ($first:ident $(: $($rest:ident :)*)?) => ({ +macro_rules! __sel_inner { + ($data:ident, $($idents:ident)+) => {{ // HACK: Wrap the statics in a non-generic, `#[inline(never)]` // function to "coerce" the compiler to group all of them into the // same codegen unit to avoid link errors #[inline(never)] fn objc_static_workaround() -> $crate::runtime::Sel { #[link_section = "__DATA,__objc_imageinfo,regular,no_dead_strip"] - #[export_name = concat!("\x01L_OBJC_IMAGE_INFO_", $crate::__macro_helpers::hash_idents!($first $($($rest)*)?))] + #[export_name = concat!("\x01L_OBJC_IMAGE_INFO_", $crate::__macro_helpers::__hash_idents!($($idents)+))] #[used] static _IMAGE_TAG: [u32; 2] = [0, 0]; - // Intermediate selecter data. - const X: &[u8] = concat!(stringify!($first), $(':', $(stringify!($rest), ':',)*)? '\0').as_bytes(); + const X: &[u8] = $data.as_bytes(); // Marked with `unnamed_addr` in Objective-C's LLVM. // See rust-lang/rust#18297 // Should only be an optimization (?) #[link_section = "__TEXT,__objc_methname,cstring_literals"] - #[export_name = concat!("\x01L_OBJC_METH_VAR_NAME_", $crate::__macro_helpers::hash_idents!($first $($($rest)*)?))] + #[export_name = concat!("\x01L_OBJC_METH_VAR_NAME_", $crate::__macro_helpers::__hash_idents!($($idents)+))] static NAME_DATA: [u8; X.len()] = { // Convert the `&[u8]` slice to an array with known length, so // that we can place that directly in a static. @@ -92,7 +101,7 @@ macro_rules! sel { // // Clang uses `no_dead_strip` here for some reason? #[link_section = "__DATA,__objc_selrefs,literal_pointers"] - #[export_name = concat!("\x01L_OBJC_SELECTOR_REFERENCES_", $crate::__macro_helpers::hash_idents!($first $($($rest)*)?))] + #[export_name = concat!("\x01L_OBJC_SELECTOR_REFERENCES_", $crate::__macro_helpers::__hash_idents!($($idents)+))] static mut REF: $crate::runtime::Sel = unsafe { $crate::runtime::Sel::from_ptr(NAME_DATA.as_ptr().cast()) }; @@ -107,7 +116,7 @@ macro_rules! sel { } objc_static_workaround() - }); + }}; } /// Send a message to an object or class. From 65f0bd3aab3f9694ab0ec20b7c468ce0f61abedc Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Fri, 17 Jun 2022 03:04:45 +0200 Subject: [PATCH 14/30] Test __hash_idents macro --- objc2-proc-macros/src/lib.rs | 2 ++ objc2/src/__macro_helpers.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/objc2-proc-macros/src/lib.rs b/objc2-proc-macros/src/lib.rs index 399eedf8c..b8e0a98ac 100644 --- a/objc2-proc-macros/src/lib.rs +++ b/objc2-proc-macros/src/lib.rs @@ -50,6 +50,8 @@ fn get_idents(input: TokenStream) -> impl Iterator { /// Creates a hash from the input and source code locations in the provided /// idents. +/// +/// Tests are in [`objc2::__macro_helpers`]. #[proc_macro] #[doc(hidden)] pub fn __hash_idents(input: TokenStream) -> TokenStream { diff --git a/objc2/src/__macro_helpers.rs b/objc2/src/__macro_helpers.rs index de3b2e7cd..9bddcea9a 100644 --- a/objc2/src/__macro_helpers.rs +++ b/objc2/src/__macro_helpers.rs @@ -372,4 +372,31 @@ mod tests { let _obj: Id = unsafe { msg_send_id![cls, new].unwrap() }; } } + + #[test] + #[cfg(feature = "objc2-proc-macros")] + fn hash_idents_different() { + assert_ne!(__hash_idents!(abc), __hash_idents!(def)); + } + + #[test] + #[cfg(feature = "objc2-proc-macros")] + fn hash_idents_same_no_equal() { + assert_ne!(__hash_idents!(abc), __hash_idents!(abc)); + assert_ne!(__hash_idents!(abc def ghi), __hash_idents!(abc def ghi)); + } + + #[test] + #[cfg(feature = "objc2-proc-macros")] + fn hash_idents_exact_same_ident() { + macro_rules! x { + ($x:ident) => { + (__hash_idents!($x), __hash_idents!($x)) + }; + } + let (ident1, ident2) = x!(abc); + // This is a limitation of `__hash_idents`, ideally we'd like these + // to be different! + assert_eq!(ident1, ident2); + } } From 832d6a61d91197f0cb42213c3935785483afdaf5 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Fri, 17 Jun 2022 03:32:58 +0200 Subject: [PATCH 15/30] Test getting sel!(alloc) twice --- .../expected/apple-aarch64.s | 32 ++-- .../expected/apple-armv7.s | 32 ++-- .../expected/apple-armv7s.s | 32 ++-- .../expected/apple-x86.s | 32 ++-- .../expected/apple-x86_64.s | 32 ++-- .../test_static_sel/expected/apple-aarch64.s | 168 +++++++++++------- .../test_static_sel/expected/apple-armv7.s | 165 ++++++++++------- .../test_static_sel/expected/apple-armv7s.s | 168 +++++++++++------- .../test_static_sel/expected/apple-x86.s | 159 ++++++++++------- .../test_static_sel/expected/apple-x86_64.s | 156 +++++++++------- tests/assembly/test_static_sel/lib.rs | 4 +- 11 files changed, 575 insertions(+), 405 deletions(-) diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index 8577319bd..507bcd5f2 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -6,7 +6,7 @@ _handle_with_sel: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h7e2219bd31d55268E + bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hc2646b773d8b21f1E mov x1, x0 mov x0, x19 ldp x29, x30, [sp, #16] @@ -20,9 +20,9 @@ _handle_alloc_init: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h3d919388c23fdf68E + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hef5436b0c5b82354E mov x20, x0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h208b45a18d15451eE + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hab60d3c69560846dE mov x1, x0 mov x0, x19 bl _objc_msgSend @@ -38,23 +38,23 @@ _use_generic: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h29677622e36cf330E + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hf3b0aee156775a82E mov x20, x0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h432a20390f91c26fE + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h7ecc61ed0718f1d3E mov x2, x0 mov x0, x19 mov x1, x20 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h777a3aa99de98b73E + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h66cda140112bf183E mov x20, x0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h432a20390f91c26fE + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h7ecc61ed0718f1d3E mov x2, x0 mov x0, x19 mov x1, x20 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h82d96cce58f7d605E + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h5cc6e34851580441E mov x20, x0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h432a20390f91c26fE + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h7ecc61ed0718f1d3E mov x2, x0 mov x0, x19 mov x1, x20 @@ -63,7 +63,7 @@ _use_generic: b _objc_msgSend .p2align 2 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h7e2219bd31d55268E: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hc2646b773d8b21f1E: Lloh0: adrp x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGE Lloh1: @@ -72,7 +72,7 @@ Lloh1: .loh AdrpLdr Lloh0, Lloh1 .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h3d919388c23fdf68E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hef5436b0c5b82354E: Lloh2: adrp x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGE Lloh3: @@ -81,7 +81,7 @@ Lloh3: .loh AdrpLdr Lloh2, Lloh3 .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h208b45a18d15451eE: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hab60d3c69560846dE: Lloh4: adrp x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGE Lloh5: @@ -90,7 +90,7 @@ Lloh5: .loh AdrpLdr Lloh4, Lloh5 .p2align 2 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h432a20390f91c26fE: +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h7ecc61ed0718f1d3E: Lloh6: adrp x8, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGE Lloh7: @@ -99,7 +99,7 @@ Lloh7: .loh AdrpLdr Lloh6, Lloh7 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h29677622e36cf330E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hf3b0aee156775a82E: Lloh8: adrp x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGE Lloh9: @@ -108,7 +108,7 @@ Lloh9: .loh AdrpLdr Lloh8, Lloh9 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h777a3aa99de98b73E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h66cda140112bf183E: Lloh10: adrp x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGE Lloh11: @@ -117,7 +117,7 @@ Lloh11: .loh AdrpLdr Lloh10, Lloh11 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h82d96cce58f7d605E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h5cc6e34851580441E: Lloh12: adrp x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGE Lloh13: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index e4fc4a01b..4eada398a 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -7,7 +7,7 @@ _handle_with_sel: push {r4, r7, lr} add r7, sp, #4 mov r4, r0 - bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hbbdda4be504e4b8dE + bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hf73eeb54c9e01045E mov r1, r0 mov r0, r4 pop {r4, r7, lr} @@ -20,9 +20,9 @@ _handle_alloc_init: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h64a8dce59c4dc94aE + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h362c159784365d1eE mov r5, r0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h4470f95a700d9c7bE + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hedfa85590eaab188E mov r1, r0 mov r0, r4 bl _objc_msgSend @@ -37,23 +37,23 @@ _use_generic: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hebd2347ba98b0bafE + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h93b6d1a0e335d084E mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hbfbca3fddd47cf1dE + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h07bf98b6bc8a0eddE mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h5467f850ea7c1791E + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h6b6d6a319d503cd4E mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hbfbca3fddd47cf1dE + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h07bf98b6bc8a0eddE mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha138f577d13053ebE + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hb6dd0a9c129698bcE mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17hbfbca3fddd47cf1dE + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h07bf98b6bc8a0eddE mov r2, r0 mov r0, r4 mov r1, r5 @@ -62,7 +62,7 @@ _use_generic: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hbbdda4be504e4b8dE: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hf73eeb54c9e01045E: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) LPC3_0: @@ -71,7 +71,7 @@ LPC3_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h64a8dce59c4dc94aE: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h362c159784365d1eE: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) LPC4_0: @@ -80,7 +80,7 @@ LPC4_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h4470f95a700d9c7bE: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hedfa85590eaab188E: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) LPC5_0: @@ -89,7 +89,7 @@ LPC5_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17hbfbca3fddd47cf1dE: +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h07bf98b6bc8a0eddE: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) LPC6_0: @@ -98,7 +98,7 @@ LPC6_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hebd2347ba98b0bafE: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h93b6d1a0e335d084E: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) LPC7_0: @@ -107,7 +107,7 @@ LPC7_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h5467f850ea7c1791E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h6b6d6a319d503cd4E: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) LPC8_0: @@ -116,7 +116,7 @@ LPC8_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha138f577d13053ebE: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hb6dd0a9c129698bcE: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) LPC9_0: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index f7f390649..6c7f5c347 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -7,7 +7,7 @@ _handle_with_sel: push {r4, r7, lr} add r7, sp, #4 mov r4, r0 - bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h8e8912e05611baf8E + bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h7e1a10847776c45fE mov r1, r0 mov r0, r4 bl _objc_msgSend @@ -20,9 +20,9 @@ _handle_alloc_init: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h98b7256dded064d1E + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd2cd5240f9e28406E mov r5, r0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h8bd68890a8be4b94E + bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hf23cc2c03d7f3585E mov r1, r0 mov r0, r4 bl _objc_msgSend @@ -37,23 +37,23 @@ _use_generic: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h4db106eab2ec1470E + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h0e0f371456878cccE mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h137ede0f8414f244E + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h64ea282b0b9e24baE mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h68391fe30382cbbeE + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfe689398d676ba52E mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h137ede0f8414f244E + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h64ea282b0b9e24baE mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd7ee6447198a8703E + bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc783971755a73ce6E mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h137ede0f8414f244E + bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h64ea282b0b9e24baE mov r2, r0 mov r0, r4 mov r1, r5 @@ -62,7 +62,7 @@ _use_generic: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h8e8912e05611baf8E: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h7e1a10847776c45fE: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) LPC3_0: @@ -71,7 +71,7 @@ LPC3_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h98b7256dded064d1E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd2cd5240f9e28406E: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) LPC4_0: @@ -80,7 +80,7 @@ LPC4_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h8bd68890a8be4b94E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hf23cc2c03d7f3585E: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) LPC5_0: @@ -89,7 +89,7 @@ LPC5_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h137ede0f8414f244E: +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h64ea282b0b9e24baE: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) LPC6_0: @@ -98,7 +98,7 @@ LPC6_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h4db106eab2ec1470E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h0e0f371456878cccE: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) LPC7_0: @@ -107,7 +107,7 @@ LPC7_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h68391fe30382cbbeE: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfe689398d676ba52E: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) LPC8_0: @@ -116,7 +116,7 @@ LPC8_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd7ee6447198a8703E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc783971755a73ce6E: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) LPC9_0: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index 345003db9..1464ac421 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -8,7 +8,7 @@ _handle_with_sel: push esi push eax mov esi, dword ptr [ebp + 8] - call __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h713350a8d234436dE + call __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hbb9ea5cc3c2bc673E sub esp, 8 push eax push esi @@ -26,9 +26,9 @@ _handle_alloc_init: push edi push esi mov edi, dword ptr [ebp + 8] - call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7e789f29e463517aE + call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7d94dc0b9670a033E mov esi, eax - call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h8a2e6aa05f9c9dbdE + call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hbaa7a4a9b9409fa8E sub esp, 8 push eax push edi @@ -51,27 +51,27 @@ _use_generic: push edi push esi mov edi, dword ptr [ebp + 8] - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h2996e77ce6841ac6E + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha939665a1bf8cb80E mov esi, eax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h69a1eaae9cce6de4E + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h9239e0c88e043694E sub esp, 4 push eax push esi push edi call _objc_msgSend add esp, 16 - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h8127295802f21218E + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd014b6181fe46df3E mov esi, eax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h69a1eaae9cce6de4E + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h9239e0c88e043694E sub esp, 4 push eax push esi push edi call _objc_msgSend add esp, 16 - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17he3ad303312f2a9d3E + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbfbcb6f3695b31d1E mov esi, eax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h69a1eaae9cce6de4E + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h9239e0c88e043694E sub esp, 4 push eax push esi @@ -84,7 +84,7 @@ _use_generic: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h713350a8d234436dE: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hbb9ea5cc3c2bc673E: push ebp mov ebp, esp call L3$pb @@ -95,7 +95,7 @@ L3$pb: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7e789f29e463517aE: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7d94dc0b9670a033E: push ebp mov ebp, esp call L4$pb @@ -106,7 +106,7 @@ L4$pb: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h8a2e6aa05f9c9dbdE: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hbaa7a4a9b9409fa8E: push ebp mov ebp, esp call L5$pb @@ -117,7 +117,7 @@ L5$pb: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h69a1eaae9cce6de4E: +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h9239e0c88e043694E: push ebp mov ebp, esp call L6$pb @@ -128,7 +128,7 @@ L6$pb: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h2996e77ce6841ac6E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha939665a1bf8cb80E: push ebp mov ebp, esp call L7$pb @@ -139,7 +139,7 @@ L7$pb: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h8127295802f21218E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd014b6181fe46df3E: push ebp mov ebp, esp call L8$pb @@ -150,7 +150,7 @@ L8$pb: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17he3ad303312f2a9d3E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbfbcb6f3695b31d1E: push ebp mov ebp, esp call L9$pb diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index a2f02341a..62ef4b531 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -8,7 +8,7 @@ _handle_with_sel: push rbx push rax mov rbx, rdi - call __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17ha942fb2a10f030e2E + call __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h2820d4d77d6b733eE mov rdi, rbx mov rsi, rax add rsp, 8 @@ -24,9 +24,9 @@ _handle_alloc_init: push r14 push rbx mov rbx, rdi - call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd4cb31996e6a0379E + call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd2eea05d9287eb6eE mov r14, rax - call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h5f238466fcc6efaeE + call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17he4d88d821168c396E mov rdi, rbx mov rsi, rax call _objc_msgSend @@ -45,23 +45,23 @@ _use_generic: push r14 push rbx mov rbx, rdi - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3464617adbf28153E + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc09df8c93c434797E mov r14, rax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb033E + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h718bb262b34494f9E mov rdi, rbx mov rsi, r14 mov rdx, rax call _objc_msgSend - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfa132600ad7bf08dE + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha6bd7949e4e080bfE mov r14, rax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb033E + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h718bb262b34494f9E mov rdi, rbx mov rsi, r14 mov rdx, rax call _objc_msgSend - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbd4ba246c21e9c56E + call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbb9885f8e326afa5E mov r14, rax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb033E + call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h718bb262b34494f9E mov rdi, rbx mov rsi, r14 mov rdx, rax @@ -71,7 +71,7 @@ _use_generic: jmp _objc_msgSend .p2align 4, 0x90 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17ha942fb2a10f030e2E: +__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h2820d4d77d6b733eE: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286] @@ -79,7 +79,7 @@ __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17ha942fb ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd4cb31996e6a0379E: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd2eea05d9287eb6eE: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9] @@ -87,7 +87,7 @@ __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd4cb ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h5f238466fcc6efaeE: +__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17he4d88d821168c396E: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9] @@ -95,7 +95,7 @@ __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h5f23 ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb033E: +__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h718bb262b34494f9E: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32] @@ -103,7 +103,7 @@ __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h71fc2d7ad9beb03 ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3464617adbf28153E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc09df8c93c434797E: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4] @@ -111,7 +111,7 @@ __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h3464617adb ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfa132600ad7bf08dE: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha6bd7949e4e080bfE: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1] @@ -119,7 +119,7 @@ __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfa132600ad ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbd4ba246c21e9c56E: +__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbb9885f8e326afa5E: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720] diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index f2375279c..54db4c1c8 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -2,27 +2,37 @@ .globl _get_sel .p2align 2 _get_sel: - b __ZN15test_static_sel7get_sel22objc_static_workaround17hd01b8e03bc7ee2f2E + b __ZN15test_static_sel7get_sel22objc_static_workaround17h6d16eabd0a9b7636E .globl _get_same_sel .p2align 2 _get_same_sel: - b __ZN15test_static_sel12get_same_sel22objc_static_workaround17h6fded10733d3d13eE + b __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9f4b0a61e0bd3ff7E - .globl _get_common + .globl _get_common_twice .p2align 2 -_get_common: - b __ZN15test_static_sel10get_common22objc_static_workaround17h3099714314719ae4E +_get_common_twice: + stp x20, x19, [sp, #-32]! + stp x29, x30, [sp, #16] + add x29, sp, #16 + bl __ZN15test_static_sel16get_common_twice22objc_static_workaround17h3dde674d6aeaabc2E + mov x19, x0 + bl __ZN15test_static_sel16get_common_twice22objc_static_workaround17hfda1aff90e28a5d8E + mov x1, x0 + mov x0, x19 + ldp x29, x30, [sp, #16] + ldp x20, x19, [sp], #32 + ret .globl _get_different_sel .p2align 2 _get_different_sel: - b __ZN15test_static_sel17get_different_sel22objc_static_workaround17h2df9cd4849db8a71E + b __ZN15test_static_sel17get_different_sel22objc_static_workaround17h3bdbe70cb5664ac6E .globl _unused_sel .p2align 2 _unused_sel: - b __ZN15test_static_sel10unused_sel22objc_static_workaround17h751ade9083325dbfE + b __ZN15test_static_sel10unused_sel22objc_static_workaround17hd1b4fbf65200f929E .globl _use_fns .p2align 2 @@ -32,13 +42,13 @@ _use_fns: stp x29, x30, [sp, #32] add x29, sp, #32 mov x19, x8 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hd01b8e03bc7ee2f2E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h6d16eabd0a9b7636E mov x20, x0 - bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h6fded10733d3d13eE + bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9f4b0a61e0bd3ff7E mov x21, x0 - bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h2df9cd4849db8a71E + bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h3bdbe70cb5664ac6E mov x22, x0 - bl __ZN15test_static_sel7use_fns22objc_static_workaround17h0a4a70767a5df0c7E + bl __ZN15test_static_sel7use_fns22objc_static_workaround17hf1526c460169e340E stp x20, x21, [x19] stp x22, x0, [x19, #16] ldp x29, x30, [sp, #32] @@ -53,9 +63,9 @@ _use_same_twice: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x8 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hd01b8e03bc7ee2f2E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h6d16eabd0a9b7636E mov x20, x0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hd01b8e03bc7ee2f2E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h6d16eabd0a9b7636E stp x20, x0, [x19] ldp x29, x30, [sp, #16] ldp x20, x19, [sp], #32 @@ -70,7 +80,7 @@ _use_in_loop: cbz x0, LBB7_3 mov x19, x0 LBB7_2: - bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17hd571f39365fc8d75E + bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17h8e983a5db68150d4E subs x19, x19, #1 b.ne LBB7_2 LBB7_3: @@ -79,7 +89,7 @@ LBB7_3: ret .p2align 2 -__ZN15test_static_sel7get_sel22objc_static_workaround17hd01b8e03bc7ee2f2E: +__ZN15test_static_sel7get_sel22objc_static_workaround17h6d16eabd0a9b7636E: Lloh0: adrp x8, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGE Lloh1: @@ -88,7 +98,7 @@ Lloh1: .loh AdrpLdr Lloh0, Lloh1 .p2align 2 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17h6fded10733d3d13eE: +__ZN15test_static_sel12get_same_sel22objc_static_workaround17h9f4b0a61e0bd3ff7E: Lloh2: adrp x8, L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35@PAGE Lloh3: @@ -97,50 +107,59 @@ Lloh3: .loh AdrpLdr Lloh2, Lloh3 .p2align 2 -__ZN15test_static_sel10get_common22objc_static_workaround17h3099714314719ae4E: +__ZN15test_static_sel16get_common_twice22objc_static_workaround17h3dde674d6aeaabc2E: Lloh4: - adrp x8, L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77@PAGE Lloh5: - ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77@PAGEOFF] ret .loh AdrpLdr Lloh4, Lloh5 .p2align 2 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17h2df9cd4849db8a71E: +__ZN15test_static_sel16get_common_twice22objc_static_workaround17hfda1aff90e28a5d8E: Lloh6: - adrp x8, L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7@PAGE Lloh7: - ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7@PAGEOFF] ret .loh AdrpLdr Lloh6, Lloh7 .p2align 2 -__ZN15test_static_sel10unused_sel22objc_static_workaround17h751ade9083325dbfE: +__ZN15test_static_sel17get_different_sel22objc_static_workaround17h3bdbe70cb5664ac6E: Lloh8: - adrp x8, L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0@PAGE Lloh9: - ldr xzr, [x8, L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0@PAGEOFF] ret .loh AdrpLdr Lloh8, Lloh9 .p2align 2 -__ZN15test_static_sel7use_fns22objc_static_workaround17h0a4a70767a5df0c7E: +__ZN15test_static_sel10unused_sel22objc_static_workaround17hd1b4fbf65200f929E: Lloh10: - adrp x8, L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25@PAGE Lloh11: - ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860@PAGEOFF] + ldr xzr, [x8, L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25@PAGEOFF] ret .loh AdrpLdr Lloh10, Lloh11 .p2align 2 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17hd571f39365fc8d75E: +__ZN15test_static_sel7use_fns22objc_static_workaround17hf1526c460169e340E: Lloh12: - adrp x8, L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07@PAGE + adrp x8, L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99@PAGE Lloh13: - ldr xzr, [x8, L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07@PAGEOFF] + ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99@PAGEOFF] ret .loh AdrpLdr Lloh12, Lloh13 + .p2align 2 +__ZN15test_static_sel11use_in_loop22objc_static_workaround17h8e983a5db68150d4E: +Lloh14: + adrp x8, L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b@PAGE +Lloh15: + ldr xzr, [x8, L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b@PAGEOFF] + ret + .loh AdrpLdr Lloh14, Lloh15 + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 @@ -176,88 +195,105 @@ L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .quad L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_34d6c3ed70e85964 + .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 + .p2align 2 +L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: + .space 8 + + .section __TEXT,__objc_methname,cstring_literals + .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 +L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: + .asciz "alloc" + + .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 + .p2align 3 +L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: + .quad L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 + + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 .p2align 2 -L_OBJC_IMAGE_INFO_34d6c3ed70e85964: +L_OBJC_IMAGE_INFO_33db9f67352fe9a7: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 -L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: + .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 +L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964 + .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 .p2align 3 -L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: - .quad L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 +L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: + .quad L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_ab5e106a55f71e5b + .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 .p2align 2 -L_OBJC_IMAGE_INFO_ab5e106a55f71e5b: +L_OBJC_IMAGE_INFO_bb37877368f0b7a0: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b -L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: + .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 +L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b + .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 .p2align 3 -L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: - .quad L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b +L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: + .quad L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_6f2d5ee51a69c477 + .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 .p2align 2 -L_OBJC_IMAGE_INFO_6f2d5ee51a69c477: +L_OBJC_IMAGE_INFO_2c505e110d181b25: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 -L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: + .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 +L_OBJC_METH_VAR_NAME_2c505e110d181b25: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477 + .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 .p2align 3 -L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: - .quad L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 +L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: + .quad L_OBJC_METH_VAR_NAME_2c505e110d181b25 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_1d27e854714b8860 + .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 .p2align 2 -L_OBJC_IMAGE_INFO_1d27e854714b8860: +L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 -L_OBJC_METH_VAR_NAME_1d27e854714b8860: + .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 +L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860 + .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 .p2align 3 -L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: - .quad L_OBJC_METH_VAR_NAME_1d27e854714b8860 +L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: + .quad L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_e56637a4c1a15b07 + .globl L_OBJC_IMAGE_INFO_9845965b987ed54b .p2align 2 -L_OBJC_IMAGE_INFO_e56637a4c1a15b07: +L_OBJC_IMAGE_INFO_9845965b987ed54b: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 -L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: + .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b +L_OBJC_METH_VAR_NAME_9845965b987ed54b: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07 + .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b .p2align 3 -L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07: - .quad L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 +L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: + .quad L_OBJC_METH_VAR_NAME_9845965b987ed54b .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index c855a3c73..1dbea2c07 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -4,31 +4,38 @@ .p2align 2 .code 32 _get_sel: - b __ZN15test_static_sel7get_sel22objc_static_workaround17hb4f8ebf12620f024E + b __ZN15test_static_sel7get_sel22objc_static_workaround17hb7aa4e12e41be685E .globl _get_same_sel .p2align 2 .code 32 _get_same_sel: - b __ZN15test_static_sel12get_same_sel22objc_static_workaround17ha0db901a0e219311E + b __ZN15test_static_sel12get_same_sel22objc_static_workaround17h22f46d9f912f58c6E - .globl _get_common + .globl _get_common_twice .p2align 2 .code 32 -_get_common: - b __ZN15test_static_sel10get_common22objc_static_workaround17h8e0d36867c2deb3fE +_get_common_twice: + push {r4, r7, lr} + add r7, sp, #4 + bl __ZN15test_static_sel16get_common_twice22objc_static_workaround17h8f1949a79c1e5d95E + mov r4, r0 + bl __ZN15test_static_sel16get_common_twice22objc_static_workaround17hd683f76442823299E + mov r1, r0 + mov r0, r4 + pop {r4, r7, pc} .globl _get_different_sel .p2align 2 .code 32 _get_different_sel: - b __ZN15test_static_sel17get_different_sel22objc_static_workaround17hac89f9a0e9ae4aafE + b __ZN15test_static_sel17get_different_sel22objc_static_workaround17h68050b9c775fc029E .globl _unused_sel .p2align 2 .code 32 _unused_sel: - b __ZN15test_static_sel10unused_sel22objc_static_workaround17h7e5361a34aa0b8f3E + b __ZN15test_static_sel10unused_sel22objc_static_workaround17hfe788c144bbbc6f0E .globl _use_fns .p2align 2 @@ -38,13 +45,13 @@ _use_fns: add r7, sp, #12 push {r8} mov r4, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hb4f8ebf12620f024E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hb7aa4e12e41be685E mov r8, r0 - bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17ha0db901a0e219311E + bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h22f46d9f912f58c6E mov r6, r0 - bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17hac89f9a0e9ae4aafE + bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h68050b9c775fc029E mov r5, r0 - bl __ZN15test_static_sel7use_fns22objc_static_workaround17h8513ca3de8f36ba6E + bl __ZN15test_static_sel7use_fns22objc_static_workaround17hd2fa488db95949bdE str r8, [r4] str r6, [r4, #4] str r5, [r4, #8] @@ -60,9 +67,9 @@ _use_same_twice: add r7, sp, #4 push {r8} mov r4, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hb4f8ebf12620f024E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hb7aa4e12e41be685E mov r8, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hb4f8ebf12620f024E + bl __ZN15test_static_sel7get_sel22objc_static_workaround17hb7aa4e12e41be685E mov r9, r0 strd r8, r9, [r4] pop {r8} @@ -79,14 +86,14 @@ _use_in_loop: LBB7_1: mov r4, r0 LBB7_2: - bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17h0b1654ea6eda9039E + bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17hf07bd68ba643621aE subs r4, r4, #1 bne LBB7_2 pop {r4, r7, pc} .p2align 2 .code 32 -__ZN15test_static_sel7get_sel22objc_static_workaround17hb4f8ebf12620f024E: +__ZN15test_static_sel7get_sel22objc_static_workaround17hb7aa4e12e41be685E: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) LPC8_0: @@ -95,7 +102,7 @@ LPC8_0: .p2align 2 .code 32 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17ha0db901a0e219311E: +__ZN15test_static_sel12get_same_sel22objc_static_workaround17h22f46d9f912f58c6E: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) LPC9_0: @@ -104,49 +111,58 @@ LPC9_0: .p2align 2 .code 32 -__ZN15test_static_sel10get_common22objc_static_workaround17h8e0d36867c2deb3fE: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) +__ZN15test_static_sel16get_common_twice22objc_static_workaround17h8f1949a79c1e5d95E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) LPC10_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17hac89f9a0e9ae4aafE: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) +__ZN15test_static_sel16get_common_twice22objc_static_workaround17hd683f76442823299E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) LPC11_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel10unused_sel22objc_static_workaround17h7e5361a34aa0b8f3E: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) +__ZN15test_static_sel17get_different_sel22objc_static_workaround17h68050b9c775fc029E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) LPC12_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel7use_fns22objc_static_workaround17h8513ca3de8f36ba6E: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) +__ZN15test_static_sel10unused_sel22objc_static_workaround17hfe788c144bbbc6f0E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) LPC13_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17h0b1654ea6eda9039E: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) +__ZN15test_static_sel7use_fns22objc_static_workaround17hd2fa488db95949bdE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) LPC14_0: ldr r0, [pc, r0] bx lr + .p2align 2 + .code 32 +__ZN15test_static_sel11use_in_loop22objc_static_workaround17hf07bd68ba643621aE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) +LPC15_0: + ldr r0, [pc, r0] + bx lr + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 @@ -182,88 +198,105 @@ L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .long L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_34d6c3ed70e85964 + .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 + .p2align 2 +L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: + .space 8 + + .section __TEXT,__objc_methname,cstring_literals + .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 +L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: + .asciz "alloc" + + .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: + .long L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 + + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 .p2align 2 -L_OBJC_IMAGE_INFO_34d6c3ed70e85964: +L_OBJC_IMAGE_INFO_33db9f67352fe9a7: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 -L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: + .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 +L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964 + .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 .p2align 2 -L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: - .long L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 +L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: + .long L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_ab5e106a55f71e5b + .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 .p2align 2 -L_OBJC_IMAGE_INFO_ab5e106a55f71e5b: +L_OBJC_IMAGE_INFO_bb37877368f0b7a0: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b -L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: + .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 +L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b + .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 .p2align 2 -L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: - .long L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b +L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: + .long L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_6f2d5ee51a69c477 + .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 .p2align 2 -L_OBJC_IMAGE_INFO_6f2d5ee51a69c477: +L_OBJC_IMAGE_INFO_2c505e110d181b25: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 -L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: + .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 +L_OBJC_METH_VAR_NAME_2c505e110d181b25: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477 + .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 .p2align 2 -L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: - .long L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 +L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: + .long L_OBJC_METH_VAR_NAME_2c505e110d181b25 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_1d27e854714b8860 + .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 .p2align 2 -L_OBJC_IMAGE_INFO_1d27e854714b8860: +L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 -L_OBJC_METH_VAR_NAME_1d27e854714b8860: + .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 +L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860 + .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 .p2align 2 -L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: - .long L_OBJC_METH_VAR_NAME_1d27e854714b8860 +L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: + .long L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_e56637a4c1a15b07 + .globl L_OBJC_IMAGE_INFO_9845965b987ed54b .p2align 2 -L_OBJC_IMAGE_INFO_e56637a4c1a15b07: +L_OBJC_IMAGE_INFO_9845965b987ed54b: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 -L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: + .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b +L_OBJC_METH_VAR_NAME_9845965b987ed54b: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07 + .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b .p2align 2 -L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07: - .long L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 +L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: + .long L_OBJC_METH_VAR_NAME_9845965b987ed54b .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index 32137f6c8..44d9d6d29 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -6,7 +6,7 @@ _get_sel: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hfbc0e8d2d2b9b0faE + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h648950fc43b2702aE pop {r7, pc} .globl _get_same_sel @@ -15,17 +15,21 @@ _get_sel: _get_same_sel: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h206241f3cdb815f2E + bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17hec9e77b171bc9113E pop {r7, pc} - .globl _get_common + .globl _get_common_twice .p2align 2 .code 32 -_get_common: - push {r7, lr} - mov r7, sp - bl __ZN15test_static_sel10get_common22objc_static_workaround17h43aa5ab975f84968E - pop {r7, pc} +_get_common_twice: + push {r4, r7, lr} + add r7, sp, #4 + bl __ZN15test_static_sel16get_common_twice22objc_static_workaround17h3db0895ffade7f9dE + mov r4, r0 + bl __ZN15test_static_sel16get_common_twice22objc_static_workaround17h71fa1210656cf2c8E + mov r1, r0 + mov r0, r4 + pop {r4, r7, pc} .globl _get_different_sel .p2align 2 @@ -33,7 +37,7 @@ _get_common: _get_different_sel: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h6d4d0b19565e8bbaE + bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17hfae2030587df69c1E pop {r7, pc} .globl _unused_sel @@ -42,7 +46,7 @@ _get_different_sel: _unused_sel: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel10unused_sel22objc_static_workaround17hccfdb864c1636284E + bl __ZN15test_static_sel10unused_sel22objc_static_workaround17hf7c0f8731f9903e4E pop {r7, pc} .globl _use_fns @@ -53,13 +57,13 @@ _use_fns: add r7, sp, #12 push {r8} mov r4, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hfbc0e8d2d2b9b0faE + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h648950fc43b2702aE mov r8, r0 - bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h206241f3cdb815f2E + bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17hec9e77b171bc9113E mov r6, r0 - bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h6d4d0b19565e8bbaE + bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17hfae2030587df69c1E mov r5, r0 - bl __ZN15test_static_sel7use_fns22objc_static_workaround17h08f64a44e1d1f6ffE + bl __ZN15test_static_sel7use_fns22objc_static_workaround17h573bdafb7316c88aE str r8, [r4] str r6, [r4, #4] str r5, [r4, #8] @@ -75,9 +79,9 @@ _use_same_twice: add r7, sp, #4 push {r8} mov r4, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hfbc0e8d2d2b9b0faE + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h648950fc43b2702aE mov r8, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hfbc0e8d2d2b9b0faE + bl __ZN15test_static_sel7get_sel22objc_static_workaround17h648950fc43b2702aE mov r9, r0 strd r8, r9, [r4] pop {r8} @@ -94,14 +98,14 @@ _use_in_loop: LBB7_1: mov r4, r0 LBB7_2: - bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17hef7c0204ccd46c76E + bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17hbed100d6afc97340E subs r4, r4, #1 bne LBB7_2 pop {r4, r7, pc} .p2align 2 .code 32 -__ZN15test_static_sel7get_sel22objc_static_workaround17hfbc0e8d2d2b9b0faE: +__ZN15test_static_sel7get_sel22objc_static_workaround17h648950fc43b2702aE: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) LPC8_0: @@ -110,7 +114,7 @@ LPC8_0: .p2align 2 .code 32 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17h206241f3cdb815f2E: +__ZN15test_static_sel12get_same_sel22objc_static_workaround17hec9e77b171bc9113E: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) LPC9_0: @@ -119,49 +123,58 @@ LPC9_0: .p2align 2 .code 32 -__ZN15test_static_sel10get_common22objc_static_workaround17h43aa5ab975f84968E: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-(LPC10_0+8)) +__ZN15test_static_sel16get_common_twice22objc_static_workaround17h3db0895ffade7f9dE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) LPC10_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17h6d4d0b19565e8bbaE: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-(LPC11_0+8)) +__ZN15test_static_sel16get_common_twice22objc_static_workaround17h71fa1210656cf2c8E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) LPC11_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel10unused_sel22objc_static_workaround17hccfdb864c1636284E: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-(LPC12_0+8)) +__ZN15test_static_sel17get_different_sel22objc_static_workaround17hfae2030587df69c1E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) LPC12_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel7use_fns22objc_static_workaround17h08f64a44e1d1f6ffE: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-(LPC13_0+8)) +__ZN15test_static_sel10unused_sel22objc_static_workaround17hf7c0f8731f9903e4E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) LPC13_0: ldr r0, [pc, r0] bx lr .p2align 2 .code 32 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17hef7c0204ccd46c76E: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-(LPC14_0+8)) +__ZN15test_static_sel7use_fns22objc_static_workaround17h573bdafb7316c88aE: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) LPC14_0: ldr r0, [pc, r0] bx lr + .p2align 2 + .code 32 +__ZN15test_static_sel11use_in_loop22objc_static_workaround17hbed100d6afc97340E: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) +LPC15_0: + ldr r0, [pc, r0] + bx lr + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 @@ -197,88 +210,105 @@ L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .long L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_34d6c3ed70e85964 + .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 + .p2align 2 +L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: + .space 8 + + .section __TEXT,__objc_methname,cstring_literals + .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 +L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: + .asciz "alloc" + + .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: + .long L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 + + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 .p2align 2 -L_OBJC_IMAGE_INFO_34d6c3ed70e85964: +L_OBJC_IMAGE_INFO_33db9f67352fe9a7: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 -L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: + .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 +L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964 + .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 .p2align 2 -L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: - .long L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 +L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: + .long L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_ab5e106a55f71e5b + .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 .p2align 2 -L_OBJC_IMAGE_INFO_ab5e106a55f71e5b: +L_OBJC_IMAGE_INFO_bb37877368f0b7a0: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b -L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: + .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 +L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b + .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 .p2align 2 -L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: - .long L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b +L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: + .long L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_6f2d5ee51a69c477 + .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 .p2align 2 -L_OBJC_IMAGE_INFO_6f2d5ee51a69c477: +L_OBJC_IMAGE_INFO_2c505e110d181b25: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 -L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: + .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 +L_OBJC_METH_VAR_NAME_2c505e110d181b25: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477 + .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 .p2align 2 -L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: - .long L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 +L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: + .long L_OBJC_METH_VAR_NAME_2c505e110d181b25 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_1d27e854714b8860 + .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 .p2align 2 -L_OBJC_IMAGE_INFO_1d27e854714b8860: +L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 -L_OBJC_METH_VAR_NAME_1d27e854714b8860: + .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 +L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860 + .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 .p2align 2 -L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: - .long L_OBJC_METH_VAR_NAME_1d27e854714b8860 +L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: + .long L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_e56637a4c1a15b07 + .globl L_OBJC_IMAGE_INFO_9845965b987ed54b .p2align 2 -L_OBJC_IMAGE_INFO_e56637a4c1a15b07: +L_OBJC_IMAGE_INFO_9845965b987ed54b: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 -L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: + .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b +L_OBJC_METH_VAR_NAME_9845965b987ed54b: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07 + .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b .p2align 2 -L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07: - .long L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 +L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: + .long L_OBJC_METH_VAR_NAME_9845965b987ed54b .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index ee8bdd2bf..7bea6da99 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -6,7 +6,7 @@ _get_sel: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel7get_sel22objc_static_workaround17hbd28d1f4da2b6e6eE + jmp __ZN15test_static_sel7get_sel22objc_static_workaround17hd939b5e1a4b728d2E .globl _get_same_sel .p2align 4, 0x90 @@ -14,15 +14,24 @@ _get_same_sel: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel12get_same_sel22objc_static_workaround17hcf8c438d0e807292E + jmp __ZN15test_static_sel12get_same_sel22objc_static_workaround17h59b150f8f213a200E - .globl _get_common + .globl _get_common_twice .p2align 4, 0x90 -_get_common: +_get_common_twice: push ebp mov ebp, esp + push esi + push eax + call __ZN15test_static_sel16get_common_twice22objc_static_workaround17hc205f5b8bb17c2cdE + mov esi, eax + call __ZN15test_static_sel16get_common_twice22objc_static_workaround17h575bc839f495598cE + mov edx, eax + mov eax, esi + add esp, 4 + pop esi pop ebp - jmp __ZN15test_static_sel10get_common22objc_static_workaround17hd73a38a3512c60a4E + ret .globl _get_different_sel .p2align 4, 0x90 @@ -30,7 +39,7 @@ _get_different_sel: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel17get_different_sel22objc_static_workaround17h0437e7638527cbcbE + jmp __ZN15test_static_sel17get_different_sel22objc_static_workaround17he0a5d2d2571f8bcaE .globl _unused_sel .p2align 4, 0x90 @@ -38,7 +47,7 @@ _unused_sel: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel10unused_sel22objc_static_workaround17h9d08c6f2f30054acE + jmp __ZN15test_static_sel10unused_sel22objc_static_workaround17h55db1a6705c511abE .globl _use_fns .p2align 4, 0x90 @@ -50,13 +59,13 @@ _use_fns: push esi sub esp, 12 mov esi, dword ptr [ebp + 8] - call __ZN15test_static_sel7get_sel22objc_static_workaround17hbd28d1f4da2b6e6eE + call __ZN15test_static_sel7get_sel22objc_static_workaround17hd939b5e1a4b728d2E mov dword ptr [ebp - 16], eax - call __ZN15test_static_sel12get_same_sel22objc_static_workaround17hcf8c438d0e807292E + call __ZN15test_static_sel12get_same_sel22objc_static_workaround17h59b150f8f213a200E mov ebx, eax - call __ZN15test_static_sel17get_different_sel22objc_static_workaround17h0437e7638527cbcbE + call __ZN15test_static_sel17get_different_sel22objc_static_workaround17he0a5d2d2571f8bcaE mov edi, eax - call __ZN15test_static_sel7use_fns22objc_static_workaround17hb2af229df09794e6E + call __ZN15test_static_sel7use_fns22objc_static_workaround17h200fe7aa11018485E mov ecx, dword ptr [ebp - 16] mov dword ptr [esi], ecx mov dword ptr [esi + 4], ebx @@ -78,9 +87,9 @@ _use_same_twice: push edi push esi mov esi, dword ptr [ebp + 8] - call __ZN15test_static_sel7get_sel22objc_static_workaround17hbd28d1f4da2b6e6eE + call __ZN15test_static_sel7get_sel22objc_static_workaround17hd939b5e1a4b728d2E mov edi, eax - call __ZN15test_static_sel7get_sel22objc_static_workaround17hbd28d1f4da2b6e6eE + call __ZN15test_static_sel7get_sel22objc_static_workaround17hd939b5e1a4b728d2E mov dword ptr [esi], edi mov dword ptr [esi + 4], eax mov eax, esi @@ -101,7 +110,7 @@ _use_in_loop: je LBB7_2 .p2align 4, 0x90 LBB7_1: - call __ZN15test_static_sel11use_in_loop22objc_static_workaround17h0d03d9d1392db5daE + call __ZN15test_static_sel11use_in_loop22objc_static_workaround17hc9e62eb404266e73E dec esi jne LBB7_1 LBB7_2: @@ -111,7 +120,7 @@ LBB7_2: ret .p2align 4, 0x90 -__ZN15test_static_sel7get_sel22objc_static_workaround17hbd28d1f4da2b6e6eE: +__ZN15test_static_sel7get_sel22objc_static_workaround17hd939b5e1a4b728d2E: push ebp mov ebp, esp call L8$pb @@ -122,7 +131,7 @@ L8$pb: ret .p2align 4, 0x90 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17hcf8c438d0e807292E: +__ZN15test_static_sel12get_same_sel22objc_static_workaround17h59b150f8f213a200E: push ebp mov ebp, esp call L9$pb @@ -133,57 +142,68 @@ L9$pb: ret .p2align 4, 0x90 -__ZN15test_static_sel10get_common22objc_static_workaround17hd73a38a3512c60a4E: +__ZN15test_static_sel16get_common_twice22objc_static_workaround17hc205f5b8bb17c2cdE: push ebp mov ebp, esp call L10$pb L10$pb: pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964-L10$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-L10$pb] pop ebp ret .p2align 4, 0x90 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17h0437e7638527cbcbE: +__ZN15test_static_sel16get_common_twice22objc_static_workaround17h575bc839f495598cE: push ebp mov ebp, esp call L11$pb L11$pb: pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b-L11$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-L11$pb] pop ebp ret .p2align 4, 0x90 -__ZN15test_static_sel10unused_sel22objc_static_workaround17h9d08c6f2f30054acE: +__ZN15test_static_sel17get_different_sel22objc_static_workaround17he0a5d2d2571f8bcaE: push ebp mov ebp, esp call L12$pb L12$pb: pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477-L12$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-L12$pb] pop ebp ret .p2align 4, 0x90 -__ZN15test_static_sel7use_fns22objc_static_workaround17hb2af229df09794e6E: +__ZN15test_static_sel10unused_sel22objc_static_workaround17h55db1a6705c511abE: push ebp mov ebp, esp call L13$pb L13$pb: pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860-L13$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-L13$pb] pop ebp ret .p2align 4, 0x90 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17h0d03d9d1392db5daE: +__ZN15test_static_sel7use_fns22objc_static_workaround17h200fe7aa11018485E: push ebp mov ebp, esp call L14$pb L14$pb: pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07-L14$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-L14$pb] + pop ebp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel11use_in_loop22objc_static_workaround17hc9e62eb404266e73E: + push ebp + mov ebp, esp + call L15$pb +L15$pb: + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-L15$pb] pop ebp ret @@ -222,88 +242,105 @@ L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .long L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_34d6c3ed70e85964 + .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 + .p2align 2 +L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: + .space 8 + + .section __TEXT,__objc_methname,cstring_literals + .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 +L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: + .asciz "alloc" + + .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: + .long L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 + + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 .p2align 2 -L_OBJC_IMAGE_INFO_34d6c3ed70e85964: +L_OBJC_IMAGE_INFO_33db9f67352fe9a7: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 -L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: + .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 +L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964 + .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 .p2align 2 -L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: - .long L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 +L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: + .long L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_ab5e106a55f71e5b + .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 .p2align 2 -L_OBJC_IMAGE_INFO_ab5e106a55f71e5b: +L_OBJC_IMAGE_INFO_bb37877368f0b7a0: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b -L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: + .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 +L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b + .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 .p2align 2 -L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: - .long L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b +L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: + .long L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_6f2d5ee51a69c477 + .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 .p2align 2 -L_OBJC_IMAGE_INFO_6f2d5ee51a69c477: +L_OBJC_IMAGE_INFO_2c505e110d181b25: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 -L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: + .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 +L_OBJC_METH_VAR_NAME_2c505e110d181b25: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477 + .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 .p2align 2 -L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: - .long L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 +L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: + .long L_OBJC_METH_VAR_NAME_2c505e110d181b25 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_1d27e854714b8860 + .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 .p2align 2 -L_OBJC_IMAGE_INFO_1d27e854714b8860: +L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 -L_OBJC_METH_VAR_NAME_1d27e854714b8860: + .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 +L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860 + .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 .p2align 2 -L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: - .long L_OBJC_METH_VAR_NAME_1d27e854714b8860 +L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: + .long L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_e56637a4c1a15b07 + .globl L_OBJC_IMAGE_INFO_9845965b987ed54b .p2align 2 -L_OBJC_IMAGE_INFO_e56637a4c1a15b07: +L_OBJC_IMAGE_INFO_9845965b987ed54b: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 -L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: + .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b +L_OBJC_METH_VAR_NAME_9845965b987ed54b: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07 + .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b .p2align 2 -L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07: - .long L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 +L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: + .long L_OBJC_METH_VAR_NAME_9845965b987ed54b .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index 53feae49e..0e28676d6 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -6,7 +6,7 @@ _get_sel: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E + jmp __ZN15test_static_sel7get_sel22objc_static_workaround17hc12703947ea497bbE .globl _get_same_sel .p2align 4, 0x90 @@ -14,15 +14,24 @@ _get_same_sel: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9d8d966f2cacb6adE + jmp __ZN15test_static_sel12get_same_sel22objc_static_workaround17hca258d69d3e23d5eE - .globl _get_common + .globl _get_common_twice .p2align 4, 0x90 -_get_common: +_get_common_twice: push rbp mov rbp, rsp + push rbx + push rax + call __ZN15test_static_sel16get_common_twice22objc_static_workaround17h8dadd4b63e132a5cE + mov rbx, rax + call __ZN15test_static_sel16get_common_twice22objc_static_workaround17h23fd0bdb743e9e9cE + mov rdx, rax + mov rax, rbx + add rsp, 8 + pop rbx pop rbp - jmp __ZN15test_static_sel10get_common22objc_static_workaround17h294a2c5d7fde0460E + ret .globl _get_different_sel .p2align 4, 0x90 @@ -30,7 +39,7 @@ _get_different_sel: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel17get_different_sel22objc_static_workaround17hec1d04928285e256E + jmp __ZN15test_static_sel17get_different_sel22objc_static_workaround17h0647461fa2fb8e0aE .globl _unused_sel .p2align 4, 0x90 @@ -38,7 +47,7 @@ _unused_sel: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel10unused_sel22objc_static_workaround17h1c4a686117a5fc41E + jmp __ZN15test_static_sel10unused_sel22objc_static_workaround17h89dff92e2e97ddb8E .globl _use_fns .p2align 4, 0x90 @@ -50,13 +59,13 @@ _use_fns: push r12 push rbx mov rbx, rdi - call __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E + call __ZN15test_static_sel7get_sel22objc_static_workaround17hc12703947ea497bbE mov r14, rax - call __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9d8d966f2cacb6adE + call __ZN15test_static_sel12get_same_sel22objc_static_workaround17hca258d69d3e23d5eE mov r15, rax - call __ZN15test_static_sel17get_different_sel22objc_static_workaround17hec1d04928285e256E + call __ZN15test_static_sel17get_different_sel22objc_static_workaround17h0647461fa2fb8e0aE mov r12, rax - call __ZN15test_static_sel7use_fns22objc_static_workaround17h276ee743b1a511dcE + call __ZN15test_static_sel7use_fns22objc_static_workaround17hc7ea4a687b01e5f9E mov qword ptr [rbx], r14 mov qword ptr [rbx + 8], r15 mov qword ptr [rbx + 16], r12 @@ -77,9 +86,9 @@ _use_same_twice: push r14 push rbx mov rbx, rdi - call __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E + call __ZN15test_static_sel7get_sel22objc_static_workaround17hc12703947ea497bbE mov r14, rax - call __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E + call __ZN15test_static_sel7get_sel22objc_static_workaround17hc12703947ea497bbE mov qword ptr [rbx], r14 mov qword ptr [rbx + 8], rax mov rax, rbx @@ -100,7 +109,7 @@ _use_in_loop: mov rbx, rdi .p2align 4, 0x90 LBB7_2: - call __ZN15test_static_sel11use_in_loop22objc_static_workaround17hba715066d6ed34d0E + call __ZN15test_static_sel11use_in_loop22objc_static_workaround17h7c93fa32030b5498E dec rbx jne LBB7_2 LBB7_3: @@ -110,7 +119,7 @@ LBB7_3: ret .p2align 4, 0x90 -__ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E: +__ZN15test_static_sel7get_sel22objc_static_workaround17hc12703947ea497bbE: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9] @@ -118,7 +127,7 @@ __ZN15test_static_sel7get_sel22objc_static_workaround17hb9e2bf6c39c8e225E: ret .p2align 4, 0x90 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17h9d8d966f2cacb6adE: +__ZN15test_static_sel12get_same_sel22objc_static_workaround17hca258d69d3e23d5eE: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35] @@ -126,42 +135,50 @@ __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9d8d966f2cacb6adE: ret .p2align 4, 0x90 -__ZN15test_static_sel10get_common22objc_static_workaround17h294a2c5d7fde0460E: +__ZN15test_static_sel16get_common_twice22objc_static_workaround17h8dadd4b63e132a5cE: + push rbp + mov rbp, rsp + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77] + pop rbp + ret + + .p2align 4, 0x90 +__ZN15test_static_sel16get_common_twice22objc_static_workaround17h23fd0bdb743e9e9cE: push rbp mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7] pop rbp ret .p2align 4, 0x90 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17hec1d04928285e256E: +__ZN15test_static_sel17get_different_sel22objc_static_workaround17h0647461fa2fb8e0aE: push rbp mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0] pop rbp ret .p2align 4, 0x90 -__ZN15test_static_sel10unused_sel22objc_static_workaround17h1c4a686117a5fc41E: +__ZN15test_static_sel10unused_sel22objc_static_workaround17h89dff92e2e97ddb8E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25] pop rbp ret .p2align 4, 0x90 -__ZN15test_static_sel7use_fns22objc_static_workaround17h276ee743b1a511dcE: +__ZN15test_static_sel7use_fns22objc_static_workaround17hc7ea4a687b01e5f9E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99] pop rbp ret .p2align 4, 0x90 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17hba715066d6ed34d0E: +__ZN15test_static_sel11use_in_loop22objc_static_workaround17h7c93fa32030b5498E: push rbp mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07] + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b] pop rbp ret @@ -200,88 +217,105 @@ L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .quad L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_34d6c3ed70e85964 + .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 + .p2align 2 +L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: + .space 8 + + .section __TEXT,__objc_methname,cstring_literals + .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 +L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: + .asciz "alloc" + + .section __DATA,__objc_selrefs,literal_pointers + .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 + .p2align 3 +L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: + .quad L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 + + .section __DATA,__objc_imageinfo,regular,no_dead_strip + .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 .p2align 2 -L_OBJC_IMAGE_INFO_34d6c3ed70e85964: +L_OBJC_IMAGE_INFO_33db9f67352fe9a7: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 -L_OBJC_METH_VAR_NAME_34d6c3ed70e85964: + .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 +L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: .asciz "alloc" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964 + .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 .p2align 3 -L_OBJC_SELECTOR_REFERENCES_34d6c3ed70e85964: - .quad L_OBJC_METH_VAR_NAME_34d6c3ed70e85964 +L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: + .quad L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_ab5e106a55f71e5b + .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 .p2align 2 -L_OBJC_IMAGE_INFO_ab5e106a55f71e5b: +L_OBJC_IMAGE_INFO_bb37877368f0b7a0: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b -L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b: + .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 +L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: .asciz "i:am:different:" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b + .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 .p2align 3 -L_OBJC_SELECTOR_REFERENCES_ab5e106a55f71e5b: - .quad L_OBJC_METH_VAR_NAME_ab5e106a55f71e5b +L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: + .quad L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_6f2d5ee51a69c477 + .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 .p2align 2 -L_OBJC_IMAGE_INFO_6f2d5ee51a69c477: +L_OBJC_IMAGE_INFO_2c505e110d181b25: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 -L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477: + .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 +L_OBJC_METH_VAR_NAME_2c505e110d181b25: .asciz "unused" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477 + .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 .p2align 3 -L_OBJC_SELECTOR_REFERENCES_6f2d5ee51a69c477: - .quad L_OBJC_METH_VAR_NAME_6f2d5ee51a69c477 +L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: + .quad L_OBJC_METH_VAR_NAME_2c505e110d181b25 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_1d27e854714b8860 + .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 .p2align 2 -L_OBJC_IMAGE_INFO_1d27e854714b8860: +L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_1d27e854714b8860 -L_OBJC_METH_VAR_NAME_1d27e854714b8860: + .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 +L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: .asciz "fourthSel" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860 + .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 .p2align 3 -L_OBJC_SELECTOR_REFERENCES_1d27e854714b8860: - .quad L_OBJC_METH_VAR_NAME_1d27e854714b8860 +L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: + .quad L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_e56637a4c1a15b07 + .globl L_OBJC_IMAGE_INFO_9845965b987ed54b .p2align 2 -L_OBJC_IMAGE_INFO_e56637a4c1a15b07: +L_OBJC_IMAGE_INFO_9845965b987ed54b: .space 8 .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 -L_OBJC_METH_VAR_NAME_e56637a4c1a15b07: + .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b +L_OBJC_METH_VAR_NAME_9845965b987ed54b: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers - .globl L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07 + .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b .p2align 3 -L_OBJC_SELECTOR_REFERENCES_e56637a4c1a15b07: - .quad L_OBJC_METH_VAR_NAME_e56637a4c1a15b07 +L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: + .quad L_OBJC_METH_VAR_NAME_9845965b987ed54b .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/lib.rs b/tests/assembly/test_static_sel/lib.rs index 834470014..69fbfb63e 100644 --- a/tests/assembly/test_static_sel/lib.rs +++ b/tests/assembly/test_static_sel/lib.rs @@ -13,8 +13,8 @@ fn get_same_sel() -> Sel { } #[no_mangle] -fn get_common() -> Sel { - sel!(alloc) +fn get_common_twice() -> (Sel, Sel) { + (sel!(alloc), sel!(alloc)) } #[no_mangle] From 8c07b3ae91665fea62ce35ec3058f648d87361b0 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Fri, 17 Jun 2022 03:58:05 +0200 Subject: [PATCH 16/30] Use v0 name mangling in assembly tests --- .../expected/apple-aarch64.s | 32 +++++++------- .../expected/apple-armv7.s | 32 +++++++------- .../expected/apple-armv7s.s | 32 +++++++------- .../expected/apple-x86.s | 32 +++++++------- .../expected/apple-x86_64.s | 32 +++++++------- .../test_static_sel/expected/apple-aarch64.s | 42 +++++++++---------- .../test_static_sel/expected/apple-armv7.s | 42 +++++++++---------- .../test_static_sel/expected/apple-armv7s.s | 42 +++++++++---------- .../test_static_sel/expected/apple-x86.s | 42 +++++++++---------- .../test_static_sel/expected/apple-x86_64.s | 42 +++++++++---------- tests/src/bin/test_assembly.rs | 1 + 11 files changed, 186 insertions(+), 185 deletions(-) diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index 507bcd5f2..017377a56 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -6,7 +6,7 @@ _handle_with_sel: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hc2646b773d8b21f1E + bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround mov x1, x0 mov x0, x19 ldp x29, x30, [sp, #16] @@ -20,9 +20,9 @@ _handle_alloc_init: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hef5436b0c5b82354E + bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround mov x20, x0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hab60d3c69560846dE + bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround mov x1, x0 mov x0, x19 bl _objc_msgSend @@ -38,23 +38,23 @@ _use_generic: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hf3b0aee156775a82E + bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel11use_generic22objc_static_workaround mov x20, x0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h7ecc61ed0718f1d3E + bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel7generic22objc_static_workaround mov x2, x0 mov x0, x19 mov x1, x20 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h66cda140112bf183E + bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel11use_generics_22objc_static_workaround mov x20, x0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h7ecc61ed0718f1d3E + bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel7generic22objc_static_workaround mov x2, x0 mov x0, x19 mov x1, x20 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h5cc6e34851580441E + bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel11use_generics0_22objc_static_workaround mov x20, x0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h7ecc61ed0718f1d3E + bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel7generic22objc_static_workaround mov x2, x0 mov x0, x19 mov x1, x20 @@ -63,7 +63,7 @@ _use_generic: b _objc_msgSend .p2align 2 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hc2646b773d8b21f1E: +__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: Lloh0: adrp x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGE Lloh1: @@ -72,7 +72,7 @@ Lloh1: .loh AdrpLdr Lloh0, Lloh1 .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hef5436b0c5b82354E: +__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: Lloh2: adrp x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGE Lloh3: @@ -81,7 +81,7 @@ Lloh3: .loh AdrpLdr Lloh2, Lloh3 .p2align 2 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hab60d3c69560846dE: +__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: Lloh4: adrp x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGE Lloh5: @@ -90,7 +90,7 @@ Lloh5: .loh AdrpLdr Lloh4, Lloh5 .p2align 2 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h7ecc61ed0718f1d3E: +__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel7generic22objc_static_workaround: Lloh6: adrp x8, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGE Lloh7: @@ -99,7 +99,7 @@ Lloh7: .loh AdrpLdr Lloh6, Lloh7 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hf3b0aee156775a82E: +__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel11use_generic22objc_static_workaround: Lloh8: adrp x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGE Lloh9: @@ -108,7 +108,7 @@ Lloh9: .loh AdrpLdr Lloh8, Lloh9 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h66cda140112bf183E: +__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel11use_generics_22objc_static_workaround: Lloh10: adrp x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGE Lloh11: @@ -117,7 +117,7 @@ Lloh11: .loh AdrpLdr Lloh10, Lloh11 .p2align 2 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h5cc6e34851580441E: +__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: Lloh12: adrp x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGE Lloh13: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index 4eada398a..9d2584de8 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -7,7 +7,7 @@ _handle_with_sel: push {r4, r7, lr} add r7, sp, #4 mov r4, r0 - bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hf73eeb54c9e01045E + bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround mov r1, r0 mov r0, r4 pop {r4, r7, lr} @@ -20,9 +20,9 @@ _handle_alloc_init: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h362c159784365d1eE + bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround mov r5, r0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hedfa85590eaab188E + bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround mov r1, r0 mov r0, r4 bl _objc_msgSend @@ -37,23 +37,23 @@ _use_generic: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h93b6d1a0e335d084E + bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel11use_generic22objc_static_workaround mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h07bf98b6bc8a0eddE + bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel7generic22objc_static_workaround mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h6b6d6a319d503cd4E + bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel11use_generics_22objc_static_workaround mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h07bf98b6bc8a0eddE + bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel7generic22objc_static_workaround mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hb6dd0a9c129698bcE + bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel11use_generics0_22objc_static_workaround mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h07bf98b6bc8a0eddE + bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel7generic22objc_static_workaround mov r2, r0 mov r0, r4 mov r1, r5 @@ -62,7 +62,7 @@ _use_generic: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hf73eeb54c9e01045E: +__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) LPC3_0: @@ -71,7 +71,7 @@ LPC3_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h362c159784365d1eE: +__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) LPC4_0: @@ -80,7 +80,7 @@ LPC4_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hedfa85590eaab188E: +__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) LPC5_0: @@ -89,7 +89,7 @@ LPC5_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h07bf98b6bc8a0eddE: +__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel7generic22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) LPC6_0: @@ -98,7 +98,7 @@ LPC6_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h93b6d1a0e335d084E: +__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel11use_generic22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) LPC7_0: @@ -107,7 +107,7 @@ LPC7_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h6b6d6a319d503cd4E: +__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel11use_generics_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) LPC8_0: @@ -116,7 +116,7 @@ LPC8_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hb6dd0a9c129698bcE: +__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) LPC9_0: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index 6c7f5c347..467ce1600 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -7,7 +7,7 @@ _handle_with_sel: push {r4, r7, lr} add r7, sp, #4 mov r4, r0 - bl __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h7e1a10847776c45fE + bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround mov r1, r0 mov r0, r4 bl _objc_msgSend @@ -20,9 +20,9 @@ _handle_alloc_init: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd2cd5240f9e28406E + bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround mov r5, r0 - bl __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hf23cc2c03d7f3585E + bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround mov r1, r0 mov r0, r4 bl _objc_msgSend @@ -37,23 +37,23 @@ _use_generic: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h0e0f371456878cccE + bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel11use_generic22objc_static_workaround mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h64ea282b0b9e24baE + bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel7generic22objc_static_workaround mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfe689398d676ba52E + bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel11use_generics_22objc_static_workaround mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h64ea282b0b9e24baE + bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel7generic22objc_static_workaround mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc783971755a73ce6E + bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel11use_generics0_22objc_static_workaround mov r5, r0 - bl __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h64ea282b0b9e24baE + bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel7generic22objc_static_workaround mov r2, r0 mov r0, r4 mov r1, r5 @@ -62,7 +62,7 @@ _use_generic: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h7e1a10847776c45fE: +__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) LPC3_0: @@ -71,7 +71,7 @@ LPC3_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd2cd5240f9e28406E: +__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) LPC4_0: @@ -80,7 +80,7 @@ LPC4_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hf23cc2c03d7f3585E: +__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) LPC5_0: @@ -89,7 +89,7 @@ LPC5_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h64ea282b0b9e24baE: +__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel7generic22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) LPC6_0: @@ -98,7 +98,7 @@ LPC6_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17h0e0f371456878cccE: +__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel11use_generic22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) LPC7_0: @@ -107,7 +107,7 @@ LPC7_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hfe689398d676ba52E: +__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel11use_generics_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) LPC8_0: @@ -116,7 +116,7 @@ LPC8_0: .p2align 2 .code 32 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc783971755a73ce6E: +__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) LPC9_0: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index 1464ac421..bdca5905e 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -8,7 +8,7 @@ _handle_with_sel: push esi push eax mov esi, dword ptr [ebp + 8] - call __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hbb9ea5cc3c2bc673E + call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround sub esp, 8 push eax push esi @@ -26,9 +26,9 @@ _handle_alloc_init: push edi push esi mov edi, dword ptr [ebp + 8] - call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7d94dc0b9670a033E + call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround mov esi, eax - call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hbaa7a4a9b9409fa8E + call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround sub esp, 8 push eax push edi @@ -51,27 +51,27 @@ _use_generic: push edi push esi mov edi, dword ptr [ebp + 8] - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha939665a1bf8cb80E + call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel11use_generic22objc_static_workaround mov esi, eax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h9239e0c88e043694E + call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel7generic22objc_static_workaround sub esp, 4 push eax push esi push edi call _objc_msgSend add esp, 16 - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd014b6181fe46df3E + call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel11use_generics_22objc_static_workaround mov esi, eax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h9239e0c88e043694E + call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel7generic22objc_static_workaround sub esp, 4 push eax push esi push edi call _objc_msgSend add esp, 16 - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbfbcb6f3695b31d1E + call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel11use_generics0_22objc_static_workaround mov esi, eax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h9239e0c88e043694E + call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel7generic22objc_static_workaround sub esp, 4 push eax push esi @@ -84,7 +84,7 @@ _use_generic: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17hbb9ea5cc3c2bc673E: +__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: push ebp mov ebp, esp call L3$pb @@ -95,7 +95,7 @@ L3$pb: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17h7d94dc0b9670a033E: +__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: push ebp mov ebp, esp call L4$pb @@ -106,7 +106,7 @@ L4$pb: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hbaa7a4a9b9409fa8E: +__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: push ebp mov ebp, esp call L5$pb @@ -117,7 +117,7 @@ L5$pb: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h9239e0c88e043694E: +__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel7generic22objc_static_workaround: push ebp mov ebp, esp call L6$pb @@ -128,7 +128,7 @@ L6$pb: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha939665a1bf8cb80E: +__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel11use_generic22objc_static_workaround: push ebp mov ebp, esp call L7$pb @@ -139,7 +139,7 @@ L7$pb: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hd014b6181fe46df3E: +__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel11use_generics_22objc_static_workaround: push ebp mov ebp, esp call L8$pb @@ -150,7 +150,7 @@ L8$pb: ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbfbcb6f3695b31d1E: +__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: push ebp mov ebp, esp call L9$pb diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index 62ef4b531..7dad0c7f1 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -8,7 +8,7 @@ _handle_with_sel: push rbx push rax mov rbx, rdi - call __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h2820d4d77d6b733eE + call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround mov rdi, rbx mov rsi, rax add rsp, 8 @@ -24,9 +24,9 @@ _handle_alloc_init: push r14 push rbx mov rbx, rdi - call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd2eea05d9287eb6eE + call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround mov r14, rax - call __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17he4d88d821168c396E + call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround mov rdi, rbx mov rsi, rax call _objc_msgSend @@ -45,23 +45,23 @@ _use_generic: push r14 push rbx mov rbx, rdi - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc09df8c93c434797E + call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generic22objc_static_workaround mov r14, rax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h718bb262b34494f9E + call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel7generic22objc_static_workaround mov rdi, rbx mov rsi, r14 mov rdx, rax call _objc_msgSend - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha6bd7949e4e080bfE + call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generics_22objc_static_workaround mov r14, rax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h718bb262b34494f9E + call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel7generic22objc_static_workaround mov rdi, rbx mov rsi, r14 mov rdx, rax call _objc_msgSend - call __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbb9885f8e326afa5E + call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generics0_22objc_static_workaround mov r14, rax - call __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h718bb262b34494f9E + call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel7generic22objc_static_workaround mov rdi, rbx mov rsi, r14 mov rdx, rax @@ -71,7 +71,7 @@ _use_generic: jmp _objc_msgSend .p2align 4, 0x90 -__ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h2820d4d77d6b733eE: +__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286] @@ -79,7 +79,7 @@ __ZN24test_msg_send_static_sel15handle_with_sel22objc_static_workaround17h2820d4 ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd2eea05d9287eb6eE: +__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9] @@ -87,7 +87,7 @@ __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17hd2ee ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17he4d88d821168c396E: +__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9] @@ -95,7 +95,7 @@ __ZN24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround17he4d8 ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel7generic22objc_static_workaround17h718bb262b34494f9E: +__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel7generic22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32] @@ -103,7 +103,7 @@ __ZN24test_msg_send_static_sel7generic22objc_static_workaround17h718bb262b34494f ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc09df8c93c434797E: +__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generic22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4] @@ -111,7 +111,7 @@ __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hc09df8c93c ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha6bd7949e4e080bfE: +__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generics_22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1] @@ -119,7 +119,7 @@ __ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17ha6bd7949e4 ret .p2align 4, 0x90 -__ZN24test_msg_send_static_sel11use_generic22objc_static_workaround17hbb9885f8e326afa5E: +__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720] diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index 54db4c1c8..4f8f1ad66 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -2,12 +2,12 @@ .globl _get_sel .p2align 2 _get_sel: - b __ZN15test_static_sel7get_sel22objc_static_workaround17h6d16eabd0a9b7636E + b __RNvNvCsjZOyJ1jjoek_15test_static_sel7get_sel22objc_static_workaround .globl _get_same_sel .p2align 2 _get_same_sel: - b __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9f4b0a61e0bd3ff7E + b __RNvNvCsjZOyJ1jjoek_15test_static_sel12get_same_sel22objc_static_workaround .globl _get_common_twice .p2align 2 @@ -15,9 +15,9 @@ _get_common_twice: stp x20, x19, [sp, #-32]! stp x29, x30, [sp, #16] add x29, sp, #16 - bl __ZN15test_static_sel16get_common_twice22objc_static_workaround17h3dde674d6aeaabc2E + bl __RNvNvCsjZOyJ1jjoek_15test_static_sel16get_common_twice22objc_static_workaround mov x19, x0 - bl __ZN15test_static_sel16get_common_twice22objc_static_workaround17hfda1aff90e28a5d8E + bl __RNvNvCsjZOyJ1jjoek_15test_static_sel16get_common_twices_22objc_static_workaround mov x1, x0 mov x0, x19 ldp x29, x30, [sp, #16] @@ -27,12 +27,12 @@ _get_common_twice: .globl _get_different_sel .p2align 2 _get_different_sel: - b __ZN15test_static_sel17get_different_sel22objc_static_workaround17h3bdbe70cb5664ac6E + b __RNvNvCsjZOyJ1jjoek_15test_static_sel17get_different_sel22objc_static_workaround .globl _unused_sel .p2align 2 _unused_sel: - b __ZN15test_static_sel10unused_sel22objc_static_workaround17hd1b4fbf65200f929E + b __RNvNvCsjZOyJ1jjoek_15test_static_sel10unused_sel22objc_static_workaround .globl _use_fns .p2align 2 @@ -42,13 +42,13 @@ _use_fns: stp x29, x30, [sp, #32] add x29, sp, #32 mov x19, x8 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h6d16eabd0a9b7636E + bl __RNvNvCsjZOyJ1jjoek_15test_static_sel7get_sel22objc_static_workaround mov x20, x0 - bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h9f4b0a61e0bd3ff7E + bl __RNvNvCsjZOyJ1jjoek_15test_static_sel12get_same_sel22objc_static_workaround mov x21, x0 - bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h3bdbe70cb5664ac6E + bl __RNvNvCsjZOyJ1jjoek_15test_static_sel17get_different_sel22objc_static_workaround mov x22, x0 - bl __ZN15test_static_sel7use_fns22objc_static_workaround17hf1526c460169e340E + bl __RNvNvCsjZOyJ1jjoek_15test_static_sel7use_fns22objc_static_workaround stp x20, x21, [x19] stp x22, x0, [x19, #16] ldp x29, x30, [sp, #32] @@ -63,9 +63,9 @@ _use_same_twice: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x8 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h6d16eabd0a9b7636E + bl __RNvNvCsjZOyJ1jjoek_15test_static_sel7get_sel22objc_static_workaround mov x20, x0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h6d16eabd0a9b7636E + bl __RNvNvCsjZOyJ1jjoek_15test_static_sel7get_sel22objc_static_workaround stp x20, x0, [x19] ldp x29, x30, [sp, #16] ldp x20, x19, [sp], #32 @@ -80,7 +80,7 @@ _use_in_loop: cbz x0, LBB7_3 mov x19, x0 LBB7_2: - bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17h8e983a5db68150d4E + bl __RNvNvCsjZOyJ1jjoek_15test_static_sel11use_in_loop22objc_static_workaround subs x19, x19, #1 b.ne LBB7_2 LBB7_3: @@ -89,7 +89,7 @@ LBB7_3: ret .p2align 2 -__ZN15test_static_sel7get_sel22objc_static_workaround17h6d16eabd0a9b7636E: +__RNvNvCsjZOyJ1jjoek_15test_static_sel7get_sel22objc_static_workaround: Lloh0: adrp x8, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGE Lloh1: @@ -98,7 +98,7 @@ Lloh1: .loh AdrpLdr Lloh0, Lloh1 .p2align 2 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17h9f4b0a61e0bd3ff7E: +__RNvNvCsjZOyJ1jjoek_15test_static_sel12get_same_sel22objc_static_workaround: Lloh2: adrp x8, L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35@PAGE Lloh3: @@ -107,7 +107,7 @@ Lloh3: .loh AdrpLdr Lloh2, Lloh3 .p2align 2 -__ZN15test_static_sel16get_common_twice22objc_static_workaround17h3dde674d6aeaabc2E: +__RNvNvCsjZOyJ1jjoek_15test_static_sel16get_common_twice22objc_static_workaround: Lloh4: adrp x8, L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77@PAGE Lloh5: @@ -116,7 +116,7 @@ Lloh5: .loh AdrpLdr Lloh4, Lloh5 .p2align 2 -__ZN15test_static_sel16get_common_twice22objc_static_workaround17hfda1aff90e28a5d8E: +__RNvNvCsjZOyJ1jjoek_15test_static_sel16get_common_twices_22objc_static_workaround: Lloh6: adrp x8, L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7@PAGE Lloh7: @@ -125,7 +125,7 @@ Lloh7: .loh AdrpLdr Lloh6, Lloh7 .p2align 2 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17h3bdbe70cb5664ac6E: +__RNvNvCsjZOyJ1jjoek_15test_static_sel17get_different_sel22objc_static_workaround: Lloh8: adrp x8, L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0@PAGE Lloh9: @@ -134,7 +134,7 @@ Lloh9: .loh AdrpLdr Lloh8, Lloh9 .p2align 2 -__ZN15test_static_sel10unused_sel22objc_static_workaround17hd1b4fbf65200f929E: +__RNvNvCsjZOyJ1jjoek_15test_static_sel10unused_sel22objc_static_workaround: Lloh10: adrp x8, L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25@PAGE Lloh11: @@ -143,7 +143,7 @@ Lloh11: .loh AdrpLdr Lloh10, Lloh11 .p2align 2 -__ZN15test_static_sel7use_fns22objc_static_workaround17hf1526c460169e340E: +__RNvNvCsjZOyJ1jjoek_15test_static_sel7use_fns22objc_static_workaround: Lloh12: adrp x8, L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99@PAGE Lloh13: @@ -152,7 +152,7 @@ Lloh13: .loh AdrpLdr Lloh12, Lloh13 .p2align 2 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17h8e983a5db68150d4E: +__RNvNvCsjZOyJ1jjoek_15test_static_sel11use_in_loop22objc_static_workaround: Lloh14: adrp x8, L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b@PAGE Lloh15: diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index 1dbea2c07..72d01b8b7 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -4,13 +4,13 @@ .p2align 2 .code 32 _get_sel: - b __ZN15test_static_sel7get_sel22objc_static_workaround17hb7aa4e12e41be685E + b __RNvNvCsiyxIhVsrep_15test_static_sel7get_sel22objc_static_workaround .globl _get_same_sel .p2align 2 .code 32 _get_same_sel: - b __ZN15test_static_sel12get_same_sel22objc_static_workaround17h22f46d9f912f58c6E + b __RNvNvCsiyxIhVsrep_15test_static_sel12get_same_sel22objc_static_workaround .globl _get_common_twice .p2align 2 @@ -18,9 +18,9 @@ _get_same_sel: _get_common_twice: push {r4, r7, lr} add r7, sp, #4 - bl __ZN15test_static_sel16get_common_twice22objc_static_workaround17h8f1949a79c1e5d95E + bl __RNvNvCsiyxIhVsrep_15test_static_sel16get_common_twice22objc_static_workaround mov r4, r0 - bl __ZN15test_static_sel16get_common_twice22objc_static_workaround17hd683f76442823299E + bl __RNvNvCsiyxIhVsrep_15test_static_sel16get_common_twices_22objc_static_workaround mov r1, r0 mov r0, r4 pop {r4, r7, pc} @@ -29,13 +29,13 @@ _get_common_twice: .p2align 2 .code 32 _get_different_sel: - b __ZN15test_static_sel17get_different_sel22objc_static_workaround17h68050b9c775fc029E + b __RNvNvCsiyxIhVsrep_15test_static_sel17get_different_sel22objc_static_workaround .globl _unused_sel .p2align 2 .code 32 _unused_sel: - b __ZN15test_static_sel10unused_sel22objc_static_workaround17hfe788c144bbbc6f0E + b __RNvNvCsiyxIhVsrep_15test_static_sel10unused_sel22objc_static_workaround .globl _use_fns .p2align 2 @@ -45,13 +45,13 @@ _use_fns: add r7, sp, #12 push {r8} mov r4, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hb7aa4e12e41be685E + bl __RNvNvCsiyxIhVsrep_15test_static_sel7get_sel22objc_static_workaround mov r8, r0 - bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17h22f46d9f912f58c6E + bl __RNvNvCsiyxIhVsrep_15test_static_sel12get_same_sel22objc_static_workaround mov r6, r0 - bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17h68050b9c775fc029E + bl __RNvNvCsiyxIhVsrep_15test_static_sel17get_different_sel22objc_static_workaround mov r5, r0 - bl __ZN15test_static_sel7use_fns22objc_static_workaround17hd2fa488db95949bdE + bl __RNvNvCsiyxIhVsrep_15test_static_sel7use_fns22objc_static_workaround str r8, [r4] str r6, [r4, #4] str r5, [r4, #8] @@ -67,9 +67,9 @@ _use_same_twice: add r7, sp, #4 push {r8} mov r4, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hb7aa4e12e41be685E + bl __RNvNvCsiyxIhVsrep_15test_static_sel7get_sel22objc_static_workaround mov r8, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17hb7aa4e12e41be685E + bl __RNvNvCsiyxIhVsrep_15test_static_sel7get_sel22objc_static_workaround mov r9, r0 strd r8, r9, [r4] pop {r8} @@ -86,14 +86,14 @@ _use_in_loop: LBB7_1: mov r4, r0 LBB7_2: - bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17hf07bd68ba643621aE + bl __RNvNvCsiyxIhVsrep_15test_static_sel11use_in_loop22objc_static_workaround subs r4, r4, #1 bne LBB7_2 pop {r4, r7, pc} .p2align 2 .code 32 -__ZN15test_static_sel7get_sel22objc_static_workaround17hb7aa4e12e41be685E: +__RNvNvCsiyxIhVsrep_15test_static_sel7get_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) LPC8_0: @@ -102,7 +102,7 @@ LPC8_0: .p2align 2 .code 32 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17h22f46d9f912f58c6E: +__RNvNvCsiyxIhVsrep_15test_static_sel12get_same_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) LPC9_0: @@ -111,7 +111,7 @@ LPC9_0: .p2align 2 .code 32 -__ZN15test_static_sel16get_common_twice22objc_static_workaround17h8f1949a79c1e5d95E: +__RNvNvCsiyxIhVsrep_15test_static_sel16get_common_twice22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) LPC10_0: @@ -120,7 +120,7 @@ LPC10_0: .p2align 2 .code 32 -__ZN15test_static_sel16get_common_twice22objc_static_workaround17hd683f76442823299E: +__RNvNvCsiyxIhVsrep_15test_static_sel16get_common_twices_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) LPC11_0: @@ -129,7 +129,7 @@ LPC11_0: .p2align 2 .code 32 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17h68050b9c775fc029E: +__RNvNvCsiyxIhVsrep_15test_static_sel17get_different_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) LPC12_0: @@ -138,7 +138,7 @@ LPC12_0: .p2align 2 .code 32 -__ZN15test_static_sel10unused_sel22objc_static_workaround17hfe788c144bbbc6f0E: +__RNvNvCsiyxIhVsrep_15test_static_sel10unused_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) LPC13_0: @@ -147,7 +147,7 @@ LPC13_0: .p2align 2 .code 32 -__ZN15test_static_sel7use_fns22objc_static_workaround17hd2fa488db95949bdE: +__RNvNvCsiyxIhVsrep_15test_static_sel7use_fns22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) LPC14_0: @@ -156,7 +156,7 @@ LPC14_0: .p2align 2 .code 32 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17hf07bd68ba643621aE: +__RNvNvCsiyxIhVsrep_15test_static_sel11use_in_loop22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) LPC15_0: diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index 44d9d6d29..f71892d1d 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -6,7 +6,7 @@ _get_sel: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h648950fc43b2702aE + bl __RNvNvCs9WJZU86XVxM_15test_static_sel7get_sel22objc_static_workaround pop {r7, pc} .globl _get_same_sel @@ -15,7 +15,7 @@ _get_sel: _get_same_sel: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17hec9e77b171bc9113E + bl __RNvNvCs9WJZU86XVxM_15test_static_sel12get_same_sel22objc_static_workaround pop {r7, pc} .globl _get_common_twice @@ -24,9 +24,9 @@ _get_same_sel: _get_common_twice: push {r4, r7, lr} add r7, sp, #4 - bl __ZN15test_static_sel16get_common_twice22objc_static_workaround17h3db0895ffade7f9dE + bl __RNvNvCs9WJZU86XVxM_15test_static_sel16get_common_twice22objc_static_workaround mov r4, r0 - bl __ZN15test_static_sel16get_common_twice22objc_static_workaround17h71fa1210656cf2c8E + bl __RNvNvCs9WJZU86XVxM_15test_static_sel16get_common_twices_22objc_static_workaround mov r1, r0 mov r0, r4 pop {r4, r7, pc} @@ -37,7 +37,7 @@ _get_common_twice: _get_different_sel: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17hfae2030587df69c1E + bl __RNvNvCs9WJZU86XVxM_15test_static_sel17get_different_sel22objc_static_workaround pop {r7, pc} .globl _unused_sel @@ -46,7 +46,7 @@ _get_different_sel: _unused_sel: push {r7, lr} mov r7, sp - bl __ZN15test_static_sel10unused_sel22objc_static_workaround17hf7c0f8731f9903e4E + bl __RNvNvCs9WJZU86XVxM_15test_static_sel10unused_sel22objc_static_workaround pop {r7, pc} .globl _use_fns @@ -57,13 +57,13 @@ _use_fns: add r7, sp, #12 push {r8} mov r4, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h648950fc43b2702aE + bl __RNvNvCs9WJZU86XVxM_15test_static_sel7get_sel22objc_static_workaround mov r8, r0 - bl __ZN15test_static_sel12get_same_sel22objc_static_workaround17hec9e77b171bc9113E + bl __RNvNvCs9WJZU86XVxM_15test_static_sel12get_same_sel22objc_static_workaround mov r6, r0 - bl __ZN15test_static_sel17get_different_sel22objc_static_workaround17hfae2030587df69c1E + bl __RNvNvCs9WJZU86XVxM_15test_static_sel17get_different_sel22objc_static_workaround mov r5, r0 - bl __ZN15test_static_sel7use_fns22objc_static_workaround17h573bdafb7316c88aE + bl __RNvNvCs9WJZU86XVxM_15test_static_sel7use_fns22objc_static_workaround str r8, [r4] str r6, [r4, #4] str r5, [r4, #8] @@ -79,9 +79,9 @@ _use_same_twice: add r7, sp, #4 push {r8} mov r4, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h648950fc43b2702aE + bl __RNvNvCs9WJZU86XVxM_15test_static_sel7get_sel22objc_static_workaround mov r8, r0 - bl __ZN15test_static_sel7get_sel22objc_static_workaround17h648950fc43b2702aE + bl __RNvNvCs9WJZU86XVxM_15test_static_sel7get_sel22objc_static_workaround mov r9, r0 strd r8, r9, [r4] pop {r8} @@ -98,14 +98,14 @@ _use_in_loop: LBB7_1: mov r4, r0 LBB7_2: - bl __ZN15test_static_sel11use_in_loop22objc_static_workaround17hbed100d6afc97340E + bl __RNvNvCs9WJZU86XVxM_15test_static_sel11use_in_loop22objc_static_workaround subs r4, r4, #1 bne LBB7_2 pop {r4, r7, pc} .p2align 2 .code 32 -__ZN15test_static_sel7get_sel22objc_static_workaround17h648950fc43b2702aE: +__RNvNvCs9WJZU86XVxM_15test_static_sel7get_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) LPC8_0: @@ -114,7 +114,7 @@ LPC8_0: .p2align 2 .code 32 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17hec9e77b171bc9113E: +__RNvNvCs9WJZU86XVxM_15test_static_sel12get_same_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) LPC9_0: @@ -123,7 +123,7 @@ LPC9_0: .p2align 2 .code 32 -__ZN15test_static_sel16get_common_twice22objc_static_workaround17h3db0895ffade7f9dE: +__RNvNvCs9WJZU86XVxM_15test_static_sel16get_common_twice22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) LPC10_0: @@ -132,7 +132,7 @@ LPC10_0: .p2align 2 .code 32 -__ZN15test_static_sel16get_common_twice22objc_static_workaround17h71fa1210656cf2c8E: +__RNvNvCs9WJZU86XVxM_15test_static_sel16get_common_twices_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) LPC11_0: @@ -141,7 +141,7 @@ LPC11_0: .p2align 2 .code 32 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17hfae2030587df69c1E: +__RNvNvCs9WJZU86XVxM_15test_static_sel17get_different_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) LPC12_0: @@ -150,7 +150,7 @@ LPC12_0: .p2align 2 .code 32 -__ZN15test_static_sel10unused_sel22objc_static_workaround17hf7c0f8731f9903e4E: +__RNvNvCs9WJZU86XVxM_15test_static_sel10unused_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) LPC13_0: @@ -159,7 +159,7 @@ LPC13_0: .p2align 2 .code 32 -__ZN15test_static_sel7use_fns22objc_static_workaround17h573bdafb7316c88aE: +__RNvNvCs9WJZU86XVxM_15test_static_sel7use_fns22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) LPC14_0: @@ -168,7 +168,7 @@ LPC14_0: .p2align 2 .code 32 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17hbed100d6afc97340E: +__RNvNvCs9WJZU86XVxM_15test_static_sel11use_in_loop22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) LPC15_0: diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index 7bea6da99..558986c03 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -6,7 +6,7 @@ _get_sel: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel7get_sel22objc_static_workaround17hd939b5e1a4b728d2E + jmp __RNvNvCsiw6xRX1pmbi_15test_static_sel7get_sel22objc_static_workaround .globl _get_same_sel .p2align 4, 0x90 @@ -14,7 +14,7 @@ _get_same_sel: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel12get_same_sel22objc_static_workaround17h59b150f8f213a200E + jmp __RNvNvCsiw6xRX1pmbi_15test_static_sel12get_same_sel22objc_static_workaround .globl _get_common_twice .p2align 4, 0x90 @@ -23,9 +23,9 @@ _get_common_twice: mov ebp, esp push esi push eax - call __ZN15test_static_sel16get_common_twice22objc_static_workaround17hc205f5b8bb17c2cdE + call __RNvNvCsiw6xRX1pmbi_15test_static_sel16get_common_twice22objc_static_workaround mov esi, eax - call __ZN15test_static_sel16get_common_twice22objc_static_workaround17h575bc839f495598cE + call __RNvNvCsiw6xRX1pmbi_15test_static_sel16get_common_twices_22objc_static_workaround mov edx, eax mov eax, esi add esp, 4 @@ -39,7 +39,7 @@ _get_different_sel: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel17get_different_sel22objc_static_workaround17he0a5d2d2571f8bcaE + jmp __RNvNvCsiw6xRX1pmbi_15test_static_sel17get_different_sel22objc_static_workaround .globl _unused_sel .p2align 4, 0x90 @@ -47,7 +47,7 @@ _unused_sel: push ebp mov ebp, esp pop ebp - jmp __ZN15test_static_sel10unused_sel22objc_static_workaround17h55db1a6705c511abE + jmp __RNvNvCsiw6xRX1pmbi_15test_static_sel10unused_sel22objc_static_workaround .globl _use_fns .p2align 4, 0x90 @@ -59,13 +59,13 @@ _use_fns: push esi sub esp, 12 mov esi, dword ptr [ebp + 8] - call __ZN15test_static_sel7get_sel22objc_static_workaround17hd939b5e1a4b728d2E + call __RNvNvCsiw6xRX1pmbi_15test_static_sel7get_sel22objc_static_workaround mov dword ptr [ebp - 16], eax - call __ZN15test_static_sel12get_same_sel22objc_static_workaround17h59b150f8f213a200E + call __RNvNvCsiw6xRX1pmbi_15test_static_sel12get_same_sel22objc_static_workaround mov ebx, eax - call __ZN15test_static_sel17get_different_sel22objc_static_workaround17he0a5d2d2571f8bcaE + call __RNvNvCsiw6xRX1pmbi_15test_static_sel17get_different_sel22objc_static_workaround mov edi, eax - call __ZN15test_static_sel7use_fns22objc_static_workaround17h200fe7aa11018485E + call __RNvNvCsiw6xRX1pmbi_15test_static_sel7use_fns22objc_static_workaround mov ecx, dword ptr [ebp - 16] mov dword ptr [esi], ecx mov dword ptr [esi + 4], ebx @@ -87,9 +87,9 @@ _use_same_twice: push edi push esi mov esi, dword ptr [ebp + 8] - call __ZN15test_static_sel7get_sel22objc_static_workaround17hd939b5e1a4b728d2E + call __RNvNvCsiw6xRX1pmbi_15test_static_sel7get_sel22objc_static_workaround mov edi, eax - call __ZN15test_static_sel7get_sel22objc_static_workaround17hd939b5e1a4b728d2E + call __RNvNvCsiw6xRX1pmbi_15test_static_sel7get_sel22objc_static_workaround mov dword ptr [esi], edi mov dword ptr [esi + 4], eax mov eax, esi @@ -110,7 +110,7 @@ _use_in_loop: je LBB7_2 .p2align 4, 0x90 LBB7_1: - call __ZN15test_static_sel11use_in_loop22objc_static_workaround17hc9e62eb404266e73E + call __RNvNvCsiw6xRX1pmbi_15test_static_sel11use_in_loop22objc_static_workaround dec esi jne LBB7_1 LBB7_2: @@ -120,7 +120,7 @@ LBB7_2: ret .p2align 4, 0x90 -__ZN15test_static_sel7get_sel22objc_static_workaround17hd939b5e1a4b728d2E: +__RNvNvCsiw6xRX1pmbi_15test_static_sel7get_sel22objc_static_workaround: push ebp mov ebp, esp call L8$pb @@ -131,7 +131,7 @@ L8$pb: ret .p2align 4, 0x90 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17h59b150f8f213a200E: +__RNvNvCsiw6xRX1pmbi_15test_static_sel12get_same_sel22objc_static_workaround: push ebp mov ebp, esp call L9$pb @@ -142,7 +142,7 @@ L9$pb: ret .p2align 4, 0x90 -__ZN15test_static_sel16get_common_twice22objc_static_workaround17hc205f5b8bb17c2cdE: +__RNvNvCsiw6xRX1pmbi_15test_static_sel16get_common_twice22objc_static_workaround: push ebp mov ebp, esp call L10$pb @@ -153,7 +153,7 @@ L10$pb: ret .p2align 4, 0x90 -__ZN15test_static_sel16get_common_twice22objc_static_workaround17h575bc839f495598cE: +__RNvNvCsiw6xRX1pmbi_15test_static_sel16get_common_twices_22objc_static_workaround: push ebp mov ebp, esp call L11$pb @@ -164,7 +164,7 @@ L11$pb: ret .p2align 4, 0x90 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17he0a5d2d2571f8bcaE: +__RNvNvCsiw6xRX1pmbi_15test_static_sel17get_different_sel22objc_static_workaround: push ebp mov ebp, esp call L12$pb @@ -175,7 +175,7 @@ L12$pb: ret .p2align 4, 0x90 -__ZN15test_static_sel10unused_sel22objc_static_workaround17h55db1a6705c511abE: +__RNvNvCsiw6xRX1pmbi_15test_static_sel10unused_sel22objc_static_workaround: push ebp mov ebp, esp call L13$pb @@ -186,7 +186,7 @@ L13$pb: ret .p2align 4, 0x90 -__ZN15test_static_sel7use_fns22objc_static_workaround17h200fe7aa11018485E: +__RNvNvCsiw6xRX1pmbi_15test_static_sel7use_fns22objc_static_workaround: push ebp mov ebp, esp call L14$pb @@ -197,7 +197,7 @@ L14$pb: ret .p2align 4, 0x90 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17hc9e62eb404266e73E: +__RNvNvCsiw6xRX1pmbi_15test_static_sel11use_in_loop22objc_static_workaround: push ebp mov ebp, esp call L15$pb diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index 0e28676d6..53e264919 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -6,7 +6,7 @@ _get_sel: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel7get_sel22objc_static_workaround17hc12703947ea497bbE + jmp __RNvNvCsfPBiXXRyxlm_15test_static_sel7get_sel22objc_static_workaround .globl _get_same_sel .p2align 4, 0x90 @@ -14,7 +14,7 @@ _get_same_sel: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel12get_same_sel22objc_static_workaround17hca258d69d3e23d5eE + jmp __RNvNvCsfPBiXXRyxlm_15test_static_sel12get_same_sel22objc_static_workaround .globl _get_common_twice .p2align 4, 0x90 @@ -23,9 +23,9 @@ _get_common_twice: mov rbp, rsp push rbx push rax - call __ZN15test_static_sel16get_common_twice22objc_static_workaround17h8dadd4b63e132a5cE + call __RNvNvCsfPBiXXRyxlm_15test_static_sel16get_common_twice22objc_static_workaround mov rbx, rax - call __ZN15test_static_sel16get_common_twice22objc_static_workaround17h23fd0bdb743e9e9cE + call __RNvNvCsfPBiXXRyxlm_15test_static_sel16get_common_twices_22objc_static_workaround mov rdx, rax mov rax, rbx add rsp, 8 @@ -39,7 +39,7 @@ _get_different_sel: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel17get_different_sel22objc_static_workaround17h0647461fa2fb8e0aE + jmp __RNvNvCsfPBiXXRyxlm_15test_static_sel17get_different_sel22objc_static_workaround .globl _unused_sel .p2align 4, 0x90 @@ -47,7 +47,7 @@ _unused_sel: push rbp mov rbp, rsp pop rbp - jmp __ZN15test_static_sel10unused_sel22objc_static_workaround17h89dff92e2e97ddb8E + jmp __RNvNvCsfPBiXXRyxlm_15test_static_sel10unused_sel22objc_static_workaround .globl _use_fns .p2align 4, 0x90 @@ -59,13 +59,13 @@ _use_fns: push r12 push rbx mov rbx, rdi - call __ZN15test_static_sel7get_sel22objc_static_workaround17hc12703947ea497bbE + call __RNvNvCsfPBiXXRyxlm_15test_static_sel7get_sel22objc_static_workaround mov r14, rax - call __ZN15test_static_sel12get_same_sel22objc_static_workaround17hca258d69d3e23d5eE + call __RNvNvCsfPBiXXRyxlm_15test_static_sel12get_same_sel22objc_static_workaround mov r15, rax - call __ZN15test_static_sel17get_different_sel22objc_static_workaround17h0647461fa2fb8e0aE + call __RNvNvCsfPBiXXRyxlm_15test_static_sel17get_different_sel22objc_static_workaround mov r12, rax - call __ZN15test_static_sel7use_fns22objc_static_workaround17hc7ea4a687b01e5f9E + call __RNvNvCsfPBiXXRyxlm_15test_static_sel7use_fns22objc_static_workaround mov qword ptr [rbx], r14 mov qword ptr [rbx + 8], r15 mov qword ptr [rbx + 16], r12 @@ -86,9 +86,9 @@ _use_same_twice: push r14 push rbx mov rbx, rdi - call __ZN15test_static_sel7get_sel22objc_static_workaround17hc12703947ea497bbE + call __RNvNvCsfPBiXXRyxlm_15test_static_sel7get_sel22objc_static_workaround mov r14, rax - call __ZN15test_static_sel7get_sel22objc_static_workaround17hc12703947ea497bbE + call __RNvNvCsfPBiXXRyxlm_15test_static_sel7get_sel22objc_static_workaround mov qword ptr [rbx], r14 mov qword ptr [rbx + 8], rax mov rax, rbx @@ -109,7 +109,7 @@ _use_in_loop: mov rbx, rdi .p2align 4, 0x90 LBB7_2: - call __ZN15test_static_sel11use_in_loop22objc_static_workaround17h7c93fa32030b5498E + call __RNvNvCsfPBiXXRyxlm_15test_static_sel11use_in_loop22objc_static_workaround dec rbx jne LBB7_2 LBB7_3: @@ -119,7 +119,7 @@ LBB7_3: ret .p2align 4, 0x90 -__ZN15test_static_sel7get_sel22objc_static_workaround17hc12703947ea497bbE: +__RNvNvCsfPBiXXRyxlm_15test_static_sel7get_sel22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9] @@ -127,7 +127,7 @@ __ZN15test_static_sel7get_sel22objc_static_workaround17hc12703947ea497bbE: ret .p2align 4, 0x90 -__ZN15test_static_sel12get_same_sel22objc_static_workaround17hca258d69d3e23d5eE: +__RNvNvCsfPBiXXRyxlm_15test_static_sel12get_same_sel22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35] @@ -135,7 +135,7 @@ __ZN15test_static_sel12get_same_sel22objc_static_workaround17hca258d69d3e23d5eE: ret .p2align 4, 0x90 -__ZN15test_static_sel16get_common_twice22objc_static_workaround17h8dadd4b63e132a5cE: +__RNvNvCsfPBiXXRyxlm_15test_static_sel16get_common_twice22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77] @@ -143,7 +143,7 @@ __ZN15test_static_sel16get_common_twice22objc_static_workaround17h8dadd4b63e132a ret .p2align 4, 0x90 -__ZN15test_static_sel16get_common_twice22objc_static_workaround17h23fd0bdb743e9e9cE: +__RNvNvCsfPBiXXRyxlm_15test_static_sel16get_common_twices_22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7] @@ -151,7 +151,7 @@ __ZN15test_static_sel16get_common_twice22objc_static_workaround17h23fd0bdb743e9e ret .p2align 4, 0x90 -__ZN15test_static_sel17get_different_sel22objc_static_workaround17h0647461fa2fb8e0aE: +__RNvNvCsfPBiXXRyxlm_15test_static_sel17get_different_sel22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0] @@ -159,7 +159,7 @@ __ZN15test_static_sel17get_different_sel22objc_static_workaround17h0647461fa2fb8 ret .p2align 4, 0x90 -__ZN15test_static_sel10unused_sel22objc_static_workaround17h89dff92e2e97ddb8E: +__RNvNvCsfPBiXXRyxlm_15test_static_sel10unused_sel22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25] @@ -167,7 +167,7 @@ __ZN15test_static_sel10unused_sel22objc_static_workaround17h89dff92e2e97ddb8E: ret .p2align 4, 0x90 -__ZN15test_static_sel7use_fns22objc_static_workaround17hc7ea4a687b01e5f9E: +__RNvNvCsfPBiXXRyxlm_15test_static_sel7use_fns22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99] @@ -175,7 +175,7 @@ __ZN15test_static_sel7use_fns22objc_static_workaround17hc7ea4a687b01e5f9E: ret .p2align 4, 0x90 -__ZN15test_static_sel11use_in_loop22objc_static_workaround17h7c93fa32030b5498E: +__RNvNvCsfPBiXXRyxlm_15test_static_sel11use_in_loop22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b] diff --git a/tests/src/bin/test_assembly.rs b/tests/src/bin/test_assembly.rs index d5c886a71..016ed0bd9 100644 --- a/tests/src/bin/test_assembly.rs +++ b/tests/src/bin/test_assembly.rs @@ -90,6 +90,7 @@ fn main() { .arg("--emit=asm") // .arg("-Zplt=no") .arg("-Cllvm-args=--x86-asm-syntax=intel") + .arg("-Csymbol-mangling-version=v0") .stdout(Stdio::piped()) .stderr(Stdio::inherit()) .output() From e1735b0b9ca8b8ca2c64c18bef5364b597623a0e Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Tue, 21 Jun 2022 18:46:24 +0200 Subject: [PATCH 17/30] Better document sel! macro --- objc2/src/macros.rs | 83 +++++++++++++++++++++++++++++++++++++++++--- objc2/src/runtime.rs | 6 ++++ 2 files changed, 85 insertions(+), 4 deletions(-) diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index ac72b5f53..f62111027 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -29,18 +29,93 @@ macro_rules! class { }}; } -/// Registers a selector with the Objective-C runtime. +/// Register a selector with the Objective-C runtime. /// -/// Returns a [`Sel`]. +/// Returns the [`Sel`] corresponding to the specified selector. /// /// [`Sel`]: crate::runtime::Sel /// +/// +/// # Specification +/// +/// This has similar syntax and functionality as the `@selector` directive in +/// Objective-C. This calls [`Sel::register`] internally. The result is cached +/// for efficiency. +/// +/// If the `"unstable-static-sel"` feature is enabled, this will emit special +/// statics that will be replaced by the dynamic linker (dyld) when the +/// program starts up - in exactly the same manner as Objective-C does. This +/// should be significantly faster (and allow better native debugging), +/// however due to the Rust compilation model, and since we don't have +/// low-level control over it, it is currently unlikely that this will work +/// correctly in all cases. See the source code and [rust-lang/rust#53929] for +/// more info. +/// +/// Non-ascii identifiers are ill-tested, if supported at all. +/// +/// [`Sel::register`]: crate::runtime::Sel::register +/// [rust-lang/rust#53929]: https://github.com/rust-lang/rust/issues/53929 +/// +/// /// # Examples /// +/// Get a few different selectors: +/// +/// ```rust +/// use objc2::sel; +/// let sel = sel!(alloc); +/// let sel = sel!(description); +/// let sel = sel!(_privateMethod); +/// let sel = sel!(storyboardWithName:bundle:); +/// let sel = sel!( +/// otherEventWithType: +/// location: +/// modifierFlags: +/// timestamp: +/// windowNumber: +/// context: +/// subtype: +/// data1: +/// data2: +/// ); +/// ``` +/// +/// Whitespace is ignored: +/// /// ``` /// # use objc2::sel; -/// let sel = sel!(description); -/// let sel = sel!(setObject:forKey:); +/// let sel1 = sel!(setObject:forKey:); +/// let sel2 = sel!( setObject : +/// +/// forKey : ); +/// assert_eq!(sel1, sel2); +/// ``` +/// +/// Invalid selector: +/// +/// ```compile_fail +/// # use objc2::sel; +/// let sel = sel!(aSelector:withoutTrailingColon); +/// ``` +/// +/// Unsupported usage that you may run into when using macros - fails to +/// compile when the `"unstable-static-sel"` feature is enabled. +/// +/// Instead, define a wrapper function that retrieves the selector. +/// +#[cfg_attr(not(feature = "unstable-static-sel"), doc = "```no_run")] +#[cfg_attr(feature = "unstable-static-sel", doc = "```compile_fail")] +/// use objc2::sel; +/// macro_rules! x { +/// ($x:ident) => { +/// // One of these is fine +/// sel!($x); +/// // But using the identifier again in the same way is not! +/// sel!($x); +/// }; +/// } +/// // Identifier `abc` +/// x!(abc); /// ``` #[macro_export] macro_rules! sel { diff --git a/objc2/src/runtime.rs b/objc2/src/runtime.rs index 52c51330b..87cc2f960 100644 --- a/objc2/src/runtime.rs +++ b/objc2/src/runtime.rs @@ -33,6 +33,12 @@ pub const YES: ffi::BOOL = ffi::YES; pub const NO: ffi::BOOL = ffi::NO; /// A type that represents a method selector. +/// +/// The main reason the Objective-C runtime uses a custom types for selectors +/// is to support efficient comparison - a selector is effectively just an +/// [interned string], so this makes that very easy! +/// +/// [interned string]: https://en.wikipedia.org/wiki/String_interning #[repr(transparent)] // ffi::sel_isEqual is just pointer comparison, so just generate PartialEq #[derive(Copy, Clone, PartialEq, Eq, Hash)] From 3122c6c7fbf3e8ed4410788f0e1bd2eb0fafc23f Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Tue, 21 Jun 2022 23:44:56 +0200 Subject: [PATCH 18/30] Move the statics out of the function This has no effect on the behavior, so moving them out makes this explicit. --- objc2/src/macros.rs | 72 ++++++++++--------- .../expected/apple-aarch64.s | 32 ++++----- .../expected/apple-armv7.s | 32 ++++----- .../expected/apple-armv7s.s | 32 ++++----- .../expected/apple-x86.s | 32 ++++----- .../expected/apple-x86_64.s | 32 ++++----- .../test_static_sel/expected/apple-aarch64.s | 42 +++++------ .../test_static_sel/expected/apple-armv7.s | 42 +++++------ .../test_static_sel/expected/apple-armv7s.s | 42 +++++------ .../test_static_sel/expected/apple-x86.s | 42 +++++------ .../test_static_sel/expected/apple-x86_64.s | 42 +++++------ 11 files changed, 223 insertions(+), 219 deletions(-) diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index f62111027..7ca24b3dd 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -143,44 +143,48 @@ macro_rules! __sel_inner { #[cfg(feature = "unstable-static-sel")] macro_rules! __sel_inner { ($data:ident, $($idents:ident)+) => {{ - // HACK: Wrap the statics in a non-generic, `#[inline(never)]` - // function to "coerce" the compiler to group all of them into the - // same codegen unit to avoid link errors - #[inline(never)] - fn objc_static_workaround() -> $crate::runtime::Sel { - #[link_section = "__DATA,__objc_imageinfo,regular,no_dead_strip"] - #[export_name = concat!("\x01L_OBJC_IMAGE_INFO_", $crate::__macro_helpers::__hash_idents!($($idents)+))] - #[used] - static _IMAGE_TAG: [u32; 2] = [0, 0]; + #[link_section = "__DATA,__objc_imageinfo,regular,no_dead_strip"] + #[export_name = concat!("\x01L_OBJC_IMAGE_INFO_", $crate::__macro_helpers::__hash_idents!($($idents)+))] + #[used] // Make sure this reaches the linker + static _IMAGE_TAG: [u32; 2] = [0, 0]; - const X: &[u8] = $data.as_bytes(); + const X: &[u8] = $data.as_bytes(); - // Marked with `unnamed_addr` in Objective-C's LLVM. - // See rust-lang/rust#18297 - // Should only be an optimization (?) - #[link_section = "__TEXT,__objc_methname,cstring_literals"] - #[export_name = concat!("\x01L_OBJC_METH_VAR_NAME_", $crate::__macro_helpers::__hash_idents!($($idents)+))] - static NAME_DATA: [u8; X.len()] = { - // Convert the `&[u8]` slice to an array with known length, so - // that we can place that directly in a static. - let mut res: [u8; X.len()] = [0; X.len()]; - let mut i = 0; - while i < X.len() { - res[i] = X[i]; - i += 1; - } - res - }; + /// Clang marks this with LLVM's `unnamed_addr`. + /// See rust-lang/rust#18297 + /// Should only be an optimization (?) + #[link_section = "__TEXT,__objc_methname,cstring_literals"] + #[export_name = concat!("\x01L_OBJC_METH_VAR_NAME_", $crate::__macro_helpers::__hash_idents!($($idents)+))] + static NAME_DATA: [u8; X.len()] = { + // Convert the `&[u8]` slice to an array with known length, so + // that we can place that directly in a static. + let mut res: [u8; X.len()] = [0; X.len()]; + let mut i = 0; + while i < X.len() { + res[i] = X[i]; + i += 1; + } + res + }; - // Place the constant value in the correct section. - // - // Clang uses `no_dead_strip` here for some reason? - #[link_section = "__DATA,__objc_selrefs,literal_pointers"] - #[export_name = concat!("\x01L_OBJC_SELECTOR_REFERENCES_", $crate::__macro_helpers::__hash_idents!($($idents)+))] - static mut REF: $crate::runtime::Sel = unsafe { - $crate::runtime::Sel::from_ptr(NAME_DATA.as_ptr().cast()) - }; + /// Place the constant value in the correct section. + /// + /// Clang uses `no_dead_strip` here for some reason? + #[link_section = "__DATA,__objc_selrefs,literal_pointers"] + #[export_name = concat!("\x01L_OBJC_SELECTOR_REFERENCES_", $crate::__macro_helpers::__hash_idents!($($idents)+))] + static mut REF: $crate::runtime::Sel = unsafe { + $crate::runtime::Sel::from_ptr(NAME_DATA.as_ptr().cast()) + }; + /// HACK: Wrap the access in a non-generic, `#[inline(never)]` + /// function to make the compiler group it into the same codegen unit + /// as the statics. + /// + /// See the following link for details on how the compiler decides + /// to partition code into codegen units: + /// + #[inline(never)] + fn objc_static_workaround() -> $crate::runtime::Sel { // The actual selector is replaced by dyld when the program is // loaded, so we need to use a volatile read to prevent the // optimizer from thinking it can circumvent the read through REF. diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index 017377a56..7128458af 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -6,7 +6,7 @@ _handle_with_sel: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround + bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround mov x1, x0 mov x0, x19 ldp x29, x30, [sp, #16] @@ -20,9 +20,9 @@ _handle_alloc_init: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround + bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround mov x20, x0 - bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround + bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround mov x1, x0 mov x0, x19 bl _objc_msgSend @@ -38,23 +38,23 @@ _use_generic: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel11use_generic22objc_static_workaround + bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel11use_generic22objc_static_workaround mov x20, x0 - bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel7generic22objc_static_workaround + bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel7generic22objc_static_workaround mov x2, x0 mov x0, x19 mov x1, x20 bl _objc_msgSend - bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel11use_generics_22objc_static_workaround + bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel11use_generics_22objc_static_workaround mov x20, x0 - bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel7generic22objc_static_workaround + bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel7generic22objc_static_workaround mov x2, x0 mov x0, x19 mov x1, x20 bl _objc_msgSend - bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel11use_generics0_22objc_static_workaround + bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel11use_generics0_22objc_static_workaround mov x20, x0 - bl __RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel7generic22objc_static_workaround + bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel7generic22objc_static_workaround mov x2, x0 mov x0, x19 mov x1, x20 @@ -63,7 +63,7 @@ _use_generic: b _objc_msgSend .p2align 2 -__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: +__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: Lloh0: adrp x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGE Lloh1: @@ -72,7 +72,7 @@ Lloh1: .loh AdrpLdr Lloh0, Lloh1 .p2align 2 -__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: +__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: Lloh2: adrp x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGE Lloh3: @@ -81,7 +81,7 @@ Lloh3: .loh AdrpLdr Lloh2, Lloh3 .p2align 2 -__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: +__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: Lloh4: adrp x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGE Lloh5: @@ -90,7 +90,7 @@ Lloh5: .loh AdrpLdr Lloh4, Lloh5 .p2align 2 -__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel7generic22objc_static_workaround: +__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel7generic22objc_static_workaround: Lloh6: adrp x8, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGE Lloh7: @@ -99,7 +99,7 @@ Lloh7: .loh AdrpLdr Lloh6, Lloh7 .p2align 2 -__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel11use_generic22objc_static_workaround: +__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel11use_generic22objc_static_workaround: Lloh8: adrp x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGE Lloh9: @@ -108,7 +108,7 @@ Lloh9: .loh AdrpLdr Lloh8, Lloh9 .p2align 2 -__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel11use_generics_22objc_static_workaround: +__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel11use_generics_22objc_static_workaround: Lloh10: adrp x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGE Lloh11: @@ -117,7 +117,7 @@ Lloh11: .loh AdrpLdr Lloh10, Lloh11 .p2align 2 -__RNvNvCscGnQ1qFKph7_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: +__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: Lloh12: adrp x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGE Lloh13: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index 9d2584de8..a2206243e 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -7,7 +7,7 @@ _handle_with_sel: push {r4, r7, lr} add r7, sp, #4 mov r4, r0 - bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround + bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround mov r1, r0 mov r0, r4 pop {r4, r7, lr} @@ -20,9 +20,9 @@ _handle_alloc_init: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround + bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround mov r5, r0 - bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround + bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround mov r1, r0 mov r0, r4 bl _objc_msgSend @@ -37,23 +37,23 @@ _use_generic: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel11use_generic22objc_static_workaround + bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel11use_generic22objc_static_workaround mov r5, r0 - bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel7generic22objc_static_workaround + bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel7generic22objc_static_workaround mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel11use_generics_22objc_static_workaround + bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel11use_generics_22objc_static_workaround mov r5, r0 - bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel7generic22objc_static_workaround + bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel7generic22objc_static_workaround mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel11use_generics0_22objc_static_workaround + bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel11use_generics0_22objc_static_workaround mov r5, r0 - bl __RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel7generic22objc_static_workaround + bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel7generic22objc_static_workaround mov r2, r0 mov r0, r4 mov r1, r5 @@ -62,7 +62,7 @@ _use_generic: .p2align 2 .code 32 -__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: +__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) LPC3_0: @@ -71,7 +71,7 @@ LPC3_0: .p2align 2 .code 32 -__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: +__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) LPC4_0: @@ -80,7 +80,7 @@ LPC4_0: .p2align 2 .code 32 -__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: +__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) LPC5_0: @@ -89,7 +89,7 @@ LPC5_0: .p2align 2 .code 32 -__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel7generic22objc_static_workaround: +__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel7generic22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) LPC6_0: @@ -98,7 +98,7 @@ LPC6_0: .p2align 2 .code 32 -__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel11use_generic22objc_static_workaround: +__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel11use_generic22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) LPC7_0: @@ -107,7 +107,7 @@ LPC7_0: .p2align 2 .code 32 -__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel11use_generics_22objc_static_workaround: +__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel11use_generics_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) LPC8_0: @@ -116,7 +116,7 @@ LPC8_0: .p2align 2 .code 32 -__RNvNvCs5YtfxKo1Y6N_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: +__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) LPC9_0: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index 467ce1600..9f3723159 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -7,7 +7,7 @@ _handle_with_sel: push {r4, r7, lr} add r7, sp, #4 mov r4, r0 - bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround + bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround mov r1, r0 mov r0, r4 bl _objc_msgSend @@ -20,9 +20,9 @@ _handle_alloc_init: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround + bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround mov r5, r0 - bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround + bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround mov r1, r0 mov r0, r4 bl _objc_msgSend @@ -37,23 +37,23 @@ _use_generic: push {r4, r5, r7, lr} add r7, sp, #8 mov r4, r0 - bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel11use_generic22objc_static_workaround + bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel11use_generic22objc_static_workaround mov r5, r0 - bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel7generic22objc_static_workaround + bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel7generic22objc_static_workaround mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel11use_generics_22objc_static_workaround + bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel11use_generics_22objc_static_workaround mov r5, r0 - bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel7generic22objc_static_workaround + bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel7generic22objc_static_workaround mov r2, r0 mov r0, r4 mov r1, r5 bl _objc_msgSend - bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel11use_generics0_22objc_static_workaround + bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel11use_generics0_22objc_static_workaround mov r5, r0 - bl __RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel7generic22objc_static_workaround + bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel7generic22objc_static_workaround mov r2, r0 mov r0, r4 mov r1, r5 @@ -62,7 +62,7 @@ _use_generic: .p2align 2 .code 32 -__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: +__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) LPC3_0: @@ -71,7 +71,7 @@ LPC3_0: .p2align 2 .code 32 -__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: +__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) LPC4_0: @@ -80,7 +80,7 @@ LPC4_0: .p2align 2 .code 32 -__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: +__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) LPC5_0: @@ -89,7 +89,7 @@ LPC5_0: .p2align 2 .code 32 -__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel7generic22objc_static_workaround: +__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel7generic22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) LPC6_0: @@ -98,7 +98,7 @@ LPC6_0: .p2align 2 .code 32 -__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel11use_generic22objc_static_workaround: +__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel11use_generic22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) LPC7_0: @@ -107,7 +107,7 @@ LPC7_0: .p2align 2 .code 32 -__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel11use_generics_22objc_static_workaround: +__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel11use_generics_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) LPC8_0: @@ -116,7 +116,7 @@ LPC8_0: .p2align 2 .code 32 -__RNvNvCshnI3y2YKvDt_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: +__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) LPC9_0: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index bdca5905e..cf129e371 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -8,7 +8,7 @@ _handle_with_sel: push esi push eax mov esi, dword ptr [ebp + 8] - call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround + call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround sub esp, 8 push eax push esi @@ -26,9 +26,9 @@ _handle_alloc_init: push edi push esi mov edi, dword ptr [ebp + 8] - call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround + call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround mov esi, eax - call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround + call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround sub esp, 8 push eax push edi @@ -51,27 +51,27 @@ _use_generic: push edi push esi mov edi, dword ptr [ebp + 8] - call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel11use_generic22objc_static_workaround + call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel11use_generic22objc_static_workaround mov esi, eax - call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel7generic22objc_static_workaround + call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel7generic22objc_static_workaround sub esp, 4 push eax push esi push edi call _objc_msgSend add esp, 16 - call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel11use_generics_22objc_static_workaround + call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel11use_generics_22objc_static_workaround mov esi, eax - call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel7generic22objc_static_workaround + call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel7generic22objc_static_workaround sub esp, 4 push eax push esi push edi call _objc_msgSend add esp, 16 - call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel11use_generics0_22objc_static_workaround + call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel11use_generics0_22objc_static_workaround mov esi, eax - call __RNvNvCs66pPOBPZDax_24test_msg_send_static_sel7generic22objc_static_workaround + call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel7generic22objc_static_workaround sub esp, 4 push eax push esi @@ -84,7 +84,7 @@ _use_generic: ret .p2align 4, 0x90 -__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: +__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: push ebp mov ebp, esp call L3$pb @@ -95,7 +95,7 @@ L3$pb: ret .p2align 4, 0x90 -__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: +__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: push ebp mov ebp, esp call L4$pb @@ -106,7 +106,7 @@ L4$pb: ret .p2align 4, 0x90 -__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: +__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: push ebp mov ebp, esp call L5$pb @@ -117,7 +117,7 @@ L5$pb: ret .p2align 4, 0x90 -__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel7generic22objc_static_workaround: +__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel7generic22objc_static_workaround: push ebp mov ebp, esp call L6$pb @@ -128,7 +128,7 @@ L6$pb: ret .p2align 4, 0x90 -__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel11use_generic22objc_static_workaround: +__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel11use_generic22objc_static_workaround: push ebp mov ebp, esp call L7$pb @@ -139,7 +139,7 @@ L7$pb: ret .p2align 4, 0x90 -__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel11use_generics_22objc_static_workaround: +__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel11use_generics_22objc_static_workaround: push ebp mov ebp, esp call L8$pb @@ -150,7 +150,7 @@ L8$pb: ret .p2align 4, 0x90 -__RNvNvCs66pPOBPZDax_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: +__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: push ebp mov ebp, esp call L9$pb diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index 7dad0c7f1..0b2a71aca 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -8,7 +8,7 @@ _handle_with_sel: push rbx push rax mov rbx, rdi - call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround + call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround mov rdi, rbx mov rsi, rax add rsp, 8 @@ -24,9 +24,9 @@ _handle_alloc_init: push r14 push rbx mov rbx, rdi - call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround + call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround mov r14, rax - call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround + call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround mov rdi, rbx mov rsi, rax call _objc_msgSend @@ -45,23 +45,23 @@ _use_generic: push r14 push rbx mov rbx, rdi - call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generic22objc_static_workaround + call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel11use_generic22objc_static_workaround mov r14, rax - call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel7generic22objc_static_workaround + call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel7generic22objc_static_workaround mov rdi, rbx mov rsi, r14 mov rdx, rax call _objc_msgSend - call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generics_22objc_static_workaround + call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel11use_generics_22objc_static_workaround mov r14, rax - call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel7generic22objc_static_workaround + call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel7generic22objc_static_workaround mov rdi, rbx mov rsi, r14 mov rdx, rax call _objc_msgSend - call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generics0_22objc_static_workaround + call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel11use_generics0_22objc_static_workaround mov r14, rax - call __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel7generic22objc_static_workaround + call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel7generic22objc_static_workaround mov rdi, rbx mov rsi, r14 mov rdx, rax @@ -71,7 +71,7 @@ _use_generic: jmp _objc_msgSend .p2align 4, 0x90 -__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: +__RNvNvCshotFXcDShqK_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286] @@ -79,7 +79,7 @@ __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel15handle_with_sel22objc_static_wo ret .p2align 4, 0x90 -__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: +__RNvNvCshotFXcDShqK_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9] @@ -87,7 +87,7 @@ __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel17handle_alloc_init22objc_static_ ret .p2align 4, 0x90 -__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: +__RNvNvCshotFXcDShqK_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9] @@ -95,7 +95,7 @@ __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel17handle_alloc_inits_22objc_stati ret .p2align 4, 0x90 -__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel7generic22objc_static_workaround: +__RNvNvCshotFXcDShqK_24test_msg_send_static_sel7generic22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32] @@ -103,7 +103,7 @@ __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel7generic22objc_static_workaround: ret .p2align 4, 0x90 -__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generic22objc_static_workaround: +__RNvNvCshotFXcDShqK_24test_msg_send_static_sel11use_generic22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4] @@ -111,7 +111,7 @@ __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generic22objc_static_workar ret .p2align 4, 0x90 -__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generics_22objc_static_workaround: +__RNvNvCshotFXcDShqK_24test_msg_send_static_sel11use_generics_22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1] @@ -119,7 +119,7 @@ __RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generics_22objc_static_work ret .p2align 4, 0x90 -__RNvNvCsiChpDjF7UQL_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: +__RNvNvCshotFXcDShqK_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720] diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index 4f8f1ad66..6f09b6257 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -2,12 +2,12 @@ .globl _get_sel .p2align 2 _get_sel: - b __RNvNvCsjZOyJ1jjoek_15test_static_sel7get_sel22objc_static_workaround + b __RNvNvCsai54Y9dtG4h_15test_static_sel7get_sel22objc_static_workaround .globl _get_same_sel .p2align 2 _get_same_sel: - b __RNvNvCsjZOyJ1jjoek_15test_static_sel12get_same_sel22objc_static_workaround + b __RNvNvCsai54Y9dtG4h_15test_static_sel12get_same_sel22objc_static_workaround .globl _get_common_twice .p2align 2 @@ -15,9 +15,9 @@ _get_common_twice: stp x20, x19, [sp, #-32]! stp x29, x30, [sp, #16] add x29, sp, #16 - bl __RNvNvCsjZOyJ1jjoek_15test_static_sel16get_common_twice22objc_static_workaround + bl __RNvNvCsai54Y9dtG4h_15test_static_sel16get_common_twice22objc_static_workaround mov x19, x0 - bl __RNvNvCsjZOyJ1jjoek_15test_static_sel16get_common_twices_22objc_static_workaround + bl __RNvNvCsai54Y9dtG4h_15test_static_sel16get_common_twices_22objc_static_workaround mov x1, x0 mov x0, x19 ldp x29, x30, [sp, #16] @@ -27,12 +27,12 @@ _get_common_twice: .globl _get_different_sel .p2align 2 _get_different_sel: - b __RNvNvCsjZOyJ1jjoek_15test_static_sel17get_different_sel22objc_static_workaround + b __RNvNvCsai54Y9dtG4h_15test_static_sel17get_different_sel22objc_static_workaround .globl _unused_sel .p2align 2 _unused_sel: - b __RNvNvCsjZOyJ1jjoek_15test_static_sel10unused_sel22objc_static_workaround + b __RNvNvCsai54Y9dtG4h_15test_static_sel10unused_sel22objc_static_workaround .globl _use_fns .p2align 2 @@ -42,13 +42,13 @@ _use_fns: stp x29, x30, [sp, #32] add x29, sp, #32 mov x19, x8 - bl __RNvNvCsjZOyJ1jjoek_15test_static_sel7get_sel22objc_static_workaround + bl __RNvNvCsai54Y9dtG4h_15test_static_sel7get_sel22objc_static_workaround mov x20, x0 - bl __RNvNvCsjZOyJ1jjoek_15test_static_sel12get_same_sel22objc_static_workaround + bl __RNvNvCsai54Y9dtG4h_15test_static_sel12get_same_sel22objc_static_workaround mov x21, x0 - bl __RNvNvCsjZOyJ1jjoek_15test_static_sel17get_different_sel22objc_static_workaround + bl __RNvNvCsai54Y9dtG4h_15test_static_sel17get_different_sel22objc_static_workaround mov x22, x0 - bl __RNvNvCsjZOyJ1jjoek_15test_static_sel7use_fns22objc_static_workaround + bl __RNvNvCsai54Y9dtG4h_15test_static_sel7use_fns22objc_static_workaround stp x20, x21, [x19] stp x22, x0, [x19, #16] ldp x29, x30, [sp, #32] @@ -63,9 +63,9 @@ _use_same_twice: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x8 - bl __RNvNvCsjZOyJ1jjoek_15test_static_sel7get_sel22objc_static_workaround + bl __RNvNvCsai54Y9dtG4h_15test_static_sel7get_sel22objc_static_workaround mov x20, x0 - bl __RNvNvCsjZOyJ1jjoek_15test_static_sel7get_sel22objc_static_workaround + bl __RNvNvCsai54Y9dtG4h_15test_static_sel7get_sel22objc_static_workaround stp x20, x0, [x19] ldp x29, x30, [sp, #16] ldp x20, x19, [sp], #32 @@ -80,7 +80,7 @@ _use_in_loop: cbz x0, LBB7_3 mov x19, x0 LBB7_2: - bl __RNvNvCsjZOyJ1jjoek_15test_static_sel11use_in_loop22objc_static_workaround + bl __RNvNvCsai54Y9dtG4h_15test_static_sel11use_in_loop22objc_static_workaround subs x19, x19, #1 b.ne LBB7_2 LBB7_3: @@ -89,7 +89,7 @@ LBB7_3: ret .p2align 2 -__RNvNvCsjZOyJ1jjoek_15test_static_sel7get_sel22objc_static_workaround: +__RNvNvCsai54Y9dtG4h_15test_static_sel7get_sel22objc_static_workaround: Lloh0: adrp x8, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGE Lloh1: @@ -98,7 +98,7 @@ Lloh1: .loh AdrpLdr Lloh0, Lloh1 .p2align 2 -__RNvNvCsjZOyJ1jjoek_15test_static_sel12get_same_sel22objc_static_workaround: +__RNvNvCsai54Y9dtG4h_15test_static_sel12get_same_sel22objc_static_workaround: Lloh2: adrp x8, L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35@PAGE Lloh3: @@ -107,7 +107,7 @@ Lloh3: .loh AdrpLdr Lloh2, Lloh3 .p2align 2 -__RNvNvCsjZOyJ1jjoek_15test_static_sel16get_common_twice22objc_static_workaround: +__RNvNvCsai54Y9dtG4h_15test_static_sel16get_common_twice22objc_static_workaround: Lloh4: adrp x8, L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77@PAGE Lloh5: @@ -116,7 +116,7 @@ Lloh5: .loh AdrpLdr Lloh4, Lloh5 .p2align 2 -__RNvNvCsjZOyJ1jjoek_15test_static_sel16get_common_twices_22objc_static_workaround: +__RNvNvCsai54Y9dtG4h_15test_static_sel16get_common_twices_22objc_static_workaround: Lloh6: adrp x8, L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7@PAGE Lloh7: @@ -125,7 +125,7 @@ Lloh7: .loh AdrpLdr Lloh6, Lloh7 .p2align 2 -__RNvNvCsjZOyJ1jjoek_15test_static_sel17get_different_sel22objc_static_workaround: +__RNvNvCsai54Y9dtG4h_15test_static_sel17get_different_sel22objc_static_workaround: Lloh8: adrp x8, L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0@PAGE Lloh9: @@ -134,7 +134,7 @@ Lloh9: .loh AdrpLdr Lloh8, Lloh9 .p2align 2 -__RNvNvCsjZOyJ1jjoek_15test_static_sel10unused_sel22objc_static_workaround: +__RNvNvCsai54Y9dtG4h_15test_static_sel10unused_sel22objc_static_workaround: Lloh10: adrp x8, L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25@PAGE Lloh11: @@ -143,7 +143,7 @@ Lloh11: .loh AdrpLdr Lloh10, Lloh11 .p2align 2 -__RNvNvCsjZOyJ1jjoek_15test_static_sel7use_fns22objc_static_workaround: +__RNvNvCsai54Y9dtG4h_15test_static_sel7use_fns22objc_static_workaround: Lloh12: adrp x8, L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99@PAGE Lloh13: @@ -152,7 +152,7 @@ Lloh13: .loh AdrpLdr Lloh12, Lloh13 .p2align 2 -__RNvNvCsjZOyJ1jjoek_15test_static_sel11use_in_loop22objc_static_workaround: +__RNvNvCsai54Y9dtG4h_15test_static_sel11use_in_loop22objc_static_workaround: Lloh14: adrp x8, L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b@PAGE Lloh15: diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index 72d01b8b7..39e93aca1 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -4,13 +4,13 @@ .p2align 2 .code 32 _get_sel: - b __RNvNvCsiyxIhVsrep_15test_static_sel7get_sel22objc_static_workaround + b __RNvNvCs8GaUp4KaTG0_15test_static_sel7get_sel22objc_static_workaround .globl _get_same_sel .p2align 2 .code 32 _get_same_sel: - b __RNvNvCsiyxIhVsrep_15test_static_sel12get_same_sel22objc_static_workaround + b __RNvNvCs8GaUp4KaTG0_15test_static_sel12get_same_sel22objc_static_workaround .globl _get_common_twice .p2align 2 @@ -18,9 +18,9 @@ _get_same_sel: _get_common_twice: push {r4, r7, lr} add r7, sp, #4 - bl __RNvNvCsiyxIhVsrep_15test_static_sel16get_common_twice22objc_static_workaround + bl __RNvNvCs8GaUp4KaTG0_15test_static_sel16get_common_twice22objc_static_workaround mov r4, r0 - bl __RNvNvCsiyxIhVsrep_15test_static_sel16get_common_twices_22objc_static_workaround + bl __RNvNvCs8GaUp4KaTG0_15test_static_sel16get_common_twices_22objc_static_workaround mov r1, r0 mov r0, r4 pop {r4, r7, pc} @@ -29,13 +29,13 @@ _get_common_twice: .p2align 2 .code 32 _get_different_sel: - b __RNvNvCsiyxIhVsrep_15test_static_sel17get_different_sel22objc_static_workaround + b __RNvNvCs8GaUp4KaTG0_15test_static_sel17get_different_sel22objc_static_workaround .globl _unused_sel .p2align 2 .code 32 _unused_sel: - b __RNvNvCsiyxIhVsrep_15test_static_sel10unused_sel22objc_static_workaround + b __RNvNvCs8GaUp4KaTG0_15test_static_sel10unused_sel22objc_static_workaround .globl _use_fns .p2align 2 @@ -45,13 +45,13 @@ _use_fns: add r7, sp, #12 push {r8} mov r4, r0 - bl __RNvNvCsiyxIhVsrep_15test_static_sel7get_sel22objc_static_workaround + bl __RNvNvCs8GaUp4KaTG0_15test_static_sel7get_sel22objc_static_workaround mov r8, r0 - bl __RNvNvCsiyxIhVsrep_15test_static_sel12get_same_sel22objc_static_workaround + bl __RNvNvCs8GaUp4KaTG0_15test_static_sel12get_same_sel22objc_static_workaround mov r6, r0 - bl __RNvNvCsiyxIhVsrep_15test_static_sel17get_different_sel22objc_static_workaround + bl __RNvNvCs8GaUp4KaTG0_15test_static_sel17get_different_sel22objc_static_workaround mov r5, r0 - bl __RNvNvCsiyxIhVsrep_15test_static_sel7use_fns22objc_static_workaround + bl __RNvNvCs8GaUp4KaTG0_15test_static_sel7use_fns22objc_static_workaround str r8, [r4] str r6, [r4, #4] str r5, [r4, #8] @@ -67,9 +67,9 @@ _use_same_twice: add r7, sp, #4 push {r8} mov r4, r0 - bl __RNvNvCsiyxIhVsrep_15test_static_sel7get_sel22objc_static_workaround + bl __RNvNvCs8GaUp4KaTG0_15test_static_sel7get_sel22objc_static_workaround mov r8, r0 - bl __RNvNvCsiyxIhVsrep_15test_static_sel7get_sel22objc_static_workaround + bl __RNvNvCs8GaUp4KaTG0_15test_static_sel7get_sel22objc_static_workaround mov r9, r0 strd r8, r9, [r4] pop {r8} @@ -86,14 +86,14 @@ _use_in_loop: LBB7_1: mov r4, r0 LBB7_2: - bl __RNvNvCsiyxIhVsrep_15test_static_sel11use_in_loop22objc_static_workaround + bl __RNvNvCs8GaUp4KaTG0_15test_static_sel11use_in_loop22objc_static_workaround subs r4, r4, #1 bne LBB7_2 pop {r4, r7, pc} .p2align 2 .code 32 -__RNvNvCsiyxIhVsrep_15test_static_sel7get_sel22objc_static_workaround: +__RNvNvCs8GaUp4KaTG0_15test_static_sel7get_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) LPC8_0: @@ -102,7 +102,7 @@ LPC8_0: .p2align 2 .code 32 -__RNvNvCsiyxIhVsrep_15test_static_sel12get_same_sel22objc_static_workaround: +__RNvNvCs8GaUp4KaTG0_15test_static_sel12get_same_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) LPC9_0: @@ -111,7 +111,7 @@ LPC9_0: .p2align 2 .code 32 -__RNvNvCsiyxIhVsrep_15test_static_sel16get_common_twice22objc_static_workaround: +__RNvNvCs8GaUp4KaTG0_15test_static_sel16get_common_twice22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) LPC10_0: @@ -120,7 +120,7 @@ LPC10_0: .p2align 2 .code 32 -__RNvNvCsiyxIhVsrep_15test_static_sel16get_common_twices_22objc_static_workaround: +__RNvNvCs8GaUp4KaTG0_15test_static_sel16get_common_twices_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) LPC11_0: @@ -129,7 +129,7 @@ LPC11_0: .p2align 2 .code 32 -__RNvNvCsiyxIhVsrep_15test_static_sel17get_different_sel22objc_static_workaround: +__RNvNvCs8GaUp4KaTG0_15test_static_sel17get_different_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) LPC12_0: @@ -138,7 +138,7 @@ LPC12_0: .p2align 2 .code 32 -__RNvNvCsiyxIhVsrep_15test_static_sel10unused_sel22objc_static_workaround: +__RNvNvCs8GaUp4KaTG0_15test_static_sel10unused_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) LPC13_0: @@ -147,7 +147,7 @@ LPC13_0: .p2align 2 .code 32 -__RNvNvCsiyxIhVsrep_15test_static_sel7use_fns22objc_static_workaround: +__RNvNvCs8GaUp4KaTG0_15test_static_sel7use_fns22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) LPC14_0: @@ -156,7 +156,7 @@ LPC14_0: .p2align 2 .code 32 -__RNvNvCsiyxIhVsrep_15test_static_sel11use_in_loop22objc_static_workaround: +__RNvNvCs8GaUp4KaTG0_15test_static_sel11use_in_loop22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) LPC15_0: diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index f71892d1d..0f4d173d2 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -6,7 +6,7 @@ _get_sel: push {r7, lr} mov r7, sp - bl __RNvNvCs9WJZU86XVxM_15test_static_sel7get_sel22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel7get_sel22objc_static_workaround pop {r7, pc} .globl _get_same_sel @@ -15,7 +15,7 @@ _get_sel: _get_same_sel: push {r7, lr} mov r7, sp - bl __RNvNvCs9WJZU86XVxM_15test_static_sel12get_same_sel22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel12get_same_sel22objc_static_workaround pop {r7, pc} .globl _get_common_twice @@ -24,9 +24,9 @@ _get_same_sel: _get_common_twice: push {r4, r7, lr} add r7, sp, #4 - bl __RNvNvCs9WJZU86XVxM_15test_static_sel16get_common_twice22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel16get_common_twice22objc_static_workaround mov r4, r0 - bl __RNvNvCs9WJZU86XVxM_15test_static_sel16get_common_twices_22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel16get_common_twices_22objc_static_workaround mov r1, r0 mov r0, r4 pop {r4, r7, pc} @@ -37,7 +37,7 @@ _get_common_twice: _get_different_sel: push {r7, lr} mov r7, sp - bl __RNvNvCs9WJZU86XVxM_15test_static_sel17get_different_sel22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel17get_different_sel22objc_static_workaround pop {r7, pc} .globl _unused_sel @@ -46,7 +46,7 @@ _get_different_sel: _unused_sel: push {r7, lr} mov r7, sp - bl __RNvNvCs9WJZU86XVxM_15test_static_sel10unused_sel22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel10unused_sel22objc_static_workaround pop {r7, pc} .globl _use_fns @@ -57,13 +57,13 @@ _use_fns: add r7, sp, #12 push {r8} mov r4, r0 - bl __RNvNvCs9WJZU86XVxM_15test_static_sel7get_sel22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel7get_sel22objc_static_workaround mov r8, r0 - bl __RNvNvCs9WJZU86XVxM_15test_static_sel12get_same_sel22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel12get_same_sel22objc_static_workaround mov r6, r0 - bl __RNvNvCs9WJZU86XVxM_15test_static_sel17get_different_sel22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel17get_different_sel22objc_static_workaround mov r5, r0 - bl __RNvNvCs9WJZU86XVxM_15test_static_sel7use_fns22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel7use_fns22objc_static_workaround str r8, [r4] str r6, [r4, #4] str r5, [r4, #8] @@ -79,9 +79,9 @@ _use_same_twice: add r7, sp, #4 push {r8} mov r4, r0 - bl __RNvNvCs9WJZU86XVxM_15test_static_sel7get_sel22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel7get_sel22objc_static_workaround mov r8, r0 - bl __RNvNvCs9WJZU86XVxM_15test_static_sel7get_sel22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel7get_sel22objc_static_workaround mov r9, r0 strd r8, r9, [r4] pop {r8} @@ -98,14 +98,14 @@ _use_in_loop: LBB7_1: mov r4, r0 LBB7_2: - bl __RNvNvCs9WJZU86XVxM_15test_static_sel11use_in_loop22objc_static_workaround + bl __RNvNvCsen0HaGRHbO4_15test_static_sel11use_in_loop22objc_static_workaround subs r4, r4, #1 bne LBB7_2 pop {r4, r7, pc} .p2align 2 .code 32 -__RNvNvCs9WJZU86XVxM_15test_static_sel7get_sel22objc_static_workaround: +__RNvNvCsen0HaGRHbO4_15test_static_sel7get_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) LPC8_0: @@ -114,7 +114,7 @@ LPC8_0: .p2align 2 .code 32 -__RNvNvCs9WJZU86XVxM_15test_static_sel12get_same_sel22objc_static_workaround: +__RNvNvCsen0HaGRHbO4_15test_static_sel12get_same_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) LPC9_0: @@ -123,7 +123,7 @@ LPC9_0: .p2align 2 .code 32 -__RNvNvCs9WJZU86XVxM_15test_static_sel16get_common_twice22objc_static_workaround: +__RNvNvCsen0HaGRHbO4_15test_static_sel16get_common_twice22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) LPC10_0: @@ -132,7 +132,7 @@ LPC10_0: .p2align 2 .code 32 -__RNvNvCs9WJZU86XVxM_15test_static_sel16get_common_twices_22objc_static_workaround: +__RNvNvCsen0HaGRHbO4_15test_static_sel16get_common_twices_22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) LPC11_0: @@ -141,7 +141,7 @@ LPC11_0: .p2align 2 .code 32 -__RNvNvCs9WJZU86XVxM_15test_static_sel17get_different_sel22objc_static_workaround: +__RNvNvCsen0HaGRHbO4_15test_static_sel17get_different_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) LPC12_0: @@ -150,7 +150,7 @@ LPC12_0: .p2align 2 .code 32 -__RNvNvCs9WJZU86XVxM_15test_static_sel10unused_sel22objc_static_workaround: +__RNvNvCsen0HaGRHbO4_15test_static_sel10unused_sel22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) LPC13_0: @@ -159,7 +159,7 @@ LPC13_0: .p2align 2 .code 32 -__RNvNvCs9WJZU86XVxM_15test_static_sel7use_fns22objc_static_workaround: +__RNvNvCsen0HaGRHbO4_15test_static_sel7use_fns22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) LPC14_0: @@ -168,7 +168,7 @@ LPC14_0: .p2align 2 .code 32 -__RNvNvCs9WJZU86XVxM_15test_static_sel11use_in_loop22objc_static_workaround: +__RNvNvCsen0HaGRHbO4_15test_static_sel11use_in_loop22objc_static_workaround: movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) LPC15_0: diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index 558986c03..760e9ba92 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -6,7 +6,7 @@ _get_sel: push ebp mov ebp, esp pop ebp - jmp __RNvNvCsiw6xRX1pmbi_15test_static_sel7get_sel22objc_static_workaround + jmp __RNvNvCs6BnsG4fGG5c_15test_static_sel7get_sel22objc_static_workaround .globl _get_same_sel .p2align 4, 0x90 @@ -14,7 +14,7 @@ _get_same_sel: push ebp mov ebp, esp pop ebp - jmp __RNvNvCsiw6xRX1pmbi_15test_static_sel12get_same_sel22objc_static_workaround + jmp __RNvNvCs6BnsG4fGG5c_15test_static_sel12get_same_sel22objc_static_workaround .globl _get_common_twice .p2align 4, 0x90 @@ -23,9 +23,9 @@ _get_common_twice: mov ebp, esp push esi push eax - call __RNvNvCsiw6xRX1pmbi_15test_static_sel16get_common_twice22objc_static_workaround + call __RNvNvCs6BnsG4fGG5c_15test_static_sel16get_common_twice22objc_static_workaround mov esi, eax - call __RNvNvCsiw6xRX1pmbi_15test_static_sel16get_common_twices_22objc_static_workaround + call __RNvNvCs6BnsG4fGG5c_15test_static_sel16get_common_twices_22objc_static_workaround mov edx, eax mov eax, esi add esp, 4 @@ -39,7 +39,7 @@ _get_different_sel: push ebp mov ebp, esp pop ebp - jmp __RNvNvCsiw6xRX1pmbi_15test_static_sel17get_different_sel22objc_static_workaround + jmp __RNvNvCs6BnsG4fGG5c_15test_static_sel17get_different_sel22objc_static_workaround .globl _unused_sel .p2align 4, 0x90 @@ -47,7 +47,7 @@ _unused_sel: push ebp mov ebp, esp pop ebp - jmp __RNvNvCsiw6xRX1pmbi_15test_static_sel10unused_sel22objc_static_workaround + jmp __RNvNvCs6BnsG4fGG5c_15test_static_sel10unused_sel22objc_static_workaround .globl _use_fns .p2align 4, 0x90 @@ -59,13 +59,13 @@ _use_fns: push esi sub esp, 12 mov esi, dword ptr [ebp + 8] - call __RNvNvCsiw6xRX1pmbi_15test_static_sel7get_sel22objc_static_workaround + call __RNvNvCs6BnsG4fGG5c_15test_static_sel7get_sel22objc_static_workaround mov dword ptr [ebp - 16], eax - call __RNvNvCsiw6xRX1pmbi_15test_static_sel12get_same_sel22objc_static_workaround + call __RNvNvCs6BnsG4fGG5c_15test_static_sel12get_same_sel22objc_static_workaround mov ebx, eax - call __RNvNvCsiw6xRX1pmbi_15test_static_sel17get_different_sel22objc_static_workaround + call __RNvNvCs6BnsG4fGG5c_15test_static_sel17get_different_sel22objc_static_workaround mov edi, eax - call __RNvNvCsiw6xRX1pmbi_15test_static_sel7use_fns22objc_static_workaround + call __RNvNvCs6BnsG4fGG5c_15test_static_sel7use_fns22objc_static_workaround mov ecx, dword ptr [ebp - 16] mov dword ptr [esi], ecx mov dword ptr [esi + 4], ebx @@ -87,9 +87,9 @@ _use_same_twice: push edi push esi mov esi, dword ptr [ebp + 8] - call __RNvNvCsiw6xRX1pmbi_15test_static_sel7get_sel22objc_static_workaround + call __RNvNvCs6BnsG4fGG5c_15test_static_sel7get_sel22objc_static_workaround mov edi, eax - call __RNvNvCsiw6xRX1pmbi_15test_static_sel7get_sel22objc_static_workaround + call __RNvNvCs6BnsG4fGG5c_15test_static_sel7get_sel22objc_static_workaround mov dword ptr [esi], edi mov dword ptr [esi + 4], eax mov eax, esi @@ -110,7 +110,7 @@ _use_in_loop: je LBB7_2 .p2align 4, 0x90 LBB7_1: - call __RNvNvCsiw6xRX1pmbi_15test_static_sel11use_in_loop22objc_static_workaround + call __RNvNvCs6BnsG4fGG5c_15test_static_sel11use_in_loop22objc_static_workaround dec esi jne LBB7_1 LBB7_2: @@ -120,7 +120,7 @@ LBB7_2: ret .p2align 4, 0x90 -__RNvNvCsiw6xRX1pmbi_15test_static_sel7get_sel22objc_static_workaround: +__RNvNvCs6BnsG4fGG5c_15test_static_sel7get_sel22objc_static_workaround: push ebp mov ebp, esp call L8$pb @@ -131,7 +131,7 @@ L8$pb: ret .p2align 4, 0x90 -__RNvNvCsiw6xRX1pmbi_15test_static_sel12get_same_sel22objc_static_workaround: +__RNvNvCs6BnsG4fGG5c_15test_static_sel12get_same_sel22objc_static_workaround: push ebp mov ebp, esp call L9$pb @@ -142,7 +142,7 @@ L9$pb: ret .p2align 4, 0x90 -__RNvNvCsiw6xRX1pmbi_15test_static_sel16get_common_twice22objc_static_workaround: +__RNvNvCs6BnsG4fGG5c_15test_static_sel16get_common_twice22objc_static_workaround: push ebp mov ebp, esp call L10$pb @@ -153,7 +153,7 @@ L10$pb: ret .p2align 4, 0x90 -__RNvNvCsiw6xRX1pmbi_15test_static_sel16get_common_twices_22objc_static_workaround: +__RNvNvCs6BnsG4fGG5c_15test_static_sel16get_common_twices_22objc_static_workaround: push ebp mov ebp, esp call L11$pb @@ -164,7 +164,7 @@ L11$pb: ret .p2align 4, 0x90 -__RNvNvCsiw6xRX1pmbi_15test_static_sel17get_different_sel22objc_static_workaround: +__RNvNvCs6BnsG4fGG5c_15test_static_sel17get_different_sel22objc_static_workaround: push ebp mov ebp, esp call L12$pb @@ -175,7 +175,7 @@ L12$pb: ret .p2align 4, 0x90 -__RNvNvCsiw6xRX1pmbi_15test_static_sel10unused_sel22objc_static_workaround: +__RNvNvCs6BnsG4fGG5c_15test_static_sel10unused_sel22objc_static_workaround: push ebp mov ebp, esp call L13$pb @@ -186,7 +186,7 @@ L13$pb: ret .p2align 4, 0x90 -__RNvNvCsiw6xRX1pmbi_15test_static_sel7use_fns22objc_static_workaround: +__RNvNvCs6BnsG4fGG5c_15test_static_sel7use_fns22objc_static_workaround: push ebp mov ebp, esp call L14$pb @@ -197,7 +197,7 @@ L14$pb: ret .p2align 4, 0x90 -__RNvNvCsiw6xRX1pmbi_15test_static_sel11use_in_loop22objc_static_workaround: +__RNvNvCs6BnsG4fGG5c_15test_static_sel11use_in_loop22objc_static_workaround: push ebp mov ebp, esp call L15$pb diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index 53e264919..3ee084be9 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -6,7 +6,7 @@ _get_sel: push rbp mov rbp, rsp pop rbp - jmp __RNvNvCsfPBiXXRyxlm_15test_static_sel7get_sel22objc_static_workaround + jmp __RNvNvCs3LjJa8BQyj0_15test_static_sel7get_sel22objc_static_workaround .globl _get_same_sel .p2align 4, 0x90 @@ -14,7 +14,7 @@ _get_same_sel: push rbp mov rbp, rsp pop rbp - jmp __RNvNvCsfPBiXXRyxlm_15test_static_sel12get_same_sel22objc_static_workaround + jmp __RNvNvCs3LjJa8BQyj0_15test_static_sel12get_same_sel22objc_static_workaround .globl _get_common_twice .p2align 4, 0x90 @@ -23,9 +23,9 @@ _get_common_twice: mov rbp, rsp push rbx push rax - call __RNvNvCsfPBiXXRyxlm_15test_static_sel16get_common_twice22objc_static_workaround + call __RNvNvCs3LjJa8BQyj0_15test_static_sel16get_common_twice22objc_static_workaround mov rbx, rax - call __RNvNvCsfPBiXXRyxlm_15test_static_sel16get_common_twices_22objc_static_workaround + call __RNvNvCs3LjJa8BQyj0_15test_static_sel16get_common_twices_22objc_static_workaround mov rdx, rax mov rax, rbx add rsp, 8 @@ -39,7 +39,7 @@ _get_different_sel: push rbp mov rbp, rsp pop rbp - jmp __RNvNvCsfPBiXXRyxlm_15test_static_sel17get_different_sel22objc_static_workaround + jmp __RNvNvCs3LjJa8BQyj0_15test_static_sel17get_different_sel22objc_static_workaround .globl _unused_sel .p2align 4, 0x90 @@ -47,7 +47,7 @@ _unused_sel: push rbp mov rbp, rsp pop rbp - jmp __RNvNvCsfPBiXXRyxlm_15test_static_sel10unused_sel22objc_static_workaround + jmp __RNvNvCs3LjJa8BQyj0_15test_static_sel10unused_sel22objc_static_workaround .globl _use_fns .p2align 4, 0x90 @@ -59,13 +59,13 @@ _use_fns: push r12 push rbx mov rbx, rdi - call __RNvNvCsfPBiXXRyxlm_15test_static_sel7get_sel22objc_static_workaround + call __RNvNvCs3LjJa8BQyj0_15test_static_sel7get_sel22objc_static_workaround mov r14, rax - call __RNvNvCsfPBiXXRyxlm_15test_static_sel12get_same_sel22objc_static_workaround + call __RNvNvCs3LjJa8BQyj0_15test_static_sel12get_same_sel22objc_static_workaround mov r15, rax - call __RNvNvCsfPBiXXRyxlm_15test_static_sel17get_different_sel22objc_static_workaround + call __RNvNvCs3LjJa8BQyj0_15test_static_sel17get_different_sel22objc_static_workaround mov r12, rax - call __RNvNvCsfPBiXXRyxlm_15test_static_sel7use_fns22objc_static_workaround + call __RNvNvCs3LjJa8BQyj0_15test_static_sel7use_fns22objc_static_workaround mov qword ptr [rbx], r14 mov qword ptr [rbx + 8], r15 mov qword ptr [rbx + 16], r12 @@ -86,9 +86,9 @@ _use_same_twice: push r14 push rbx mov rbx, rdi - call __RNvNvCsfPBiXXRyxlm_15test_static_sel7get_sel22objc_static_workaround + call __RNvNvCs3LjJa8BQyj0_15test_static_sel7get_sel22objc_static_workaround mov r14, rax - call __RNvNvCsfPBiXXRyxlm_15test_static_sel7get_sel22objc_static_workaround + call __RNvNvCs3LjJa8BQyj0_15test_static_sel7get_sel22objc_static_workaround mov qword ptr [rbx], r14 mov qword ptr [rbx + 8], rax mov rax, rbx @@ -109,7 +109,7 @@ _use_in_loop: mov rbx, rdi .p2align 4, 0x90 LBB7_2: - call __RNvNvCsfPBiXXRyxlm_15test_static_sel11use_in_loop22objc_static_workaround + call __RNvNvCs3LjJa8BQyj0_15test_static_sel11use_in_loop22objc_static_workaround dec rbx jne LBB7_2 LBB7_3: @@ -119,7 +119,7 @@ LBB7_3: ret .p2align 4, 0x90 -__RNvNvCsfPBiXXRyxlm_15test_static_sel7get_sel22objc_static_workaround: +__RNvNvCs3LjJa8BQyj0_15test_static_sel7get_sel22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9] @@ -127,7 +127,7 @@ __RNvNvCsfPBiXXRyxlm_15test_static_sel7get_sel22objc_static_workaround: ret .p2align 4, 0x90 -__RNvNvCsfPBiXXRyxlm_15test_static_sel12get_same_sel22objc_static_workaround: +__RNvNvCs3LjJa8BQyj0_15test_static_sel12get_same_sel22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35] @@ -135,7 +135,7 @@ __RNvNvCsfPBiXXRyxlm_15test_static_sel12get_same_sel22objc_static_workaround: ret .p2align 4, 0x90 -__RNvNvCsfPBiXXRyxlm_15test_static_sel16get_common_twice22objc_static_workaround: +__RNvNvCs3LjJa8BQyj0_15test_static_sel16get_common_twice22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77] @@ -143,7 +143,7 @@ __RNvNvCsfPBiXXRyxlm_15test_static_sel16get_common_twice22objc_static_workaround ret .p2align 4, 0x90 -__RNvNvCsfPBiXXRyxlm_15test_static_sel16get_common_twices_22objc_static_workaround: +__RNvNvCs3LjJa8BQyj0_15test_static_sel16get_common_twices_22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7] @@ -151,7 +151,7 @@ __RNvNvCsfPBiXXRyxlm_15test_static_sel16get_common_twices_22objc_static_workarou ret .p2align 4, 0x90 -__RNvNvCsfPBiXXRyxlm_15test_static_sel17get_different_sel22objc_static_workaround: +__RNvNvCs3LjJa8BQyj0_15test_static_sel17get_different_sel22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0] @@ -159,7 +159,7 @@ __RNvNvCsfPBiXXRyxlm_15test_static_sel17get_different_sel22objc_static_workaroun ret .p2align 4, 0x90 -__RNvNvCsfPBiXXRyxlm_15test_static_sel10unused_sel22objc_static_workaround: +__RNvNvCs3LjJa8BQyj0_15test_static_sel10unused_sel22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25] @@ -167,7 +167,7 @@ __RNvNvCsfPBiXXRyxlm_15test_static_sel10unused_sel22objc_static_workaround: ret .p2align 4, 0x90 -__RNvNvCsfPBiXXRyxlm_15test_static_sel7use_fns22objc_static_workaround: +__RNvNvCs3LjJa8BQyj0_15test_static_sel7use_fns22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99] @@ -175,7 +175,7 @@ __RNvNvCsfPBiXXRyxlm_15test_static_sel7use_fns22objc_static_workaround: ret .p2align 4, 0x90 -__RNvNvCsfPBiXXRyxlm_15test_static_sel11use_in_loop22objc_static_workaround: +__RNvNvCs3LjJa8BQyj0_15test_static_sel11use_in_loop22objc_static_workaround: push rbp mov rbp, rsp mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b] From 53611a14a5701d3447aecd02068b81fb33719517 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Tue, 21 Jun 2022 19:35:03 +0200 Subject: [PATCH 19/30] Add "unstable-static-sel-inlined" feature flag --- objc2/Cargo.toml | 1 + objc2/src/macros.rs | 60 ++++++-- .../test_msg_send_static_sel/Cargo.toml | 2 +- .../expected/apple-aarch64.s | 129 +++++----------- .../expected/apple-armv7.s | 142 ++++++----------- .../expected/apple-armv7s.s | 145 ++++++------------ .../expected/apple-x86.s | 139 ++++------------- .../expected/apple-x86_64.s | 105 ++----------- 8 files changed, 213 insertions(+), 510 deletions(-) diff --git a/objc2/Cargo.toml b/objc2/Cargo.toml index 1a553a95f..16bf53df8 100644 --- a/objc2/Cargo.toml +++ b/objc2/Cargo.toml @@ -46,6 +46,7 @@ malloc = ["malloc_buf"] # Please test it, and report any issues you may find: # https://github.com/madsmtm/objc2/issues/new unstable-static-sel = ["objc2-proc-macros"] +unstable-static-sel-inlined = ["unstable-static-sel"] # Uses nightly features to make AutoreleasePool zero-cost even in debug mode unstable-autoreleasesafe = [] diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index 7ca24b3dd..ec016763e 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -42,16 +42,25 @@ macro_rules! class { /// Objective-C. This calls [`Sel::register`] internally. The result is cached /// for efficiency. /// -/// If the `"unstable-static-sel"` feature is enabled, this will emit special -/// statics that will be replaced by the dynamic linker (dyld) when the -/// program starts up - in exactly the same manner as Objective-C does. This -/// should be significantly faster (and allow better native debugging), +/// Non-ascii identifiers are ill-tested, if supported at all. +/// +/// If the experimental `"unstable-static-sel"` feature is enabled, this will +/// emit special statics that will be replaced by the dynamic linker (dyld) +/// when the program starts up - in exactly the same manner as normal +/// Objective-C code does. +/// This should be significantly faster (and allow better native debugging), /// however due to the Rust compilation model, and since we don't have /// low-level control over it, it is currently unlikely that this will work -/// correctly in all cases. See the source code and [rust-lang/rust#53929] for -/// more info. +/// correctly in all cases. +/// See the source code and [rust-lang/rust#53929] for more info. /// -/// Non-ascii identifiers are ill-tested, if supported at all. +/// Concretely, this may fail at link-time (likely), at dynamic link-time/just +/// before the program is run, or possibly also at runtime, causing UB. +/// +/// The `"unstable-static-sel-inlined"` feature is the even more extreme +/// version of this - it yields the best performance and is closest to real +/// Objective-C code, but probably won't work unless your code and its +/// inlining is written in a very certain way. /// /// [`Sel::register`]: crate::runtime::Sel::register /// [rust-lang/rust#53929]: https://github.com/rust-lang/rust/issues/53929 @@ -140,9 +149,8 @@ macro_rules! __sel_inner { #[doc(hidden)] #[macro_export] -#[cfg(feature = "unstable-static-sel")] -macro_rules! __sel_inner { - ($data:ident, $($idents:ident)+) => {{ +macro_rules! __sel_inner_statics { + ($data:ident, $($idents:ident)+) => { #[link_section = "__DATA,__objc_imageinfo,regular,no_dead_strip"] #[export_name = concat!("\x01L_OBJC_IMAGE_INFO_", $crate::__macro_helpers::__hash_idents!($($idents)+))] #[used] // Make sure this reaches the linker @@ -175,6 +183,18 @@ macro_rules! __sel_inner { static mut REF: $crate::runtime::Sel = unsafe { $crate::runtime::Sel::from_ptr(NAME_DATA.as_ptr().cast()) }; + }; +} + +#[doc(hidden)] +#[macro_export] +#[cfg(all( + feature = "unstable-static-sel", + not(feature = "unstable-static-sel-inlined") +))] +macro_rules! __sel_inner { + ($data:ident, $($idents:ident)+) => {{ + $crate::__sel_inner_statics!($data, $($idents)+); /// HACK: Wrap the access in a non-generic, `#[inline(never)]` /// function to make the compiler group it into the same codegen unit @@ -185,9 +205,10 @@ macro_rules! __sel_inner { /// #[inline(never)] fn objc_static_workaround() -> $crate::runtime::Sel { - // The actual selector is replaced by dyld when the program is - // loaded, so we need to use a volatile read to prevent the - // optimizer from thinking it can circumvent the read through REF. + // SAFETY: The actual selector is replaced by dyld when the + // program is loaded, so we need to use a volatile read to prevent + // the optimizer from thinking it can circumvent the read through + // REF. // // Clang avoids this by marking `REF` with LLVM's // `externally_initialized`. @@ -198,6 +219,19 @@ macro_rules! __sel_inner { }}; } +#[doc(hidden)] +#[macro_export] +#[cfg(all(feature = "unstable-static-sel-inlined"))] +macro_rules! __sel_inner { + ($data:ident, $($idents:ident)+) => {{ + $crate::__sel_inner_statics!($data, $($idents)+); + + #[allow(unused_unsafe)] + // SAFETY: See above + unsafe { $crate::__macro_helpers::read_volatile(&REF) } + }}; +} + /// Send a message to an object or class. /// /// This is wildly `unsafe`, even more so than sending messages in diff --git a/tests/assembly/test_msg_send_static_sel/Cargo.toml b/tests/assembly/test_msg_send_static_sel/Cargo.toml index 28548979e..d9cbb59bf 100644 --- a/tests/assembly/test_msg_send_static_sel/Cargo.toml +++ b/tests/assembly/test_msg_send_static_sel/Cargo.toml @@ -21,4 +21,4 @@ gnustep-2-0 = ["gnustep-1-9", "objc2/gnustep-2-0"] gnustep-2-1 = ["gnustep-2-0", "objc2/gnustep-2-1"] # Hack to prevent the feature flag from being enabled in the entire project -assembly-features = ["objc2/unstable-static-sel"] +assembly-features = ["objc2/unstable-static-sel-inlined"] diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index 7128458af..26ce65c5e 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -2,16 +2,12 @@ .globl _handle_with_sel .p2align 2 _handle_with_sel: - stp x20, x19, [sp, #-32]! - stp x29, x30, [sp, #16] - add x29, sp, #16 - mov x19, x0 - bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround - mov x1, x0 - mov x0, x19 - ldp x29, x30, [sp, #16] - ldp x20, x19, [sp], #32 +Lloh0: + adrp x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGE +Lloh1: + ldr x1, [x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGEOFF] b _objc_msgSend + .loh AdrpLdr Lloh0, Lloh1 .globl _handle_alloc_init .p2align 2 @@ -19,17 +15,22 @@ _handle_alloc_init: stp x20, x19, [sp, #-32]! stp x29, x30, [sp, #16] add x29, sp, #16 - mov x19, x0 - bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround - mov x20, x0 - bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround - mov x1, x0 - mov x0, x19 +Lloh2: + adrp x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGE +Lloh3: + ldr x19, [x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGEOFF] +Lloh4: + adrp x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGE +Lloh5: + ldr x1, [x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGEOFF] bl _objc_msgSend - mov x1, x20 + mov x1, x19 ldp x29, x30, [sp, #16] ldp x20, x19, [sp], #32 b _objc_msgSend + .loh AdrpLdr Lloh4, Lloh5 + .loh AdrpAdrp Lloh2, Lloh4 + .loh AdrpLdr Lloh2, Lloh3 .globl _use_generic .p2align 2 @@ -38,92 +39,32 @@ _use_generic: stp x29, x30, [sp, #16] add x29, sp, #16 mov x19, x0 - bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel11use_generic22objc_static_workaround - mov x20, x0 - bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel7generic22objc_static_workaround - mov x2, x0 - mov x0, x19 - mov x1, x20 +Lloh6: + adrp x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGE +Lloh7: + ldr x1, [x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGEOFF] + adrp x20, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGE + ldr x2, [x20, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGEOFF] bl _objc_msgSend - bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel11use_generics_22objc_static_workaround - mov x20, x0 - bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel7generic22objc_static_workaround - mov x2, x0 +Lloh8: + adrp x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGE +Lloh9: + ldr x1, [x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGEOFF] + ldr x2, [x20, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGEOFF] mov x0, x19 - mov x1, x20 bl _objc_msgSend - bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel11use_generics0_22objc_static_workaround - mov x20, x0 - bl __RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel7generic22objc_static_workaround - mov x2, x0 +Lloh10: + adrp x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGE +Lloh11: + ldr x1, [x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGEOFF] + ldr x2, [x20, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGEOFF] mov x0, x19 - mov x1, x20 ldp x29, x30, [sp, #16] ldp x20, x19, [sp], #32 b _objc_msgSend - - .p2align 2 -__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: -Lloh0: - adrp x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGE -Lloh1: - ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_40f5b12005284286@PAGEOFF] - ret - .loh AdrpLdr Lloh0, Lloh1 - - .p2align 2 -__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: -Lloh2: - adrp x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGE -Lloh3: - ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9@PAGEOFF] - ret - .loh AdrpLdr Lloh2, Lloh3 - - .p2align 2 -__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: -Lloh4: - adrp x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGE -Lloh5: - ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9@PAGEOFF] - ret - .loh AdrpLdr Lloh4, Lloh5 - - .p2align 2 -__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel7generic22objc_static_workaround: -Lloh6: - adrp x8, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGE -Lloh7: - ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_31f63858e271db32@PAGEOFF] - ret - .loh AdrpLdr Lloh6, Lloh7 - - .p2align 2 -__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel11use_generic22objc_static_workaround: -Lloh8: - adrp x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGE -Lloh9: - ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4@PAGEOFF] - ret - .loh AdrpLdr Lloh8, Lloh9 - - .p2align 2 -__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel11use_generics_22objc_static_workaround: -Lloh10: - adrp x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGE -Lloh11: - ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1@PAGEOFF] - ret .loh AdrpLdr Lloh10, Lloh11 - - .p2align 2 -__RNvNvCsi3N3LCXu3eG_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: -Lloh12: - adrp x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGE -Lloh13: - ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720@PAGEOFF] - ret - .loh AdrpLdr Lloh12, Lloh13 + .loh AdrpLdr Lloh8, Lloh9 + .loh AdrpLdr Lloh6, Lloh7 .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_40f5b12005284286 diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index a2206243e..31fd13928 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -4,125 +4,69 @@ .p2align 2 .code 32 _handle_with_sel: - push {r4, r7, lr} - add r7, sp, #4 - mov r4, r0 - bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround - mov r1, r0 - mov r0, r4 - pop {r4, r7, lr} + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC0_0+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC0_0+8)) +LPC0_0: + ldr r1, [pc, r1] b _objc_msgSend .globl _handle_alloc_init .p2align 2 .code 32 _handle_alloc_init: - push {r4, r5, r7, lr} - add r7, sp, #8 - mov r4, r0 - bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround - mov r5, r0 - bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround - mov r1, r0 - mov r0, r4 + push {r4, r7, lr} + add r7, sp, #4 + movw r4, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC1_0+8)) + movt r4, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC1_0+8)) +LPC1_0: + ldr r4, [pc, r4] + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC1_1+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC1_1+8)) +LPC1_1: + ldr r1, [pc, r1] bl _objc_msgSend - mov r1, r5 - pop {r4, r5, r7, lr} + mov r1, r4 + pop {r4, r7, lr} b _objc_msgSend .globl _use_generic .p2align 2 .code 32 _use_generic: - push {r4, r5, r7, lr} - add r7, sp, #8 + push {r4, r7, lr} + add r7, sp, #4 + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC2_0+8)) mov r4, r0 - bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel11use_generic22objc_static_workaround - mov r5, r0 - bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel7generic22objc_static_workaround - mov r2, r0 - mov r0, r4 - mov r1, r5 + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC2_0+8)) +LPC2_0: + ldr r1, [pc, r1] + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_1+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_1+8)) +LPC2_1: + ldr r2, [pc, r2] bl _objc_msgSend - bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel11use_generics_22objc_static_workaround - mov r5, r0 - bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel7generic22objc_static_workaround - mov r2, r0 + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC2_2+8)) mov r0, r4 - mov r1, r5 + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC2_2+8)) +LPC2_2: + ldr r1, [pc, r1] + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_3+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_3+8)) +LPC2_3: + ldr r2, [pc, r2] bl _objc_msgSend - bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel11use_generics0_22objc_static_workaround - mov r5, r0 - bl __RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel7generic22objc_static_workaround - mov r2, r0 + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC2_4+8)) mov r0, r4 - mov r1, r5 - pop {r4, r5, r7, lr} + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC2_4+8)) +LPC2_4: + ldr r1, [pc, r1] + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_5+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_5+8)) +LPC2_5: + ldr r2, [pc, r2] + pop {r4, r7, lr} b _objc_msgSend - .p2align 2 - .code 32 -__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) -LPC3_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) -LPC4_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) -LPC5_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel7generic22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) -LPC6_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel11use_generic22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) -LPC7_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel11use_generics_22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) -LPC8_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCs7mRPQtePJS0_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) -LPC9_0: - ldr r0, [pc, r0] - bx lr - .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_40f5b12005284286 .p2align 2 diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index 9f3723159..3109243f1 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -4,124 +4,71 @@ .p2align 2 .code 32 _handle_with_sel: - push {r4, r7, lr} - add r7, sp, #4 - mov r4, r0 - bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround - mov r1, r0 - mov r0, r4 + push {r7, lr} + mov r7, sp + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC0_0+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC0_0+8)) +LPC0_0: + ldr r1, [pc, r1] bl _objc_msgSend - pop {r4, r7, pc} + pop {r7, pc} .globl _handle_alloc_init .p2align 2 .code 32 _handle_alloc_init: - push {r4, r5, r7, lr} - add r7, sp, #8 - mov r4, r0 - bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround - mov r5, r0 - bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround - mov r1, r0 - mov r0, r4 + push {r4, r7, lr} + add r7, sp, #4 + movw r4, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC1_0+8)) + movt r4, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC1_0+8)) +LPC1_0: + ldr r4, [pc, r4] + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC1_1+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC1_1+8)) +LPC1_1: + ldr r1, [pc, r1] bl _objc_msgSend - mov r1, r5 + mov r1, r4 bl _objc_msgSend - pop {r4, r5, r7, pc} + pop {r4, r7, pc} .globl _use_generic .p2align 2 .code 32 _use_generic: - push {r4, r5, r7, lr} - add r7, sp, #8 + push {r4, r7, lr} + add r7, sp, #4 + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC2_0+8)) mov r4, r0 - bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel11use_generic22objc_static_workaround - mov r5, r0 - bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel7generic22objc_static_workaround - mov r2, r0 - mov r0, r4 - mov r1, r5 + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC2_0+8)) +LPC2_0: + ldr r1, [pc, r1] + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_1+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_1+8)) +LPC2_1: + ldr r2, [pc, r2] bl _objc_msgSend - bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel11use_generics_22objc_static_workaround - mov r5, r0 - bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel7generic22objc_static_workaround - mov r2, r0 + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC2_2+8)) mov r0, r4 - mov r1, r5 + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC2_2+8)) +LPC2_2: + ldr r1, [pc, r1] + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_3+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_3+8)) +LPC2_3: + ldr r2, [pc, r2] bl _objc_msgSend - bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel11use_generics0_22objc_static_workaround - mov r5, r0 - bl __RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel7generic22objc_static_workaround - mov r2, r0 + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC2_4+8)) mov r0, r4 - mov r1, r5 + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC2_4+8)) +LPC2_4: + ldr r1, [pc, r1] + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_5+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_5+8)) +LPC2_5: + ldr r2, [pc, r2] bl _objc_msgSend - pop {r4, r5, r7, pc} - - .p2align 2 - .code 32 -__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-(LPC3_0+8)) -LPC3_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC4_0+8)) -LPC4_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC5_0+8)) -LPC5_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel7generic22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC6_0+8)) -LPC6_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel11use_generic22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC7_0+8)) -LPC7_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel11use_generics_22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC8_0+8)) -LPC8_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCslIB0vZTHXhg_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC9_0+8)) -LPC9_0: - ldr r0, [pc, r0] - bx lr + pop {r4, r7, pc} .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_40f5b12005284286 diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index cf129e371..eb6e891d5 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -5,16 +5,15 @@ _handle_with_sel: push ebp mov ebp, esp - push esi - push eax - mov esi, dword ptr [ebp + 8] - call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround sub esp, 8 - push eax - push esi + call L0$pb +L0$pb: + pop eax + sub esp, 8 + push dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-L0$pb] + push dword ptr [ebp + 8] call _objc_msgSend - add esp, 20 - pop esi + add esp, 24 pop ebp ret @@ -23,23 +22,22 @@ _handle_with_sel: _handle_alloc_init: push ebp mov ebp, esp - push edi push esi - mov edi, dword ptr [ebp + 8] - call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround - mov esi, eax - call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround - sub esp, 8 push eax - push edi + call L1$pb +L1$pb: + pop eax + mov esi, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-L1$pb] + sub esp, 8 + push dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-L1$pb] + push dword ptr [ebp + 8] call _objc_msgSend add esp, 8 push esi push eax call _objc_msgSend - add esp, 16 + add esp, 20 pop esi - pop edi pop ebp ret @@ -50,31 +48,23 @@ _use_generic: mov ebp, esp push edi push esi + call L2$pb +L2$pb: + pop esi mov edi, dword ptr [ebp + 8] - call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel11use_generic22objc_static_workaround - mov esi, eax - call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel7generic22objc_static_workaround sub esp, 4 - push eax - push esi + push dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-L2$pb] + push dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-L2$pb] push edi call _objc_msgSend - add esp, 16 - call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel11use_generics_22objc_static_workaround - mov esi, eax - call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel7generic22objc_static_workaround - sub esp, 4 - push eax - push esi + add esp, 12 + push dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-L2$pb] + push dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-L2$pb] push edi call _objc_msgSend - add esp, 16 - call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel11use_generics0_22objc_static_workaround - mov esi, eax - call __RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel7generic22objc_static_workaround - sub esp, 4 - push eax - push esi + add esp, 12 + push dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-L2$pb] + push dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-L2$pb] push edi call _objc_msgSend add esp, 16 @@ -83,83 +73,6 @@ _use_generic: pop ebp ret - .p2align 4, 0x90 -__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: - push ebp - mov ebp, esp - call L3$pb -L3$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-L3$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: - push ebp - mov ebp, esp - call L4$pb -L4$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-L4$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: - push ebp - mov ebp, esp - call L5$pb -L5$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-L5$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel7generic22objc_static_workaround: - push ebp - mov ebp, esp - call L6$pb -L6$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-L6$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel11use_generic22objc_static_workaround: - push ebp - mov ebp, esp - call L7$pb -L7$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-L7$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel11use_generics_22objc_static_workaround: - push ebp - mov ebp, esp - call L8$pb -L8$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-L8$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs5uS3pY1EMjp_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: - push ebp - mov ebp, esp - call L9$pb -L9$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-L9$pb] - pop ebp - ret - .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_40f5b12005284286 .p2align 2 diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index 0b2a71aca..398d5dc14 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -5,14 +5,7 @@ _handle_with_sel: push rbp mov rbp, rsp - push rbx - push rax - mov rbx, rdi - call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround - mov rdi, rbx - mov rsi, rax - add rsp, 8 - pop rbx + mov rsi, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286] pop rbp jmp _objc_msgSend @@ -21,19 +14,15 @@ _handle_with_sel: _handle_alloc_init: push rbp mov rbp, rsp - push r14 push rbx - mov rbx, rdi - call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround - mov r14, rax - call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround - mov rdi, rbx - mov rsi, rax + push rax + mov rbx, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9] + mov rsi, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9] call _objc_msgSend mov rdi, rax - mov rsi, r14 + mov rsi, rbx + add rsp, 8 pop rbx - pop r14 pop rbp jmp _objc_msgSend @@ -42,90 +31,24 @@ _handle_alloc_init: _use_generic: push rbp mov rbp, rsp - push r14 push rbx + push rax mov rbx, rdi - call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel11use_generic22objc_static_workaround - mov r14, rax - call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel7generic22objc_static_workaround - mov rdi, rbx - mov rsi, r14 - mov rdx, rax + mov rsi, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4] + mov rdx, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32] call _objc_msgSend - call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel11use_generics_22objc_static_workaround - mov r14, rax - call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel7generic22objc_static_workaround + mov rsi, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1] + mov rdx, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32] mov rdi, rbx - mov rsi, r14 - mov rdx, rax call _objc_msgSend - call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel11use_generics0_22objc_static_workaround - mov r14, rax - call __RNvNvCshotFXcDShqK_24test_msg_send_static_sel7generic22objc_static_workaround + mov rsi, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720] + mov rdx, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32] mov rdi, rbx - mov rsi, r14 - mov rdx, rax + add rsp, 8 pop rbx - pop r14 pop rbp jmp _objc_msgSend - .p2align 4, 0x90 -__RNvNvCshotFXcDShqK_24test_msg_send_static_sel15handle_with_sel22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286] - pop rbp - ret - - .p2align 4, 0x90 -__RNvNvCshotFXcDShqK_24test_msg_send_static_sel17handle_alloc_init22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9] - pop rbp - ret - - .p2align 4, 0x90 -__RNvNvCshotFXcDShqK_24test_msg_send_static_sel17handle_alloc_inits_22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9] - pop rbp - ret - - .p2align 4, 0x90 -__RNvNvCshotFXcDShqK_24test_msg_send_static_sel7generic22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32] - pop rbp - ret - - .p2align 4, 0x90 -__RNvNvCshotFXcDShqK_24test_msg_send_static_sel11use_generic22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4] - pop rbp - ret - - .p2align 4, 0x90 -__RNvNvCshotFXcDShqK_24test_msg_send_static_sel11use_generics_22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1] - pop rbp - ret - - .p2align 4, 0x90 -__RNvNvCshotFXcDShqK_24test_msg_send_static_sel11use_generics0_22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720] - pop rbp - ret - .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_40f5b12005284286 .p2align 2 From c338496d36450c95df654a6cafc5ff54aa83f31f Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Tue, 21 Jun 2022 23:44:20 +0200 Subject: [PATCH 20/30] Refactor image info creation --- objc-sys/src/image_info.rs | 41 +++++++++++++++++++ objc-sys/src/lib.rs | 2 + objc2/src/lib.rs | 10 ----- objc2/src/macros.rs | 7 +++- objc2/tests/use_macros.rs | 3 -- .../expected/apple-aarch64.s | 14 +++---- .../expected/apple-armv7.s | 14 +++---- .../expected/apple-armv7s.s | 14 +++---- .../expected/apple-x86.s | 14 +++---- .../expected/apple-x86_64.s | 14 +++---- .../test_static_sel/expected/apple-aarch64.s | 16 ++++---- .../test_static_sel/expected/apple-armv7.s | 16 ++++---- .../test_static_sel/expected/apple-armv7s.s | 16 ++++---- .../test_static_sel/expected/apple-x86.s | 16 ++++---- .../test_static_sel/expected/apple-x86_64.s | 16 ++++---- 15 files changed, 124 insertions(+), 89 deletions(-) create mode 100644 objc-sys/src/image_info.rs diff --git a/objc-sys/src/image_info.rs b/objc-sys/src/image_info.rs new file mode 100644 index 000000000..170572908 --- /dev/null +++ b/objc-sys/src/image_info.rs @@ -0,0 +1,41 @@ +#[repr(C)] +#[doc(hidden)] // Private for now +pub struct __ImageInfo { + // These are not actually `unsigned int`, even though the docs say so + /// The version of the image info struct. + version: u32, + flags: u32, +} + +#[allow(unused)] +impl __ImageInfo { + /// Unused + const FIX_AND_CONTINUE: u32 = 1 << 0; + const SUPPORTS_GARBAGE_COLLECTED: u32 = 1 << 1; + const REQUIRES_GARBAGE_COLLECTION: u32 = 1 << 2; + const OPTIMIZED_BY_DYLD: u32 = 1 << 3; // TODO + /// Unused + const CORRECTED_SYNTHESIZE: u32 = 1 << 4; + /// Whether we're compiling this to run on a simulator. + const IMAGE_IS_SIMULATED: u32 = 1 << 5; + /// Whether we are generating class properties. + const CLASS_PROPERTIES: u32 = 1 << 6; + const DYLD_PREOPTIMIZED: u32 = 1 << 7; + + const SWIFT_ABI_VERSION_SHIFT: u32 = 8; + const SWIFT_ABI_VERSION_MASK: u32 = 0xff << Self::SWIFT_ABI_VERSION_SHIFT; + const SWIFT_MINOR_VERSION_SHIFT: u32 = 16; + const SWIFT_MINOR_VERSION_MASK: u32 = 0xff << Self::SWIFT_MINOR_VERSION_SHIFT; + const SWIFT_MAJOR_VERSION_SHIFT: u32 = 24; + const SWIFT_MAJOR_VERSION_MASK: u32 = 0xff << Self::SWIFT_MAJOR_VERSION_SHIFT; + + /// Fetches the image info for the current runtime + target combination + #[inline] + pub const fn system() -> Self { + // We don't currently do anything relating to class properties, but + // let's just mimic what Clang does! + let mut flags = Self::CLASS_PROPERTIES; + + Self { version: 0, flags } + } +} diff --git a/objc-sys/src/lib.rs b/objc-sys/src/lib.rs index dfa90880d..16dab4b6b 100644 --- a/objc-sys/src/lib.rs +++ b/objc-sys/src/lib.rs @@ -100,6 +100,7 @@ mod class; mod constants; mod exception; +mod image_info; mod message; mod method; mod object; @@ -113,6 +114,7 @@ mod various; pub use class::*; pub use constants::*; pub use exception::*; +pub use image_info::*; pub use message::*; pub use method::*; pub use object::*; diff --git a/objc2/src/lib.rs b/objc2/src/lib.rs index d53090cd0..ad14b3b71 100644 --- a/objc2/src/lib.rs +++ b/objc2/src/lib.rs @@ -200,16 +200,6 @@ pub use crate::cache::CachedSel as __CachedSel; #[macro_use] mod macros; -#[doc(hidden)] -pub fn image_info() { - #[link_section = "__DATA,__objc_imageinfo,regular,no_dead_strip"] - #[used] - static _IMAGE_INFO: [u32; 2] = [ - 0, // Version - 64, // Flags - ]; -} - mod bool; mod cache; pub mod declare; diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index ec016763e..72186b695 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -151,10 +151,15 @@ macro_rules! __sel_inner { #[macro_export] macro_rules! __sel_inner_statics { ($data:ident, $($idents:ident)+) => { + /// We always emit the image info tag, since we need it to: + /// - End up in the same codegen unit as the other statics below. + /// - End up in the final binary so it can be read by dyld. + /// + /// Unfortunately however, this leads to duplicated tags. #[link_section = "__DATA,__objc_imageinfo,regular,no_dead_strip"] #[export_name = concat!("\x01L_OBJC_IMAGE_INFO_", $crate::__macro_helpers::__hash_idents!($($idents)+))] #[used] // Make sure this reaches the linker - static _IMAGE_TAG: [u32; 2] = [0, 0]; + static _IMAGE_INFO: $crate::ffi::__ImageInfo = $crate::ffi::__ImageInfo::system(); const X: &[u8] = $data.as_bytes(); diff --git a/objc2/tests/use_macros.rs b/objc2/tests/use_macros.rs index e60b73ec0..b58ebe190 100644 --- a/objc2/tests/use_macros.rs +++ b/objc2/tests/use_macros.rs @@ -9,9 +9,6 @@ fn ensure_linkage() { #[test] fn use_class_and_msg_send() { - // TEMPORARY! - objc2::image_info(); - unsafe { let cls = class!(NSObject); let obj: *mut Object = msg_send![cls, new]; diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index 26ce65c5e..319be1a0f 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -70,7 +70,7 @@ Lloh11: .globl L_OBJC_IMAGE_INFO_40f5b12005284286 .p2align 2 L_OBJC_IMAGE_INFO_40f5b12005284286: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 @@ -87,7 +87,7 @@ L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 .p2align 2 L_OBJC_IMAGE_INFO_904c14aa63c4eec9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 @@ -104,7 +104,7 @@ L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 .p2align 2 L_OBJC_IMAGE_INFO_b1ab35d3713395f9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 @@ -121,7 +121,7 @@ L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: .globl L_OBJC_IMAGE_INFO_31f63858e271db32 .p2align 2 L_OBJC_IMAGE_INFO_31f63858e271db32: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 @@ -138,7 +138,7 @@ L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 .p2align 2 L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 @@ -155,7 +155,7 @@ L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 .p2align 2 L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 @@ -172,7 +172,7 @@ L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 .p2align 2 L_OBJC_IMAGE_INFO_8e0840c6b39b7720: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index 31fd13928..f13fc577c 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -71,7 +71,7 @@ LPC2_5: .globl L_OBJC_IMAGE_INFO_40f5b12005284286 .p2align 2 L_OBJC_IMAGE_INFO_40f5b12005284286: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 @@ -88,7 +88,7 @@ L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 .p2align 2 L_OBJC_IMAGE_INFO_904c14aa63c4eec9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 @@ -105,7 +105,7 @@ L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 .p2align 2 L_OBJC_IMAGE_INFO_b1ab35d3713395f9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 @@ -122,7 +122,7 @@ L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: .globl L_OBJC_IMAGE_INFO_31f63858e271db32 .p2align 2 L_OBJC_IMAGE_INFO_31f63858e271db32: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 @@ -139,7 +139,7 @@ L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 .p2align 2 L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 @@ -156,7 +156,7 @@ L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 .p2align 2 L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 @@ -173,7 +173,7 @@ L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 .p2align 2 L_OBJC_IMAGE_INFO_8e0840c6b39b7720: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index 3109243f1..4aa728c06 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -74,7 +74,7 @@ LPC2_5: .globl L_OBJC_IMAGE_INFO_40f5b12005284286 .p2align 2 L_OBJC_IMAGE_INFO_40f5b12005284286: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 @@ -91,7 +91,7 @@ L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 .p2align 2 L_OBJC_IMAGE_INFO_904c14aa63c4eec9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 @@ -108,7 +108,7 @@ L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 .p2align 2 L_OBJC_IMAGE_INFO_b1ab35d3713395f9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 @@ -125,7 +125,7 @@ L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: .globl L_OBJC_IMAGE_INFO_31f63858e271db32 .p2align 2 L_OBJC_IMAGE_INFO_31f63858e271db32: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 @@ -142,7 +142,7 @@ L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 .p2align 2 L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 @@ -159,7 +159,7 @@ L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 .p2align 2 L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 @@ -176,7 +176,7 @@ L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 .p2align 2 L_OBJC_IMAGE_INFO_8e0840c6b39b7720: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index eb6e891d5..b674c4859 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -77,7 +77,7 @@ L2$pb: .globl L_OBJC_IMAGE_INFO_40f5b12005284286 .p2align 2 L_OBJC_IMAGE_INFO_40f5b12005284286: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 @@ -94,7 +94,7 @@ L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 .p2align 2 L_OBJC_IMAGE_INFO_904c14aa63c4eec9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 @@ -111,7 +111,7 @@ L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 .p2align 2 L_OBJC_IMAGE_INFO_b1ab35d3713395f9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 @@ -128,7 +128,7 @@ L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: .globl L_OBJC_IMAGE_INFO_31f63858e271db32 .p2align 2 L_OBJC_IMAGE_INFO_31f63858e271db32: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 @@ -145,7 +145,7 @@ L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 .p2align 2 L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 @@ -162,7 +162,7 @@ L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 .p2align 2 L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 @@ -179,7 +179,7 @@ L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 .p2align 2 L_OBJC_IMAGE_INFO_8e0840c6b39b7720: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index 398d5dc14..4477745c6 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -53,7 +53,7 @@ _use_generic: .globl L_OBJC_IMAGE_INFO_40f5b12005284286 .p2align 2 L_OBJC_IMAGE_INFO_40f5b12005284286: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 @@ -70,7 +70,7 @@ L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 .p2align 2 L_OBJC_IMAGE_INFO_904c14aa63c4eec9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 @@ -87,7 +87,7 @@ L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 .p2align 2 L_OBJC_IMAGE_INFO_b1ab35d3713395f9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 @@ -104,7 +104,7 @@ L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: .globl L_OBJC_IMAGE_INFO_31f63858e271db32 .p2align 2 L_OBJC_IMAGE_INFO_31f63858e271db32: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 @@ -121,7 +121,7 @@ L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 .p2align 2 L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 @@ -138,7 +138,7 @@ L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 .p2align 2 L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 @@ -155,7 +155,7 @@ L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 .p2align 2 L_OBJC_IMAGE_INFO_8e0840c6b39b7720: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index 6f09b6257..466cdf1ea 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -164,7 +164,7 @@ Lloh15: .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 L_OBJC_IMAGE_INFO_68381ba894e318e9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 @@ -181,7 +181,7 @@ L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 .p2align 2 L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 @@ -198,7 +198,7 @@ L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 .p2align 2 L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 @@ -215,7 +215,7 @@ L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 .p2align 2 L_OBJC_IMAGE_INFO_33db9f67352fe9a7: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 @@ -232,7 +232,7 @@ L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 .p2align 2 L_OBJC_IMAGE_INFO_bb37877368f0b7a0: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 @@ -249,7 +249,7 @@ L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 .p2align 2 L_OBJC_IMAGE_INFO_2c505e110d181b25: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 @@ -266,7 +266,7 @@ L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 .p2align 2 L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 @@ -283,7 +283,7 @@ L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: .globl L_OBJC_IMAGE_INFO_9845965b987ed54b .p2align 2 L_OBJC_IMAGE_INFO_9845965b987ed54b: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index 39e93aca1..81b724ce5 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -167,7 +167,7 @@ LPC15_0: .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 L_OBJC_IMAGE_INFO_68381ba894e318e9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 @@ -184,7 +184,7 @@ L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 .p2align 2 L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 @@ -201,7 +201,7 @@ L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 .p2align 2 L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 @@ -218,7 +218,7 @@ L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 .p2align 2 L_OBJC_IMAGE_INFO_33db9f67352fe9a7: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 @@ -235,7 +235,7 @@ L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 .p2align 2 L_OBJC_IMAGE_INFO_bb37877368f0b7a0: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 @@ -252,7 +252,7 @@ L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 .p2align 2 L_OBJC_IMAGE_INFO_2c505e110d181b25: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 @@ -269,7 +269,7 @@ L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 .p2align 2 L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 @@ -286,7 +286,7 @@ L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: .globl L_OBJC_IMAGE_INFO_9845965b987ed54b .p2align 2 L_OBJC_IMAGE_INFO_9845965b987ed54b: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index 0f4d173d2..5e7495de6 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -179,7 +179,7 @@ LPC15_0: .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 L_OBJC_IMAGE_INFO_68381ba894e318e9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 @@ -196,7 +196,7 @@ L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 .p2align 2 L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 @@ -213,7 +213,7 @@ L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 .p2align 2 L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 @@ -230,7 +230,7 @@ L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 .p2align 2 L_OBJC_IMAGE_INFO_33db9f67352fe9a7: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 @@ -247,7 +247,7 @@ L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 .p2align 2 L_OBJC_IMAGE_INFO_bb37877368f0b7a0: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 @@ -264,7 +264,7 @@ L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 .p2align 2 L_OBJC_IMAGE_INFO_2c505e110d181b25: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 @@ -281,7 +281,7 @@ L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 .p2align 2 L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 @@ -298,7 +298,7 @@ L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: .globl L_OBJC_IMAGE_INFO_9845965b987ed54b .p2align 2 L_OBJC_IMAGE_INFO_9845965b987ed54b: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index 760e9ba92..b5428683e 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -211,7 +211,7 @@ L15$pb: .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 L_OBJC_IMAGE_INFO_68381ba894e318e9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 @@ -228,7 +228,7 @@ L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 .p2align 2 L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 @@ -245,7 +245,7 @@ L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 .p2align 2 L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 @@ -262,7 +262,7 @@ L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 .p2align 2 L_OBJC_IMAGE_INFO_33db9f67352fe9a7: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 @@ -279,7 +279,7 @@ L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 .p2align 2 L_OBJC_IMAGE_INFO_bb37877368f0b7a0: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 @@ -296,7 +296,7 @@ L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 .p2align 2 L_OBJC_IMAGE_INFO_2c505e110d181b25: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 @@ -313,7 +313,7 @@ L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 .p2align 2 L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 @@ -330,7 +330,7 @@ L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: .globl L_OBJC_IMAGE_INFO_9845965b987ed54b .p2align 2 L_OBJC_IMAGE_INFO_9845965b987ed54b: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index 3ee084be9..7daff72ed 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -186,7 +186,7 @@ __RNvNvCs3LjJa8BQyj0_15test_static_sel11use_in_loop22objc_static_workaround: .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 L_OBJC_IMAGE_INFO_68381ba894e318e9: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 @@ -203,7 +203,7 @@ L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 .p2align 2 L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 @@ -220,7 +220,7 @@ L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 .p2align 2 L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 @@ -237,7 +237,7 @@ L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 .p2align 2 L_OBJC_IMAGE_INFO_33db9f67352fe9a7: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 @@ -254,7 +254,7 @@ L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 .p2align 2 L_OBJC_IMAGE_INFO_bb37877368f0b7a0: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 @@ -271,7 +271,7 @@ L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 .p2align 2 L_OBJC_IMAGE_INFO_2c505e110d181b25: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 @@ -288,7 +288,7 @@ L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 .p2align 2 L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 @@ -305,7 +305,7 @@ L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: .globl L_OBJC_IMAGE_INFO_9845965b987ed54b .p2align 2 L_OBJC_IMAGE_INFO_9845965b987ed54b: - .space 8 + .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b From 9f7185be4d7d9019628dbdc44d3df4b31c7bf26f Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Tue, 21 Jun 2022 23:35:37 +0200 Subject: [PATCH 21/30] Fix image info on simulator targets --- objc-sys/build.rs | 18 +++++++++++++++++- objc-sys/src/image_info.rs | 4 ++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/objc-sys/build.rs b/objc-sys/build.rs index 814afdfd0..9255d0664 100644 --- a/objc-sys/build.rs +++ b/objc-sys/build.rs @@ -58,11 +58,27 @@ fn main() { // The script doesn't depend on our code println!("cargo:rerun-if-changed=build.rs"); + let target = env::var("TARGET").unwrap(); + // Used to figure out when BOOL should be i8 vs. bool - if env::var("TARGET").unwrap().ends_with("macabi") { + // Matches: + // aarch64-apple-ios-macabi + // x86_64-apple-ios-macabi + if target.ends_with("macabi") { println!("cargo:rustc-cfg=target_abi_macabi"); } + // Used to set correct image info in `objc2` + // Matches: + // aarch64-apple-ios-sim + // aarch64-apple-watchos-sim + // x86_64-apple-watchos-sim + // i386-apple-ios + // x86_64-apple-ios + if target.ends_with("sim") || target == "i386-apple-ios" || target == "x86_64-apple-ios" { + println!("cargo:rustc-cfg=target_simulator"); + } + // TODO: Figure out when to enable this // println!("cargo:rustc-cfg=libobjc2_strict_apple_compat"); diff --git a/objc-sys/src/image_info.rs b/objc-sys/src/image_info.rs index 170572908..aac24c3f4 100644 --- a/objc-sys/src/image_info.rs +++ b/objc-sys/src/image_info.rs @@ -36,6 +36,10 @@ impl __ImageInfo { // let's just mimic what Clang does! let mut flags = Self::CLASS_PROPERTIES; + if cfg!(target_simulator) { + flags |= Self::IMAGE_IS_SIMULATED; + } + Self { version: 0, flags } } } From 8decad44ab6b187ed01274e7757a5cad0342f2a1 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Wed, 22 Jun 2022 00:14:49 +0200 Subject: [PATCH 22/30] Add support for static selectors on 32bit macOS --- objc2/src/macros.rs | 66 ++++++++++++++++--- .../expected/apple-x86.s | 42 ++++++------ .../test_static_sel/expected/apple-x86.s | 48 +++++++------- 3 files changed, 101 insertions(+), 55 deletions(-) diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index 72186b695..37fa21736 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -149,14 +149,20 @@ macro_rules! __sel_inner { #[doc(hidden)] #[macro_export] -macro_rules! __sel_inner_statics { - ($data:ident, $($idents:ident)+) => { +macro_rules! __sel_inner_statics_apple_generic { + { + $image_info_section:literal; + $var_name_section:literal; + $selector_ref_section:literal; + $data:ident, + $($idents:ident)+ + } => { /// We always emit the image info tag, since we need it to: /// - End up in the same codegen unit as the other statics below. /// - End up in the final binary so it can be read by dyld. /// /// Unfortunately however, this leads to duplicated tags. - #[link_section = "__DATA,__objc_imageinfo,regular,no_dead_strip"] + #[link_section = $image_info_section] #[export_name = concat!("\x01L_OBJC_IMAGE_INFO_", $crate::__macro_helpers::__hash_idents!($($idents)+))] #[used] // Make sure this reaches the linker static _IMAGE_INFO: $crate::ffi::__ImageInfo = $crate::ffi::__ImageInfo::system(); @@ -166,7 +172,7 @@ macro_rules! __sel_inner_statics { /// Clang marks this with LLVM's `unnamed_addr`. /// See rust-lang/rust#18297 /// Should only be an optimization (?) - #[link_section = "__TEXT,__objc_methname,cstring_literals"] + #[link_section = $var_name_section] #[export_name = concat!("\x01L_OBJC_METH_VAR_NAME_", $crate::__macro_helpers::__hash_idents!($($idents)+))] static NAME_DATA: [u8; X.len()] = { // Convert the `&[u8]` slice to an array with known length, so @@ -182,8 +188,8 @@ macro_rules! __sel_inner_statics { /// Place the constant value in the correct section. /// - /// Clang uses `no_dead_strip` here for some reason? - #[link_section = "__DATA,__objc_selrefs,literal_pointers"] + /// Clang uses `no_dead_strip` in the link section for some reason? + #[link_section = $selector_ref_section] #[export_name = concat!("\x01L_OBJC_SELECTOR_REFERENCES_", $crate::__macro_helpers::__hash_idents!($($idents)+))] static mut REF: $crate::runtime::Sel = unsafe { $crate::runtime::Sel::from_ptr(NAME_DATA.as_ptr().cast()) @@ -191,6 +197,46 @@ macro_rules! __sel_inner_statics { }; } +#[doc(hidden)] +#[macro_export] +#[cfg(all(feature = "apple", not(all(target_os = "macos", target_arch = "x86"))))] +macro_rules! __sel_inner_statics { + ($($args:tt)*) => { + $crate::__sel_inner_statics_apple_generic! { + "__DATA,__objc_imageinfo,regular,no_dead_strip"; + "__TEXT,__objc_methname,cstring_literals"; + "__DATA,__objc_selrefs,literal_pointers"; + $($args)* + } + }; +} + +#[doc(hidden)] +#[macro_export] +#[cfg(all(feature = "apple", target_os = "macos", target_arch = "x86"))] +macro_rules! __sel_inner_statics { + ($($args:tt)*) => { + $crate::__sel_inner_statics_apple_generic! { + "__OBJC,__image_info,regular"; + "__TEXT,__cstring,cstring_literals"; + "__OBJC,__message_refs,literal_pointers"; + $($args)* + } + }; +} + +#[doc(hidden)] +#[macro_export] +#[cfg(not(feature = "apple"))] +macro_rules! __sel_inner_statics { + ($($args:tt)*) => { + // TODO + $crate::__macro_helpers::compile_error!( + "The `\"unstable-static-sel\"` feature is not yet supported on GNUStep!" + ) + }; +} + #[doc(hidden)] #[macro_export] #[cfg(all( @@ -198,8 +244,8 @@ macro_rules! __sel_inner_statics { not(feature = "unstable-static-sel-inlined") ))] macro_rules! __sel_inner { - ($data:ident, $($idents:ident)+) => {{ - $crate::__sel_inner_statics!($data, $($idents)+); + ($($args:tt)*) => {{ + $crate::__sel_inner_statics!($($args)*); /// HACK: Wrap the access in a non-generic, `#[inline(never)]` /// function to make the compiler group it into the same codegen unit @@ -228,8 +274,8 @@ macro_rules! __sel_inner { #[macro_export] #[cfg(all(feature = "unstable-static-sel-inlined"))] macro_rules! __sel_inner { - ($data:ident, $($idents:ident)+) => {{ - $crate::__sel_inner_statics!($data, $($idents)+); + ($($args:tt)*) => {{ + $crate::__sel_inner_statics!($($args)*); #[allow(unused_unsafe)] // SAFETY: See above diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index b674c4859..df264d604 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -73,120 +73,120 @@ L2$pb: pop ebp ret - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_40f5b12005284286 .p2align 2 L_OBJC_IMAGE_INFO_40f5b12005284286: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 L_OBJC_METH_VAR_NAME_40f5b12005284286: .asciz "someSelector" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 .p2align 2 L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: .long L_OBJC_METH_VAR_NAME_40f5b12005284286 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 .p2align 2 L_OBJC_IMAGE_INFO_904c14aa63c4eec9: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: .asciz "init" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: .long L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 .p2align 2 L_OBJC_IMAGE_INFO_b1ab35d3713395f9: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: .long L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_31f63858e271db32 .p2align 2 L_OBJC_IMAGE_INFO_31f63858e271db32: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 L_OBJC_METH_VAR_NAME_31f63858e271db32: .asciz "generic:selector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 .p2align 2 L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: .long L_OBJC_METH_VAR_NAME_31f63858e271db32 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 .p2align 2 L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 .p2align 2 L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: .long L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 .p2align 2 L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 .p2align 2 L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: .long L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 .p2align 2 L_OBJC_IMAGE_INFO_8e0840c6b39b7720: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 .p2align 2 L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index b5428683e..a33bf02d8 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -207,137 +207,137 @@ L15$pb: pop ebp ret - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 L_OBJC_IMAGE_INFO_68381ba894e318e9: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 L_OBJC_METH_VAR_NAME_68381ba894e318e9: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: .long L_OBJC_METH_VAR_NAME_68381ba894e318e9 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 .p2align 2 L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 .p2align 2 L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .long L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 .p2align 2 L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 .p2align 2 L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: .long L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 .p2align 2 L_OBJC_IMAGE_INFO_33db9f67352fe9a7: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 .p2align 2 L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: .long L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 .p2align 2 L_OBJC_IMAGE_INFO_bb37877368f0b7a0: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: .asciz "i:am:different:" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 .p2align 2 L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: .long L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 .p2align 2 L_OBJC_IMAGE_INFO_2c505e110d181b25: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 L_OBJC_METH_VAR_NAME_2c505e110d181b25: .asciz "unused" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 .p2align 2 L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: .long L_OBJC_METH_VAR_NAME_2c505e110d181b25 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 .p2align 2 L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: .asciz "fourthSel" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 .p2align 2 L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: .long L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 - .section __DATA,__objc_imageinfo,regular,no_dead_strip + .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_9845965b987ed54b .p2align 2 L_OBJC_IMAGE_INFO_9845965b987ed54b: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__objc_methname,cstring_literals + .section __TEXT,__cstring,cstring_literals .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b L_OBJC_METH_VAR_NAME_9845965b987ed54b: .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers + .section __OBJC,__message_refs,literal_pointers .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b .p2align 2 L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: From 61213adf487165db937fcd6f2974cf3175c01aba Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Wed, 22 Jun 2022 00:21:55 +0200 Subject: [PATCH 23/30] Emit `no_dead_strip` the same places that clang does Reverts ca065ab54805d7b4e8e231f6b6d23d2fac9c389d --- objc2/src/macros.rs | 10 +++++++--- .../expected/apple-aarch64.s | 14 +++++++------- .../expected/apple-armv7.s | 14 +++++++------- .../expected/apple-armv7s.s | 14 +++++++------- .../expected/apple-x86.s | 14 +++++++------- .../expected/apple-x86_64.s | 14 +++++++------- .../test_static_sel/expected/apple-aarch64.s | 16 ++++++++-------- .../test_static_sel/expected/apple-armv7.s | 16 ++++++++-------- .../test_static_sel/expected/apple-armv7s.s | 16 ++++++++-------- .../test_static_sel/expected/apple-x86.s | 16 ++++++++-------- .../test_static_sel/expected/apple-x86_64.s | 16 ++++++++-------- 11 files changed, 82 insertions(+), 78 deletions(-) diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index 37fa21736..2d2a1218b 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -188,7 +188,10 @@ macro_rules! __sel_inner_statics_apple_generic { /// Place the constant value in the correct section. /// - /// Clang uses `no_dead_strip` in the link section for some reason? + /// Clang uses `no_dead_strip` in the link section for some reason, + /// which other tools now assume is present (so we have to add it as + /// well). Doesn't really matter, since the selector access can't be + /// optimized away anyhow (it uses read_volatile). #[link_section = $selector_ref_section] #[export_name = concat!("\x01L_OBJC_SELECTOR_REFERENCES_", $crate::__macro_helpers::__hash_idents!($($idents)+))] static mut REF: $crate::runtime::Sel = unsafe { @@ -202,10 +205,11 @@ macro_rules! __sel_inner_statics_apple_generic { #[cfg(all(feature = "apple", not(all(target_os = "macos", target_arch = "x86"))))] macro_rules! __sel_inner_statics { ($($args:tt)*) => { + // Found by reading clang/LLVM sources $crate::__sel_inner_statics_apple_generic! { "__DATA,__objc_imageinfo,regular,no_dead_strip"; "__TEXT,__objc_methname,cstring_literals"; - "__DATA,__objc_selrefs,literal_pointers"; + "__DATA,__objc_selrefs,literal_pointers,no_dead_strip"; $($args)* } }; @@ -219,7 +223,7 @@ macro_rules! __sel_inner_statics { $crate::__sel_inner_statics_apple_generic! { "__OBJC,__image_info,regular"; "__TEXT,__cstring,cstring_literals"; - "__OBJC,__message_refs,literal_pointers"; + "__OBJC,__message_refs,literal_pointers,no_dead_strip"; $($args)* } }; diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s index 319be1a0f..1cec95fa6 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-aarch64.s @@ -77,7 +77,7 @@ L_OBJC_IMAGE_INFO_40f5b12005284286: L_OBJC_METH_VAR_NAME_40f5b12005284286: .asciz "someSelector" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 .p2align 3 L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: @@ -94,7 +94,7 @@ L_OBJC_IMAGE_INFO_904c14aa63c4eec9: L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: .asciz "init" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 .p2align 3 L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: @@ -111,7 +111,7 @@ L_OBJC_IMAGE_INFO_b1ab35d3713395f9: L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 .p2align 3 L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: @@ -128,7 +128,7 @@ L_OBJC_IMAGE_INFO_31f63858e271db32: L_OBJC_METH_VAR_NAME_31f63858e271db32: .asciz "generic:selector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 .p2align 3 L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: @@ -145,7 +145,7 @@ L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 .p2align 3 L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: @@ -162,7 +162,7 @@ L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 .p2align 3 L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: @@ -179,7 +179,7 @@ L_OBJC_IMAGE_INFO_8e0840c6b39b7720: L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 .p2align 3 L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index f13fc577c..055f8d546 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -78,7 +78,7 @@ L_OBJC_IMAGE_INFO_40f5b12005284286: L_OBJC_METH_VAR_NAME_40f5b12005284286: .asciz "someSelector" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 .p2align 2 L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: @@ -95,7 +95,7 @@ L_OBJC_IMAGE_INFO_904c14aa63c4eec9: L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: .asciz "init" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: @@ -112,7 +112,7 @@ L_OBJC_IMAGE_INFO_b1ab35d3713395f9: L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: @@ -129,7 +129,7 @@ L_OBJC_IMAGE_INFO_31f63858e271db32: L_OBJC_METH_VAR_NAME_31f63858e271db32: .asciz "generic:selector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 .p2align 2 L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: @@ -146,7 +146,7 @@ L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 .p2align 2 L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: @@ -163,7 +163,7 @@ L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 .p2align 2 L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: @@ -180,7 +180,7 @@ L_OBJC_IMAGE_INFO_8e0840c6b39b7720: L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 .p2align 2 L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index 4aa728c06..c45a8144e 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -81,7 +81,7 @@ L_OBJC_IMAGE_INFO_40f5b12005284286: L_OBJC_METH_VAR_NAME_40f5b12005284286: .asciz "someSelector" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 .p2align 2 L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: @@ -98,7 +98,7 @@ L_OBJC_IMAGE_INFO_904c14aa63c4eec9: L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: .asciz "init" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: @@ -115,7 +115,7 @@ L_OBJC_IMAGE_INFO_b1ab35d3713395f9: L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: @@ -132,7 +132,7 @@ L_OBJC_IMAGE_INFO_31f63858e271db32: L_OBJC_METH_VAR_NAME_31f63858e271db32: .asciz "generic:selector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 .p2align 2 L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: @@ -149,7 +149,7 @@ L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 .p2align 2 L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: @@ -166,7 +166,7 @@ L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 .p2align 2 L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: @@ -183,7 +183,7 @@ L_OBJC_IMAGE_INFO_8e0840c6b39b7720: L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 .p2align 2 L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index df264d604..09b496a01 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -84,7 +84,7 @@ L_OBJC_IMAGE_INFO_40f5b12005284286: L_OBJC_METH_VAR_NAME_40f5b12005284286: .asciz "someSelector" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 .p2align 2 L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: @@ -101,7 +101,7 @@ L_OBJC_IMAGE_INFO_904c14aa63c4eec9: L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: .asciz "init" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: @@ -118,7 +118,7 @@ L_OBJC_IMAGE_INFO_b1ab35d3713395f9: L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: .asciz "alloc" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: @@ -135,7 +135,7 @@ L_OBJC_IMAGE_INFO_31f63858e271db32: L_OBJC_METH_VAR_NAME_31f63858e271db32: .asciz "generic:selector:" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 .p2align 2 L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: @@ -152,7 +152,7 @@ L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: .asciz "performSelector:" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 .p2align 2 L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: @@ -169,7 +169,7 @@ L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: .asciz "performSelector:" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 .p2align 2 L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: @@ -186,7 +186,7 @@ L_OBJC_IMAGE_INFO_8e0840c6b39b7720: L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: .asciz "performSelector:" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 .p2align 2 L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s index 4477745c6..429887c29 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86_64.s @@ -60,7 +60,7 @@ L_OBJC_IMAGE_INFO_40f5b12005284286: L_OBJC_METH_VAR_NAME_40f5b12005284286: .asciz "someSelector" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 .p2align 3 L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: @@ -77,7 +77,7 @@ L_OBJC_IMAGE_INFO_904c14aa63c4eec9: L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: .asciz "init" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 .p2align 3 L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: @@ -94,7 +94,7 @@ L_OBJC_IMAGE_INFO_b1ab35d3713395f9: L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 .p2align 3 L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: @@ -111,7 +111,7 @@ L_OBJC_IMAGE_INFO_31f63858e271db32: L_OBJC_METH_VAR_NAME_31f63858e271db32: .asciz "generic:selector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 .p2align 3 L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: @@ -128,7 +128,7 @@ L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 .p2align 3 L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: @@ -145,7 +145,7 @@ L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 .p2align 3 L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: @@ -162,7 +162,7 @@ L_OBJC_IMAGE_INFO_8e0840c6b39b7720: L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: .asciz "performSelector:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 .p2align 3 L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index 466cdf1ea..f2401fa2e 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -171,7 +171,7 @@ L_OBJC_IMAGE_INFO_68381ba894e318e9: L_OBJC_METH_VAR_NAME_68381ba894e318e9: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 .p2align 3 L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: @@ -188,7 +188,7 @@ L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 .p2align 3 L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: @@ -205,7 +205,7 @@ L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 .p2align 3 L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: @@ -222,7 +222,7 @@ L_OBJC_IMAGE_INFO_33db9f67352fe9a7: L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 .p2align 3 L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: @@ -239,7 +239,7 @@ L_OBJC_IMAGE_INFO_bb37877368f0b7a0: L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: .asciz "i:am:different:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 .p2align 3 L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: @@ -256,7 +256,7 @@ L_OBJC_IMAGE_INFO_2c505e110d181b25: L_OBJC_METH_VAR_NAME_2c505e110d181b25: .asciz "unused" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 .p2align 3 L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: @@ -273,7 +273,7 @@ L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: .asciz "fourthSel" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 .p2align 3 L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: @@ -290,7 +290,7 @@ L_OBJC_IMAGE_INFO_9845965b987ed54b: L_OBJC_METH_VAR_NAME_9845965b987ed54b: .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b .p2align 3 L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index 81b724ce5..af2c53ab4 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -174,7 +174,7 @@ L_OBJC_IMAGE_INFO_68381ba894e318e9: L_OBJC_METH_VAR_NAME_68381ba894e318e9: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: @@ -191,7 +191,7 @@ L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 .p2align 2 L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: @@ -208,7 +208,7 @@ L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 .p2align 2 L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: @@ -225,7 +225,7 @@ L_OBJC_IMAGE_INFO_33db9f67352fe9a7: L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 .p2align 2 L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: @@ -242,7 +242,7 @@ L_OBJC_IMAGE_INFO_bb37877368f0b7a0: L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: .asciz "i:am:different:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 .p2align 2 L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: @@ -259,7 +259,7 @@ L_OBJC_IMAGE_INFO_2c505e110d181b25: L_OBJC_METH_VAR_NAME_2c505e110d181b25: .asciz "unused" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 .p2align 2 L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: @@ -276,7 +276,7 @@ L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: .asciz "fourthSel" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 .p2align 2 L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: @@ -293,7 +293,7 @@ L_OBJC_IMAGE_INFO_9845965b987ed54b: L_OBJC_METH_VAR_NAME_9845965b987ed54b: .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b .p2align 2 L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index 5e7495de6..dce7feb97 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -186,7 +186,7 @@ L_OBJC_IMAGE_INFO_68381ba894e318e9: L_OBJC_METH_VAR_NAME_68381ba894e318e9: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: @@ -203,7 +203,7 @@ L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 .p2align 2 L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: @@ -220,7 +220,7 @@ L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 .p2align 2 L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: @@ -237,7 +237,7 @@ L_OBJC_IMAGE_INFO_33db9f67352fe9a7: L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 .p2align 2 L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: @@ -254,7 +254,7 @@ L_OBJC_IMAGE_INFO_bb37877368f0b7a0: L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: .asciz "i:am:different:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 .p2align 2 L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: @@ -271,7 +271,7 @@ L_OBJC_IMAGE_INFO_2c505e110d181b25: L_OBJC_METH_VAR_NAME_2c505e110d181b25: .asciz "unused" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 .p2align 2 L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: @@ -288,7 +288,7 @@ L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: .asciz "fourthSel" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 .p2align 2 L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: @@ -305,7 +305,7 @@ L_OBJC_IMAGE_INFO_9845965b987ed54b: L_OBJC_METH_VAR_NAME_9845965b987ed54b: .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b .p2align 2 L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index a33bf02d8..1677b467b 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -218,7 +218,7 @@ L_OBJC_IMAGE_INFO_68381ba894e318e9: L_OBJC_METH_VAR_NAME_68381ba894e318e9: .asciz "simple" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: @@ -235,7 +235,7 @@ L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: .asciz "simple" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 .p2align 2 L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: @@ -252,7 +252,7 @@ L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: .asciz "alloc" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 .p2align 2 L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: @@ -269,7 +269,7 @@ L_OBJC_IMAGE_INFO_33db9f67352fe9a7: L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: .asciz "alloc" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 .p2align 2 L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: @@ -286,7 +286,7 @@ L_OBJC_IMAGE_INFO_bb37877368f0b7a0: L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: .asciz "i:am:different:" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 .p2align 2 L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: @@ -303,7 +303,7 @@ L_OBJC_IMAGE_INFO_2c505e110d181b25: L_OBJC_METH_VAR_NAME_2c505e110d181b25: .asciz "unused" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 .p2align 2 L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: @@ -320,7 +320,7 @@ L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: .asciz "fourthSel" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 .p2align 2 L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: @@ -337,7 +337,7 @@ L_OBJC_IMAGE_INFO_9845965b987ed54b: L_OBJC_METH_VAR_NAME_9845965b987ed54b: .asciz "loopedSelector" - .section __OBJC,__message_refs,literal_pointers + .section __OBJC,__message_refs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b .p2align 2 L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index 7daff72ed..902920d70 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -193,7 +193,7 @@ L_OBJC_IMAGE_INFO_68381ba894e318e9: L_OBJC_METH_VAR_NAME_68381ba894e318e9: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 .p2align 3 L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: @@ -210,7 +210,7 @@ L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: .asciz "simple" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 .p2align 3 L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: @@ -227,7 +227,7 @@ L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 .p2align 3 L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: @@ -244,7 +244,7 @@ L_OBJC_IMAGE_INFO_33db9f67352fe9a7: L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: .asciz "alloc" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 .p2align 3 L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: @@ -261,7 +261,7 @@ L_OBJC_IMAGE_INFO_bb37877368f0b7a0: L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: .asciz "i:am:different:" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 .p2align 3 L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: @@ -278,7 +278,7 @@ L_OBJC_IMAGE_INFO_2c505e110d181b25: L_OBJC_METH_VAR_NAME_2c505e110d181b25: .asciz "unused" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 .p2align 3 L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: @@ -295,7 +295,7 @@ L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: .asciz "fourthSel" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 .p2align 3 L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: @@ -312,7 +312,7 @@ L_OBJC_IMAGE_INFO_9845965b987ed54b: L_OBJC_METH_VAR_NAME_9845965b987ed54b: .asciz "loopedSelector" - .section __DATA,__objc_selrefs,literal_pointers + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b .p2align 3 L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: From 14300c38c3d46350ab4e4b7bf7beb4e9e7b7297b Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Wed, 22 Jun 2022 01:17:53 +0200 Subject: [PATCH 24/30] Use UnsafeCell instead of read_volatile This allows stripping accesses to unused selectors, while still loading the pointer correctly --- objc2/src/__macro_helpers.rs | 2 +- objc2/src/macros.rs | 32 ++++++---- .../expected/apple-armv7.s | 48 +++++++------- .../expected/apple-armv7s.s | 48 +++++++------- .../test_static_sel/expected/apple-aarch64.s | 56 ++++------------- .../test_static_sel/expected/apple-armv7.s | 60 +++++------------- .../test_static_sel/expected/apple-armv7s.s | 63 +++++-------------- .../test_static_sel/expected/apple-x86.s | 63 ++++--------------- .../test_static_sel/expected/apple-x86_64.s | 53 ++++------------ tests/assembly/test_static_sel/lib.rs | 4 +- 10 files changed, 135 insertions(+), 294 deletions(-) diff --git a/objc2/src/__macro_helpers.rs b/objc2/src/__macro_helpers.rs index 9bddcea9a..9b032aacb 100644 --- a/objc2/src/__macro_helpers.rs +++ b/objc2/src/__macro_helpers.rs @@ -2,8 +2,8 @@ use crate::rc::{Id, Ownership}; use crate::runtime::{Class, Sel}; use crate::{Message, MessageArguments, MessageError, MessageReceiver}; +pub use core::cell::UnsafeCell; pub use core::compile_error; -pub use core::ptr::read_volatile; #[cfg(feature = "unstable-static-sel")] pub use objc2_proc_macros::__hash_idents; diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index 2d2a1218b..4755cb8f8 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -188,14 +188,24 @@ macro_rules! __sel_inner_statics_apple_generic { /// Place the constant value in the correct section. /// + /// We use `UnsafeCell` because this somewhat resembles internal + /// mutation - this pointer will be changed by dyld at startup, so we + /// _must_ prevent Rust/LLVM from trying to "peek inside" it and just + /// use a pointer to `NAME_DATA` directly. + /// + /// Clang does this by marking `REF` with LLVM's + /// `externally_initialized`. + /// + /// `static mut` is used so that we don't need to wrap the + /// `UnsafeCell` in something that implements `Sync`. + /// /// Clang uses `no_dead_strip` in the link section for some reason, - /// which other tools now assume is present (so we have to add it as - /// well). Doesn't really matter, since the selector access can't be - /// optimized away anyhow (it uses read_volatile). + /// which other tools (notably some LLVM tools) now assume is present, + /// so we have to add it as well. #[link_section = $selector_ref_section] #[export_name = concat!("\x01L_OBJC_SELECTOR_REFERENCES_", $crate::__macro_helpers::__hash_idents!($($idents)+))] - static mut REF: $crate::runtime::Sel = unsafe { - $crate::runtime::Sel::from_ptr(NAME_DATA.as_ptr().cast()) + static mut REF: $crate::__macro_helpers::UnsafeCell<$crate::runtime::Sel> = unsafe { + $crate::__macro_helpers::UnsafeCell::new($crate::runtime::Sel::from_ptr(NAME_DATA.as_ptr().cast())) }; }; } @@ -261,13 +271,11 @@ macro_rules! __sel_inner { #[inline(never)] fn objc_static_workaround() -> $crate::runtime::Sel { // SAFETY: The actual selector is replaced by dyld when the - // program is loaded, so we need to use a volatile read to prevent - // the optimizer from thinking it can circumvent the read through - // REF. + // program is loaded. // - // Clang avoids this by marking `REF` with LLVM's - // `externally_initialized`. - unsafe { $crate::__macro_helpers::read_volatile(&REF) } + // This is similar to a volatile read, except it can be stripped + // if unused. + unsafe { *REF.get() } } objc_static_workaround() @@ -283,7 +291,7 @@ macro_rules! __sel_inner { #[allow(unused_unsafe)] // SAFETY: See above - unsafe { $crate::__macro_helpers::read_volatile(&REF) } + unsafe { *REF.get() } }}; } diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s index 055f8d546..36112fd79 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7.s @@ -16,14 +16,14 @@ LPC0_0: _handle_alloc_init: push {r4, r7, lr} add r7, sp, #4 - movw r4, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC1_0+8)) - movt r4, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC1_0+8)) + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC1_0+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC1_0+8)) LPC1_0: - ldr r4, [pc, r4] - movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC1_1+8)) - movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC1_1+8)) -LPC1_1: ldr r1, [pc, r1] + movw r4, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC1_1+8)) + movt r4, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC1_1+8)) +LPC1_1: + ldr r4, [pc, r4] bl _objc_msgSend mov r1, r4 pop {r4, r7, lr} @@ -35,35 +35,35 @@ LPC1_1: _use_generic: push {r4, r7, lr} add r7, sp, #4 - movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC2_0+8)) + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_0+8)) mov r4, r0 - movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC2_0+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_0+8)) LPC2_0: - ldr r1, [pc, r1] - movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_1+8)) - movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_1+8)) -LPC2_1: ldr r2, [pc, r2] + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC2_1+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC2_1+8)) +LPC2_1: + ldr r1, [pc, r1] bl _objc_msgSend - movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC2_2+8)) + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_2+8)) mov r0, r4 - movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC2_2+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_2+8)) LPC2_2: - ldr r1, [pc, r1] - movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_3+8)) - movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_3+8)) -LPC2_3: ldr r2, [pc, r2] + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC2_3+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC2_3+8)) +LPC2_3: + ldr r1, [pc, r1] bl _objc_msgSend - movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC2_4+8)) + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_4+8)) mov r0, r4 - movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC2_4+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_4+8)) LPC2_4: - ldr r1, [pc, r1] - movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_5+8)) - movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_5+8)) -LPC2_5: ldr r2, [pc, r2] + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC2_5+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC2_5+8)) +LPC2_5: + ldr r1, [pc, r1] pop {r4, r7, lr} b _objc_msgSend diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s index c45a8144e..6540a3cda 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-armv7s.s @@ -19,14 +19,14 @@ LPC0_0: _handle_alloc_init: push {r4, r7, lr} add r7, sp, #4 - movw r4, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC1_0+8)) - movt r4, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC1_0+8)) + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC1_0+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC1_0+8)) LPC1_0: - ldr r4, [pc, r4] - movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC1_1+8)) - movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-(LPC1_1+8)) -LPC1_1: ldr r1, [pc, r1] + movw r4, :lower16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC1_1+8)) + movt r4, :upper16:(L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-(LPC1_1+8)) +LPC1_1: + ldr r4, [pc, r4] bl _objc_msgSend mov r1, r4 bl _objc_msgSend @@ -38,35 +38,35 @@ LPC1_1: _use_generic: push {r4, r7, lr} add r7, sp, #4 - movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC2_0+8)) + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_0+8)) mov r4, r0 - movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC2_0+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_0+8)) LPC2_0: - ldr r1, [pc, r1] - movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_1+8)) - movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_1+8)) -LPC2_1: ldr r2, [pc, r2] + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC2_1+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-(LPC2_1+8)) +LPC2_1: + ldr r1, [pc, r1] bl _objc_msgSend - movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC2_2+8)) + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_2+8)) mov r0, r4 - movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC2_2+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_2+8)) LPC2_2: - ldr r1, [pc, r1] - movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_3+8)) - movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_3+8)) -LPC2_3: ldr r2, [pc, r2] + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC2_3+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-(LPC2_3+8)) +LPC2_3: + ldr r1, [pc, r1] bl _objc_msgSend - movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC2_4+8)) + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_4+8)) mov r0, r4 - movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC2_4+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_4+8)) LPC2_4: - ldr r1, [pc, r1] - movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_5+8)) - movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-(LPC2_5+8)) -LPC2_5: ldr r2, [pc, r2] + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC2_5+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-(LPC2_5+8)) +LPC2_5: + ldr r1, [pc, r1] bl _objc_msgSend pop {r4, r7, pc} diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index f2401fa2e..d7e74db7c 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -32,7 +32,7 @@ _get_different_sel: .globl _unused_sel .p2align 2 _unused_sel: - b __RNvNvCsai54Y9dtG4h_15test_static_sel10unused_sel22objc_static_workaround + ret .globl _use_fns .p2align 2 @@ -64,9 +64,7 @@ _use_same_twice: add x29, sp, #16 mov x19, x8 bl __RNvNvCsai54Y9dtG4h_15test_static_sel7get_sel22objc_static_workaround - mov x20, x0 - bl __RNvNvCsai54Y9dtG4h_15test_static_sel7get_sel22objc_static_workaround - stp x20, x0, [x19] + stp x0, x0, [x19] ldp x29, x30, [sp, #16] ldp x20, x19, [sp], #32 ret @@ -74,18 +72,6 @@ _use_same_twice: .globl _use_in_loop .p2align 2 _use_in_loop: - stp x20, x19, [sp, #-32]! - stp x29, x30, [sp, #16] - add x29, sp, #16 - cbz x0, LBB7_3 - mov x19, x0 -LBB7_2: - bl __RNvNvCsai54Y9dtG4h_15test_static_sel11use_in_loop22objc_static_workaround - subs x19, x19, #1 - b.ne LBB7_2 -LBB7_3: - ldp x29, x30, [sp, #16] - ldp x20, x19, [sp], #32 ret .p2align 2 @@ -133,32 +119,14 @@ Lloh9: ret .loh AdrpLdr Lloh8, Lloh9 - .p2align 2 -__RNvNvCsai54Y9dtG4h_15test_static_sel10unused_sel22objc_static_workaround: -Lloh10: - adrp x8, L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25@PAGE -Lloh11: - ldr xzr, [x8, L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25@PAGEOFF] - ret - .loh AdrpLdr Lloh10, Lloh11 - .p2align 2 __RNvNvCsai54Y9dtG4h_15test_static_sel7use_fns22objc_static_workaround: -Lloh12: +Lloh10: adrp x8, L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99@PAGE -Lloh13: +Lloh11: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99@PAGEOFF] ret - .loh AdrpLdr Lloh12, Lloh13 - - .p2align 2 -__RNvNvCsai54Y9dtG4h_15test_static_sel11use_in_loop22objc_static_workaround: -Lloh14: - adrp x8, L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b@PAGE -Lloh15: - ldr xzr, [x8, L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b@PAGEOFF] - ret - .loh AdrpLdr Lloh14, Lloh15 + .loh AdrpLdr Lloh10, Lloh11 .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 @@ -280,20 +248,20 @@ L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: .quad L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_9845965b987ed54b + .globl L_OBJC_IMAGE_INFO_f46908e864c86c6b .p2align 2 -L_OBJC_IMAGE_INFO_9845965b987ed54b: +L_OBJC_IMAGE_INFO_f46908e864c86c6b: .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b -L_OBJC_METH_VAR_NAME_9845965b987ed54b: + .globl L_OBJC_METH_VAR_NAME_f46908e864c86c6b +L_OBJC_METH_VAR_NAME_f46908e864c86c6b: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip - .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b + .globl L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b .p2align 3 -L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: - .quad L_OBJC_METH_VAR_NAME_9845965b987ed54b +L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b: + .quad L_OBJC_METH_VAR_NAME_f46908e864c86c6b .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index af2c53ab4..969553da0 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -35,7 +35,7 @@ _get_different_sel: .p2align 2 .code 32 _unused_sel: - b __RNvNvCs8GaUp4KaTG0_15test_static_sel10unused_sel22objc_static_workaround + bx lr .globl _use_fns .p2align 2 @@ -65,31 +65,17 @@ _use_fns: _use_same_twice: push {r4, r7, lr} add r7, sp, #4 - push {r8} mov r4, r0 bl __RNvNvCs8GaUp4KaTG0_15test_static_sel7get_sel22objc_static_workaround - mov r8, r0 - bl __RNvNvCs8GaUp4KaTG0_15test_static_sel7get_sel22objc_static_workaround - mov r9, r0 - strd r8, r9, [r4] - pop {r8} + str r0, [r4] + str r0, [r4, #4] pop {r4, r7, pc} .globl _use_in_loop .p2align 2 .code 32 _use_in_loop: - push {r4, r7, lr} - add r7, sp, #4 - cmp r0, #0 - popeq {r4, r7, pc} -LBB7_1: - mov r4, r0 -LBB7_2: - bl __RNvNvCs8GaUp4KaTG0_15test_static_sel11use_in_loop22objc_static_workaround - subs r4, r4, #1 - bne LBB7_2 - pop {r4, r7, pc} + bx lr .p2align 2 .code 32 @@ -136,30 +122,12 @@ LPC12_0: ldr r0, [pc, r0] bx lr - .p2align 2 - .code 32 -__RNvNvCs8GaUp4KaTG0_15test_static_sel10unused_sel22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) -LPC13_0: - ldr r0, [pc, r0] - bx lr - .p2align 2 .code 32 __RNvNvCs8GaUp4KaTG0_15test_static_sel7use_fns22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) -LPC14_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCs8GaUp4KaTG0_15test_static_sel11use_in_loop22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) -LPC15_0: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC13_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC13_0+8)) +LPC13_0: ldr r0, [pc, r0] bx lr @@ -283,20 +251,20 @@ L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: .long L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_9845965b987ed54b + .globl L_OBJC_IMAGE_INFO_f46908e864c86c6b .p2align 2 -L_OBJC_IMAGE_INFO_9845965b987ed54b: +L_OBJC_IMAGE_INFO_f46908e864c86c6b: .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b -L_OBJC_METH_VAR_NAME_9845965b987ed54b: + .globl L_OBJC_METH_VAR_NAME_f46908e864c86c6b +L_OBJC_METH_VAR_NAME_f46908e864c86c6b: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip - .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b + .globl L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b .p2align 2 -L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: - .long L_OBJC_METH_VAR_NAME_9845965b987ed54b +L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b: + .long L_OBJC_METH_VAR_NAME_f46908e864c86c6b .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index dce7feb97..87c48cda3 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -44,10 +44,7 @@ _get_different_sel: .p2align 2 .code 32 _unused_sel: - push {r7, lr} - mov r7, sp - bl __RNvNvCsen0HaGRHbO4_15test_static_sel10unused_sel22objc_static_workaround - pop {r7, pc} + bx lr .globl _use_fns .p2align 2 @@ -77,31 +74,17 @@ _use_fns: _use_same_twice: push {r4, r7, lr} add r7, sp, #4 - push {r8} mov r4, r0 bl __RNvNvCsen0HaGRHbO4_15test_static_sel7get_sel22objc_static_workaround - mov r8, r0 - bl __RNvNvCsen0HaGRHbO4_15test_static_sel7get_sel22objc_static_workaround - mov r9, r0 - strd r8, r9, [r4] - pop {r8} + str r0, [r4] + str r0, [r4, #4] pop {r4, r7, pc} .globl _use_in_loop .p2align 2 .code 32 _use_in_loop: - push {r4, r7, lr} - add r7, sp, #4 - cmp r0, #0 - popeq {r4, r7, pc} -LBB7_1: - mov r4, r0 -LBB7_2: - bl __RNvNvCsen0HaGRHbO4_15test_static_sel11use_in_loop22objc_static_workaround - subs r4, r4, #1 - bne LBB7_2 - pop {r4, r7, pc} + bx lr .p2align 2 .code 32 @@ -148,30 +131,12 @@ LPC12_0: ldr r0, [pc, r0] bx lr - .p2align 2 - .code 32 -__RNvNvCsen0HaGRHbO4_15test_static_sel10unused_sel22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-(LPC13_0+8)) -LPC13_0: - ldr r0, [pc, r0] - bx lr - .p2align 2 .code 32 __RNvNvCsen0HaGRHbO4_15test_static_sel7use_fns22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC14_0+8)) -LPC14_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCsen0HaGRHbO4_15test_static_sel11use_in_loop22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-(LPC15_0+8)) -LPC15_0: + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC13_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC13_0+8)) +LPC13_0: ldr r0, [pc, r0] bx lr @@ -295,20 +260,20 @@ L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: .long L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_9845965b987ed54b + .globl L_OBJC_IMAGE_INFO_f46908e864c86c6b .p2align 2 -L_OBJC_IMAGE_INFO_9845965b987ed54b: +L_OBJC_IMAGE_INFO_f46908e864c86c6b: .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b -L_OBJC_METH_VAR_NAME_9845965b987ed54b: + .globl L_OBJC_METH_VAR_NAME_f46908e864c86c6b +L_OBJC_METH_VAR_NAME_f46908e864c86c6b: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip - .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b + .globl L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b .p2align 2 -L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: - .long L_OBJC_METH_VAR_NAME_9845965b987ed54b +L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b: + .long L_OBJC_METH_VAR_NAME_f46908e864c86c6b .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index 1677b467b..69f6c8de5 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -47,7 +47,7 @@ _unused_sel: push ebp mov ebp, esp pop ebp - jmp __RNvNvCs6BnsG4fGG5c_15test_static_sel10unused_sel22objc_static_workaround + ret .globl _use_fns .p2align 4, 0x90 @@ -84,17 +84,15 @@ _use_fns: _use_same_twice: push ebp mov ebp, esp - push edi push esi + push eax mov esi, dword ptr [ebp + 8] call __RNvNvCs6BnsG4fGG5c_15test_static_sel7get_sel22objc_static_workaround - mov edi, eax - call __RNvNvCs6BnsG4fGG5c_15test_static_sel7get_sel22objc_static_workaround - mov dword ptr [esi], edi + mov dword ptr [esi], eax mov dword ptr [esi + 4], eax mov eax, esi + add esp, 4 pop esi - pop edi pop ebp ret 4 @@ -103,19 +101,6 @@ _use_same_twice: _use_in_loop: push ebp mov ebp, esp - push esi - push eax - mov esi, dword ptr [ebp + 8] - test esi, esi - je LBB7_2 - .p2align 4, 0x90 -LBB7_1: - call __RNvNvCs6BnsG4fGG5c_15test_static_sel11use_in_loop22objc_static_workaround - dec esi - jne LBB7_1 -LBB7_2: - add esp, 4 - pop esi pop ebp ret @@ -175,35 +160,13 @@ L12$pb: ret .p2align 4, 0x90 -__RNvNvCs6BnsG4fGG5c_15test_static_sel10unused_sel22objc_static_workaround: +__RNvNvCs6BnsG4fGG5c_15test_static_sel7use_fns22objc_static_workaround: push ebp mov ebp, esp call L13$pb L13$pb: pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25-L13$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs6BnsG4fGG5c_15test_static_sel7use_fns22objc_static_workaround: - push ebp - mov ebp, esp - call L14$pb -L14$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-L14$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs6BnsG4fGG5c_15test_static_sel11use_in_loop22objc_static_workaround: - push ebp - mov ebp, esp - call L15$pb -L15$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b-L15$pb] + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-L13$pb] pop ebp ret @@ -327,20 +290,20 @@ L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: .long L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 .section __OBJC,__image_info - .globl L_OBJC_IMAGE_INFO_9845965b987ed54b + .globl L_OBJC_IMAGE_INFO_f46908e864c86c6b .p2align 2 -L_OBJC_IMAGE_INFO_9845965b987ed54b: +L_OBJC_IMAGE_INFO_f46908e864c86c6b: .asciz "\000\000\000\000@\000\000" .section __TEXT,__cstring,cstring_literals - .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b -L_OBJC_METH_VAR_NAME_9845965b987ed54b: + .globl L_OBJC_METH_VAR_NAME_f46908e864c86c6b +L_OBJC_METH_VAR_NAME_f46908e864c86c6b: .asciz "loopedSelector" .section __OBJC,__message_refs,literal_pointers,no_dead_strip - .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b + .globl L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b .p2align 2 -L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: - .long L_OBJC_METH_VAR_NAME_9845965b987ed54b +L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b: + .long L_OBJC_METH_VAR_NAME_f46908e864c86c6b .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index 902920d70..96f1731b5 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -47,7 +47,7 @@ _unused_sel: push rbp mov rbp, rsp pop rbp - jmp __RNvNvCs3LjJa8BQyj0_15test_static_sel10unused_sel22objc_static_workaround + ret .globl _use_fns .p2align 4, 0x90 @@ -83,17 +83,15 @@ _use_fns: _use_same_twice: push rbp mov rbp, rsp - push r14 push rbx + push rax mov rbx, rdi call __RNvNvCs3LjJa8BQyj0_15test_static_sel7get_sel22objc_static_workaround - mov r14, rax - call __RNvNvCs3LjJa8BQyj0_15test_static_sel7get_sel22objc_static_workaround - mov qword ptr [rbx], r14 + mov qword ptr [rbx], rax mov qword ptr [rbx + 8], rax mov rax, rbx + add rsp, 8 pop rbx - pop r14 pop rbp ret @@ -102,19 +100,6 @@ _use_same_twice: _use_in_loop: push rbp mov rbp, rsp - push rbx - push rax - test rdi, rdi - je LBB7_3 - mov rbx, rdi - .p2align 4, 0x90 -LBB7_2: - call __RNvNvCs3LjJa8BQyj0_15test_static_sel11use_in_loop22objc_static_workaround - dec rbx - jne LBB7_2 -LBB7_3: - add rsp, 8 - pop rbx pop rbp ret @@ -158,14 +143,6 @@ __RNvNvCs3LjJa8BQyj0_15test_static_sel17get_different_sel22objc_static_workaroun pop rbp ret - .p2align 4, 0x90 -__RNvNvCs3LjJa8BQyj0_15test_static_sel10unused_sel22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25] - pop rbp - ret - .p2align 4, 0x90 __RNvNvCs3LjJa8BQyj0_15test_static_sel7use_fns22objc_static_workaround: push rbp @@ -174,14 +151,6 @@ __RNvNvCs3LjJa8BQyj0_15test_static_sel7use_fns22objc_static_workaround: pop rbp ret - .p2align 4, 0x90 -__RNvNvCs3LjJa8BQyj0_15test_static_sel11use_in_loop22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b] - pop rbp - ret - .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 @@ -302,20 +271,20 @@ L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: .quad L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 .section __DATA,__objc_imageinfo,regular,no_dead_strip - .globl L_OBJC_IMAGE_INFO_9845965b987ed54b + .globl L_OBJC_IMAGE_INFO_f46908e864c86c6b .p2align 2 -L_OBJC_IMAGE_INFO_9845965b987ed54b: +L_OBJC_IMAGE_INFO_f46908e864c86c6b: .asciz "\000\000\000\000@\000\000" .section __TEXT,__objc_methname,cstring_literals - .globl L_OBJC_METH_VAR_NAME_9845965b987ed54b -L_OBJC_METH_VAR_NAME_9845965b987ed54b: + .globl L_OBJC_METH_VAR_NAME_f46908e864c86c6b +L_OBJC_METH_VAR_NAME_f46908e864c86c6b: .asciz "loopedSelector" .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip - .globl L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b + .globl L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b .p2align 3 -L_OBJC_SELECTOR_REFERENCES_9845965b987ed54b: - .quad L_OBJC_METH_VAR_NAME_9845965b987ed54b +L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b: + .quad L_OBJC_METH_VAR_NAME_f46908e864c86c6b .subsections_via_symbols diff --git a/tests/assembly/test_static_sel/lib.rs b/tests/assembly/test_static_sel/lib.rs index 69fbfb63e..97b4d67c6 100644 --- a/tests/assembly/test_static_sel/lib.rs +++ b/tests/assembly/test_static_sel/lib.rs @@ -38,14 +38,14 @@ fn use_fns() -> [Sel; 4] { #[no_mangle] fn use_same_twice() -> [Sel; 2] { - // Should ideally not need to load twice + // Should not need to load twice [get_sel(), get_sel()] } #[no_mangle] fn use_in_loop(n: usize) { for _i in 0..n { - // Should ideally be a noop + // Should be a noop let _ = sel!(loopedSelector); } } From 1142392b6b7995a4592e1e24e38b8a1d77210168 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Wed, 22 Jun 2022 02:04:22 +0200 Subject: [PATCH 25/30] Fix assembly tests in CI --- tests/assembly/test_static_sel/Cargo.toml | 2 +- .../test_static_sel/expected/apple-aarch64.s | 137 ++++++---------- .../test_static_sel/expected/apple-armv7.s | 140 ++++++---------- .../test_static_sel/expected/apple-armv7s.s | 149 ++++++------------ .../test_static_sel/expected/apple-x86.s | 144 +++++------------ .../test_static_sel/expected/apple-x86_64.s | 111 +++---------- tests/src/bin/test_assembly.rs | 3 + 7 files changed, 217 insertions(+), 469 deletions(-) diff --git a/tests/assembly/test_static_sel/Cargo.toml b/tests/assembly/test_static_sel/Cargo.toml index 2f7b76616..506e12d57 100644 --- a/tests/assembly/test_static_sel/Cargo.toml +++ b/tests/assembly/test_static_sel/Cargo.toml @@ -21,4 +21,4 @@ gnustep-2-0 = ["gnustep-1-9", "objc2/gnustep-2-0"] gnustep-2-1 = ["gnustep-2-0", "objc2/gnustep-2-1"] # Hack to prevent the feature flag from being enabled in the entire project -assembly-features = ["objc2/unstable-static-sel"] +assembly-features = ["objc2/unstable-static-sel-inlined"] diff --git a/tests/assembly/test_static_sel/expected/apple-aarch64.s b/tests/assembly/test_static_sel/expected/apple-aarch64.s index d7e74db7c..d2e9de2e9 100644 --- a/tests/assembly/test_static_sel/expected/apple-aarch64.s +++ b/tests/assembly/test_static_sel/expected/apple-aarch64.s @@ -2,80 +2,6 @@ .globl _get_sel .p2align 2 _get_sel: - b __RNvNvCsai54Y9dtG4h_15test_static_sel7get_sel22objc_static_workaround - - .globl _get_same_sel - .p2align 2 -_get_same_sel: - b __RNvNvCsai54Y9dtG4h_15test_static_sel12get_same_sel22objc_static_workaround - - .globl _get_common_twice - .p2align 2 -_get_common_twice: - stp x20, x19, [sp, #-32]! - stp x29, x30, [sp, #16] - add x29, sp, #16 - bl __RNvNvCsai54Y9dtG4h_15test_static_sel16get_common_twice22objc_static_workaround - mov x19, x0 - bl __RNvNvCsai54Y9dtG4h_15test_static_sel16get_common_twices_22objc_static_workaround - mov x1, x0 - mov x0, x19 - ldp x29, x30, [sp, #16] - ldp x20, x19, [sp], #32 - ret - - .globl _get_different_sel - .p2align 2 -_get_different_sel: - b __RNvNvCsai54Y9dtG4h_15test_static_sel17get_different_sel22objc_static_workaround - - .globl _unused_sel - .p2align 2 -_unused_sel: - ret - - .globl _use_fns - .p2align 2 -_use_fns: - stp x22, x21, [sp, #-48]! - stp x20, x19, [sp, #16] - stp x29, x30, [sp, #32] - add x29, sp, #32 - mov x19, x8 - bl __RNvNvCsai54Y9dtG4h_15test_static_sel7get_sel22objc_static_workaround - mov x20, x0 - bl __RNvNvCsai54Y9dtG4h_15test_static_sel12get_same_sel22objc_static_workaround - mov x21, x0 - bl __RNvNvCsai54Y9dtG4h_15test_static_sel17get_different_sel22objc_static_workaround - mov x22, x0 - bl __RNvNvCsai54Y9dtG4h_15test_static_sel7use_fns22objc_static_workaround - stp x20, x21, [x19] - stp x22, x0, [x19, #16] - ldp x29, x30, [sp, #32] - ldp x20, x19, [sp, #16] - ldp x22, x21, [sp], #48 - ret - - .globl _use_same_twice - .p2align 2 -_use_same_twice: - stp x20, x19, [sp, #-32]! - stp x29, x30, [sp, #16] - add x29, sp, #16 - mov x19, x8 - bl __RNvNvCsai54Y9dtG4h_15test_static_sel7get_sel22objc_static_workaround - stp x0, x0, [x19] - ldp x29, x30, [sp, #16] - ldp x20, x19, [sp], #32 - ret - - .globl _use_in_loop - .p2align 2 -_use_in_loop: - ret - - .p2align 2 -__RNvNvCsai54Y9dtG4h_15test_static_sel7get_sel22objc_static_workaround: Lloh0: adrp x8, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGE Lloh1: @@ -83,8 +9,9 @@ Lloh1: ret .loh AdrpLdr Lloh0, Lloh1 + .globl _get_same_sel .p2align 2 -__RNvNvCsai54Y9dtG4h_15test_static_sel12get_same_sel22objc_static_workaround: +_get_same_sel: Lloh2: adrp x8, L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35@PAGE Lloh3: @@ -92,26 +19,25 @@ Lloh3: ret .loh AdrpLdr Lloh2, Lloh3 + .globl _get_common_twice .p2align 2 -__RNvNvCsai54Y9dtG4h_15test_static_sel16get_common_twice22objc_static_workaround: +_get_common_twice: Lloh4: adrp x8, L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77@PAGE Lloh5: ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77@PAGEOFF] - ret - .loh AdrpLdr Lloh4, Lloh5 - - .p2align 2 -__RNvNvCsai54Y9dtG4h_15test_static_sel16get_common_twices_22objc_static_workaround: Lloh6: adrp x8, L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7@PAGE Lloh7: - ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7@PAGEOFF] + ldr x1, [x8, L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7@PAGEOFF] ret .loh AdrpLdr Lloh6, Lloh7 + .loh AdrpAdrp Lloh4, Lloh6 + .loh AdrpLdr Lloh4, Lloh5 + .globl _get_different_sel .p2align 2 -__RNvNvCsai54Y9dtG4h_15test_static_sel17get_different_sel22objc_static_workaround: +_get_different_sel: Lloh8: adrp x8, L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0@PAGE Lloh9: @@ -119,15 +45,54 @@ Lloh9: ret .loh AdrpLdr Lloh8, Lloh9 + .globl _unused_sel .p2align 2 -__RNvNvCsai54Y9dtG4h_15test_static_sel7use_fns22objc_static_workaround: +_unused_sel: + ret + + .globl _use_fns + .p2align 2 +_use_fns: Lloh10: - adrp x8, L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99@PAGE + adrp x9, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGE Lloh11: - ldr x0, [x8, L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99@PAGEOFF] + ldr x9, [x9, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGEOFF] +Lloh12: + adrp x10, L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35@PAGE +Lloh13: + ldr x10, [x10, L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35@PAGEOFF] +Lloh14: + adrp x11, L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0@PAGE +Lloh15: + ldr x11, [x11, L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0@PAGEOFF] +Lloh16: + adrp x12, L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99@PAGE +Lloh17: + ldr x12, [x12, L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99@PAGEOFF] + stp x9, x10, [x8] + stp x11, x12, [x8, #16] ret + .loh AdrpLdr Lloh16, Lloh17 + .loh AdrpLdr Lloh14, Lloh15 + .loh AdrpLdr Lloh12, Lloh13 .loh AdrpLdr Lloh10, Lloh11 + .globl _use_same_twice + .p2align 2 +_use_same_twice: +Lloh18: + adrp x9, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGE +Lloh19: + ldr x9, [x9, L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9@PAGEOFF] + stp x9, x9, [x8] + ret + .loh AdrpLdr Lloh18, Lloh19 + + .globl _use_in_loop + .p2align 2 +_use_in_loop: + ret + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 diff --git a/tests/assembly/test_static_sel/expected/apple-armv7.s b/tests/assembly/test_static_sel/expected/apple-armv7.s index 969553da0..e2bd0d6dc 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7.s @@ -4,32 +4,45 @@ .p2align 2 .code 32 _get_sel: - b __RNvNvCs8GaUp4KaTG0_15test_static_sel7get_sel22objc_static_workaround + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC0_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC0_0+8)) +LPC0_0: + ldr r0, [pc, r0] + bx lr .globl _get_same_sel .p2align 2 .code 32 _get_same_sel: - b __RNvNvCs8GaUp4KaTG0_15test_static_sel12get_same_sel22objc_static_workaround + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC1_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC1_0+8)) +LPC1_0: + ldr r0, [pc, r0] + bx lr .globl _get_common_twice .p2align 2 .code 32 _get_common_twice: - push {r4, r7, lr} - add r7, sp, #4 - bl __RNvNvCs8GaUp4KaTG0_15test_static_sel16get_common_twice22objc_static_workaround - mov r4, r0 - bl __RNvNvCs8GaUp4KaTG0_15test_static_sel16get_common_twices_22objc_static_workaround - mov r1, r0 - mov r0, r4 - pop {r4, r7, pc} + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC2_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC2_0+8)) +LPC2_0: + ldr r0, [pc, r0] + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC2_1+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC2_1+8)) +LPC2_1: + ldr r1, [pc, r1] + bx lr .globl _get_different_sel .p2align 2 .code 32 _get_different_sel: - b __RNvNvCs8GaUp4KaTG0_15test_static_sel17get_different_sel22objc_static_workaround + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC3_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC3_0+8)) +LPC3_0: + ldr r0, [pc, r0] + bx lr .globl _unused_sel .p2align 2 @@ -41,35 +54,38 @@ _unused_sel: .p2align 2 .code 32 _use_fns: - push {r4, r5, r6, r7, lr} - add r7, sp, #12 - push {r8} - mov r4, r0 - bl __RNvNvCs8GaUp4KaTG0_15test_static_sel7get_sel22objc_static_workaround - mov r8, r0 - bl __RNvNvCs8GaUp4KaTG0_15test_static_sel12get_same_sel22objc_static_workaround - mov r6, r0 - bl __RNvNvCs8GaUp4KaTG0_15test_static_sel17get_different_sel22objc_static_workaround - mov r5, r0 - bl __RNvNvCs8GaUp4KaTG0_15test_static_sel7use_fns22objc_static_workaround - str r8, [r4] - str r6, [r4, #4] - str r5, [r4, #8] - str r0, [r4, #12] - pop {r8} - pop {r4, r5, r6, r7, pc} + movw r9, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC5_0+8)) + movt r9, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC5_0+8)) +LPC5_0: + ldr r9, [pc, r9] + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC5_1+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC5_1+8)) +LPC5_1: + ldr r2, [pc, r2] + movw r3, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC5_2+8)) + movt r3, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC5_2+8)) +LPC5_2: + ldr r3, [pc, r3] + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC5_3+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC5_3+8)) + str r2, [r0, #8] +LPC5_3: + ldr r1, [pc, r1] + str r9, [r0, #12] + stm r0, {r1, r3} + bx lr .globl _use_same_twice .p2align 2 .code 32 _use_same_twice: - push {r4, r7, lr} - add r7, sp, #4 - mov r4, r0 - bl __RNvNvCs8GaUp4KaTG0_15test_static_sel7get_sel22objc_static_workaround - str r0, [r4] - str r0, [r4, #4] - pop {r4, r7, pc} + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC6_0+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC6_0+8)) +LPC6_0: + ldr r1, [pc, r1] + str r1, [r0] + str r1, [r0, #4] + bx lr .globl _use_in_loop .p2align 2 @@ -77,60 +93,6 @@ _use_same_twice: _use_in_loop: bx lr - .p2align 2 - .code 32 -__RNvNvCs8GaUp4KaTG0_15test_static_sel7get_sel22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) -LPC8_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCs8GaUp4KaTG0_15test_static_sel12get_same_sel22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) -LPC9_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCs8GaUp4KaTG0_15test_static_sel16get_common_twice22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) -LPC10_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCs8GaUp4KaTG0_15test_static_sel16get_common_twices_22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) -LPC11_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCs8GaUp4KaTG0_15test_static_sel17get_different_sel22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) -LPC12_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCs8GaUp4KaTG0_15test_static_sel7use_fns22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC13_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC13_0+8)) -LPC13_0: - ldr r0, [pc, r0] - bx lr - .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 diff --git a/tests/assembly/test_static_sel/expected/apple-armv7s.s b/tests/assembly/test_static_sel/expected/apple-armv7s.s index 87c48cda3..e2bd0d6dc 100644 --- a/tests/assembly/test_static_sel/expected/apple-armv7s.s +++ b/tests/assembly/test_static_sel/expected/apple-armv7s.s @@ -4,41 +4,45 @@ .p2align 2 .code 32 _get_sel: - push {r7, lr} - mov r7, sp - bl __RNvNvCsen0HaGRHbO4_15test_static_sel7get_sel22objc_static_workaround - pop {r7, pc} + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC0_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC0_0+8)) +LPC0_0: + ldr r0, [pc, r0] + bx lr .globl _get_same_sel .p2align 2 .code 32 _get_same_sel: - push {r7, lr} - mov r7, sp - bl __RNvNvCsen0HaGRHbO4_15test_static_sel12get_same_sel22objc_static_workaround - pop {r7, pc} + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC1_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC1_0+8)) +LPC1_0: + ldr r0, [pc, r0] + bx lr .globl _get_common_twice .p2align 2 .code 32 _get_common_twice: - push {r4, r7, lr} - add r7, sp, #4 - bl __RNvNvCsen0HaGRHbO4_15test_static_sel16get_common_twice22objc_static_workaround - mov r4, r0 - bl __RNvNvCsen0HaGRHbO4_15test_static_sel16get_common_twices_22objc_static_workaround - mov r1, r0 - mov r0, r4 - pop {r4, r7, pc} + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC2_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC2_0+8)) +LPC2_0: + ldr r0, [pc, r0] + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC2_1+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC2_1+8)) +LPC2_1: + ldr r1, [pc, r1] + bx lr .globl _get_different_sel .p2align 2 .code 32 _get_different_sel: - push {r7, lr} - mov r7, sp - bl __RNvNvCsen0HaGRHbO4_15test_static_sel17get_different_sel22objc_static_workaround - pop {r7, pc} + movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC3_0+8)) + movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC3_0+8)) +LPC3_0: + ldr r0, [pc, r0] + bx lr .globl _unused_sel .p2align 2 @@ -50,35 +54,38 @@ _unused_sel: .p2align 2 .code 32 _use_fns: - push {r4, r5, r6, r7, lr} - add r7, sp, #12 - push {r8} - mov r4, r0 - bl __RNvNvCsen0HaGRHbO4_15test_static_sel7get_sel22objc_static_workaround - mov r8, r0 - bl __RNvNvCsen0HaGRHbO4_15test_static_sel12get_same_sel22objc_static_workaround - mov r6, r0 - bl __RNvNvCsen0HaGRHbO4_15test_static_sel17get_different_sel22objc_static_workaround - mov r5, r0 - bl __RNvNvCsen0HaGRHbO4_15test_static_sel7use_fns22objc_static_workaround - str r8, [r4] - str r6, [r4, #4] - str r5, [r4, #8] - str r0, [r4, #12] - pop {r8} - pop {r4, r5, r6, r7, pc} + movw r9, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC5_0+8)) + movt r9, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC5_0+8)) +LPC5_0: + ldr r9, [pc, r9] + movw r2, :lower16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC5_1+8)) + movt r2, :upper16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC5_1+8)) +LPC5_1: + ldr r2, [pc, r2] + movw r3, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC5_2+8)) + movt r3, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC5_2+8)) +LPC5_2: + ldr r3, [pc, r3] + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC5_3+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC5_3+8)) + str r2, [r0, #8] +LPC5_3: + ldr r1, [pc, r1] + str r9, [r0, #12] + stm r0, {r1, r3} + bx lr .globl _use_same_twice .p2align 2 .code 32 _use_same_twice: - push {r4, r7, lr} - add r7, sp, #4 - mov r4, r0 - bl __RNvNvCsen0HaGRHbO4_15test_static_sel7get_sel22objc_static_workaround - str r0, [r4] - str r0, [r4, #4] - pop {r4, r7, pc} + movw r1, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC6_0+8)) + movt r1, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC6_0+8)) +LPC6_0: + ldr r1, [pc, r1] + str r1, [r0] + str r1, [r0, #4] + bx lr .globl _use_in_loop .p2align 2 @@ -86,60 +93,6 @@ _use_same_twice: _use_in_loop: bx lr - .p2align 2 - .code 32 -__RNvNvCsen0HaGRHbO4_15test_static_sel7get_sel22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-(LPC8_0+8)) -LPC8_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCsen0HaGRHbO4_15test_static_sel12get_same_sel22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-(LPC9_0+8)) -LPC9_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCsen0HaGRHbO4_15test_static_sel16get_common_twice22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-(LPC10_0+8)) -LPC10_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCsen0HaGRHbO4_15test_static_sel16get_common_twices_22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-(LPC11_0+8)) -LPC11_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCsen0HaGRHbO4_15test_static_sel17get_different_sel22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-(LPC12_0+8)) -LPC12_0: - ldr r0, [pc, r0] - bx lr - - .p2align 2 - .code 32 -__RNvNvCsen0HaGRHbO4_15test_static_sel7use_fns22objc_static_workaround: - movw r0, :lower16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC13_0+8)) - movt r0, :upper16:(L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-(LPC13_0+8)) -LPC13_0: - ldr r0, [pc, r0] - bx lr - .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index 69f6c8de5..2b7e444d1 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -5,31 +5,35 @@ _get_sel: push ebp mov ebp, esp + call L0$pb +L0$pb: + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-L0$pb] pop ebp - jmp __RNvNvCs6BnsG4fGG5c_15test_static_sel7get_sel22objc_static_workaround + ret .globl _get_same_sel .p2align 4, 0x90 _get_same_sel: push ebp mov ebp, esp + call L1$pb +L1$pb: + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-L1$pb] pop ebp - jmp __RNvNvCs6BnsG4fGG5c_15test_static_sel12get_same_sel22objc_static_workaround + ret .globl _get_common_twice .p2align 4, 0x90 _get_common_twice: push ebp mov ebp, esp - push esi - push eax - call __RNvNvCs6BnsG4fGG5c_15test_static_sel16get_common_twice22objc_static_workaround - mov esi, eax - call __RNvNvCs6BnsG4fGG5c_15test_static_sel16get_common_twices_22objc_static_workaround - mov edx, eax - mov eax, esi - add esp, 4 - pop esi + call L2$pb +L2$pb: + pop ecx + mov eax, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-L2$pb] + mov edx, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-L2$pb] pop ebp ret @@ -38,8 +42,12 @@ _get_common_twice: _get_different_sel: push ebp mov ebp, esp + call L3$pb +L3$pb: + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-L3$pb] pop ebp - jmp __RNvNvCs6BnsG4fGG5c_15test_static_sel17get_different_sel22objc_static_workaround + ret .globl _unused_sel .p2align 4, 0x90 @@ -54,28 +62,22 @@ _unused_sel: _use_fns: push ebp mov ebp, esp - push ebx push edi push esi - sub esp, 12 - mov esi, dword ptr [ebp + 8] - call __RNvNvCs6BnsG4fGG5c_15test_static_sel7get_sel22objc_static_workaround - mov dword ptr [ebp - 16], eax - call __RNvNvCs6BnsG4fGG5c_15test_static_sel12get_same_sel22objc_static_workaround - mov ebx, eax - call __RNvNvCs6BnsG4fGG5c_15test_static_sel17get_different_sel22objc_static_workaround - mov edi, eax - call __RNvNvCs6BnsG4fGG5c_15test_static_sel7use_fns22objc_static_workaround - mov ecx, dword ptr [ebp - 16] - mov dword ptr [esi], ecx - mov dword ptr [esi + 4], ebx - mov dword ptr [esi + 8], edi - mov dword ptr [esi + 12], eax - mov eax, esi - add esp, 12 + call L5$pb +L5$pb: + pop ecx + mov eax, dword ptr [ebp + 8] + mov edx, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-L5$pb] + mov esi, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-L5$pb] + mov edi, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-L5$pb] + mov ecx, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-L5$pb] + mov dword ptr [eax], edx + mov dword ptr [eax + 4], esi + mov dword ptr [eax + 8], edi + mov dword ptr [eax + 12], ecx pop esi pop edi - pop ebx pop ebp ret 4 @@ -84,15 +86,13 @@ _use_fns: _use_same_twice: push ebp mov ebp, esp - push esi - push eax - mov esi, dword ptr [ebp + 8] - call __RNvNvCs6BnsG4fGG5c_15test_static_sel7get_sel22objc_static_workaround - mov dword ptr [esi], eax - mov dword ptr [esi + 4], eax - mov eax, esi - add esp, 4 - pop esi + call L6$pb +L6$pb: + pop ecx + mov eax, dword ptr [ebp + 8] + mov ecx, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-L6$pb] + mov dword ptr [eax], ecx + mov dword ptr [eax + 4], ecx pop ebp ret 4 @@ -104,72 +104,6 @@ _use_in_loop: pop ebp ret - .p2align 4, 0x90 -__RNvNvCs6BnsG4fGG5c_15test_static_sel7get_sel22objc_static_workaround: - push ebp - mov ebp, esp - call L8$pb -L8$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-L8$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs6BnsG4fGG5c_15test_static_sel12get_same_sel22objc_static_workaround: - push ebp - mov ebp, esp - call L9$pb -L9$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-L9$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs6BnsG4fGG5c_15test_static_sel16get_common_twice22objc_static_workaround: - push ebp - mov ebp, esp - call L10$pb -L10$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-L10$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs6BnsG4fGG5c_15test_static_sel16get_common_twices_22objc_static_workaround: - push ebp - mov ebp, esp - call L11$pb -L11$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-L11$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs6BnsG4fGG5c_15test_static_sel17get_different_sel22objc_static_workaround: - push ebp - mov ebp, esp - call L12$pb -L12$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-L12$pb] - pop ebp - ret - - .p2align 4, 0x90 -__RNvNvCs6BnsG4fGG5c_15test_static_sel7use_fns22objc_static_workaround: - push ebp - mov ebp, esp - call L13$pb -L13$pb: - pop eax - mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-L13$pb] - pop ebp - ret - .section __OBJC,__image_info .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 diff --git a/tests/assembly/test_static_sel/expected/apple-x86_64.s b/tests/assembly/test_static_sel/expected/apple-x86_64.s index 96f1731b5..61117fae6 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86_64.s +++ b/tests/assembly/test_static_sel/expected/apple-x86_64.s @@ -5,31 +5,26 @@ _get_sel: push rbp mov rbp, rsp + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9] pop rbp - jmp __RNvNvCs3LjJa8BQyj0_15test_static_sel7get_sel22objc_static_workaround + ret .globl _get_same_sel .p2align 4, 0x90 _get_same_sel: push rbp mov rbp, rsp + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35] pop rbp - jmp __RNvNvCs3LjJa8BQyj0_15test_static_sel12get_same_sel22objc_static_workaround + ret .globl _get_common_twice .p2align 4, 0x90 _get_common_twice: push rbp mov rbp, rsp - push rbx - push rax - call __RNvNvCs3LjJa8BQyj0_15test_static_sel16get_common_twice22objc_static_workaround - mov rbx, rax - call __RNvNvCs3LjJa8BQyj0_15test_static_sel16get_common_twices_22objc_static_workaround - mov rdx, rax - mov rax, rbx - add rsp, 8 - pop rbx + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77] + mov rdx, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7] pop rbp ret @@ -38,8 +33,9 @@ _get_common_twice: _get_different_sel: push rbp mov rbp, rsp + mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0] pop rbp - jmp __RNvNvCs3LjJa8BQyj0_15test_static_sel17get_different_sel22objc_static_workaround + ret .globl _unused_sel .p2align 4, 0x90 @@ -54,27 +50,15 @@ _unused_sel: _use_fns: push rbp mov rbp, rsp - push r15 - push r14 - push r12 - push rbx - mov rbx, rdi - call __RNvNvCs3LjJa8BQyj0_15test_static_sel7get_sel22objc_static_workaround - mov r14, rax - call __RNvNvCs3LjJa8BQyj0_15test_static_sel12get_same_sel22objc_static_workaround - mov r15, rax - call __RNvNvCs3LjJa8BQyj0_15test_static_sel17get_different_sel22objc_static_workaround - mov r12, rax - call __RNvNvCs3LjJa8BQyj0_15test_static_sel7use_fns22objc_static_workaround - mov qword ptr [rbx], r14 - mov qword ptr [rbx + 8], r15 - mov qword ptr [rbx + 16], r12 - mov qword ptr [rbx + 24], rax - mov rax, rbx - pop rbx - pop r12 - pop r14 - pop r15 + mov rax, rdi + mov rcx, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9] + mov rdx, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35] + mov rsi, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0] + mov rdi, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99] + mov qword ptr [rax], rcx + mov qword ptr [rax + 8], rdx + mov qword ptr [rax + 16], rsi + mov qword ptr [rax + 24], rdi pop rbp ret @@ -83,15 +67,10 @@ _use_fns: _use_same_twice: push rbp mov rbp, rsp - push rbx - push rax - mov rbx, rdi - call __RNvNvCs3LjJa8BQyj0_15test_static_sel7get_sel22objc_static_workaround - mov qword ptr [rbx], rax - mov qword ptr [rbx + 8], rax - mov rax, rbx - add rsp, 8 - pop rbx + mov rax, rdi + mov rcx, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9] + mov qword ptr [rdi], rcx + mov qword ptr [rdi + 8], rcx pop rbp ret @@ -103,54 +82,6 @@ _use_in_loop: pop rbp ret - .p2align 4, 0x90 -__RNvNvCs3LjJa8BQyj0_15test_static_sel7get_sel22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9] - pop rbp - ret - - .p2align 4, 0x90 -__RNvNvCs3LjJa8BQyj0_15test_static_sel12get_same_sel22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35] - pop rbp - ret - - .p2align 4, 0x90 -__RNvNvCs3LjJa8BQyj0_15test_static_sel16get_common_twice22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77] - pop rbp - ret - - .p2align 4, 0x90 -__RNvNvCs3LjJa8BQyj0_15test_static_sel16get_common_twices_22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7] - pop rbp - ret - - .p2align 4, 0x90 -__RNvNvCs3LjJa8BQyj0_15test_static_sel17get_different_sel22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0] - pop rbp - ret - - .p2align 4, 0x90 -__RNvNvCs3LjJa8BQyj0_15test_static_sel7use_fns22objc_static_workaround: - push rbp - mov rbp, rsp - mov rax, qword ptr [rip + L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99] - pop rbp - ret - .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 diff --git a/tests/src/bin/test_assembly.rs b/tests/src/bin/test_assembly.rs index 016ed0bd9..396251449 100644 --- a/tests/src/bin/test_assembly.rs +++ b/tests/src/bin/test_assembly.rs @@ -1,6 +1,9 @@ //! A helper script for testing the assembly output. //! //! Similar to `trybuild` and `compiletest`, except specialized to our setup! +//! +//! Very limited currently, for example we can't stably test things that emits +//! mangled symbols, nor things that are emitted in different crates. use cargo_metadata::Message; use std::env; From 8b53cd1c230c761f5f464961e4d2bd560217db1e Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Wed, 22 Jun 2022 02:07:30 +0200 Subject: [PATCH 26/30] Only test static selectors in CI on the Apple runtime --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c47986282..4a5dcaeb5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -379,7 +379,7 @@ jobs: args: ${{ env.ARGS }} ${{ env.TESTARGS }} --features ${{ env.FEATURES }},${{ env.UNSTABLE_FEATURES }} - name: Test static selectors - if: ${{ !matrix.dinghy }} + if: ${{ !matrix.dinghy && (matrix.runtime || 'apple') == 'apple' }} uses: actions-rs/cargo@v1 with: command: test From f9cce826fd77349324096c2a91332ea59c0de5e9 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Wed, 22 Jun 2022 02:32:40 +0200 Subject: [PATCH 27/30] Fix assembly tests for simulator targets --- tests/src/bin/test_assembly.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/src/bin/test_assembly.rs b/tests/src/bin/test_assembly.rs index 396251449..3c566db61 100644 --- a/tests/src/bin/test_assembly.rs +++ b/tests/src/bin/test_assembly.rs @@ -53,6 +53,12 @@ fn read_assembly>(path: P) -> io::Result { .to_str() .unwrap(); let s = s.replace(workspace_dir, "$WORKSPACE"); + // HACK: Replace Objective-C image info for simulator targets + let s = s.replace( + ".asciz\t\"\\000\\000\\000\\000`\\000\\000\"", + ".asciz\t\"\\000\\000\\000\\000@\\000\\000\"", + ); + // Strip various uninteresting directives let s = strip_lines(&s, ".cfi_"); let s = strip_lines(&s, ".macosx_version_"); let s = strip_lines(&s, ".ios_version_"); From a3c9bcd64e0c3ce08e0ece1d514faa179fd16370 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Wed, 22 Jun 2022 03:58:16 +0200 Subject: [PATCH 28/30] Emit different assembly on x86 based on if using the old or new runtime --- .../test_msg_send_id/expected/apple-old-x86.s | 110 ++++++++ .../expected/apple-old-x86.s | 195 ++++++++++++++ .../expected/apple-x86.s | 42 +-- .../expected/apple-old-x86.s | 39 +++ .../expected/apple-old-x86.s | 25 ++ .../test_static_sel/expected/apple-old-x86.s | 243 ++++++++++++++++++ .../test_static_sel/expected/apple-x86.s | 48 ++-- tests/src/bin/test_assembly.rs | 12 +- 8 files changed, 664 insertions(+), 50 deletions(-) create mode 100644 tests/assembly/test_msg_send_id/expected/apple-old-x86.s create mode 100644 tests/assembly/test_msg_send_static_sel/expected/apple-old-x86.s create mode 100644 tests/assembly/test_msg_send_zero_cost/expected/apple-old-x86.s create mode 100644 tests/assembly/test_retain_autoreleased/expected/apple-old-x86.s create mode 100644 tests/assembly/test_static_sel/expected/apple-old-x86.s diff --git a/tests/assembly/test_msg_send_id/expected/apple-old-x86.s b/tests/assembly/test_msg_send_id/expected/apple-old-x86.s new file mode 100644 index 000000000..b42d5f569 --- /dev/null +++ b/tests/assembly/test_msg_send_id/expected/apple-old-x86.s @@ -0,0 +1,110 @@ + .section __TEXT,__text,regular,pure_instructions + .intel_syntax noprefix + .globl _handle_alloc + .p2align 4, 0x90 +_handle_alloc: + push ebp + mov ebp, esp + pop ebp + jmp _objc_msgSend + + .globl _handle_init + .p2align 4, 0x90 +_handle_init: + push ebp + mov ebp, esp + pop ebp + jmp _objc_msgSend + + .globl _handle_alloc_init + .p2align 4, 0x90 +_handle_alloc_init: + push ebp + mov ebp, esp + push esi + push eax + mov esi, dword ptr [ebp + 16] + sub esp, 8 + push dword ptr [ebp + 12] + push dword ptr [ebp + 8] + call _objc_msgSend + add esp, 8 + push esi + push eax + call _objc_msgSend + add esp, 20 + pop esi + pop ebp + ret + + .globl _handle_alloc_release + .p2align 4, 0x90 +_handle_alloc_release: + push ebp + mov ebp, esp + sub esp, 8 + mov eax, dword ptr [ebp + 8] + mov ecx, dword ptr [ebp + 12] + mov dword ptr [esp + 4], ecx + mov dword ptr [esp], eax + call _objc_msgSend + mov dword ptr [esp], eax + call _objc_release + add esp, 8 + pop ebp + ret + + .globl _handle_alloc_init_release + .p2align 4, 0x90 +_handle_alloc_init_release: + push ebp + mov ebp, esp + push esi + sub esp, 20 + mov esi, dword ptr [ebp + 16] + mov eax, dword ptr [ebp + 8] + mov ecx, dword ptr [ebp + 12] + mov dword ptr [esp + 4], ecx + mov dword ptr [esp], eax + call _objc_msgSend + mov dword ptr [esp + 4], esi + mov dword ptr [esp], eax + call _objc_msgSend + mov dword ptr [esp], eax + call _objc_release + add esp, 20 + pop esi + pop ebp + ret + + .globl _handle_copy + .p2align 4, 0x90 +_handle_copy: + push ebp + mov ebp, esp + pop ebp + jmp _objc_msgSend + + .globl _handle_autoreleased + .p2align 4, 0x90 +_handle_autoreleased: + push ebp + mov ebp, esp + sub esp, 8 + mov eax, dword ptr [ebp + 8] + mov ecx, dword ptr [ebp + 12] + mov dword ptr [esp + 4], ecx + mov dword ptr [esp], eax + call _objc_msgSend + ## InlineAsm Start + + mov ebp, ebp + + ## InlineAsm End + mov dword ptr [esp], eax + call _objc_retainAutoreleasedReturnValue + add esp, 8 + pop ebp + ret + +.subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-old-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-old-x86.s new file mode 100644 index 000000000..09b496a01 --- /dev/null +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-old-x86.s @@ -0,0 +1,195 @@ + .section __TEXT,__text,regular,pure_instructions + .intel_syntax noprefix + .globl _handle_with_sel + .p2align 4, 0x90 +_handle_with_sel: + push ebp + mov ebp, esp + sub esp, 8 + call L0$pb +L0$pb: + pop eax + sub esp, 8 + push dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_40f5b12005284286-L0$pb] + push dword ptr [ebp + 8] + call _objc_msgSend + add esp, 24 + pop ebp + ret + + .globl _handle_alloc_init + .p2align 4, 0x90 +_handle_alloc_init: + push ebp + mov ebp, esp + push esi + push eax + call L1$pb +L1$pb: + pop eax + mov esi, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9-L1$pb] + sub esp, 8 + push dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9-L1$pb] + push dword ptr [ebp + 8] + call _objc_msgSend + add esp, 8 + push esi + push eax + call _objc_msgSend + add esp, 20 + pop esi + pop ebp + ret + + .globl _use_generic + .p2align 4, 0x90 +_use_generic: + push ebp + mov ebp, esp + push edi + push esi + call L2$pb +L2$pb: + pop esi + mov edi, dword ptr [ebp + 8] + sub esp, 4 + push dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-L2$pb] + push dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4-L2$pb] + push edi + call _objc_msgSend + add esp, 12 + push dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-L2$pb] + push dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1-L2$pb] + push edi + call _objc_msgSend + add esp, 12 + push dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_31f63858e271db32-L2$pb] + push dword ptr [esi + L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720-L2$pb] + push edi + call _objc_msgSend + add esp, 16 + pop esi + pop edi + pop ebp + ret + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_40f5b12005284286 + .p2align 2 +L_OBJC_IMAGE_INFO_40f5b12005284286: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 +L_OBJC_METH_VAR_NAME_40f5b12005284286: + .asciz "someSelector" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: + .long L_OBJC_METH_VAR_NAME_40f5b12005284286 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 + .p2align 2 +L_OBJC_IMAGE_INFO_904c14aa63c4eec9: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 +L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: + .asciz "init" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: + .long L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 + .p2align 2 +L_OBJC_IMAGE_INFO_b1ab35d3713395f9: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 +L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: + .asciz "alloc" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: + .long L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_31f63858e271db32 + .p2align 2 +L_OBJC_IMAGE_INFO_31f63858e271db32: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 +L_OBJC_METH_VAR_NAME_31f63858e271db32: + .asciz "generic:selector:" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: + .long L_OBJC_METH_VAR_NAME_31f63858e271db32 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 + .p2align 2 +L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 +L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: + .asciz "performSelector:" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: + .long L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 + .p2align 2 +L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 +L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: + .asciz "performSelector:" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: + .long L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 + .p2align 2 +L_OBJC_IMAGE_INFO_8e0840c6b39b7720: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 +L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: + .asciz "performSelector:" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: + .long L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 + +.subsections_via_symbols diff --git a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s index 09b496a01..bb9869903 100644 --- a/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_msg_send_static_sel/expected/apple-x86.s @@ -73,120 +73,120 @@ L2$pb: pop ebp ret - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_40f5b12005284286 .p2align 2 L_OBJC_IMAGE_INFO_40f5b12005284286: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_40f5b12005284286 L_OBJC_METH_VAR_NAME_40f5b12005284286: .asciz "someSelector" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_40f5b12005284286 .p2align 2 L_OBJC_SELECTOR_REFERENCES_40f5b12005284286: .long L_OBJC_METH_VAR_NAME_40f5b12005284286 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_904c14aa63c4eec9 .p2align 2 L_OBJC_IMAGE_INFO_904c14aa63c4eec9: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 L_OBJC_METH_VAR_NAME_904c14aa63c4eec9: .asciz "init" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_904c14aa63c4eec9: .long L_OBJC_METH_VAR_NAME_904c14aa63c4eec9 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_b1ab35d3713395f9 .p2align 2 L_OBJC_IMAGE_INFO_b1ab35d3713395f9: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 L_OBJC_METH_VAR_NAME_b1ab35d3713395f9: .asciz "alloc" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_b1ab35d3713395f9: .long L_OBJC_METH_VAR_NAME_b1ab35d3713395f9 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_31f63858e271db32 .p2align 2 L_OBJC_IMAGE_INFO_31f63858e271db32: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_31f63858e271db32 L_OBJC_METH_VAR_NAME_31f63858e271db32: .asciz "generic:selector:" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_31f63858e271db32 .p2align 2 L_OBJC_SELECTOR_REFERENCES_31f63858e271db32: .long L_OBJC_METH_VAR_NAME_31f63858e271db32 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_cdfe92d39025fdf4 .p2align 2 L_OBJC_IMAGE_INFO_cdfe92d39025fdf4: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4: .asciz "performSelector:" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4 .p2align 2 L_OBJC_SELECTOR_REFERENCES_cdfe92d39025fdf4: .long L_OBJC_METH_VAR_NAME_cdfe92d39025fdf4 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_79bd65c86d46fbf1 .p2align 2 L_OBJC_IMAGE_INFO_79bd65c86d46fbf1: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1: .asciz "performSelector:" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1 .p2align 2 L_OBJC_SELECTOR_REFERENCES_79bd65c86d46fbf1: .long L_OBJC_METH_VAR_NAME_79bd65c86d46fbf1 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_8e0840c6b39b7720 .p2align 2 L_OBJC_IMAGE_INFO_8e0840c6b39b7720: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_8e0840c6b39b7720 L_OBJC_METH_VAR_NAME_8e0840c6b39b7720: .asciz "performSelector:" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720 .p2align 2 L_OBJC_SELECTOR_REFERENCES_8e0840c6b39b7720: diff --git a/tests/assembly/test_msg_send_zero_cost/expected/apple-old-x86.s b/tests/assembly/test_msg_send_zero_cost/expected/apple-old-x86.s new file mode 100644 index 000000000..abb608b6c --- /dev/null +++ b/tests/assembly/test_msg_send_zero_cost/expected/apple-old-x86.s @@ -0,0 +1,39 @@ + .section __TEXT,__text,regular,pure_instructions + .intel_syntax noprefix + .globl _handle + .p2align 4, 0x90 +_handle: + push ebp + mov ebp, esp + pop ebp + jmp _objc_msgSend + + .globl _handle_with_sel + .p2align 4, 0x90 +_handle_with_sel: + push ebp + mov ebp, esp + sub esp, 8 + call L1$pb +L1$pb: + pop eax + sub esp, 8 + push dword ptr [eax + _SEL_REF-L1$pb] + push dword ptr [ebp + 8] + call _objc_msgSend + add esp, 24 + pop ebp + ret + + .section __TEXT,__const + .globl _SEL +_SEL: + .asciz "someSelector" + + .section __DATA,__const + .globl _SEL_REF + .p2align 2 +_SEL_REF: + .long _SEL + +.subsections_via_symbols diff --git a/tests/assembly/test_retain_autoreleased/expected/apple-old-x86.s b/tests/assembly/test_retain_autoreleased/expected/apple-old-x86.s new file mode 100644 index 000000000..b2ebee241 --- /dev/null +++ b/tests/assembly/test_retain_autoreleased/expected/apple-old-x86.s @@ -0,0 +1,25 @@ + .section __TEXT,__text,regular,pure_instructions + .intel_syntax noprefix + .globl _handle + .p2align 4, 0x90 +_handle: + push ebp + mov ebp, esp + sub esp, 8 + mov eax, dword ptr [ebp + 8] + mov ecx, dword ptr [ebp + 12] + mov dword ptr [esp + 4], ecx + mov dword ptr [esp], eax + call _objc_msgSend + ## InlineAsm Start + + mov ebp, ebp + + ## InlineAsm End + mov dword ptr [esp], eax + call _objc_retainAutoreleasedReturnValue + add esp, 8 + pop ebp + ret + +.subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-old-x86.s b/tests/assembly/test_static_sel/expected/apple-old-x86.s new file mode 100644 index 000000000..2b7e444d1 --- /dev/null +++ b/tests/assembly/test_static_sel/expected/apple-old-x86.s @@ -0,0 +1,243 @@ + .section __TEXT,__text,regular,pure_instructions + .intel_syntax noprefix + .globl _get_sel + .p2align 4, 0x90 +_get_sel: + push ebp + mov ebp, esp + call L0$pb +L0$pb: + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-L0$pb] + pop ebp + ret + + .globl _get_same_sel + .p2align 4, 0x90 +_get_same_sel: + push ebp + mov ebp, esp + call L1$pb +L1$pb: + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-L1$pb] + pop ebp + ret + + .globl _get_common_twice + .p2align 4, 0x90 +_get_common_twice: + push ebp + mov ebp, esp + call L2$pb +L2$pb: + pop ecx + mov eax, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77-L2$pb] + mov edx, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7-L2$pb] + pop ebp + ret + + .globl _get_different_sel + .p2align 4, 0x90 +_get_different_sel: + push ebp + mov ebp, esp + call L3$pb +L3$pb: + pop eax + mov eax, dword ptr [eax + L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-L3$pb] + pop ebp + ret + + .globl _unused_sel + .p2align 4, 0x90 +_unused_sel: + push ebp + mov ebp, esp + pop ebp + ret + + .globl _use_fns + .p2align 4, 0x90 +_use_fns: + push ebp + mov ebp, esp + push edi + push esi + call L5$pb +L5$pb: + pop ecx + mov eax, dword ptr [ebp + 8] + mov edx, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-L5$pb] + mov esi, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35-L5$pb] + mov edi, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0-L5$pb] + mov ecx, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99-L5$pb] + mov dword ptr [eax], edx + mov dword ptr [eax + 4], esi + mov dword ptr [eax + 8], edi + mov dword ptr [eax + 12], ecx + pop esi + pop edi + pop ebp + ret 4 + + .globl _use_same_twice + .p2align 4, 0x90 +_use_same_twice: + push ebp + mov ebp, esp + call L6$pb +L6$pb: + pop ecx + mov eax, dword ptr [ebp + 8] + mov ecx, dword ptr [ecx + L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9-L6$pb] + mov dword ptr [eax], ecx + mov dword ptr [eax + 4], ecx + pop ebp + ret 4 + + .globl _use_in_loop + .p2align 4, 0x90 +_use_in_loop: + push ebp + mov ebp, esp + pop ebp + ret + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 + .p2align 2 +L_OBJC_IMAGE_INFO_68381ba894e318e9: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 +L_OBJC_METH_VAR_NAME_68381ba894e318e9: + .asciz "simple" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: + .long L_OBJC_METH_VAR_NAME_68381ba894e318e9 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 + .p2align 2 +L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 +L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: + .asciz "simple" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: + .long L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 + .p2align 2 +L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 +L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: + .asciz "alloc" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: + .long L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 + .p2align 2 +L_OBJC_IMAGE_INFO_33db9f67352fe9a7: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 +L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: + .asciz "alloc" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: + .long L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 + .p2align 2 +L_OBJC_IMAGE_INFO_bb37877368f0b7a0: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 +L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: + .asciz "i:am:different:" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: + .long L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 + .p2align 2 +L_OBJC_IMAGE_INFO_2c505e110d181b25: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 +L_OBJC_METH_VAR_NAME_2c505e110d181b25: + .asciz "unused" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: + .long L_OBJC_METH_VAR_NAME_2c505e110d181b25 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 + .p2align 2 +L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 +L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: + .asciz "fourthSel" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: + .long L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 + + .section __OBJC,__image_info + .globl L_OBJC_IMAGE_INFO_f46908e864c86c6b + .p2align 2 +L_OBJC_IMAGE_INFO_f46908e864c86c6b: + .asciz "\000\000\000\000@\000\000" + + .section __TEXT,__cstring,cstring_literals + .globl L_OBJC_METH_VAR_NAME_f46908e864c86c6b +L_OBJC_METH_VAR_NAME_f46908e864c86c6b: + .asciz "loopedSelector" + + .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .globl L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b + .p2align 2 +L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b: + .long L_OBJC_METH_VAR_NAME_f46908e864c86c6b + +.subsections_via_symbols diff --git a/tests/assembly/test_static_sel/expected/apple-x86.s b/tests/assembly/test_static_sel/expected/apple-x86.s index 2b7e444d1..71cd6cc7c 100644 --- a/tests/assembly/test_static_sel/expected/apple-x86.s +++ b/tests/assembly/test_static_sel/expected/apple-x86.s @@ -104,137 +104,137 @@ _use_in_loop: pop ebp ret - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_68381ba894e318e9 .p2align 2 L_OBJC_IMAGE_INFO_68381ba894e318e9: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_68381ba894e318e9 L_OBJC_METH_VAR_NAME_68381ba894e318e9: .asciz "simple" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9 .p2align 2 L_OBJC_SELECTOR_REFERENCES_68381ba894e318e9: .long L_OBJC_METH_VAR_NAME_68381ba894e318e9 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35 .p2align 2 L_OBJC_IMAGE_INFO_cd2fd6e7d2adcc35: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35: .asciz "simple" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35 .p2align 2 L_OBJC_SELECTOR_REFERENCES_cd2fd6e7d2adcc35: .long L_OBJC_METH_VAR_NAME_cd2fd6e7d2adcc35 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_e4a45d49bfea5d77 .p2align 2 L_OBJC_IMAGE_INFO_e4a45d49bfea5d77: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77: .asciz "alloc" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77 .p2align 2 L_OBJC_SELECTOR_REFERENCES_e4a45d49bfea5d77: .long L_OBJC_METH_VAR_NAME_e4a45d49bfea5d77 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_33db9f67352fe9a7 .p2align 2 L_OBJC_IMAGE_INFO_33db9f67352fe9a7: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 L_OBJC_METH_VAR_NAME_33db9f67352fe9a7: .asciz "alloc" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7 .p2align 2 L_OBJC_SELECTOR_REFERENCES_33db9f67352fe9a7: .long L_OBJC_METH_VAR_NAME_33db9f67352fe9a7 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_bb37877368f0b7a0 .p2align 2 L_OBJC_IMAGE_INFO_bb37877368f0b7a0: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 L_OBJC_METH_VAR_NAME_bb37877368f0b7a0: .asciz "i:am:different:" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0 .p2align 2 L_OBJC_SELECTOR_REFERENCES_bb37877368f0b7a0: .long L_OBJC_METH_VAR_NAME_bb37877368f0b7a0 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_2c505e110d181b25 .p2align 2 L_OBJC_IMAGE_INFO_2c505e110d181b25: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_2c505e110d181b25 L_OBJC_METH_VAR_NAME_2c505e110d181b25: .asciz "unused" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25 .p2align 2 L_OBJC_SELECTOR_REFERENCES_2c505e110d181b25: .long L_OBJC_METH_VAR_NAME_2c505e110d181b25 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99 .p2align 2 L_OBJC_IMAGE_INFO_5419c3f7fc0a6f99: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99: .asciz "fourthSel" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99 .p2align 2 L_OBJC_SELECTOR_REFERENCES_5419c3f7fc0a6f99: .long L_OBJC_METH_VAR_NAME_5419c3f7fc0a6f99 - .section __OBJC,__image_info + .section __DATA,__objc_imageinfo,regular,no_dead_strip .globl L_OBJC_IMAGE_INFO_f46908e864c86c6b .p2align 2 L_OBJC_IMAGE_INFO_f46908e864c86c6b: .asciz "\000\000\000\000@\000\000" - .section __TEXT,__cstring,cstring_literals + .section __TEXT,__objc_methname,cstring_literals .globl L_OBJC_METH_VAR_NAME_f46908e864c86c6b L_OBJC_METH_VAR_NAME_f46908e864c86c6b: .asciz "loopedSelector" - .section __OBJC,__message_refs,literal_pointers,no_dead_strip + .section __DATA,__objc_selrefs,literal_pointers,no_dead_strip .globl L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b .p2align 2 L_OBJC_SELECTOR_REFERENCES_f46908e864c86c6b: diff --git a/tests/src/bin/test_assembly.rs b/tests/src/bin/test_assembly.rs index 3c566db61..b9040e5d1 100644 --- a/tests/src/bin/test_assembly.rs +++ b/tests/src/bin/test_assembly.rs @@ -134,12 +134,14 @@ fn main() { .unwrap_or(host); println!("Target {target}."); - let architecture = target.split_once("-").unwrap().0; - let architecture = if matches!(architecture, "i386" | "i686") { - "x86" - } else { - architecture + let mut architecture = target.split_once("-").unwrap().0; + if matches!(architecture, "i386" | "i686") { + architecture = "x86"; }; + if target == "i686-apple-darwin" { + // Old ABI, we frequently have to do things differently there + architecture = "old-x86"; + } println!("Architecture {architecture}."); let expected_file = package_path From 776e6c9a224756f95705f2c56e6e115343430191 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 23 Jun 2022 20:44:57 +0200 Subject: [PATCH 29/30] More documentation --- objc2-proc-macros/src/lib.rs | 5 +++++ objc2/src/macros.rs | 31 ++++++++++++++++++++++++++----- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/objc2-proc-macros/src/lib.rs b/objc2-proc-macros/src/lib.rs index b8e0a98ac..ee49dcc47 100644 --- a/objc2-proc-macros/src/lib.rs +++ b/objc2-proc-macros/src/lib.rs @@ -51,6 +51,8 @@ fn get_idents(input: TokenStream) -> impl Iterator { /// Creates a hash from the input and source code locations in the provided /// idents. /// +/// This hash is not guaranteed to be stable across compiler versions. +/// /// Tests are in [`objc2::__macro_helpers`]. #[proc_macro] #[doc(hidden)] @@ -68,6 +70,9 @@ pub fn __hash_idents(input: TokenStream) -> TokenStream { // proc macro right now is from the `Debug` formatter for spans which // includes the source code location... so just hash the whole `Debug` // format output of the span + // + // Prior art in the `defmt` crate, see here: + // https://github.com/knurling-rs/defmt/blob/defmt-v0.3.1/macros/src/construct.rs format!("{:?}", ident.span()).hash(&mut hasher); } diff --git a/objc2/src/macros.rs b/objc2/src/macros.rs index 4755cb8f8..709664db4 100644 --- a/objc2/src/macros.rs +++ b/objc2/src/macros.rs @@ -44,6 +44,11 @@ macro_rules! class { /// /// Non-ascii identifiers are ill-tested, if supported at all. /// +/// [`Sel::register`]: crate::runtime::Sel::register +/// +/// +/// # Features +/// /// If the experimental `"unstable-static-sel"` feature is enabled, this will /// emit special statics that will be replaced by the dynamic linker (dyld) /// when the program starts up - in exactly the same manner as normal @@ -54,15 +59,18 @@ macro_rules! class { /// correctly in all cases. /// See the source code and [rust-lang/rust#53929] for more info. /// -/// Concretely, this may fail at link-time (likely), at dynamic link-time/just -/// before the program is run, or possibly also at runtime, causing UB. +/// Concretely, this may fail at: +/// - link-time (likely) +/// - dynamic link-time/just before the program is run (fairly likely) +/// - runtime, causing UB (unlikely) /// /// The `"unstable-static-sel-inlined"` feature is the even more extreme -/// version of this - it yields the best performance and is closest to real +/// version - it yields the best performance and is closest to real /// Objective-C code, but probably won't work unless your code and its /// inlining is written in a very certain way. /// -/// [`Sel::register`]: crate::runtime::Sel::register +/// Enabling LTO greatly increases the chance that these features work. +/// /// [rust-lang/rust#53929]: https://github.com/rust-lang/rust/issues/53929 /// /// @@ -161,7 +169,9 @@ macro_rules! __sel_inner_statics_apple_generic { /// - End up in the same codegen unit as the other statics below. /// - End up in the final binary so it can be read by dyld. /// - /// Unfortunately however, this leads to duplicated tags. + /// Unfortunately however, this leads to duplicated tags - the linker + /// reports `__DATA/__objc_imageinfo has unexpectedly large size XXX`, + /// but things still seems to work. #[link_section = $image_info_section] #[export_name = concat!("\x01L_OBJC_IMAGE_INFO_", $crate::__macro_helpers::__hash_idents!($($idents)+))] #[used] // Make sure this reaches the linker @@ -202,6 +212,17 @@ macro_rules! __sel_inner_statics_apple_generic { /// Clang uses `no_dead_strip` in the link section for some reason, /// which other tools (notably some LLVM tools) now assume is present, /// so we have to add it as well. + /// + /// + /// # Safety + /// + /// I'm quite uncertain of how safe this is, since the Rust abstract + /// machine has no concept of a static that is initialized outside of + /// it - perhaps it would be better to use `read_volatile` instead of + /// relying on `UnsafeCell`? Or perhaps `MaybeUninit` would help? + /// + /// See the [`ctor`](https://crates.io/crates/ctor) crate for more + /// info on "life before main". #[link_section = $selector_ref_section] #[export_name = concat!("\x01L_OBJC_SELECTOR_REFERENCES_", $crate::__macro_helpers::__hash_idents!($($idents)+))] static mut REF: $crate::__macro_helpers::UnsafeCell<$crate::runtime::Sel> = unsafe { From 783a742c904c20f0f43a6fe6f077c351aff5501c Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 23 Jun 2022 21:06:09 +0200 Subject: [PATCH 30/30] Add changelog entry --- objc2/CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/objc2/CHANGELOG.md b/objc2/CHANGELOG.md index de3d37767..0e65eb023 100644 --- a/objc2/CHANGELOG.md +++ b/objc2/CHANGELOG.md @@ -25,6 +25,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). msg_send_id![msg_send_id![Self::class(), alloc], new].unwrap() }; ``` +* Added the `"unstable-static-sel"` and `"unstable-static-sel-inlined"` + feature flags to make the `sel!` macro (and by extension, the `msg_send!` + macros) faster. ## 0.3.0-beta.0 - 2022-06-13