46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
testl %eax, %eax
jz 0f
ret
0:
call get_eip
1:
addl $\not_found-1b, %eax
jmp *%eax
.endm
.macro generate_lookup_super name lookup
\name:
movl 4(%esp), %edx
movl (%edx), %eax
cmpl $0, %eax
|
<
<
|
<
|
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
testl %eax, %eax
jz 0f
ret
0:
jmp \not_found
.endm
.macro generate_lookup_super name lookup
\name:
movl 4(%esp), %edx
movl (%edx), %eax
cmpl $0, %eax
|
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
generate_lookup _objc_msg_lookup _objc_method_not_found
generate_lookup _objc_msg_lookup_stret _objc_method_not_found_stret
generate_lookup_super _objc_msg_lookup_super _objc_msg_lookup
generate_lookup_super _objc_msg_lookup_super_stret _objc_msg_lookup_stret
ret_nil:
call get_eip
0:
addl $nil_method-0b, %eax
ret
nil_method:
xorl %eax, %eax
ret
get_eip:
movl (%esp), %eax
ret
|
<
<
|
<
<
<
<
|
68
69
70
71
72
73
74
75
76
77
78
79
80
|
generate_lookup _objc_msg_lookup _objc_method_not_found
generate_lookup _objc_msg_lookup_stret _objc_method_not_found_stret
generate_lookup_super _objc_msg_lookup_super _objc_msg_lookup
generate_lookup_super _objc_msg_lookup_super_stret _objc_msg_lookup_stret
ret_nil:
movl $nil_method, %eax
ret
nil_method:
xorl %eax, %eax
ret
|