Overview
Comment: | Use @GOT instead of @GOTOFF for non-local symbols
This makes it compile on Solaris (though exceptions don't seem to work |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
e26fd20d1623e32bf5c4126af02f1c40 |
User & Date: | js on 2023-04-17 16:44:41 |
Other Links: | manifest | tags |
Context
2023-04-22
| ||
09:55 | Add +[OFSystemInfo networkInterfaces] check-in: c3f58bce43 user: js tags: trunk | |
2023-04-17
| ||
16:44 | Use @GOT instead of @GOTOFF for non-local symbols check-in: e26fd20d16 user: js tags: trunk | |
14:54 | GitHub Actions: Significantly reduce *BSD tests check-in: 31cd763da0 user: js tags: trunk | |
Changes
Modified src/forwarding/forwarding-x86-elf.S from [67d834017b] to [566966be6a].
︙ | ︙ | |||
24 25 26 27 28 29 30 | OFForward: pushl %ebp movl %esp, %ebp pushl %ebx subl $20, %esp | | | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | OFForward: pushl %ebp movl %esp, %ebp pushl %ebx subl $20, %esp call getEIP addl $_GLOBAL_OFFSET_TABLE_, %ebx movl 8(%ebp), %eax movl %eax, (%esp) call object_getClass@PLT movl %eax, (%esp) |
︙ | ︙ | |||
71 72 73 74 75 76 77 | addl $20, %esp popl %ebx popl %ebp jmp *%eax 0: | | | | 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 | addl $20, %esp popl %ebx popl %ebp jmp *%eax 0: movl OFMethodNotFound@GOT(%ebx), %eax addl $20, %esp popl %ebx popl %ebp jmp *%eax .type OFForward, %function .size OFForward, .-OFForward OFForward_stret: pushl %ebp movl %esp, %ebp pushl %ebx subl $20, %esp call getEIP addl $_GLOBAL_OFFSET_TABLE_, %ebx movl 12(%ebp), %eax movl %eax, (%esp) call object_getClass@PLT movl %eax, (%esp) |
︙ | ︙ | |||
135 136 137 138 139 140 141 | addl $20, %esp popl %ebx popl %ebp jmp *%eax 0: | | | | | 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | addl $20, %esp popl %ebx popl %ebp jmp *%eax 0: movl OFMethodNotFound_stret@GOT(%ebx), %eax addl $20, %esp popl %ebx popl %ebp jmp *%eax .type OFForward_stret, %function .size OFForward_stret, .-OFForward_stret init: pushl %ebp movl %esp, %ebp pushl %ebx subl $4, %esp call getEIP addl $_GLOBAL_OFFSET_TABLE_, %ebx leal module@GOTOFF(%ebx), %eax movl %eax, (%esp) call __objc_exec_class@PLT addl $4, %esp popl %ebx popl %ebp ret getEIP: movl (%esp), %ebx ret #ifdef OF_SOLARIS .section .init_array, "aw" #else .section .ctors, "aw", %progbits |
︙ | ︙ |
Modified src/runtime/lookup-asm/lookup-asm-x86-elf.S from [cab82adc6a] to [9a76e11f62].
︙ | ︙ | |||
51 52 53 54 55 56 57 | jz 0f ret 0: call getEIP addl $_GLOBAL_OFFSET_TABLE_, %eax | | | | | 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 | jz 0f ret 0: call getEIP addl $_GLOBAL_OFFSET_TABLE_, %eax movl \notFound@GOT(%eax), %eax jmp *%eax .LtaggedPointer_\name: call getEIP addl $_GLOBAL_OFFSET_TABLE_, %eax movl objc_taggedPointerSecret@GOT(%eax), %ecx xorl (%ecx), %edx andb $0xE, %dl movzbl %dl, %edx movl objc_taggedPointerClasses@GOT(%eax), %eax movl (%eax,%edx,2), %edx movl 32(%edx), %edx jmp .Lmain_\name .type \name, %function .size \name, .-\name .endm |
︙ | ︙ |