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
	lw	$t0, 0($t0)
#endif
	addu	$t0, $t0, $t2
	lw	$t0, 0($t0)
	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







>
>
>

>



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>














<
<
<
<
<







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






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
#  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) && __mips < 64
#  include "lookup-asm-mips-elf.S"
# endif
#elif defined(__MACH__)
# if defined(__amd64__) || defined(__x86_64__)
#  include "lookup-asm-amd64-macho.S"
# endif
#endif







>
|







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) || \
    (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
#endif
}

#if defined(__ELF__)
# if defined(__amd64__) || defined(__x86_64__) || defined(__i386__) || \
    defined(__ppc__) || defined(__PPC__) || defined(__arm__) || defined(__ARM__)
#  define OF_ASM_LOOKUP


# elif defined(__mips) && __mips < 64
#  define OF_ASM_LOOKUP
# endif
#elif defined(__MACH__)
# if defined(__amd64__) || defined(__x86_64__)
#  define OF_ASM_LOOKUP
# endif
#endif







>
>
|







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