Overview
Comment: | Use section .ctors instead of .init_array. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
aeb47d24b5be8a4a8552552db5a8bac7 |
User & Date: | js on 2013-07-11 12:33:06 |
Other Links: | manifest | tags |
Context
2013-07-11
| ||
12:48 | Improve file name consistency. check-in: 8417e06951 user: js tags: trunk | |
12:33 | Use section .ctors instead of .init_array. check-in: aeb47d24b5 user: js tags: trunk | |
11:55 | Add tests for -[forwardingTargetForSelector:]. check-in: 249eda6023 user: js tags: trunk | |
Changes
Modified src/forwarding-amd64-elf.S from [ee4e7452e5] to [6c622f93eb].
︙ | ︙ | |||
69 70 71 72 73 74 75 76 77 78 79 80 | movq 0xA0(%rsp), %rdi movq 0xA8(%rsp), %rax movq %rbp, %rsp popq %rbp jmp *%r11 init: leaq module(%rip), %rdi jmp __objc_exec_class@PLT | > > | < < < | 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 | movq 0xA0(%rsp), %rdi movq 0xA8(%rsp), %rax movq %rbp, %rsp popq %rbp jmp *%r11 .type of_forward, %function .size of_forward, .-of_forward init: leaq module(%rip), %rdi jmp __objc_exec_class@PLT .section .ctors, "a", %progbits .quad init .section .rodata str_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data sel_forwardingTargetForSelector_: .quad str_forwardingTargetForSelector_, 0 .quad 0, 0 symtab: .quad 0, sel_forwardingTargetForSelector_ .short 0, 0 .long 0 .quad 0 module: .quad 8, 32, 0, symtab #ifdef __linux__ .section .note.GNU-stack, "", %progbits #endif |
Modified src/forwarding-arm-elf.S from [a83881c740] to [dd9bbbc357].
︙ | ︙ | |||
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | bl objc_msg_lookup(PLT) mov r12, r0 fldmfdd sp!, {d0-d7} ldmfd sp!, {r0-r3, lr} bx r12 init: ldr r0, module_indirect_L1 .L1: add r0, pc b __objc_exec_class(PLT) sel_forwardingTargetForSelector__indirect_L0: .long sel_forwardingTargetForSelector_-(.L0+8) module_indirect_L1: .long module-(.L1+8) | > > | < < < | 38 39 40 41 42 43 44 45 46 47 48 49 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 | bl objc_msg_lookup(PLT) mov r12, r0 fldmfdd sp!, {d0-d7} ldmfd sp!, {r0-r3, lr} bx r12 .type of_forward, %function .size of_forward, .-of_forward init: ldr r0, module_indirect_L1 .L1: add r0, pc b __objc_exec_class(PLT) sel_forwardingTargetForSelector__indirect_L0: .long sel_forwardingTargetForSelector_-(.L0+8) module_indirect_L1: .long module-(.L1+8) .section .ctors, "a", %progbits .long init .section .rodata str_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data sel_forwardingTargetForSelector_: .long str_forwardingTargetForSelector_, 0 .long 0, 0 symtab: .long 0, sel_forwardingTargetForSelector_ .short 0, 0 .long 0 .long 0 module: .long 8, 16, 0, symtab #ifdef __linux__ .section .note.GNU-stack, "", %progbits #endif |
Modified src/forwarding-x86-elf.S from [c6c400862a] to [a73786acf5].
︙ | ︙ | |||
50 51 52 53 54 55 56 57 58 59 60 61 62 63 | call *%eax addl $20, %esp popl %ebx popl %ebp jmp *%eax init: pushl %ebp movl %esp, %ebp pushl %ebx subl $4, %esp | > > | 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | call *%eax addl $20, %esp popl %ebx popl %ebp jmp *%eax .type of_forward, %function .size of_forward, .-of_forward init: pushl %ebp movl %esp, %ebp pushl %ebx subl $4, %esp |
︙ | ︙ | |||
75 76 77 78 79 80 81 | popl %ebp ret get_eip: movl (%esp), %ebx ret | | < < < | 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 | popl %ebp ret get_eip: movl (%esp), %ebx ret .section .ctors, "a", %progbits .long init .section .rodata str_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" .section .data sel_forwardingTargetForSelector_: .long str_forwardingTargetForSelector_, 0 .long 0, 0 symtab: .long 0, sel_forwardingTargetForSelector_ .short 0, 0 .long 0 .long 0 module: .long 8, 16, 0, symtab #ifdef __linux__ .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-amd64-elf.S from [8fd99fa5f3] to [3eb642b445].
︙ | ︙ | |||
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | movq (%r8,%rcx,8), %r8 movq (%r8,%rdx,8), %rax testq %rax, %rax jz objc_not_found_handler@PLT ret objc_msg_lookup_super: movq (%rdi), %rax testq %rax, %rax jz ret_nil movq 8(%rdi), %r8 movq 64(%r8), %r8 movq %rdi, %rax jmp lookup ret_nil: leaq nil_method(%rip), %rax ret nil_method: movq %rdi, %rax ret | > > > > < < < < < | 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | movq (%r8,%rcx,8), %r8 movq (%r8,%rdx,8), %rax testq %rax, %rax jz objc_not_found_handler@PLT ret .type objc_msg_lookup, %function .size objc_msg_lookup, .-objc_msg_lookup objc_msg_lookup_super: movq (%rdi), %rax testq %rax, %rax jz ret_nil movq 8(%rdi), %r8 movq 64(%r8), %r8 movq %rdi, %rax jmp lookup .type objc_msg_lookup_super, %function .size objc_msg_lookup_super, .-objc_msg_lookup_super ret_nil: leaq nil_method(%rip), %rax ret nil_method: movq %rdi, %rax ret #ifdef __linux__ .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-arm-elf.S from [f2f568603e] to [fd72b45853].
︙ | ︙ | |||
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | ldr r2, [r2, r3, lsl #2] cmp r2, #0 beq objc_not_found_handler(PLT) mov r0, r2 bx lr objc_msg_lookup_super: ldr r2, [r0, #0] cmp r0, #0 beq ret_nil ldr r2, [r0, #4] ldr r2, [r2, #32] b lookup ret_nil: adr r0, nil_method bx lr nil_method: mov r0, #0 bx lr | > > > > < < < < < | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | ldr r2, [r2, r3, lsl #2] cmp r2, #0 beq objc_not_found_handler(PLT) mov r0, r2 bx lr .type objc_msg_lookup, %function .size objc_msg_lookup, .-objc_msg_lookup objc_msg_lookup_super: ldr r2, [r0, #0] cmp r0, #0 beq ret_nil ldr r2, [r0, #4] ldr r2, [r2, #32] b lookup .type objc_msg_lookup_super, %function .size objc_msg_lookup_super, .-objc_msg_lookup_super ret_nil: adr r0, nil_method bx lr nil_method: mov r0, #0 bx lr #ifdef __linux__ .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-mips-elf.S from [5a290d4602] to [fc34beda3a].
︙ | ︙ | |||
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 | addu $t0, $t0, $t3 lw $t0, 0($t0) beqz $t0, objc_not_found_handler move $v0, $t0 j $ra objc_msg_lookup_super: lw $t0, 0($a0) beqz $t0, ret_nil lw $t0, 4($a0) lw $t0, 32($t0) b lookup ret_nil: lui $v0, %hi(nil_method) addiu $v0, %lo(nil_method) j $ra nil_method: move $v0, $zero j $ra | > > > > < < < < < | 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 | addu $t0, $t0, $t3 lw $t0, 0($t0) beqz $t0, objc_not_found_handler move $v0, $t0 j $ra .type objc_msg_lookup, %function .size objc_msg_lookup, .-objc_msg_lookup objc_msg_lookup_super: lw $t0, 0($a0) beqz $t0, ret_nil lw $t0, 4($a0) lw $t0, 32($t0) b lookup .type objc_msg_lookup_super, %function .size objc_msg_lookup_super, .-objc_msg_lookup_super ret_nil: lui $v0, %hi(nil_method) addiu $v0, %lo(nil_method) j $ra nil_method: move $v0, $zero j $ra #ifdef __linux__ .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-ppc-elf.S from [728d9ac121] to [3310b0b260].
︙ | ︙ | |||
47 48 49 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 | lwzx %r5, %r5, %r8 cmpwi %r5, 0 beq- forward mr %r3, %r5 blr forward: b objc_not_found_handler@plt objc_msg_lookup_super: lwz %r5, 0(%r3) cmpwi %r5, 0 beq- ret_nil lwz %r5, 4(%r3) lwz %r5, 32(%r5) b lookup ret_nil: mflr %r0 bl get_pc mtlr %r0 .L1: addi %r3, %r3, nil_method-.L1 blr nil_method: li %r3, 0 blr get_pc: mflr %r3 blr | > > > > < < < < < | 47 48 49 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 | lwzx %r5, %r5, %r8 cmpwi %r5, 0 beq- forward mr %r3, %r5 blr .type objc_msg_lookup, %function .size objc_msg_lookup, .-objc_msg_lookup forward: b objc_not_found_handler@plt objc_msg_lookup_super: lwz %r5, 0(%r3) cmpwi %r5, 0 beq- ret_nil lwz %r5, 4(%r3) lwz %r5, 32(%r5) b lookup .type objc_msg_lookup_super, %function .size objc_msg_lookup_super, .-objc_msg_lookup_super ret_nil: mflr %r0 bl get_pc mtlr %r0 .L1: addi %r3, %r3, nil_method-.L1 blr nil_method: li %r3, 0 blr get_pc: mflr %r3 blr #ifdef __linux__ .section .note.GNU-stack, "", %progbits #endif |
Modified src/runtime/lookup-x86-elf.S from [fdf247a310] to [4f686320bc].
︙ | ︙ | |||
40 41 42 43 44 45 46 47 48 49 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 | movzbl (%eax), %ecx movl (%edx,%ecx,4), %eax testl %eax, %eax jz forward ret forward: call get_eip .L1: addl $objc_not_found_handler-.L1, %eax jmp *%eax objc_msg_lookup_super: movl 4(%esp), %edx cmpl $0, (%edx) je ret_nil movl 4(%edx), %edx movl 32(%edx), %edx jmp lookup ret_nil: call get_eip .L2: addl $nil_method-.L2, %eax ret nil_method: movl 4(%esp), %eax ret get_eip: movl (%esp), %eax ret | > > > > < < < < < | 40 41 42 43 44 45 46 47 48 49 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 | movzbl (%eax), %ecx movl (%edx,%ecx,4), %eax testl %eax, %eax jz forward ret .type objc_msg_lookup, %function .size objc_msg_lookup, .-objc_msg_lookup forward: call get_eip .L1: addl $objc_not_found_handler-.L1, %eax jmp *%eax objc_msg_lookup_super: movl 4(%esp), %edx cmpl $0, (%edx) je ret_nil movl 4(%edx), %edx movl 32(%edx), %edx jmp lookup .type objc_msg_lookup_super, %function .size objc_msg_lookup_super, .-objc_msg_lookup_super ret_nil: call get_eip .L2: addl $nil_method-.L2, %eax ret nil_method: movl 4(%esp), %eax ret get_eip: movl (%esp), %eax ret #ifdef __linux__ .section .note.GNU-stack, "", %progbits #endif |