ObjFW  Check-in [8108a32927]

Overview
Comment:lookup-asm-mips-elf.S: Support PIC.

This also improves the check for the ABI.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 8108a32927ec50f84f80ac8958f89cea97670daf57b8488494ff4c811c829fef
User & Date: js on 2013-07-24 22:56:09
Other Links: manifest | tags
Context
2013-07-24
23:05
Add forwardingTargetForSelector: for MIPS/ELF. check-in: f1416bbdc2 user: js tags: trunk
22:56
lookup-asm-mips-elf.S: Support PIC. check-in: 8108a32927 user: js tags: trunk
11:49
Improve documentation. check-in: 7e5de0a086 user: js tags: trunk
Changes

Modified src/runtime/lookup-asm-mips-elf.S from [fc34beda3a] to [b184c8be25].

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







+
+
+

+



+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+














-
-
-
-
-







	lw	$t0, 0($t0)
#endif
	addu	$t0, $t0, $t2
	lw	$t0, 0($t0)
	addu	$t0, $t0, $t3
	lw	$t0, 0($t0)

#ifdef __PIC__
	beqz	$t0, forward
#else
	beqz	$t0, objc_not_found_handler
#endif

	move	$v0, $t0
	j	$ra

ret_nil:
#ifdef __PIC__
	addiu	$v0, $t9, nil_method-objc_msg_lookup
#else
	la	$v0, nil_method
#endif
	j	$ra

#ifdef __PIC__
forward:
	lui	$gp, %hi(_gp_disp)
	addiu	$gp, $gp, %lo(_gp_disp)
	addu	$gp, $gp, $t9
	addiu	$gp, $gp, forward-objc_msg_lookup

	lw	$t9, %call16(objc_not_found_handler)($gp)
	jr	$t9
#endif
.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-asm.S from [948ecc5edb] to [07a7cb7488].

21
22
23
24
25
26
27

28

29
30
31
32
33
34
35
21
22
23
24
25
26
27
28

29
30
31
32
33
34
35
36







+
-
+







#  include "lookup-asm-amd64-elf.S"
# elif defined(__i386__)
#  include "lookup-asm-x86-elf.S"
# elif defined(__ppc__) || defined(__PPC__)
#  include "lookup-asm-ppc-elf.S"
# elif defined(__arm__) || defined(__ARM__)
#  include "lookup-asm-arm-elf.S"
# elif (defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32) || \
# elif defined(__mips) && __mips < 64
    (defined(__mips_eabi) && _MIPS_SZPTR == 32)
#  include "lookup-asm-mips-elf.S"
# endif
#elif defined(__MACH__)
# if defined(__amd64__) || defined(__x86_64__)
#  include "lookup-asm-amd64-macho.S"
# endif
#endif

Modified src/runtime/runtime-private.h from [630ce5911a] to [a0b575feaf].

174
175
176
177
178
179
180


181

182
183
184
185
186
187
188
174
175
176
177
178
179
180
181
182

183
184
185
186
187
188
189
190







+
+
-
+







#endif
}

#if defined(__ELF__)
# if defined(__amd64__) || defined(__x86_64__) || defined(__i386__) || \
    defined(__ppc__) || defined(__PPC__) || defined(__arm__) || defined(__ARM__)
#  define OF_ASM_LOOKUP
# endif
# if (defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32) || \
# elif defined(__mips) && __mips < 64
    (defined(__mips_eabi) && _MIPS_SZPTR == 32)
#  define OF_ASM_LOOKUP
# endif
#elif defined(__MACH__)
# if defined(__amd64__) || defined(__x86_64__)
#  define OF_ASM_LOOKUP
# endif
#endif