Index: src/forwarding/forwarding-x86-elf.S ================================================================== --- src/forwarding/forwarding-x86-elf.S +++ src/forwarding/forwarding-x86-elf.S @@ -36,28 +36,25 @@ 0: add ebx, offset _GLOBAL_OFFSET_TABLE_ mov eax, [ebp+8] mov [esp], eax - mov eax, [ebx+object_getClass@GOT] - call eax + call object_getClass@PLT mov [esp], eax lea eax, [ebx+sel_forwardingTargetForSelector_@GOTOFF] mov [esp+4], eax - mov eax, [ebx+class_respondsToSelector@GOT] - call eax + call class_respondsToSelector@PLT test eax, eax jz short 1f mov eax, [ebp+8] mov [esp], eax lea eax, [ebx+sel_forwardingTargetForSelector_@GOTOFF] mov [esp+4], eax - mov eax, [ebx+objc_msg_lookup@GOT] - call eax + call objc_msg_lookup@PLT mov edx, [ebp+8] mov [esp], edx lea edx, [ebx+sel_forwardingTargetForSelector_@GOTOFF] mov [esp+4], edx @@ -72,12 +69,11 @@ mov [ebp+8], eax mov [esp], eax mov eax, [ebp+12] mov [esp+4], eax - mov eax, [ebx+objc_msg_lookup@GOT] - call eax + call objc_msg_lookup@PLT add esp, 20 pop ebx pop ebp @@ -100,33 +96,29 @@ push ebx sub esp, 20 call get_eip -0: add ebx, offset _GLOBAL_OFFSET_TABLE_ mov eax, [ebp+12] mov [esp], eax - mov eax, [ebx+object_getClass@GOT] - call eax + call object_getClass@PLT mov [esp], eax lea eax, [ebx+sel_forwardingTargetForSelector_@GOTOFF] mov [esp+4], eax - mov eax, [ebx+class_respondsToSelector@GOT] - call eax + call class_respondsToSelector@PLT test eax, eax jz short 1f mov eax, [ebp+12] mov [esp], eax lea eax, [ebx+sel_forwardingTargetForSelector_@GOTOFF] mov [esp+4], eax - mov eax, [ebx+objc_msg_lookup@GOT] - call eax + call objc_msg_lookup@PLT mov edx, [ebp+12] mov [esp], edx lea edx, [ebx+sel_forwardingTargetForSelector_@GOTOFF] mov [esp+4], edx @@ -141,12 +133,11 @@ mov [ebp+12], eax mov [esp], eax mov eax, [ebp+16] mov [esp+4], eax - mov eax, [ebx+objc_msg_lookup_stret@GOT] - call eax + call objc_msg_lookup_stret@PLT add esp, 20 pop ebx pop ebp @@ -169,17 +160,15 @@ push ebx sub esp, 4 call get_eip -0: add ebx, offset _GLOBAL_OFFSET_TABLE_ lea eax, [ebx+module@GOTOFF] mov [esp], eax - mov eax, [ebx+__objc_exec_class@GOT] - call eax + call __objc_exec_class@PLT add esp, 4 pop ebx pop ebp ret Index: src/runtime/lookup-asm/lookup-asm-x86-elf.S ================================================================== --- src/runtime/lookup-asm/lookup-asm-x86-elf.S +++ src/runtime/lookup-asm/lookup-asm-x86-elf.S @@ -53,11 +53,10 @@ ret 0: call get_eip -1: add eax, offset _GLOBAL_OFFSET_TABLE_ mov eax, [eax+\not_found@GOT] jmp eax .type \name, %function .size \name, .-\name @@ -83,12 +82,12 @@ 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: - add eax, nil_method-0b + add eax, offset _GLOBAL_OFFSET_TABLE_ + mov eax, [eax+nil_method@GOT] ret nil_method: xor eax, eax ret