1
2
3
4
5
6
7
8
9
|
1
2
3
4
5
6
7
8
9
|
-
+
|
/*
* Copyright (c) 2008-2022 Jonathan Schleifer <js@nil.im>
* Copyright (c) 2008-2024 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
|
| ︙ | | |
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
|
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
|
-
+
-
+
-
+
|
movaps %xmm1, -0x70(%rbp)
movaps %xmm2, -0x80(%rbp)
movaps %xmm3, -0x90(%rbp)
call object_getClass
movq %rax, %rcx
leaq sel_forwardingTargetForSelector_(%rip), %rdx
leaq .Lsel_forwardingTargetForSelector_(%rip), %rdx
call class_respondsToSelector
testq %rax, %rax
jz 0f
movq -0x30(%rbp), %rcx
leaq sel_forwardingTargetForSelector_(%rip), %rdx
leaq .Lsel_forwardingTargetForSelector_(%rip), %rdx
call objc_msg_lookup
movq -0x30(%rbp), %rcx
leaq sel_forwardingTargetForSelector_(%rip), %rdx
leaq .Lsel_forwardingTargetForSelector_(%rip), %rdx
movq -0x38(%rbp), %r8
call *%rax
testq %rax, %rax
jz 0f
cmpq -0x30(%rbp), %rax
je 0f
|
| ︙ | | |
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
|
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
|
-
+
-
+
-
+
|
movaps %xmm2, -0x80(%rbp)
movaps %xmm3, -0x90(%rbp)
movq %rdx, %rcx
call object_getClass
movq %rax, %rcx
leaq sel_forwardingTargetForSelector_(%rip), %rdx
leaq .Lsel_forwardingTargetForSelector_(%rip), %rdx
call class_respondsToSelector
testq %rax, %rax
jz 0f
movq -0x38(%rbp), %rcx
leaq sel_forwardingTargetForSelector_(%rip), %rdx
leaq .Lsel_forwardingTargetForSelector_(%rip), %rdx
call objc_msg_lookup
movq -0x38(%rbp), %rcx
leaq sel_forwardingTargetForSelector_(%rip), %rdx
leaq .Lsel_forwardingTargetForSelector_(%rip), %rdx
movq -0x40(%rbp), %r8
call *%rax
testq %rax, %rax
jz 0f
cmpq -0x38(%rbp), %rax
je 0f
|
| ︙ | | |
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
|
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
|
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
|
jmp OFMethodNotFound_stret
.def OFForward_stret
.scl 2
.type 32
.endef
init:
leaq module(%rip), %rcx
.Linit:
leaq .Lmodule(%rip), %rcx
jmp __objc_exec_class
.section .ctors, "aw"
.quad init
.quad .Linit
.section .rodata
str_forwardingTargetForSelector_:
.Lstr_forwardingTargetForSelector_:
.asciz "forwardingTargetForSelector:"
.section .data
sel_forwardingTargetForSelector_:
.quad str_forwardingTargetForSelector_, 0
.Lsel_forwardingTargetForSelector_:
.quad .Lstr_forwardingTargetForSelector_, 0
.quad 0, 0
symtab:
.Lsymtab:
.long 0, 0
.quad sel_forwardingTargetForSelector_
.quad .Lsel_forwardingTargetForSelector_
.short 0, 0
.long 0
.quad 0
module:
.Lmodule:
.long 8, 32
.quad 0, symtab
.quad 0, .Lsymtab
|