Comment: | Use more local labels in assembly |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
cb18f264047599600ab230ebc0aa5400 |
User & Date: | js on 2023-10-28 18:35:43 |
Other Links: | manifest | tags |
2023-10-28
| ||
18:45 | Remove unnecessary `short` from assembly check-in: 71d8f813ef user: js tags: trunk | |
18:35 | Use more local labels in assembly check-in: cb18f26404 user: js tags: trunk | |
18:04 | Move x86/Mach-O assembly to Intel syntax check-in: 18c524e13d user: js tags: trunk | |
Modified src/forwarding/apple-forwarding-amd64.S from [5acd78427e] to [51cce4e244].
︙ | ︙ | |||
31 32 33 34 35 36 37 | .att_syntax /* Use uppercase instruction to avoid recursion. */ JMP $0 .intel_syntax noprefix .endmacro .section __TEXT, __objc_methname, cstring_literals | | | | | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | .att_syntax /* Use uppercase instruction to avoid recursion. */ JMP $0 .intel_syntax noprefix .endmacro .section __TEXT, __objc_methname, cstring_literals Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section __DATA, __objc_selrefs, literal_pointers, no_dead_strip Lsel_forwardingTargetForSelector_: .quad Lstr_forwardingTargetForSelector_ .section __DATA, __objc_imageinfo, regular, no_dead_strip .long 0, 0 .section __TEXT, __text, regular, pure_instructions _OFForward: push rbp |
︙ | ︙ | |||
67 68 69 70 71 72 73 | movaps [rbp - 0xA0], xmm5 movaps [rbp - 0xB0], xmm6 movaps [rbp - 0xC0], xmm7 call _object_getClass mov rdi, rax | | | | 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | movaps [rbp - 0xA0], xmm5 movaps [rbp - 0xB0], xmm6 movaps [rbp - 0xC0], xmm7 call _object_getClass mov rdi, rax mov rsi, [rip + Lsel_forwardingTargetForSelector_] call _class_respondsToSelector test rax, rax jz 0f mov rdi, [rbp - 0x10] mov rsi, [rip + Lsel_forwardingTargetForSelector_] mov rdx, [rbp - 0x18] call _objc_msgSend test rax, rax jz 0f cmp rax, [rbp - 0x10] je 0f |
︙ | ︙ | |||
141 142 143 144 145 146 147 | movaps [rbp - 0xB0], xmm6 movaps [rbp - 0xC0], xmm7 mov rdi, rsi call _object_getClass mov rdi, rax | | | | 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | movaps [rbp - 0xB0], xmm6 movaps [rbp - 0xC0], xmm7 mov rdi, rsi call _object_getClass mov rdi, rax mov rsi, [rip + Lsel_forwardingTargetForSelector_] call _class_respondsToSelector test rax, rax jz 0f mov rdi, [rbp - 0x18] mov rsi, [rip + Lsel_forwardingTargetForSelector_] mov rdx, [rbp - 0x20] call _objc_msgSend test rax, rax jz 0f cmp rax, [rbp - 0x18] je 0f |
︙ | ︙ |
Modified src/forwarding/apple-forwarding-arm.S from [3ab429edb9] to [2386bdcec6].
︙ | ︙ | |||
15 16 17 18 19 20 21 | #include "config.h" .globl _OFForward .globl _OFForward_stret .section __TEXT, __objc_methname, cstring_literals | | | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include "config.h" .globl _OFForward .globl _OFForward_stret .section __TEXT, __objc_methname, cstring_literals Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section __DATA, __objc_selrefs, literal_pointers, no_dead_strip Lsel_forwardingTargetForSelector_: .long str_forwardingTargetForSelector_ .section __DATA, __objc_imageinfo, regular, no_dead_strip .long 0, 0 .section __TEXT, __text, regular, pure_instructions .arm .align 2 _OFForward: stmfd sp!, {r0-r4, lr} vstmdb sp!, {d0-d7} ldr r4, Lsel_forwardingTargetForSelector_$indirect_L0 L0: ldr r4, [pc, r4] blx _object_getClass mov r1, r4 blx _class_respondsToSelector |
︙ | ︙ | |||
67 68 69 70 71 72 73 | 0: vldmia sp!, {d0-d7} ldmfd sp!, {r0-r4, lr} b _OFMethodNotFound .data_region | | | | | 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | 0: vldmia sp!, {d0-d7} ldmfd sp!, {r0-r4, lr} b _OFMethodNotFound .data_region Lsel_forwardingTargetForSelector_$indirect_L0: .long Lsel_forwardingTargetForSelector_-(L0+8) .end_data_region .align 2 _OFForward_stret: stmfd sp!, {r0-r4, lr} vstmdb sp!, {d0-d7} ldr r4, Lsel_forwardingTargetForSelector_$indirect_L1 L1: ldr r4, [pc, r4] mov r0, r1 blx _object_getClass mov r1, r4 |
︙ | ︙ | |||
115 116 117 118 119 120 121 | 0: vldmia sp!, {d0-d7} ldmfd sp!, {r0-r4, lr} b _OFMethodNotFound_stret .data_region | | | | 115 116 117 118 119 120 121 122 123 124 | 0: vldmia sp!, {d0-d7} ldmfd sp!, {r0-r4, lr} b _OFMethodNotFound_stret .data_region Lsel_forwardingTargetForSelector_$indirect_L1: .long Lsel_forwardingTargetForSelector_-(L1+8) .end_data_region |
Modified src/forwarding/apple-forwarding-arm64.S from [63e754588e] to [f4650e9fb4].
︙ | ︙ | |||
15 16 17 18 19 20 21 | #include "config.h" .globl _OFForward .globl _OFForward_stret .section __TEXT, __objc_methname, cstring_literals | | | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include "config.h" .globl _OFForward .globl _OFForward_stret .section __TEXT, __objc_methname, cstring_literals Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section __DATA, __objc_selrefs, literal_pointers, no_dead_strip Lsel_forwardingTargetForSelector_: .quad Lstr_forwardingTargetForSelector_ .section __DATA, __objc_imageinfo, regular, no_dead_strip .long 0, 0 .section __TEXT, __text, regular, pure_instructions .align 2 _OFForward: |
︙ | ︙ | |||
48 49 50 51 52 53 54 | stp q0, q1, [sp, #80] stp q2, q3, [sp, #112] stp q4, q5, [sp, #144] stp q6, q7, [sp, #176] bl _object_getClass | | | | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | stp q0, q1, [sp, #80] stp q2, q3, [sp, #112] stp q4, q5, [sp, #144] stp q6, q7, [sp, #176] bl _object_getClass adrp x19, Lsel_forwardingTargetForSelector_@PAGE add x19, x19, Lsel_forwardingTargetForSelector_@PAGEOFF ldr x19, [x19] mov x1, x19 bl _class_respondsToSelector cbz x0, 0f |
︙ | ︙ |
Modified src/forwarding/apple-forwarding-powerpc.S from [d8e9e96515] to [01c664deae].
︙ | ︙ | |||
15 16 17 18 19 20 21 | #include "config.h" .globl _OFForward .globl _OFForward_stret .section __TEXT, __cstring, cstring_literals | | | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include "config.h" .globl _OFForward .globl _OFForward_stret .section __TEXT, __cstring, cstring_literals Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section __OBJC, __message_refs Lsel_forwardingTargetForSelector_: .long Lstr_forwardingTargetForSelector_ .section __OBJC, __image_info .long 0, 0 .section __TEXT, __text, regular, pure_instructions _OFForward: mflr r0 |
︙ | ︙ | |||
67 68 69 70 71 72 73 | stfd f13, 184(r1) bl _object_getClass bl 0f 0: mflr r13 | | | | 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | stfd f13, 184(r1) bl _object_getClass bl 0f 0: mflr r13 addis r13, r13, ha16(Lsel_forwardingTargetForSelector_-0b) lwz r13, lo16(Lsel_forwardingTargetForSelector_-0b)(r13) mr r4, r13 bl _class_respondsToSelector cmpwi r3, 0 beq- 0f |
︙ | ︙ | |||
170 171 172 173 174 175 176 | mr r3, r4 bl _object_getClass bl 0f 0: mflr r13 | | | | 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | mr r3, r4 bl _object_getClass bl 0f 0: mflr r13 addis r13, r13, ha16(Lsel_forwardingTargetForSelector_-0b) lwz r13, lo16(Lsel_forwardingTargetForSelector_-0b)(r13) mr r4, r13 bl _class_respondsToSelector cmpwi r3, 0 beq- 0f |
︙ | ︙ |
Modified src/forwarding/apple-forwarding-x86.S from [c3da6554d1] to [fe22007392].
︙ | ︙ | |||
31 32 33 34 35 36 37 | .att_syntax /* Use uppercase instruction to avoid recursion. */ JMP $0 .intel_syntax noprefix .endmacro .section __TEXT, __cstring, cstring_literals | | | | | | | | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | .att_syntax /* Use uppercase instruction to avoid recursion. */ JMP $0 .intel_syntax noprefix .endmacro .section __TEXT, __cstring, cstring_literals Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section __OBJC, __message_refs, literal_pointers, no_dead_strip Lsel_forwardingTargetForSelector_: .long Lstr_forwardingTargetForSelector_ .section __OBJC, __image_info .long 0, 0 .section __TEXT, __text, regular, pure_instructions _OFForward: push ebp mov ebp, esp push ebx sub esp, 20 call LgetEIP 0: mov eax, [ebp + 8] mov [esp], eax call _object_getClass mov [esp], eax mov eax, [ebx + Lsel_forwardingTargetForSelector_ - 0b] mov [esp + 4], eax call _class_respondsToSelector test eax, eax jz 0f mov eax, [ebp + 8] mov [esp], eax mov eax, [ebx + Lsel_forwardingTargetForSelector_ - 0b] mov [esp + 4], eax mov eax, [ebp + 12] mov [esp + 8], eax call _objc_msgSend test eax, eax jz 0f |
︙ | ︙ | |||
99 100 101 102 103 104 105 | _OFForward_stret: push ebp mov ebp, esp push ebx sub esp, 20 | | | | | 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | _OFForward_stret: push ebp mov ebp, esp push ebx sub esp, 20 call LgetEIP 0: mov eax, [ebp + 12] mov [esp], eax call _object_getClass mov [esp], eax mov eax, [ebx + Lsel_forwardingTargetForSelector_ - 0b] mov [esp + 4], eax call _class_respondsToSelector test eax, eax jz 0f mov eax, [ebp + 12] mov [esp], eax mov eax, [ebx + Lsel_forwardingTargetForSelector_ - 0b] mov [esp + 4], eax mov eax, [ebp + 16] mov [esp + 8], eax call _objc_msgSend test eax, eax jz 0f |
︙ | ︙ | |||
142 143 144 145 146 147 148 | 0: add esp, 20 pop ebx pop ebp jmp _OFMethodNotFound_stret | | | 142 143 144 145 146 147 148 149 150 151 | 0: add esp, 20 pop ebx pop ebp jmp _OFMethodNotFound_stret LgetEIP: mov ebx, [esp] ret |
Modified src/forwarding/forwarding-amd64-elf.S from [6b28668374] to [60cb5f07a9].
︙ | ︙ | |||
44 45 46 47 48 49 50 | movaps [rbp - 0xA0], xmm5 movaps [rbp - 0xB0], xmm6 movaps [rbp - 0xC0], xmm7 call object_getClass@PLT mov rdi, rax | | | | | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | movaps [rbp - 0xA0], xmm5 movaps [rbp - 0xB0], xmm6 movaps [rbp - 0xC0], xmm7 call object_getClass@PLT mov rdi, rax lea rsi, [rip + .Lsel_forwardingTargetForSelector_] call class_respondsToSelector@PLT test rax, rax jz short 0f mov rdi, [rbp - 0x10] lea rsi, [rip + .Lsel_forwardingTargetForSelector_] call objc_msg_lookup@PLT mov rdi, [rbp - 0x10] lea rsi, [rip + .Lsel_forwardingTargetForSelector_] mov rdx, [rbp - 0x18] call rax test rax, rax jz short 0f cmp rax, [rbp - 0x10] je short 0f |
︙ | ︙ | |||
130 131 132 133 134 135 136 | movaps [rbp - 0xB0], xmm6 movaps [rbp - 0xC0], xmm7 mov rdi, rsi call object_getClass@PLT mov rdi, rax | | | | | 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | movaps [rbp - 0xB0], xmm6 movaps [rbp - 0xC0], xmm7 mov rdi, rsi call object_getClass@PLT mov rdi, rax lea rsi, [rip + .Lsel_forwardingTargetForSelector_] call class_respondsToSelector@PLT test rax, rax jz short 0f mov rdi, [rbp - 0x18] lea rsi, [rip + .Lsel_forwardingTargetForSelector_] call objc_msg_lookup@PLT mov rdi, [rbp - 0x18] lea rsi, [rip + .Lsel_forwardingTargetForSelector_] mov rdx, [rbp - 0x20] call rax test rax, rax jz short 0f cmp rax, [rbp - 0x18] je short 0f |
︙ | ︙ | |||
191 192 193 194 195 196 197 | mov rsp, rbp pop rbp jmp OFMethodNotFound_stret@PLT .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret | | | | | | | | | | | | 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 | mov rsp, rbp pop rbp jmp OFMethodNotFound_stret@PLT .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret .Linit: lea rdi, [rip + .Lmodule] jmp __objc_exec_class@PLT #ifdef OF_SOLARIS .section .init_array, "aw" #else .section .ctors, "aw", %progbits #endif .quad .Linit .section .rodata .Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data .Lsel_forwardingTargetForSelector_: .quad .Lstr_forwardingTargetForSelector_, 0 .quad 0, 0 .Lsymtab: .quad 0, .Lsel_forwardingTargetForSelector_ .short 0, 0 .long 0 .quad 0 .Lmodule: .quad 8, 32, 0, .Lsymtab #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/forwarding/forwarding-amd64-macho.S from [0969f9a066] to [197daf8bf7].
︙ | ︙ | |||
58 59 60 61 62 63 64 | movaps [rbp - 0xA0], xmm5 movaps [rbp - 0xB0], xmm6 movaps [rbp - 0xC0], xmm7 call _object_getClass mov rdi, rax | | | | | 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | movaps [rbp - 0xA0], xmm5 movaps [rbp - 0xB0], xmm6 movaps [rbp - 0xC0], xmm7 call _object_getClass mov rdi, rax lea rsi, [rip + Lsel_forwardingTargetForSelector_] call _class_respondsToSelector test rax, rax jz 0f mov rdi, [rbp - 0x10] lea rsi, [rip + Lsel_forwardingTargetForSelector_] call _objc_msg_lookup movq rdi, [rbp - 0x10] leaq rsi, [rip + Lsel_forwardingTargetForSelector_] movq rdx, [rbp - 0x18] call *%rax test rax, rax jz 0f cmp rax, [rbp - 0x10] je 0f |
︙ | ︙ | |||
142 143 144 145 146 147 148 | movaps [rbp - 0xB0], xmm6 movaps [rbp - 0xC0], xmm7 mov rdi, rsi call _object_getClass mov rdi, rax | | | | | 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | movaps [rbp - 0xB0], xmm6 movaps [rbp - 0xC0], xmm7 mov rdi, rsi call _object_getClass mov rdi, rax lea rsi, [rip + Lsel_forwardingTargetForSelector_] call _class_respondsToSelector test rax, rax jz 0f mov rdi, [rbp - 0x18] lea rsi, [rip + Lsel_forwardingTargetForSelector_] call _objc_msg_lookup mov rdi, [rbp - 0x18] lea rsi, [rip + Lsel_forwardingTargetForSelector_] mov rdx, [rbp - 0x20] call *%rax test rax, rax jz 0f cmp rax, [rbp - 0x18] je 0f |
︙ | ︙ | |||
201 202 203 204 205 206 207 | mov rdx, [rbp - 0x20] mov rsp, rbp pop rbp jmp _OFMethodNotFound_stret | | | | | | | | | | | | 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 | mov rdx, [rbp - 0x20] mov rsp, rbp pop rbp jmp _OFMethodNotFound_stret Linit: lea rdi, [rip + Lmodule] jmp ___objc_exec_class .section __DATA, __mod_init_func, mod_init_funcs .quad Linit .section __TEXT, __cstring, cstring_literals Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section __DATA, __data Lsel_forwardingTargetForSelector_: .quad Lstr_forwardingTargetForSelector_, 0 .quad 0, 0 Lsymtab: .quad 0, Lsel_forwardingTargetForSelector_ .short 0, 0 .long 0 .quad 0 Lmodule: .quad 8, 32, 0, Lsymtab |
Modified src/forwarding/forwarding-amd64-win64.S from [66e90d878f] to [bb16226b9b].
︙ | ︙ | |||
36 37 38 39 40 41 42 | movaps [rbp - 0x70], xmm1 movaps [rbp - 0x80], xmm2 movaps [rbp - 0x90], xmm3 call object_getClass mov rcx, rax | | | | | 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | movaps [rbp - 0x70], xmm1 movaps [rbp - 0x80], xmm2 movaps [rbp - 0x90], xmm3 call object_getClass mov rcx, rax lea rdx, [rip + .Lsel_forwardingTargetForSelector_] call class_respondsToSelector test rax, rax jz short 0f mov rcx, [rbp - 0x30] lea rdx, [rip + .Lsel_forwardingTargetForSelector_] call objc_msg_lookup mov rcx, [rbp - 0x30] lea rdx, [rip + .Lsel_forwardingTargetForSelector_] mov r8, [rbp - 0x38] call rax test rax, rax jz short 0f cmp rax, [rbp - 0x30] je short 0f |
︙ | ︙ | |||
112 113 114 115 116 117 118 | movaps [rbp - 0x80], xmm2 movaps [rbp - 0x90], xmm3 mov rcx, rdx call object_getClass mov rcx, rax | | | | | 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | movaps [rbp - 0x80], xmm2 movaps [rbp - 0x90], xmm3 mov rcx, rdx call object_getClass mov rcx, rax lea rdx, [rip + .Lsel_forwardingTargetForSelector_] call class_respondsToSelector test rax, rax jz short 0f mov rcx, [rbp - 0x38] lea rdx, [rip + .Lsel_forwardingTargetForSelector_] call objc_msg_lookup mov rcx, [rbp - 0x38] lea rdx, [rip + .Lsel_forwardingTargetForSelector_] mov r8, [rbp - 0x40] call rax test rax, rax jz short 0f cmp rax, [rbp - 0x38] je short 0f |
︙ | ︙ | |||
169 170 171 172 173 174 175 | jmp OFMethodNotFound_stret .def OFForward_stret .scl 2 .type 32 .endef | | | | | | | | | | | | 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | jmp OFMethodNotFound_stret .def OFForward_stret .scl 2 .type 32 .endef .Linit: lea rcx, [rip + .Lmodule] jmp __objc_exec_class .section .ctors, "aw" .quad .Linit .section .rodata .Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data .Lsel_forwardingTargetForSelector_: .quad .Lstr_forwardingTargetForSelector_, 0 .quad 0, 0 .Lsymtab: .long 0, 0 .quad .Lsel_forwardingTargetForSelector_ .short 0, 0 .long 0 .quad 0 .Lmodule: .long 8, 32 .quad 0, .Lsymtab |
Modified src/forwarding/forwarding-arm-elf.S from [594651911a] to [cb34b0f842].
︙ | ︙ | |||
27 28 29 30 31 32 33 | .section .text OFForward: #ifdef HAVE_VFP2 vstmdb sp!, {d0-d7} #endif stmfd sp!, {r0-r4, lr} | | | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | .section .text OFForward: #ifdef HAVE_VFP2 vstmdb sp!, {d0-d7} #endif stmfd sp!, {r0-r4, lr} ldr r4, .Lsel_forwardingTargetForSelector_$indirect_.L0 .L0: add r4, pc bl object_getClass(PLT) mov r1, r4 bl class_respondsToSelector(PLT) |
︙ | ︙ | |||
82 83 84 85 86 87 88 | OFForward_stret: #ifdef HAVE_VFP2 vstmdb sp!, {d0-d7} #endif stmfd sp!, {r0-r4, lr} | | | 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | OFForward_stret: #ifdef HAVE_VFP2 vstmdb sp!, {d0-d7} #endif stmfd sp!, {r0-r4, lr} ldr r4, .Lsel_forwardingTargetForSelector_$indirect_.L1 .L1: add r4, pc mov r0, r1 bl object_getClass(PLT) mov r1, r4 |
︙ | ︙ | |||
132 133 134 135 136 137 138 | #ifdef HAVE_VFP2 vldmia sp!, {d0-d7} #endif b OFMethodNotFound_stret(PLT) .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret | | | | | | | | | | | | | | | | | | 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | #ifdef HAVE_VFP2 vldmia sp!, {d0-d7} #endif b OFMethodNotFound_stret(PLT) .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret .Linit: ldr r0, .Lmodule$indirect_.L2 .L2: add r0, pc b __objc_exec_class(PLT) .Lsel_forwardingTargetForSelector_$indirect_.L0: .long .Lsel_forwardingTargetForSelector_-(.L0+8) .Lsel_forwardingTargetForSelector_$indirect_.L1: .long .Lsel_forwardingTargetForSelector_-(.L1+8) .Lmodule$indirect_.L2: .long .Lmodule-(.L2+8) .section .init_array, "aw", %init_array .long .Linit .section .rodata .Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data .Lsel_forwardingTargetForSelector_: .long .Lstr_forwardingTargetForSelector_, 0 .long 0, 0 .Lsymtab: .long 0, .Lsel_forwardingTargetForSelector_ .short 0, 0 .long 0 .long 0 .Lmodule: .long 8, 16, 0, .Lsymtab #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/forwarding/forwarding-arm64-elf.S from [0aaed32730] to [3a26ad261d].
︙ | ︙ | |||
38 39 40 41 42 43 44 | stp q0, q1, [sp, #80] stp q2, q3, [sp, #112] stp q4, q5, [sp, #144] stp q6, q7, [sp, #176] bl object_getClass | | | | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | stp q0, q1, [sp, #80] stp q2, q3, [sp, #112] stp q4, q5, [sp, #144] stp q6, q7, [sp, #176] bl object_getClass adrp x19, .Lsel_forwardingTargetForSelector_ add x19, x19, :lo12:.Lsel_forwardingTargetForSelector_ mov x1, x19 bl class_respondsToSelector cbz x0, 0f ldr x0, [sp] |
︙ | ︙ | |||
98 99 100 101 102 103 104 | b OFMethodNotFound .type OFForward, %function .size OFForward, .-OFForward .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret | | | | | | | | | | | | | 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | b OFMethodNotFound .type OFForward, %function .size OFForward, .-OFForward .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret .Linit: adrp x0, .Lmodule add x0, x0, :lo12:.Lmodule b __objc_exec_class .section .init_array, "aw", %init_array .xword .Linit .section .rodata .Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data .Lsel_forwardingTargetForSelector_: .xword .Lstr_forwardingTargetForSelector_, 0 .xword 0, 0 .Lsymtab: .xword 0, .Lsel_forwardingTargetForSelector_ .short 0, 0 .long 4 .xword 0 .Lmodule: .xword 8, 32, 0, .Lsymtab #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/forwarding/forwarding-mips-elf.S from [27b4e12fcc] to [073f3a69c2].
︙ | ︙ | |||
78 79 80 81 82 83 84 | swc1 $f17, 80($sp) swc1 $f18, 84($sp) swc1 $f19, 88($sp) #endif move $s0, $gp #ifdef OF_PIC | | | | | 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | swc1 $f17, 80($sp) swc1 $f18, 84($sp) swc1 $f19, 88($sp) #endif move $s0, $gp #ifdef OF_PIC lw $s1, %got(.Lsel_forwardingTargetForSelector_)($gp) #else lui $s1, %hi(.Lsel_forwardingTargetForSelector_) #endif addiu $s1, $s1, %lo(.Lsel_forwardingTargetForSelector_) jal_pic object_getClass move $gp, $s0 move $a0, $v0 move $a1, $s1 jal_pic class_respondsToSelector |
︙ | ︙ | |||
202 203 204 205 206 207 208 | swc1 $f17, 80($sp) swc1 $f18, 84($sp) swc1 $f19, 88($sp) #endif move $s0, $gp #ifdef OF_PIC | | | | | 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 | swc1 $f17, 80($sp) swc1 $f18, 84($sp) swc1 $f19, 88($sp) #endif move $s0, $gp #ifdef OF_PIC lw $s1, %got(.Lsel_forwardingTargetForSelector_)($gp) #else lui $s1, %hi(.Lsel_forwardingTargetForSelector_) #endif addiu $s1, $s1, %lo(.Lsel_forwardingTargetForSelector_) move $a0, $a1 jal_pic object_getClass move $gp, $s0 move $a0, $v0 move $a1, $s1 |
︙ | ︙ | |||
285 286 287 288 289 290 291 | addiu $sp, $sp, 96 j_pic of_method_not_found_stret .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret | | | | | | | | | | | | | | | 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 | addiu $sp, $sp, 96 j_pic of_method_not_found_stret .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret .Linit: #ifdef OF_PIC lui $gp, %hi(_gp_disp) addiu $gp, $gp, %lo(_gp_disp) addu $gp, $gp, $t9 lw $a0, %got(.Lmodule)($gp) addiu $a0, $a0, %lo(.Lmodule) lw $t9, %call16(__objc_exec_class)($gp) jr $t9 #else lui $a0, %hi(.Lmodule) addiu $a0, $a0, %lo(.Lmodule) j __objc_exec_class #endif .section .ctors, "aw", %progbits .long .Linit .section .rodata .Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data .Lsel_forwardingTargetForSelector_: .long .Lstr_forwardingTargetForSelector_, 0 .long 0, 0 .Lsymtab: .long 0, .Lsel_forwardingTargetForSelector_ .short 0, 0 .long 0 .long 0 .Lmodule: .long 8, 16, 0, .Lsymtab #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/forwarding/forwarding-powerpc-elf.S from [22c25e7609] to [6d0e0a93e0].
︙ | ︙ | |||
59 60 61 62 63 64 65 | bl object_getClass+0x8000@plt lwz %r4, .Lgot_sel_forwardingTargetForSelector_-.Lbiased_got2(%r30) bl class_respondsToSelector+0x8000@plt #else bl object_getClass | | | | | | | | 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | bl object_getClass+0x8000@plt lwz %r4, .Lgot_sel_forwardingTargetForSelector_-.Lbiased_got2(%r30) bl class_respondsToSelector+0x8000@plt #else bl object_getClass lis %r4, .Lsel_forwardingTargetForSelector_@ha la %r4, .Lsel_forwardingTargetForSelector_@l(%r4) bl class_respondsToSelector #endif cmpwi %r3, 0 beq- 0f lwz %r3, 8(%r1) #ifdef OF_PIC lwz %r4, .Lgot_sel_forwardingTargetForSelector_-.Lbiased_got2(%r30) bl objc_msg_lookup+0x8000@plt #else lis %r4, .Lsel_forwardingTargetForSelector_@ha la %r4, .Lsel_forwardingTargetForSelector_@l(%r4) bl objc_msg_lookup #endif mtctr %r3 lwz %r3, 8(%r1) #ifdef OF_PIC lwz %r4, .Lgot_sel_forwardingTargetForSelector_-.Lbiased_got2(%r30) #else lis %r4, .Lsel_forwardingTargetForSelector_@ha la %r4, .Lsel_forwardingTargetForSelector_@l(%r4) #endif lwz %r5, 12(%r1) bctrl cmpwi %r3, 0 beq- 0f lwz %r4, 8(%r1) |
︙ | ︙ | |||
197 198 199 200 201 202 203 | bl object_getClass+0x8000@plt lwz %r4, .Lgot_sel_forwardingTargetForSelector_-.Lbiased_got2(%r30) bl class_respondsToSelector+0x8000@plt #else bl object_getClass | | | | | | | | 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 | bl object_getClass+0x8000@plt lwz %r4, .Lgot_sel_forwardingTargetForSelector_-.Lbiased_got2(%r30) bl class_respondsToSelector+0x8000@plt #else bl object_getClass lis %r4, .Lsel_forwardingTargetForSelector_@ha la %r4, .Lsel_forwardingTargetForSelector_@l(%r4) bl class_respondsToSelector #endif cmpwi %r3, 0 beq- 0f lwz %r3, 12(%r1) #ifdef OF_PIC lwz %r4, .Lgot_sel_forwardingTargetForSelector_-.Lbiased_got2(%r30) bl objc_msg_lookup+0x8000@plt #else lis %r4, .Lsel_forwardingTargetForSelector_@ha la %r4, .Lsel_forwardingTargetForSelector_@l(%r4) bl objc_msg_lookup #endif mtctr %r3 lwz %r3, 12(%r1) #ifdef OF_PIC lwz %r4, .Lgot_sel_forwardingTargetForSelector_-.Lbiased_got2(%r30) #else lis %r4, .Lsel_forwardingTargetForSelector_@ha la %r4, .Lsel_forwardingTargetForSelector_@l(%r4) #endif lwz %r5, 16(%r1) bctrl cmpwi %r3, 0 beq- 0f lwz %r4, 12(%r1) |
︙ | ︙ | |||
293 294 295 296 297 298 299 | bctr #else b OFMethodNotFound_stret #endif .type OFForward_stret, @function .size OFForward_stret, .-OFForward_stret | | | | | | | | | | | | | | | 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 | bctr #else b OFMethodNotFound_stret #endif .type OFForward_stret, @function .size OFForward_stret, .-OFForward_stret .Linit: stwu %r1, -16(%r1) mflr %r0 stw %r0, 20(%r1) #ifdef OF_PIC stw %r30, 8(%r1) bl 0f 0: mflr %r30 addis %r30, %r30, .Lbiased_got2-0b@ha addi %r30, %r30, .Lbiased_got2-0b@l lwz %r3, .Lgot_module-.Lbiased_got2(%r30) bl __objc_exec_class+0x8000@plt lwz %r30, 8(%r1) #else lis %r3, .Lmodule@ha la %r3, .Lmodule@l(%r3) bl __objc_exec_class #endif lwz %r0, 20(%r1) addi %r1, %r1, 16 mtlr %r0 blr .section .ctors, "aw", @progbits .long .Linit .section .rodata .Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data .Lsel_forwardingTargetForSelector_: .long .Lstr_forwardingTargetForSelector_, 0 .long 0, 0 .Lsymtab: .long 0, .Lsel_forwardingTargetForSelector_ .short 0, 0 .long 0 .long 0 .Lmodule: .long 8, 16, 0, .Lsymtab #ifdef OF_PIC .section .got2, "aw" .Lbiased_got2 = .+0x8000 .Lgot_module: .long .Lmodule .Lgot_sel_forwardingTargetForSelector_: .long .Lsel_forwardingTargetForSelector_ .Lgot_OFMethodNotFound: .long OFMethodNotFound .Lgot_OFMethodNotFound_stret: .long OFMethodNotFound_stret #endif #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", @progbits #endif |
Modified src/forwarding/forwarding-sparc-elf.S from [40522bfc56] to [a31829b32d].
︙ | ︙ | |||
30 31 32 33 34 35 36 | add %l7, %lo(_GLOBAL_OFFSET_TABLE_ + 4), %l7 #endif mov %i0, %o0 call object_getClass nop | | | | | | | | 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | add %l7, %lo(_GLOBAL_OFFSET_TABLE_ + 4), %l7 #endif mov %i0, %o0 call object_getClass nop sethi %hi(.Lsel_forwardingTargetForSelector_), %o1 or %o1, %lo(.Lsel_forwardingTargetForSelector_), %o1 #ifdef OF_PIC ld [%l7 + %o1], %o1 #endif call class_respondsToSelector nop cmp %o0, 0 be 0f mov %i0, %o0 sethi %hi(.Lsel_forwardingTargetForSelector_), %o1 or %o1, %lo(.Lsel_forwardingTargetForSelector_), %o1 #ifdef OF_PIC ld [%l7 + %o1], %o1 #endif call objc_msg_lookup nop mov %o0, %l0 mov %i0, %o0 sethi %hi(.Lsel_forwardingTargetForSelector_), %o1 or %o1, %lo(.Lsel_forwardingTargetForSelector_), %o1 #ifdef OF_PIC ld [%l7 + %o1], %o1 #endif jmpl %l0, %o7 mov %i1, %o2 cmp %o0, 0 |
︙ | ︙ | |||
91 92 93 94 95 96 97 | add %l7, %lo(_GLOBAL_OFFSET_TABLE_ + 4), %l7 #endif mov %i1, %o0 call object_getClass nop | | | | | | | | 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | add %l7, %lo(_GLOBAL_OFFSET_TABLE_ + 4), %l7 #endif mov %i1, %o0 call object_getClass nop sethi %hi(.Lsel_forwardingTargetForSelector_), %o1 or %o1, %lo(.Lsel_forwardingTargetForSelector_), %o1 #ifdef OF_PIC ld [%l7 + %o1], %o1 #endif call class_respondsToSelector nop cmp %o0, 0 be 0f mov %i1, %o0 sethi %hi(.Lsel_forwardingTargetForSelector_), %o1 or %o1, %lo(.Lsel_forwardingTargetForSelector_), %o1 #ifdef OF_PIC ld [%l7 + %o1], %o1 #endif call objc_msg_lookup nop mov %o0, %l0 mov %i1, %o0 sethi %hi(.Lsel_forwardingTargetForSelector_), %o1 or %o1, %lo(.Lsel_forwardingTargetForSelector_), %o1 #ifdef OF_PIC ld [%l7 + %o1], %o1 #endif jmpl %l0, %o7 mov %i2, %o2 cmp %o0, 0 |
︙ | ︙ | |||
139 140 141 142 143 144 145 | 0: call OFMethodNotFound_stret restore .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret | | | | | | | | | | | | | 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 | 0: call OFMethodNotFound_stret restore .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret .Linit: save %sp, -96, %sp #ifdef OF_PIC sethi %hi(_GLOBAL_OFFSET_TABLE_ - 4), %l7 call add_pc add %l7, %lo(_GLOBAL_OFFSET_TABLE_ + 4), %l7 #endif sethi %hi(.Lmodule), %i0 or %i0, %lo(.Lmodule), %i0 #ifdef OF_PIC ld [%l7 + %i0], %i0 #endif call __objc_exec_class restore #ifdef OF_PIC add_pc: jmp %o7 + 8 add %l7, %o7, %l7 #endif #ifdef OF_SOLARIS .section .init_array, "aw" #else .section .ctors, "aw", %progbits #endif .word .Linit .section .rodata .Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data .Lsel_forwardingTargetForSelector_: .word .Lstr_forwardingTargetForSelector_, 0 .word 0, 0 .Lsymtab: .word 0, .Lsel_forwardingTargetForSelector_ .half 0, 0 .word 0 .word 0 .Lmodule: .word 8, 16, 0, .Lsymtab #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/forwarding/forwarding-sparc64-elf.S from [67cee61a30] to [4ecc2cf437].
︙ | ︙ | |||
44 45 46 47 48 49 50 | std %f22, [%sp + BIAS + 264] std %f24, [%sp + BIAS + 272] std %f26, [%sp + BIAS + 280] std %f28, [%sp + BIAS + 288] std %f30, [%sp + BIAS + 296] sethi %hi(_GLOBAL_OFFSET_TABLE_ - 4), %l7 | | | | | | | | | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | std %f22, [%sp + BIAS + 264] std %f24, [%sp + BIAS + 272] std %f26, [%sp + BIAS + 280] std %f28, [%sp + BIAS + 288] std %f30, [%sp + BIAS + 296] sethi %hi(_GLOBAL_OFFSET_TABLE_ - 4), %l7 call .LaddPC add %l7, %lo(_GLOBAL_OFFSET_TABLE_ + 4), %l7 mov %i0, %o0 call object_getClass nop sethi %hi(.Lsel_forwardingTargetForSelector_), %o1 or %o1, %lo(.Lsel_forwardingTargetForSelector_), %o1 ldx [%l7 + %o1], %o1 call class_respondsToSelector nop brz,pn %o0, 0f mov %i0, %o0 sethi %hi(.Lsel_forwardingTargetForSelector_), %o1 or %o1, %lo(.Lsel_forwardingTargetForSelector_), %o1 ldx [%l7 + %o1], %o1 call objc_msg_lookup nop mov %o0, %l0 mov %i0, %o0 sethi %hi(.Lsel_forwardingTargetForSelector_), %o1 or %o1, %lo(.Lsel_forwardingTargetForSelector_), %o1 ldx [%l7 + %o1], %o1 jmpl %l0, %o7 mov %i1, %o2 brz,pn %o0, 0f cmp %o0, %i0 be,pn %xcc, 0f |
︙ | ︙ | |||
137 138 139 140 141 142 143 | std %f22, [%sp + BIAS + 264] std %f24, [%sp + BIAS + 272] std %f26, [%sp + BIAS + 280] std %f28, [%sp + BIAS + 288] std %f30, [%sp + BIAS + 296] sethi %hi(_GLOBAL_OFFSET_TABLE_ - 4), %l7 | | | | | | | | | 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | std %f22, [%sp + BIAS + 264] std %f24, [%sp + BIAS + 272] std %f26, [%sp + BIAS + 280] std %f28, [%sp + BIAS + 288] std %f30, [%sp + BIAS + 296] sethi %hi(_GLOBAL_OFFSET_TABLE_ - 4), %l7 call .LaddPC add %l7, %lo(_GLOBAL_OFFSET_TABLE_ + 4), %l7 mov %i1, %o0 call object_getClass nop sethi %hi(.Lsel_forwardingTargetForSelector_), %o1 or %o1, %lo(.Lsel_forwardingTargetForSelector_), %o1 ldx [%l7 + %o1], %o1 call class_respondsToSelector nop brz,pn %o0, 0f mov %i1, %o0 sethi %hi(.Lsel_forwardingTargetForSelector_), %o1 or %o1, %lo(.Lsel_forwardingTargetForSelector_), %o1 ldx [%l7 + %o1], %o1 call objc_msg_lookup nop mov %o0, %l0 mov %i1, %o0 sethi %hi(.Lsel_forwardingTargetForSelector_), %o1 or %o1, %lo(.Lsel_forwardingTargetForSelector_), %o1 ldx [%l7 + %o1], %o1 jmpl %l0, %o7 mov %i2, %o2 brz,pn %o0, 0f cmp %o0, %i1 be,pn %xcc, 0f |
︙ | ︙ | |||
205 206 207 208 209 210 211 | 0: call OFMethodNotFound_stret restore .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret | | | | | | | | | | | | | | | 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 | 0: call OFMethodNotFound_stret restore .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret .Linit: save %sp, -176, %sp sethi %hi(_GLOBAL_OFFSET_TABLE_ - 4), %l7 call .LaddPC add %l7, %lo(_GLOBAL_OFFSET_TABLE_ + 4), %l7 sethi %hi(.Lmodule), %i0 or %i0, %lo(.Lmodule), %i0 ldx [%l7 + %i0], %i0 call __objc_exec_class restore .LaddPC: jmp %o7 + 8 add %l7, %o7, %l7 #ifdef OF_SOLARIS .section .init_array, "aw" #else .section .ctors, "aw", %progbits #endif .xword .Linit .section .rodata .Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data .Lsel_forwardingTargetForSelector_: .xword .Lstr_forwardingTargetForSelector_, 0 .xword 0, 0 .Lsymtab: .xword 0, .Lsel_forwardingTargetForSelector_ .half 0, 0 .word 0 .xword 0 .Lmodule: .xword 8, 32, 0, .Lsymtab #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/forwarding/forwarding-x86-elf.S from [4b872d6763] to [7d07165df3].
︙ | ︙ | |||
26 27 28 29 30 31 32 | OFForward: push ebp mov ebp, esp push ebx sub esp, 20 | | | | | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | OFForward: push ebp mov ebp, esp push ebx sub esp, 20 call .LgetEIP add ebx, offset _GLOBAL_OFFSET_TABLE_ mov eax, [ebp + 8] mov [esp], eax call object_getClass@PLT mov [esp], eax lea eax, [ebx + .Lsel_forwardingTargetForSelector_@GOTOFF] mov [esp + 4], eax call class_respondsToSelector@PLT test eax, eax jz short 0f mov eax, [ebp + 8] mov [esp], eax lea eax, [ebx + .Lsel_forwardingTargetForSelector_@GOTOFF] mov [esp + 4], eax call objc_msg_lookup@PLT mov edx, [ebp + 8] mov [esp], edx lea edx, [ebx + .Lsel_forwardingTargetForSelector_@GOTOFF] mov [esp + 4], edx mov edx, [ebp + 12] mov [esp + 8], edx call eax test eax, eax jz short 0f |
︙ | ︙ | |||
90 91 92 93 94 95 96 | OFForward_stret: push ebp mov ebp, esp push ebx sub esp, 20 | | | | | | 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | OFForward_stret: push ebp mov ebp, esp push ebx sub esp, 20 call .LgetEIP add ebx, offset _GLOBAL_OFFSET_TABLE_ mov eax, [ebp + 12] mov [esp], eax call object_getClass@PLT mov [esp], eax lea eax, [ebx + .Lsel_forwardingTargetForSelector_@GOTOFF] mov [esp + 4], eax call class_respondsToSelector@PLT test eax, eax jz short 0f mov eax, [ebp + 12] mov [esp], eax lea eax, [ebx + .Lsel_forwardingTargetForSelector_@GOTOFF] mov [esp + 4], eax call objc_msg_lookup@PLT mov edx, [ebp + 12] mov [esp], edx lea edx, [ebx + .Lsel_forwardingTargetForSelector_@GOTOFF] mov [esp + 4], edx mov edx, [ebp + 16] mov [esp + 8], edx call eax test eax, eax jz short 0f |
︙ | ︙ | |||
147 148 149 150 151 152 153 | pop ebx pop ebp jmp eax .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret | | | | | | | | | | | | | | 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 | pop ebx pop ebp jmp eax .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret .Linit: push ebp mov ebp, esp push ebx sub esp, 4 call .LgetEIP add ebx, offset _GLOBAL_OFFSET_TABLE_ lea eax, [ebx + .Lmodule@GOTOFF] mov [esp], eax call __objc_exec_class@PLT add esp, 4 pop ebx pop ebp ret .LgetEIP: mov ebx, [esp] ret #ifdef OF_SOLARIS .section .init_array, "aw" #else .section .ctors, "aw", %progbits #endif .long .Linit .section .rodata .Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data .Lsel_forwardingTargetForSelector_: .long .Lstr_forwardingTargetForSelector_, 0 .long 0, 0 .Lsymtab: .long 0, .Lsel_forwardingTargetForSelector_ .short 0, 0 .long 0 .long 0 .Lmodule: .long 8, 16, 0, .Lsymtab #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/forwarding/forwarding-x86-win32.S from [c9c79ec3ea] to [a9803a8051].
︙ | ︙ | |||
29 30 31 32 33 34 35 | sub esp, 20 mov eax, [ebp + 8] mov [esp], eax call _object_getClass mov [esp], eax | | | | | 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | sub esp, 20 mov eax, [ebp + 8] mov [esp], eax call _object_getClass mov [esp], eax mov eax, offset .Lsel_forwardingTargetForSelector_ mov [esp + 4], eax call _class_respondsToSelector test eax, eax jz short 0f mov eax, [ebp + 8] mov [esp], eax mov eax, offset .Lsel_forwardingTargetForSelector_ mov [esp + 4], eax call _objc_msg_lookup mov edx, [ebp + 8] mov [esp], edx mov edx, offset .Lsel_forwardingTargetForSelector_ mov [esp + 4], edx mov edx, [ebp + 12] mov [esp + 8], edx call eax test eax, eax jz short 0f |
︙ | ︙ | |||
90 91 92 93 94 95 96 | sub esp, 20 mov eax, [ebp + 12] mov [esp], eax call _object_getClass mov [esp], eax | | | | | 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | sub esp, 20 mov eax, [ebp + 12] mov [esp], eax call _object_getClass mov [esp], eax mov eax, offset .Lsel_forwardingTargetForSelector_ mov [esp + 4], eax call _class_respondsToSelector test eax, eax jz short 0f mov eax, [ebp + 12] mov [esp], eax mov eax, offset .Lsel_forwardingTargetForSelector_ mov [esp + 4], eax call _objc_msg_lookup mov edx, [ebp + 12] mov [esp], edx mov edx, offset .Lsel_forwardingTargetForSelector_ mov [esp + 4], edx mov edx, [ebp + 16] mov [esp + 8], edx call eax test eax, eax jz short 0f |
︙ | ︙ | |||
139 140 141 142 143 144 145 | jmp _OFMethodNotFound_stret .def _OFForward_stret .scl 2 .type 32 .endef | | | | | | | | | | | | 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 | jmp _OFMethodNotFound_stret .def _OFForward_stret .scl 2 .type 32 .endef .Linit: push ebp mov ebp, esp push ebx sub esp, 4 mov eax, offset .Lmodule mov [esp], eax call ___objc_exec_class add esp, 4 pop ebx pop ebp ret .section .ctors, "aw" .long .Linit .section .rodata .Lstr_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data .Lsel_forwardingTargetForSelector_: .long .Lstr_forwardingTargetForSelector_, 0 .long 0, 0 .Lsymtab: .long 0, .Lsel_forwardingTargetForSelector_ .short 0, 0 .long 0 .long 0 .Lmodule: .long 8, 16, 0, .Lsymtab |
Modified src/runtime/lookup-asm/lookup-asm-amd64-elf.S from [23159b41e1] to [d1cf6bd700].
︙ | ︙ | |||
24 25 26 27 28 29 30 | .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: test rdi, rdi | | | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: test rdi, rdi jz short .LreturnNilMethod test dil, 1 jnz short .LtaggedPointer_\name mov r8, [rdi] mov r8, [r8 + 64] |
︙ | ︙ | |||
69 70 71 72 73 74 75 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov r8, rdi mov rdi, [rdi] test rdi, rdi | | | | | | 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov r8, rdi mov rdi, [rdi] test rdi, rdi jz short .LreturnNilMethod mov r8, [r8 + 8] mov r8, [r8 + 64] jmp short .Lmain_\lookup .type \name, %function .size \name, .-\name .endm GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret .LreturnNilMethod: lea rax, [rip + .LnilMethod] ret .LnilMethod: xor rax, rax ret #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-asm/lookup-asm-amd64-macho.S from [ca53a90db3] to [b3182ba60d].
︙ | ︙ | |||
36 37 38 39 40 41 42 | .intel_syntax noprefix .endmacro .section __TEXT, __text, regular, pure_instructions .macro GENERATE_LOOKUP $0: test rdi, rdi | | | 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | .intel_syntax noprefix .endmacro .section __TEXT, __text, regular, pure_instructions .macro GENERATE_LOOKUP $0: test rdi, rdi jz LreturnNilMethod test dil, 1 jnz LtaggedPointer_$0 mov r8, [rdi] mov r8, [r8 + 64] |
︙ | ︙ | |||
79 80 81 82 83 84 85 | .endmacro .macro GENERATE_LOOKUP_SUPER $0: mov r8, rdi mov rdi, [rdi] test rdi, rdi | | | | | | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | .endmacro .macro GENERATE_LOOKUP_SUPER $0: mov r8, rdi mov rdi, [rdi] test rdi, rdi jz LreturnNilMethod movq r8, [r8 + 8] movq r8, [r8 + 64] jmp Lmain_$1 .endmacro GENERATE_LOOKUP _objc_msg_lookup, _objc_methodNotFound GENERATE_LOOKUP _objc_msg_lookup_stret, _objc_methodNotFound_stret GENERATE_LOOKUP_SUPER _objc_msg_lookup_super, _objc_msg_lookup GENERATE_LOOKUP_SUPER _objc_msg_lookup_super_stret, _objc_msg_lookup_stret LreturnNilMethod: lea rax, [rip + LnilMethod] ret LnilMethod: xor rax, rax ret |
Modified src/runtime/lookup-asm/lookup-asm-amd64-win64.S from [56a0df9bbf] to [2fecd29e3d].
︙ | ︙ | |||
22 23 24 25 26 27 28 | .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: test rcx, rcx | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: test rcx, rcx jz short .LreturnNilMethod test cl, 1 jnz short .LtaggedPointer_\name mov r8, [rcx] mov r8, [r8 + 56] |
︙ | ︙ | |||
76 77 78 79 80 81 82 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov r8, rcx mov rcx, [rcx] test rcx, rcx | | | | | | 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov r8, rcx mov rcx, [rcx] test rcx, rcx jz short .LreturnNilMethod mov r8, [r8 + 8] mov r8, [r8 + 56] jmp short .Lmain_\lookup .def \name .scl 2 .type 32 .endef .endm GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret .LreturnNilMethod: lea rax, [rip + .LnilMethod] ret .LnilMethod: xor rax, rax ret |
Modified src/runtime/lookup-asm/lookup-asm-arm-elf.S from [30c6881b76] to [2b6e55a11d].
︙ | ︙ | |||
22 23 24 25 26 27 28 | .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: cmp r0, #0 | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: cmp r0, #0 beq .LreturnNilMethod tst r0, #1 bne .LtaggedPointer_\name ldr r2, [r0, #0] ldr r2, [r2, #32] |
︙ | ︙ | |||
88 89 90 91 92 93 94 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov r2, r0 ldr r0, [r0, #0] cmp r0, #0 | | | | | | 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov r2, r0 ldr r0, [r0, #0] cmp r0, #0 beq .LreturnNilMethod ldr r2, [r2, #4] ldr r2, [r2, #32] b .Lmain_\lookup .type \name, %function .size \name, .-\name .endm GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret .LreturnNilMethod: adr r0, .LnilMethod bx lr .LnilMethod: mov r0, #0 bx lr #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-asm/lookup-asm-arm64-elf.S from [761debfa49] to [2db12deb2a].
︙ | ︙ | |||
21 22 23 24 25 26 27 | .globl objc_msg_lookup_stret .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: | | | 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | .globl objc_msg_lookup_stret .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: cbz x0, .LreturnNilMethod tst x0, #1 b.ne .LtaggedPointer_\name ldr x2, [x0] ldr x2, [x2, #64] |
︙ | ︙ | |||
66 67 68 69 70 71 72 | .size \name, .-\name .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov x2, x0 ldr x0, [x0] | | | | | | 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | .size \name, .-\name .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov x2, x0 ldr x0, [x0] cbz x0, .LreturnNilMethod ldr x2, [x2, #8] ldr x2, [x2, #64] b .Lmain_\lookup .type \name, %function .size \name, .-\name .endm GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret .LreturnNilMethod: adr x0, .LnilMethod ret .LnilMethod: mov x0, #0 ret #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-asm/lookup-asm-mips-elf.S from [67d5199bae] to [5d4df4c5f3].
︙ | ︙ | |||
70 71 72 73 74 75 76 | #endif move $v0, $t0 jr $ra 0: #ifdef OF_PIC | | | | 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | #endif move $v0, $t0 jr $ra 0: #ifdef OF_PIC addiu $v0, $t9, .LnilMethod-\name #else la $v0, .LnilMethod #endif jr $ra #ifdef OF_PIC 1: lui $gp, %hi(_gp_disp) addiu $gp, $gp, %lo(_gp_disp) |
︙ | ︙ | |||
132 133 134 135 136 137 138 | lw $t0, 32($t0) addiu $t9, $t9, \lookup-\name b .Lmain_\lookup 0: #ifdef OF_PIC | | | | | 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | lw $t0, 32($t0) addiu $t9, $t9, \lookup-\name b .Lmain_\lookup 0: #ifdef OF_PIC addiu $v0, $t9, .LnilMethod-\name #else la $v0, .LnilMethod #endif jr $ra .type \name, %function .size \name, .-\name .endm GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret .LnilMethod: move $v0, $zero jr $ra #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-asm/lookup-asm-mips64-n64-elf.S from [b34841fe09] to [79d05fd5cc].
︙ | ︙ | |||
68 69 70 71 72 73 74 | move $v0, $t0 jr $ra 0: lui $v0, %hi(%neg(%gp_rel(\name))) daddiu $v0, $v0, %lo(%neg(%gp_rel(\name))) daddu $v0, $v0, $t9 | | | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | move $v0, $t0 jr $ra 0: lui $v0, %hi(%neg(%gp_rel(\name))) daddiu $v0, $v0, %lo(%neg(%gp_rel(\name))) daddu $v0, $v0, $t9 ld $v0, %got_disp(.LnilMethod)($v0) jr $ra 1: lui $t0, %hi(%neg(%gp_rel(\name))) daddiu $t0, $t0, %lo(%neg(%gp_rel(\name))) daddu $t0, $t0, $t9 ld $t9, %got_disp(\notFound)($t0) |
︙ | ︙ | |||
115 116 117 118 119 120 121 | daddiu $t9, $t9, \lookup-\name b .Lmain_\lookup 0: lui $v0, %hi(%neg(%gp_rel(\name))) daddiu $v0, $v0, %lo(%neg(%gp_rel(\name))) daddu $v0, $v0, $t9 | | | | 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | daddiu $t9, $t9, \lookup-\name b .Lmain_\lookup 0: lui $v0, %hi(%neg(%gp_rel(\name))) daddiu $v0, $v0, %lo(%neg(%gp_rel(\name))) daddu $v0, $v0, $t9 ld $v0, %got_disp(.LnilMethod)($v0) jr $ra .type \name, %function .size \name, .-\name .endm GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret .LnilMethod: move $v0, $zero jr $ra #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-asm/lookup-asm-powerpc-elf.S from [3fdc637787] to [131ef264f4].
︙ | ︙ | |||
22 23 24 25 26 27 28 | .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: cmpwi %r3, 0 | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: cmpwi %r3, 0 beq- .LreturnNilMethod andi. %r0, %r3, 1 bne- .LtaggedPointer_\name lwz %r5, 0(%r3) lwz %r5, 32(%r5) |
︙ | ︙ | |||
120 121 122 123 124 125 126 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mr %r5, %r3 lwz %r3, 0(%r3) cmpwi %r3, 0 | | | | | | | | 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mr %r5, %r3 lwz %r3, 0(%r3) cmpwi %r3, 0 beq- .LreturnNilMethod lwz %r5, 4(%r5) lwz %r5, 32(%r5) b .Lmain_\lookup .type \name, @function .size \name, .-\name .endm GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret .LreturnNilMethod: mflr %r0 bl .LgetPC mtlr %r0 0: addi %r3, %r3, .LnilMethod-0b blr .LnilMethod: li %r3, 0 blr .LgetPC: mflr %r3 blr #ifdef OF_PIC .section .got2, "aw" .Lbiased_got2 = .+0x8000 .Lgot_objc_methodNotFound: |
︙ | ︙ |
Modified src/runtime/lookup-asm/lookup-asm-powerpc64-elf.S from [0383174096] to [44421eb613].
︙ | ︙ | |||
130 131 132 133 134 135 136 | GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret .LreturnNilMethod: | | | | | | | | | | | 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret .LreturnNilMethod: addis %r3, %r2, .LnilMethod@toc@ha addi %r3, %r3, .LnilMethod@toc@l blr #if defined(_CALL_ELF) && _CALL_ELF == 2 .LnilMethod: addis %r2, %r12, .TOC.-.LnilMethod@ha addi %r2, %r2, .TOC.-.LnilMethod@l .localentry .LnilMethod, .-.LnilMethod #else .section .opd, "aw", @progbits .LnilMethod: .p2align 3 .quad .Lbegin_nilMethod .quad .TOC.@tocbase .quad 0 .section .text #endif .Lbegin_nilMethod: li %r3, 0 blr .type .LnilMethod, @function .size .LnilMethod, .-.Lbegin_nilMethod #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", @progbits #endif |
Modified src/runtime/lookup-asm/lookup-asm-sparc-elf.S from [06d51d4229] to [be37fefc0d].
︙ | ︙ | |||
22 23 24 25 26 27 28 | .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: tst %o0 | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: tst %o0 bz .LreturnNilMethod btst 1, %o0 bnz .LtaggedPointer_\name nop ld [%o0], %o2 ld [%o2 + 32], %o2 |
︙ | ︙ | |||
100 101 102 103 104 105 106 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov %o0, %o2 ld [%o0], %o0 cmp %o0, 0 | | | | | | | | | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov %o0, %o2 ld [%o0], %o0 cmp %o0, 0 be .LreturnNilMethod nop ld [%o2 + 4], %o2 ba .Lmain_\lookup ld [%o2 + 32], %o2 .type \name, %function .size \name, .-\name .endm GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret .LreturnNilMethod: #ifdef OF_PIC mov %o7, %g1 sethi %hi(_GLOBAL_OFFSET_TABLE_ - 4), %o1 call 0f add %o1, %lo(_GLOBAL_OFFSET_TABLE_ + 4), %o1 0: add %o7, %o1, %o1 sethi %hi(.LnilMethod), %o0 or %o0, %lo(.LnilMethod), %o0 jmpl %g1 + 8, %g0 ld [%o1 + %o0], %o0 #else sethi %hi(.LnilMethod), %o0 retl or %o0, %lo(.LnilMethod), %o0 #endif .LnilMethod: retl clr %o0 #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-asm/lookup-asm-sparc64-elf.S from [bf52d34777] to [e9f5517a42].
︙ | ︙ | |||
21 22 23 24 25 26 27 | .globl objc_msg_lookup_stret .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: | | | 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | .globl objc_msg_lookup_stret .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: brz,pn %o0, .LreturnNilMethod and %o0, 1, %o2 brnz,pn %o2, .LtaggedPointer_\name nop ldx [%o0], %o2 ldx [%o2 + 64], %o2 |
︙ | ︙ | |||
97 98 99 100 101 102 103 | .size \name, .-\name .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov %o0, %o2 ldx [%o0], %o0 | | | | | | | | | 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | .size \name, .-\name .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov %o0, %o2 ldx [%o0], %o0 brz,pn %o0, .LreturnNilMethod nop ldx [%o2 + 8], %o2 ba .Lmain_\lookup ldx [%o2 + 64], %o2 .type \name, %function .size \name, .-\name .endm GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret .LreturnNilMethod: #ifdef OF_PIC mov %o7, %g1 sethi %hi(_GLOBAL_OFFSET_TABLE_ - 4), %o1 call 0f or %o1, %lo(_GLOBAL_OFFSET_TABLE_ + 4), %o1 0: add %o7, %o1, %o1 sethi %hi(.LnilMethod), %o0 or %o0, %lo(.LnilMethod), %o0 jmpl %g1 + 8, %g0 ldx [%o1 + %o0], %o0 #else sethi %hi(.LnilMethod), %o0 retl or %o0, %lo(.LnilMethod), %o0 #endif .LnilMethod: retl clr %o0 #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-asm/lookup-asm-x86-elf.S from [a240f9cb41] to [cd6507b46d].
︙ | ︙ | |||
25 26 27 28 29 30 31 | .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: mov edx, [esp + 4] test edx, edx | | | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | .globl objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: mov edx, [esp + 4] test edx, edx jz short .LreturnNilMethod test dl, 1 jnz short .LtaggedPointer_\name mov edx, [edx] mov edx, [edx + 32] |
︙ | ︙ | |||
51 52 53 54 55 56 57 | test eax, eax jz short 0f ret 0: | | | | 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | test eax, eax jz short 0f ret 0: call .LgetEIP add eax, offset _GLOBAL_OFFSET_TABLE_ mov eax, [eax + \notFound@GOT] jmp eax .LtaggedPointer_\name: call .LgetEIP add eax, offset _GLOBAL_OFFSET_TABLE_ mov ecx, [eax + objc_taggedPointerSecret@GOT] xor edx, [ecx] and dl, 0xE movzx edx, dl |
︙ | ︙ | |||
79 80 81 82 83 84 85 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov edx, [esp + 4] mov eax, [edx] test eax, eax | | | | | | | | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov edx, [esp + 4] mov eax, [edx] test eax, eax jz short .LreturnNilMethod mov [esp + 4], eax mov edx, [edx + 4] mov edx, [edx + 32] jmp short .Lmain_\lookup .type \name, %function .size \name, .-\name .endm GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret .LreturnNilMethod: call .LgetEIP add eax, offset _GLOBAL_OFFSET_TABLE_ lea eax, [eax + .LnilMethod@GOTOFF] ret .LnilMethod: xor eax, eax ret .LgetEIP: mov eax, [esp] ret #if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD) .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-asm/lookup-asm-x86-win32.S from [045420d8bf] to [d9ae57eae0].
︙ | ︙ | |||
23 24 25 26 27 28 29 | .globl _objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: mov edx, [esp + 4] test edx, edx | | | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | .globl _objc_msg_lookup_super_stret .section .text .macro GENERATE_LOOKUP name notFound \name: mov edx, [esp + 4] test edx, edx jz short .LreturnNilMethod test dl, 1 jnz short .LtaggedPointer_\name mov edx, [edx] mov edx, [edx + 32] |
︙ | ︙ | |||
68 69 70 71 72 73 74 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov edx, [esp + 4] mov eax, [edx] test eax, eax | | | | | | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov edx, [esp + 4] mov eax, [edx] test eax, eax jz short .LreturnNilMethod mov [esp + 4], eax mov edx, [edx + 4] mov edx, [edx + 32] jmp short .Lmain_\lookup .def \name .scl 2 .type 32 .endef .endm GENERATE_LOOKUP _objc_msg_lookup _objc_methodNotFound GENERATE_LOOKUP _objc_msg_lookup_stret _objc_methodNotFound_stret GENERATE_LOOKUP_SUPER _objc_msg_lookup_super _objc_msg_lookup GENERATE_LOOKUP_SUPER _objc_msg_lookup_super_stret _objc_msg_lookup_stret .LreturnNilMethod: mov eax, offset .LnilMethod ret .LnilMethod: xor eax, eax ret |