old-cross-binutils/ld/testsuite/ld-mips-elf/mips16-local-stubs-1.s
Richard Sandiford b314ec0eae bfd/
* elfxx-mips.c (mips_elf_calculate_relocation): Allow local stubs
	to be used for calls from MIPS16 code.

gas/
	* config/tc-mips.h (TC_SYMFIELD_TYPE): New.
	* config/tc-mips.c (append_insn): Record which symbols have
	R_MIPS16_26 relocations against them.
	(mips_fix_adjustable): Don't reduce relocations against such symbols.

ld/testsuite/
	* ld-mips-elf/mips16-local-stubs-1.s,
	* ld-mips-elf/mips16-local-stubs-1.d: New tests.
	* ld-mips-elf/mips-elf.exp: Run them.
2007-06-25 10:13:57 +00:00

49 lines
726 B
ArmAsm

.macro makestub,type,func,section
.text
.set \type
.type \func,@function
.ent \func
\func:
jr $31
.end \func
.section \section,"ax",@progbits
.set nomips16
.type stub_for_\func,@function
.ent stub_for_\func
stub_for_\func:
.set noat
la $1,\func
jr $1
.set at
.end stub_for_\func
.endm
.macro makestubs,id
makestub nomips16,f\id,.mips16.call.F\id
makestub nomips16,g\id,.mips16.call.fp.G\id
makestub mips16,h\id,.mips16.fn.H\id
.endm
.macro makecaller,type,func
.text
.set \type
.globl \func
.type \func,@function
.ent \func
\func:
jal f1
jal f2
jal g1
jal g2
jal h1
jal h2
.end \func
.endm
makestubs 1
makestubs 2
makestubs 3
makecaller nomips16,caller1
makecaller mips16,caller2