ObjFW  Check-in [aeb47d24b5]

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: aeb47d24b5be8a4a8552552db5a8bac78983206fd67589d33426715fc40def90
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
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
	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

.section .init_array
	.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

.type of_forward, %function
.size of_forward, init-of_forward

#ifdef __linux__
.section .note.GNU-stack, "", %progbits
#endif







>
>





|


















<
<
<



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
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
	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)

.section .init_array
	.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

.type of_forward, %function
.size of_forward, init-of_forward

#ifdef __linux__
.section .note.GNU-stack, "", %progbits
#endif







>
>












|


















<
<
<



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
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
	popl	%ebp
	ret

get_eip:
	movl	(%esp), %ebx
	ret

.section .init_array
	.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

.type of_forward, %function
.size of_forward, init-of_forward

#ifdef __linux__
.section .note.GNU-stack, "", %progbits
#endif







|


















<
<
<



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
65
66
67
68
69
70
71
72
	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

.type objc_msg_lookup, %function
.type objc_msg_lookup_super, %function
.size objc_msg_lookup, objc_msg_lookup_super-objc_msg_lookup
.size objc_msg_lookup_super, ret_nil-objc_msg_lookup_super

#ifdef __linux__
.section .note.GNU-stack, "", %progbits
#endif







>
>










>
>









<
<
<
<
<



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
64
65
66
67
68
69
70
71
	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

.type objc_msg_lookup, %function
.type objc_msg_lookup_super, %function
.size objc_msg_lookup, objc_msg_lookup_super-objc_msg_lookup
.size objc_msg_lookup_super, ret_nil-objc_msg_lookup_super

#ifdef __linux__
.section .note.GNU-stack, "", %progbits
#endif







>
>










>
>









<
<
<
<
<



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
84
85
86
87
88
89
90
91
	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

.type objc_msg_lookup, %function
.type objc_msg_lookup_super, %function
.size objc_msg_lookup, objc_msg_lookup_super-objc_msg_lookup
.size objc_msg_lookup_super, ret_nil-objc_msg_lookup_super

#ifdef __linux__
.section .note.GNU-stack, "", %progbits
#endif







>
>









>
>










<
<
<
<
<



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
84
85
86
87
88
89
90
91
	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

.type objc_msg_lookup, %function
.type objc_msg_lookup_super, %function
.size objc_msg_lookup, forward-objc_msg_lookup
.size objc_msg_lookup_super, ret_nil-objc_msg_lookup_super

#ifdef __linux__
.section .note.GNU-stack, "", %progbits
#endif







>
>













>
>

















<
<
<
<
<



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
77
78
79
80
81
82
83
84
	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

.type objc_msg_lookup, %function
.type objc_msg_lookup_super, %function
.size objc_msg_lookup, forward-objc_msg_lookup
.size objc_msg_lookup_super, ret_nil-objc_msg_lookup_super

#ifdef __linux__
.section .note.GNU-stack, "", %progbits
#endif







>
>















>
>















<
<
<
<
<



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