binutils-gdb/ld/testsuite/ld-mips-elf/pr21375-n32.s

60 lines
1.0 KiB
ArmAsm
Raw Normal View History

PR ld/21375: MIPS: Add test cases for undefined weaks resolving to zero Define a new procedure, `run_mips_undefweak_test', and use it to iterate over several scenarios involving undefined weak symbols resolving to zero, verifying expected regular MIPS, MIPS16 and microMIPS code, GOT and dynamic symbol table generation, as well as the setting of the EI_ABIVERSION field in the ELF file header. In particular ensure that symbol versioning works and that `__gnu_absolute_zero' gets assigned a version (any will do) even if it has not been listed for exportation in a linker version script. ld/ PR ld/21375 * testsuite/ld-mips-elf/pr21375-abi.hd: New test. * testsuite/ld-mips-elf/pr21375-noabi.hd: New test. * testsuite/ld-mips-elf/pr21375.dd: New test. * testsuite/ld-mips-elf/pr21375h.dd: New test. * testsuite/ld-mips-elf/pr21375p.dd: New test. * testsuite/ld-mips-elf/pr21375ph.dd: New test. * testsuite/ld-mips-elf/pr21375s.dd: New test. * testsuite/ld-mips-elf/pr21375s-n32.dd: New test. * testsuite/ld-mips-elf/pr21375s-n64.dd: New test. * testsuite/ld-mips-elf/pr21375sh.dd: New test. * testsuite/ld-mips-elf/pr21375sh-n32.dd: New test. * testsuite/ld-mips-elf/pr21375sh-n64.dd: New test. * testsuite/ld-mips-elf/pr21375shg.dd: New test. * testsuite/ld-mips-elf/pr21375sx.dd: New test. * testsuite/ld-mips-elf/pr21375sxh.dd: New test. * testsuite/ld-mips-elf/pr21375sm16.dd: New test. * testsuite/ld-mips-elf/pr21375sm16h.dd: New test. * testsuite/ld-mips-elf/pr21375su.dd: New test. * testsuite/ld-mips-elf/pr21375su-n32.dd: New test. * testsuite/ld-mips-elf/pr21375su-n64.dd: New test. * testsuite/ld-mips-elf/pr21375suh.dd: New test. * testsuite/ld-mips-elf/pr21375suh-n32.dd: New test. * testsuite/ld-mips-elf/pr21375suh-n64.dd: New test. * testsuite/ld-mips-elf/pr21375sux.dd: New test. * testsuite/ld-mips-elf/pr21375suxh.dd: New test. * testsuite/ld-mips-elf/pr21375.gd: New test. * testsuite/ld-mips-elf/pr21375h.gd: New test. * testsuite/ld-mips-elf/pr21375p.gd: New test. * testsuite/ld-mips-elf/pr21375ph.gd: New test. * testsuite/ld-mips-elf/pr21375s.gd: New test. * testsuite/ld-mips-elf/pr21375s-n32.gd: New test. * testsuite/ld-mips-elf/pr21375s-n64.gd: New test. * testsuite/ld-mips-elf/pr21375sh.gd: New test. * testsuite/ld-mips-elf/pr21375sh-n32.gd: New test. * testsuite/ld-mips-elf/pr21375sh-n64.gd: New test. * testsuite/ld-mips-elf/pr21375shg.gd: New test. * testsuite/ld-mips-elf/pr21375shl.gd: New test. * testsuite/ld-mips-elf/pr21375shv.gd: New test. * testsuite/ld-mips-elf/pr21375sx.gd: New test. * testsuite/ld-mips-elf/pr21375sxh.gd: New test. * testsuite/ld-mips-elf/pr21375.sd: New test. * testsuite/ld-mips-elf/pr21375-irix.sd: New test. * testsuite/ld-mips-elf/pr21375h.sd: New test. * testsuite/ld-mips-elf/pr21375h-irix.sd: New test. * testsuite/ld-mips-elf/pr21375p.sd: New test. * testsuite/ld-mips-elf/pr21375p-irix.sd: New test. * testsuite/ld-mips-elf/pr21375ph.sd: New test. * testsuite/ld-mips-elf/pr21375ph-irix.sd: New test. * testsuite/ld-mips-elf/pr21375s.sd: New test. * testsuite/ld-mips-elf/pr21375s-irix.sd: New test. * testsuite/ld-mips-elf/pr21375s-n32.sd: New test. * testsuite/ld-mips-elf/pr21375s-n32-irix.sd: New test. * testsuite/ld-mips-elf/pr21375s-n64.sd: New test. * testsuite/ld-mips-elf/pr21375s-n64-irix.sd: New test. * testsuite/ld-mips-elf/pr21375sh.sd: New test. * testsuite/ld-mips-elf/pr21375sh-irix.sd: New test. * testsuite/ld-mips-elf/pr21375sh-n32.sd: New test. * testsuite/ld-mips-elf/pr21375sh-n32-irix.sd: New test. * testsuite/ld-mips-elf/pr21375sh-n64.sd: New test. * testsuite/ld-mips-elf/pr21375sh-n64-irix.sd: New test. * testsuite/ld-mips-elf/pr21375shg.sd: New test. * testsuite/ld-mips-elf/pr21375shg-irix.sd: New test. * testsuite/ld-mips-elf/pr21375shl.sd: New test. * testsuite/ld-mips-elf/pr21375shl-irix.sd: New test. * testsuite/ld-mips-elf/pr21375shv.sd: New test. * testsuite/ld-mips-elf/pr21375shv-irix.sd: New test. * testsuite/ld-mips-elf/pr21375sx.sd: New test. * testsuite/ld-mips-elf/pr21375sx-irix.sd: New test. * testsuite/ld-mips-elf/pr21375sxh.sd: New test. * testsuite/ld-mips-elf/pr21375sxh-irix.sd: New test. * testsuite/ld-mips-elf/pr21375.ld: New test linker script. * testsuite/ld-mips-elf/pr21375-xgot.ld: New test linker script. * testsuite/ld-mips-elf/pr21375.ver: New test version script. * testsuite/ld-mips-elf/pr21375v.ver: New test version script. * testsuite/ld-mips-elf/pr21375.s: New test source. * testsuite/ld-mips-elf/pr21375-mips16.s: New test source. * testsuite/ld-mips-elf/pr21375-n32.s: New test source. * testsuite/ld-mips-elf/pr21375-n64.s: New test source. * testsuite/ld-mips-elf/pr21375-xgot.s: New test source. * testsuite/ld-mips-elf/mips-elf.exp (run_mips_undefweak_test): New procedure; run the new tests.
2018-09-15 03:22:57 +08:00
.abicalls
.set noreorder
.type obj, @object
.weak obj
.ifdef prot
.protected obj
.endif
.ifdef hidn
.hidden obj
.endif
.ifdef intr
.internal obj
.endif
.section .text.foo, "ax", @progbits
.globl foo
.ent foo
foo:
.frame $sp, 0, $31
.mask 0x00000000, 0
.fmask 0x00000000, 0
.cplocal $4
.cpsetup $25, $0, foo
lw $2, %got_page(obj + 4)($4)
lw $3, %got_disp(obj)($4)
addiu $2, %got_ofst(obj + 4)
jr $31
addiu $3, 4
.end foo
# Pad a little so that the microMIPS version aligns the same.
.space 4
# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
.align 4, 0
.space 16
.section .text.bar, "ax", @progbits
.ent bar
bar:
.frame $sp, 0, $31
.mask 0x00000000, 0
.fmask 0x00000000, 0
.cplocal $4
.cpsetup $25, $0, bar
lwl $2, %got_page(obj + 4)($4)
lwr $3, %got_disp(obj)($4)
addiu $2, %got_ofst(obj + 4)
jr $31
addiu $3, 4
.end bar
# Pad a little so that the microMIPS version aligns the same.
.space 4
# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
.align 4, 0
.space 16