* ld-spu/spu.exp (embed_test): New.

* ld-spu/ear.s: New.
	* ld-spu/ear.d: New.
	* ld-spu/embed.rd: New.
	* ld-spu/ovl2.s: New.
	* ld-spu/ovl2.d: New.
This commit is contained in:
Alan Modra 2007-03-27 08:36:27 +00:00
parent f24f8f707c
commit 0fd7d34280
7 changed files with 260 additions and 0 deletions

View file

@ -1,3 +1,12 @@
2007-03-27 Alan Modra <amodra@bigpond.net.au>
* ld-spu/spu.exp (embed_test): New.
* ld-spu/ear.s: New.
* ld-spu/ear.d: New.
* ld-spu/embed.rd: New.
* ld-spu/ovl2.s: New.
* ld-spu/ovl2.d: New.
2007-03-24 Alan Modra <amodra@bigpond.net.au>
* ld-elf/overlay.d: -u symbols we want to see in the output.

30
ld/testsuite/ld-spu/ear.d Normal file
View file

@ -0,0 +1,30 @@
#as:
#objdump: -Dr
#name: ear
.*: +file format .*
Disassembly of section \.text:
0+00 <_start>:
0: 32 00 00 00 br 0
0: SPU_REL16 _start
Disassembly of section \.data:
0+00 <_EAR_main>:
\.\.\.
0+20 <_EAR_foo>:
\.\.\.
Disassembly of section \.toe:
0+00 <_EAR_>:
\.\.\.
0+10 <_EAR_bar>:
\.\.\.
Disassembly of section \.data\.blah:
0+00 <_EAR_blah>:
\.\.\.

25
ld/testsuite/ld-spu/ear.s Normal file
View file

@ -0,0 +1,25 @@
.text
.global _start
_start:
br _start
#test old-style toe _EAR_ syms
.section .toe,"a",@nobits
_EAR_:
.space 16
_EAR_bar:
.space 16
#test new-style _EAR_ syms
.data
_EAR_main:
.space 16
#new ones don't need to be 16 bytes apart
.space 16
_EAR_foo:
.space 16
.section .data.blah,"aw",@progbits
_EAR_blah:
.space 16

View file

@ -0,0 +1,16 @@
Relocation section '\.rela\.rodata\.speelf' at .* contains 3 entries:
Offset Info Type Sym\. Value Symbol's Name \+ Addend
00000184 00000601 R_PPC_ADDR32 00000000 main \+ 0
000001a4 00000901 R_PPC_ADDR32 00000000 foo \+ 0
000001b4 00000701 R_PPC_ADDR32 00000000 blah \+ 0
Relocation section '\.rela\.data' at .* contains 2 entries:
Offset Info Type Sym\. Value Symbol's Name \+ Addend
00000004 00000201 R_PPC_ADDR32 00000000 \.rodata\.speelf \+ 0
00000008 00000401 R_PPC_ADDR32 00000000 \.data\.spetoe \+ 0
Relocation section '\.rela\.data\.spetoe' at .* contains 2 entries:
Offset Info Type Sym\. Value Symbol's Name \+ Addend
00000004 00000201 R_PPC_ADDR32 00000000 \.rodata\.speelf \+ 0
00000014 00000a01 R_PPC_ADDR32 00000000 bar \+ 0

View file

@ -0,0 +1,81 @@
#source: ovl2.s
#ld: -N -T ovl.lnk --emit-relocs
#objdump: -D -r
.*elf32-spu
Disassembly of section \.text:
00000100 <_start>:
100: 33 00 06 00 brsl \$0,130 <00000000\.ovl_call\.f1_a1> # 130
100: SPU_REL16 f1_a1
104: 33 00 03 80 brsl \$0,120 <00000000\.ovl_call\.10:4> # 120
104: SPU_REL16 setjmp
108: 32 7f ff 00 br 100 <_start> # 100
108: SPU_REL16 _start
0000010c <setjmp>:
10c: 35 00 00 00 bi \$0
00000110 <longjmp>:
110: 35 00 00 00 bi \$0
...
00000120 <00000000\.ovl_call.10:4>:
120: 42 00 86 4f ila \$79,268 # 10c
124: 40 20 00 00 nop \$0
128: 42 00 00 4e ila \$78,0
12c: 32 00 0a 80 br 180 <__ovly_load> # 180
00000130 <00000000\.ovl_call.f1_a1>:
130: 42 02 00 4f ila \$79,1024 # 400
134: 40 20 00 00 nop \$0
138: 42 00 00 ce ila \$78,1
13c: 32 00 08 80 br 180 <__ovly_load> # 180
00000140 <00000000\.ovl_call\._SPUEAR_f1_a2>:
140: 42 02 00 4f ila \$79,1024 # 400
144: 40 20 00 00 nop \$0
148: 42 00 01 4e ila \$78,2
14c: 32 00 06 80 br 180 <__ovly_load> # 180
#...
Disassembly of section \.ov_a1:
00000400 <f1_a1>:
400: 35 00 00 00 bi \$0
\.\.\.
Disassembly of section \.ov_a2:
00000400 <_SPUEAR_f1_a2>:
400: 32 7f a2 00 br 110 <longjmp> # 110
400: SPU_REL16 longjmp
\.\.\.
Disassembly of section \.data:
00000410 <_ovly_table>:
410: 00 00 04 00 .*
414: 00 00 00 10 .*
418: 00 00 02 c0 .*
41c: 00 00 00 01 .*
420: 00 00 04 00 .*
424: 00 00 00 10 .*
428: 00 00 02 d0 .*
42c: 00 00 00 01 .*
00000430 <_ovly_buf_table>:
430: 00 00 00 00 .*
Disassembly of section \.toe:
00000440 <_EAR_>:
\.\.\.
Disassembly of section \.note\.spu_name:
.* <\.note\.spu_name>:
.*: 00 00 00 08 .*
.*: 00 00 00 0c .*
.*: 00 00 00 01 .*
.*: 53 50 55 4e .*
.*: 41 4d 45 00 .*
.*: 74 6d 70 64 .*
.*: 69 72 2f 64 .*
.*: 75 6d 70 00 .*

View file

@ -0,0 +1,35 @@
.text
.p2align 2
.global _start
_start:
brsl lr,f1_a1
brsl lr,setjmp
br _start
.type setjmp,@function
setjmp:
bi lr
.size setjmp,.-setjmp
.type longjmp,@function
longjmp:
bi lr
.size longjmp,.-longjmp
.section .ov_a1,"ax",@progbits
.p2align 2
.global f1_a1
.type f1_a1,@function
f1_a1:
bi lr
.size f1_a1,.-f1_a1
.section .ov_a2,"ax",@progbits
.p2align 2
.type f1_a2,@function
f1_a2:
br longjmp
.size f1_a2,.-f1_a2
_SPUEAR_f1_a2 = f1_a2
.global _SPUEAR_f1_a2

View file

@ -20,8 +20,72 @@ if { ![istarget "spu-*-*"] } {
return
}
proc embed_test { } {
global subdir srcdir
global AS ASFLAGS LD LDFLAGS READELF READELFFLAGS
set cmd "$AS $ASFLAGS -o tmpdir/ear.o $srcdir/$subdir/ear.s"
send_log "$cmd\n"
set cmdret [catch "exec $cmd" comp_output]
set comp_output [prune_warnings $comp_output]
if { $cmdret != 0 || $comp_output != ""} then {
send_log "$comp_output\n"
verbose "$comp_output" 3
fail "ear assembly"
return
}
set cmd "$LD $LDFLAGS -o tmpdir/ear tmpdir/ear.o"
send_log "$cmd\n"
set cmdret [catch "exec $cmd" comp_output]
set comp_output [prune_warnings $comp_output]
if { $cmdret != 0 || $comp_output != ""} then {
send_log "$comp_output\n"
verbose "$comp_output" 3
fail "ear link"
return
}
set cmd "sh $srcdir/../../binutils/embedspu.sh -m32 ear tmpdir/ear tmpdir/embed.o"
send_log "$cmd\n"
set cmdret [catch "exec $cmd" comp_output]
set comp_output [prune_warnings $comp_output]
if { $cmdret != 0 || $comp_output != ""} then {
send_log "$comp_output\n"
verbose "$comp_output" 3
if { [regexp "unknown pseudo-op: `.reloc'" $comp_output] } {
untested "ear embedspu"
return
}
fail "ear embedspu"
return
}
set cmd "$READELF $READELFFLAGS -r --wide tmpdir/embed.o > tmpdir/embed.out"
send_log "$cmd\n"
set cmdret [catch "exec $cmd" comp_output]
set comp_output [prune_warnings $comp_output]
if { $cmdret != 0 || $comp_output != ""} then {
send_log "$comp_output\n"
verbose "$comp_output" 3
fail "ear embed readelf"
return
}
if { [regexp_diff "tmpdir/embed.out" $srcdir/$subdir/embed.rd] } then {
fail "ear embed output"
return
}
pass "ear embed"
}
set rd_test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
foreach sputest $rd_test_list {
verbose [file rootname $sputest]
run_dump_test [file rootname $sputest]
}
if { [isbuild "powerpc*-*-linux*"] } {
embed_test
}