old-cross-binutils/ld/testsuite/ld-mips-elf/compressed-plt-1.s
Richard Sandiford 690f47bf98 ld/testsuite/
* lib/ld-lib.exp (default_ld_compile): Add a -I option for the source
	directory.
	* ld-mips-elf/compressed-plt-1.ld, ld-mips-elf/compressed-plt-1.s,
	ld-mips-elf/compressed-plt-1-dyn.s, ld-mips-elf/compressed-plt-1a.s,
	ld-mips-elf/compressed-plt-1b.s, ld-mips-elf/compressed-plt-1c.s,
	ld-mips-elf/compressed-plt-1d.s, ld-mips-elf/compressed-plt-1e.s,
	ld-mips-elf/compressed-plt-1-o32-se.rd,
	ld-mips-elf/compressed-plt-1-o32-se.od,
	ld-mips-elf/compressed-plt-1-o32-mips16-only.rd,
	ld-mips-elf/compressed-plt-1-o32-mips16-only.od,
	ld-mips-elf/compressed-plt-1-o32-umips-only.rd,
	ld-mips-elf/compressed-plt-1-o32-umips-only.od,
	ld-mips-elf/compressed-plt-1-o32-mips16.rd,
	ld-mips-elf/compressed-plt-1-o32-mips16.od,
	ld-mips-elf/compressed-plt-1-o32-mips16-got.rd,
	ld-mips-elf/compressed-plt-1-o32-mips16-got.od,
	ld-mips-elf/compressed-plt-1-o32-mips16-word.rd,
	ld-mips-elf/compressed-plt-1-o32-mips16-word.od,
	ld-mips-elf/compressed-plt-1-o32-umips.rd,
	ld-mips-elf/compressed-plt-1-o32-umips.od,
	ld-mips-elf/compressed-plt-1-o32-umips-got.rd,
	ld-mips-elf/compressed-plt-1-o32-umips-got.od,
	ld-mips-elf/compressed-plt-1-o32-umips-word.rd,
	ld-mips-elf/compressed-plt-1-o32-umips-word.od,
	ld-mips-elf/compressed-plt-1-n32-mips16.rd,
	ld-mips-elf/compressed-plt-1-n32-mips16.od,
	ld-mips-elf/compressed-plt-1-n32-umips.rd,
	ld-mips-elf/compressed-plt-1-n32-umips.od: New tests.
	* ld-mips-elf/mips-elf.exp: Run them.
2013-10-13 10:17:20 +00:00

62 lines
1.5 KiB
ArmAsm

.macro call_stub, name
.set push
.set nomips16
.section .mips16.call.\name, "ax", @progbits
.ent __call_stub_\name
.type __call_stub_\name, @function
__call_stub_\name:
la $25, \name
jr $25
.set pop
.endm
# Flags to specify how a particular function is referenced
.equ DC, 1 # Direct call from "compressed" code
.equ IC, 2 # Indirect call from "compressed" code
.equ DU, 4 # Direct call from "uncompressed" code
.equ IU, 8 # Indirect call from "uncompressed" code
.equ LO, 16 # Direct address reference (%lo)
# A wrapper around a macro called test_one, which is defined by
# the file that includes this one. NAME is the name of a function
# that is referenced in the way described by FLAGS, an inclusive OR
# of the flags above. The wrapper filters out any functions whose
# FLAGS are not a subset of FILTER.
.macro test_filter, name, flags
.if (\flags & filter) == \flags
test_one \name, \flags
.endif
.endm
.macro test_all_dc, name, flags
test_filter \name, \flags
test_filter \name\()_dc, (\flags | DC)
.endm
.macro test_all_ic, name, flags
test_all_dc \name, \flags
test_all_dc \name\()_ic, (\flags | IC)
.endm
.macro test_all_du, name, flags
test_all_ic \name, \flags
test_all_ic \name\()_du, (\flags | DU)
.endm
.macro test_all_iu, name, flags
test_all_du \name, \flags
test_all_du \name\()_iu, (\flags | IU)
.endm
.macro test_all_lo, name, flags
test_all_iu \name, \flags
test_all_iu \name\()_lo, (\flags | LO)
.endm
# Test all the combinations of interest.
.macro test_all
test_all_lo f, 0
.endm