52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
jz short 0f
ret
0:
call get_eip
add eax, offset _GLOBAL_OFFSET_TABLE_
mov eax, [eax+\not_found@GOT]
jmp eax
.type \name, %function
.size \name, .-\name
.endm
.macro generate_lookup_super name lookup
\name:
|
|
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
jz short 0f
ret
0:
call get_eip
add eax, offset _GLOBAL_OFFSET_TABLE_
lea eax, [eax+\not_found@GOTOFF]
jmp eax
.type \name, %function
.size \name, .-\name
.endm
.macro generate_lookup_super name lookup
\name:
|
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
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
add eax, offset _GLOBAL_OFFSET_TABLE_
mov eax, [eax+nil_method@GOT]
ret
nil_method:
xor eax, eax
ret
get_eip:
mov eax, [esp]
ret
#ifdef OF_LINUX
.section .note.GNU-stack, "", %progbits
#endif
|
|
|
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
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
add eax, offset _GLOBAL_OFFSET_TABLE_
lea eax, [eax+nil_method@GOTOFF]
ret
nil_method:
xor eax, eax
ret
get_eip:
mov eax, [esp]
ret
#ifdef OF_LINUX
.section .note.GNU-stack, "", %progbits
#endif
|