MIPS/LD/testsuite: Verify microMIPS LA25 stub generation

Repeat `PIC and non-PIC test 1' checks for microMIPS LA25 stubs,
covering code generation and stub symbol annotation.

	ld/
	* testsuite/ld-mips-elf/pic-and-nonpic-1-micromips-rel.dd: New
	test.
	* testsuite/ld-mips-elf/pic-and-nonpic-1-micromips-rel.nd: New
	test.
	* testsuite/ld-mips-elf/pic-and-nonpic-1-micromips.dd: New test.
	* testsuite/ld-mips-elf/pic-and-nonpic-1-micromips.nd: New test.
	* testsuite/ld-mips-elf/pic-and-nonpic-1a-micromips.s: New test
	source.
	* testsuite/ld-mips-elf/pic-and-nonpic-1b-micromips.s: New test
	source.
	* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
This commit is contained in:
Maciej W. Rozycki 2016-08-10 22:10:30 +01:00
parent fe152e64f6
commit 0375b0a537
8 changed files with 196 additions and 0 deletions

View file

@ -1,3 +1,17 @@
2016-08-10 Maciej W. Rozycki <macro@imgtec.com>
* testsuite/ld-mips-elf/pic-and-nonpic-1-micromips-rel.dd: New
test.
* testsuite/ld-mips-elf/pic-and-nonpic-1-micromips-rel.nd: New
test.
* testsuite/ld-mips-elf/pic-and-nonpic-1-micromips.dd: New test.
* testsuite/ld-mips-elf/pic-and-nonpic-1-micromips.nd: New test.
* testsuite/ld-mips-elf/pic-and-nonpic-1a-micromips.s: New test
source.
* testsuite/ld-mips-elf/pic-and-nonpic-1b-micromips.s: New test
source.
* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
2016-08-09 H.J. Lu <hongjiu.lu@intel.com>
PR ld/20436

View file

@ -357,6 +357,8 @@ if { $linux_gnu } {
#
# The third test checks that we do the same when linking the
# result of the first link (with no other source files).
#
# We then repeat the same three tests for microMIPS stubs.
run_ld_link_tests {
{"PIC and non-PIC test 1 (relocatable)" "-r -melf32btsmip" ""
"-32 -EB -mips2" {pic-and-nonpic-1a.s pic-and-nonpic-1b.s}
@ -375,6 +377,42 @@ if { $linux_gnu } {
{{objdump -dr pic-and-nonpic-1.dd}
{readelf --symbols pic-and-nonpic-1.nd}}
"pic-and-nonpic-1-static2.o"}
{"PIC and non-PIC test 1, microMIPS (relocatable)"
"-r -melf32btsmip" ""
"-32 -EB -mips2"
{pic-and-nonpic-1a-micromips.s pic-and-nonpic-1b-micromips.s}
{{objdump -dr pic-and-nonpic-1-micromips-rel.dd}
{readelf --symbols pic-and-nonpic-1-micromips-rel.nd}}
"pic-and-nonpic-1-micromips-rel.o"}
{"PIC and non-PIC test 1, microMIPS (static 1)"
"-melf32btsmip -Tpic-and-nonpic-1.ld" ""
"-32 -EB -mips2"
{pic-and-nonpic-1a-micromips.s pic-and-nonpic-1b-micromips.s}
{{objdump -dr pic-and-nonpic-1-micromips.dd}
{readelf --symbols pic-and-nonpic-1-micromips.nd}}
"pic-and-nonpic-1-micromips-static1.o"}
}
# The final executable produced with the following test is supposed
# to be the same as one produced with the preceding test, however
# as noted in PR ld/20453 it is not. Consequently output from
# `objdump -dr' is not the same either. Expect:
#
# regexp_diff match failure
# regexp "^ 4103c: f001 0415 jalx 41054 <f3>$"
# line " 4103c: f001 0400 jalx 41000 <.pic.f3>"
#
# from the test below due to this problem.
setup_kfail "mips*-*-*" "ld/20453"
# The final check below should be folded into the `run_ld_link_tests'
# call above once `setup_kfail' has been removed.
run_ld_link_tests {
{"PIC and non-PIC test 1, microMIPS (static 2)"
"-melf32btsmip -Tpic-and-nonpic-1.ld \
tmpdir/pic-and-nonpic-1-micromips-rel.o" ""
"" {}
{{objdump -dr pic-and-nonpic-1-micromips.dd}
{readelf --symbols pic-and-nonpic-1-micromips.nd}}
"pic-and-nonpic-1-micromips-static2.o"}
}
run_dump_test "pic-and-nonpic-2"
run_ld_link_tests {

View file

@ -0,0 +1,42 @@
.*
Disassembly of section \.text:
00000000 <f1>:
0: 41bc 0000 lui gp,0x0
0: R_MICROMIPS_HI16 _gp_disp
4: 339c 0000 addiu gp,gp,0
4: R_MICROMIPS_LO16 _gp_disp
8: 033c e150 addu gp,gp,t9
c: f400 0000 jal 0 .*
c: R_MICROMIPS_26_S1 f3
10: 0000 0000 nop
14: 45bf jrc ra
00000016 <f2>:
16: 41bc 0000 lui gp,0x0
16: R_MICROMIPS_HI16 _gp_disp
1a: 339c 0000 addiu gp,gp,0
1a: R_MICROMIPS_LO16 _gp_disp
1e: 033c e150 addu gp,gp,t9
22: 45bf jrc ra
00000024 <f3>:
24: 3c1c0000 lui gp,0x0
24: R_MIPS_HI16 _gp_disp
28: 279c0000 addiu gp,gp,0
28: R_MIPS_LO16 _gp_disp
2c: 0399e021 addu gp,gp,t9
00000030 <__start>:
30: f400 0000 jal 0 .*
30: R_MICROMIPS_26_S1 f1
34: 0000 0000 nop
38: f400 0000 jal 0 .*
38: R_MICROMIPS_26_S1 f2
3c: 0000 0000 nop
40: f400 0000 jal 0 .*
40: R_MICROMIPS_26_S1 f3
44: 0000 0000 nop
\.\.\.

View file

@ -0,0 +1,5 @@
#...
.*: 00000024 +12 +FUNC +GLOBAL +DEFAULT +\[MIPS PIC\] .* f3
.*: 00000030 +24 +FUNC +GLOBAL +DEFAULT +\[MICROMIPS\] .* __start
.*: 00000016 +14 +FUNC +GLOBAL +DEFAULT +\[MICROMIPS, MIPS PIC\] .* f2
.*: 00000000 +22 +FUNC +GLOBAL +DEFAULT +\[MICROMIPS, MIPS PIC\] .* f1

View file

@ -0,0 +1,48 @@
.*
Disassembly of section \.text:
00041000 <\.pic\.f3>:
41000: 3c190004 lui t9,0x4
41004: 08010415 j 41054 <f3>
41008: 27391054 addiu t9,t9,4180
4100c: 00000000 nop
00041010 <\.pic\.f2>:
41010: 41b9 0004 lui t9,0x4
41014: d402 0823 j 41046 <f2>
41018: 3339 1047 addiu t9,t9,4167
\.\.\.
00041028 <\.pic\.f1>:
41028: 41b9 0004 lui t9,0x4
4102c: 3339 1031 addiu t9,t9,4145
00041030 <f1>:
41030: 41bc 0002 lui gp,0x2
41034: 339c 6fcf addiu gp,gp,28623
41038: 033c e150 addu gp,gp,t9
4103c: f001 0415 jalx 41054 <f3>
41040: 0000 0000 nop
41044: 45bf jrc ra
00041046 <f2>:
41046: 41bc 0002 lui gp,0x2
4104a: 339c 6fb9 addiu gp,gp,28601
4104e: 033c e150 addu gp,gp,t9
41052: 45bf jrc ra
00041054 <f3>:
41054: 3c1c0002 lui gp,0x2
41058: 279c6fac addiu gp,gp,28588
4105c: 0399e021 addu gp,gp,t9
00041060 <__start>:
41060: f402 0814 jal 41028 <\.pic\.f1>
41064: 0000 0000 nop
41068: f402 0808 jal 41010 <\.pic\.f2>
4106c: 0000 0000 nop
41070: f001 0400 jalx 41000 <\.pic\.f3>
41074: 0000 0000 nop
\.\.\.

View file

@ -0,0 +1,8 @@
#...
.*: 00068000 +0 +NOTYPE +LOCAL +DEFAULT +ABS _gp
.*: 00041028 +8 +FUNC +LOCAL +DEFAULT +\[MICROMIPS\] .* .pic.f1
.*: 00041010 +16 +FUNC +LOCAL +DEFAULT +\[MICROMIPS\] .* .pic.f2
.*: 00041054 +12 +FUNC +GLOBAL +DEFAULT .* f3
.*: 00041060 +24 +FUNC +GLOBAL +DEFAULT +\[MICROMIPS\] .* __start
.*: 00041046 +14 +FUNC +GLOBAL +DEFAULT +\[MICROMIPS\] .* f2
.*: 00041030 +22 +FUNC +GLOBAL +DEFAULT +\[MICROMIPS\] .* f1

View file

@ -0,0 +1,31 @@
.abicalls
.global f1
.global f2
.global f3
.set micromips
.ent f1
f1:
.set noreorder
.cpload $25
.set reorder
.option pic0
jal f3
.option pic2
jr $31
.end f1
.ent f2
f2:
.set noreorder
.cpload $25
.set reorder
jr $31
.end f2
.set nomicromips
.ent f3
f3:
.set noreorder
.cpload $25
.set reorder
.end f3

View file

@ -0,0 +1,10 @@
.abicalls
.option pic0
.global __start
.set micromips
.ent __start
__start:
jal f1
jal f2
jal f3
.end __start