Overview
Comment: | Add of_forward_stret for x86/ELF. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
0379a04a1bbd912b153d29f4d6435f2d |
User & Date: | js on 2013-07-28 01:12:29 |
Other Links: | manifest | tags |
Context
2013-07-28
| ||
15:28 | Add objc_msg_lookup_stret for ARM/ELF. check-in: f727480860 user: js tags: trunk | |
01:12 | Add of_forward_stret for x86/ELF. check-in: 0379a04a1b user: js tags: trunk | |
01:06 | Add objc_msg_lookup_stret for x86/ELF. check-in: 3aa93c594f user: js tags: trunk | |
Changes
Modified src/OFObject.h from [664e39b0bd] to [4855a8b423].
︙ | ︙ | |||
95 96 97 98 99 100 101 | # if defined(__x86_64__) || defined(__i386__) || defined(__arm__) || \ defined(__ppc__) # define OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR # define OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR_STRET # endif #else # ifdef __ELF__ | | | | 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | # if defined(__x86_64__) || defined(__i386__) || defined(__arm__) || \ defined(__ppc__) # define OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR # define OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR_STRET # endif #else # ifdef __ELF__ # if defined(__amd64__) || defined(__x86_64__) || defined(__i386__) # define OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR # if __has_feature(objc_msg_lookup_stret) # define OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR_STRET # endif # endif # if defined(__arm__) || defined(__ARM__) # define OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR # endif # if (defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32) || \ (defined(__mips_eabi) && _MIPS_SZPTR == 32) # define OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR # endif # endif |
︙ | ︙ |
Modified src/apple-forwarding-i386.S from [f5a96a4aca] to [a72704deee].
︙ | ︙ | |||
34 35 36 37 38 39 40 | movl %esp, %ebp pushl %ebx subl $20, %esp call get_eip .L0: | < | 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | movl %esp, %ebp pushl %ebx subl $20, %esp call get_eip .L0: movl 8(%ebp), %eax movl %eax, (%esp) call _object_getClass movl %eax, (%esp) movl L_sel_forwardingTargetForSelector-.L0(%ebx), %eax movl %eax, 4(%esp) |
︙ | ︙ | |||
84 85 86 87 88 89 90 | movl %esp, %ebp pushl %ebx subl $20, %esp call get_eip .L1: | < | 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | movl %esp, %ebp pushl %ebx subl $20, %esp call get_eip .L1: movl 12(%ebp), %eax movl %eax, (%esp) call _object_getClass movl %eax, (%esp) movl L_sel_forwardingTargetForSelector-.L1(%ebx), %eax movl %eax, 4(%esp) |
︙ | ︙ |
Modified src/forwarding-x86-elf.S from [05632c83d2] to [c6695dc060].
︙ | ︙ | |||
15 16 17 18 19 20 21 | */ .globl of_forward .globl of_forward_stret .section .text of_forward: | < | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | */ .globl of_forward .globl of_forward_stret .section .text of_forward: pushl %ebp movl %esp, %ebp pushl %ebx subl $20, %esp call get_eip |
︙ | ︙ | |||
51 52 53 54 55 56 57 58 | call *%eax addl $20, %esp popl %ebx popl %ebp jmp *%eax | > > > > > > > > > | > | > > > > > | > > > > > > > > > > > > > > > > > > > > | | | | | > > > > | 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 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 118 119 120 121 122 123 124 125 126 127 | call *%eax addl $20, %esp popl %ebx popl %ebp jmp *%eax .type of_forward, %function .size of_forward, .-of_forward of_forward_stret: pushl %ebp movl %esp, %ebp pushl %ebx subl $20, %esp call get_eip .L1: movl 12(%ebp), %eax movl %eax, (%esp) leal sel_forwardingTargetForSelector_-.L1(%ebx), %eax movl %eax, 4(%esp) leal objc_msg_lookup-.L1(%ebx), %eax call *%eax movl 12(%ebp), %edx movl %edx, (%esp) leal sel_forwardingTargetForSelector_-.L1(%ebx), %edx movl %edx, 4(%esp) movl 16(%ebp), %edx movl %edx, 8(%esp) call *%eax movl %eax, 12(%ebp) movl %eax, (%esp) movl 16(%ebp), %eax movl %eax, 4(%esp) leal objc_msg_lookup-.L1(%ebx), %eax call *%eax addl $20, %esp popl %ebx popl %ebp jmp *%eax .type of_forward_stret, %function .size of_forward_stret, .-of_forward_stret init: pushl %ebp movl %esp, %ebp pushl %ebx subl $4, %esp call get_eip .L2: leal module-.L2(%ebx), %eax movl %eax, (%esp) leal __objc_exec_class-.L2(%ebx), %eax call *%eax addl $4, %esp popl %ebx popl %ebp ret get_eip: movl (%esp), %ebx ret .section .ctors, "a", %progbits .long init .section .rodata str_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" |
︙ | ︙ |