From: Hans-Peter Nilsson Date: Sun, 14 Oct 2001 15:18:11 +0000 (+0000) Subject: * ld-sh/rd-sh.exp: New framework file. X-Git-Tag: cygnus_cvs_20020108_pre~1047 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7739e068a7ea8b3668c2e37702b80aff02f19662;p=platform%2Fupstream%2Fbinutils.git * ld-sh/rd-sh.exp: New framework file. * ld-sh/ld-r-1.d, ld-sh/ldr1.s, ld-sh/ldr2.s, ld-sh/shared-1.d, ld-sh/weak1.s, ld-sh/weak1.d, ld-sh/sub2l.s, ld-sh/sub2l-1.d: New test files. --- diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index b844c99..40ee905 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2001-10-14 Hans-Peter Nilsson + + * ld-sh/rd-sh.exp: New framework file. + * ld-sh/ld-r-1.d, ld-sh/ldr1.s, ld-sh/ldr2.s, ld-sh/shared-1.d, + ld-sh/weak1.s, ld-sh/weak1.d, ld-sh/sub2l.s, ld-sh/sub2l-1.d: New + test files. + 2001-09-29 Hans-Peter Nilsson * ld-linkonce/linkonce.exp: New file. diff --git a/ld/testsuite/ld-sh/ld-r-1.d b/ld/testsuite/ld-sh/ld-r-1.d new file mode 100644 index 0000000..51c55a0 --- /dev/null +++ b/ld/testsuite/ld-sh/ld-r-1.d @@ -0,0 +1,22 @@ +#source: ldr1.s +#source: ldr2.s +#as: -little +#ld: -r -EL +#readelf: -r -x1 -x2 +#target: sh*-*-elf sh*-*-linux* + +# Make sure relocations against global and local symbols with relative and +# absolute 32-bit relocs don't come out wrong after ld -r. Remember that +# SH uses partial_inplace (sort-of REL within RELA) with its confusion +# where and which addends to use and how. A file linked -r must have the +# same layout as a plain assembly file: the addend is in the data only. + +Relocation section '\.rela\.text' at offset 0x1b8 contains 1 entries: + Offset Info Type Symbol's Value Symbol's Name Addend +00000008 00000101 R_SH_DIR32 00000000 \.text \+ 0 + +Hex dump of section '\.text': + 0x00000000 0000000c 00090009 00090009 .* + +Hex dump of section '\.rela\.text': + 0x00000000 00000000 00000101 00000008 .* diff --git a/ld/testsuite/ld-sh/ldr1.s b/ld/testsuite/ld-sh/ldr1.s new file mode 100644 index 0000000..9f49389 --- /dev/null +++ b/ld/testsuite/ld-sh/ldr1.s @@ -0,0 +1,5 @@ + .text + nop + nop + nop + nop diff --git a/ld/testsuite/ld-sh/ldr2.s b/ld/testsuite/ld-sh/ldr2.s new file mode 100644 index 0000000..94e0658 --- /dev/null +++ b/ld/testsuite/ld-sh/ldr2.s @@ -0,0 +1,3 @@ + .text + .long bar +bar: diff --git a/ld/testsuite/ld-sh/rd-sh.exp b/ld/testsuite/ld-sh/rd-sh.exp new file mode 100644 index 0000000..5bc9a0c --- /dev/null +++ b/ld/testsuite/ld-sh/rd-sh.exp @@ -0,0 +1,36 @@ +# Expect script for run_dump_test based ld-sh tests. +# Copyright 2001 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# Written by Hans-Peter Nilsson (hp@bitrange.com) +# + +# This file is kept separate from sh.exp, because having it separate +# simplifies selective testing, like in "make check-ld +# RUNTESTFLAGS=rd-sh.exp=shared-1". It is assumed that sh.exp is a place +# for constructs where the name of the test is harder to extract and +# select than here. + +if ![istarget sh*-*-*] { + return +} + +set rd_test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]] +foreach shtest $rd_test_list { + # We need to strip the ".d", but can leave the dirname. + verbose [file rootname $shtest] + run_dump_test [file rootname $shtest] +} diff --git a/ld/testsuite/ld-sh/shared-1.d b/ld/testsuite/ld-sh/shared-1.d new file mode 100644 index 0000000..af5494b --- /dev/null +++ b/ld/testsuite/ld-sh/shared-1.d @@ -0,0 +1,22 @@ +#source: ldr1.s +#source: ldr2.s +#as: -little +#ld: -shared -EL +#readelf: -r -x4 -x5 +#target: sh*-*-elf sh*-*-linux* + +# Make sure relocations against global and local symbols with relative and +# absolute 32-bit relocs don't come out wrong after ld -r. Remember that +# SH uses partial_inplace (sort-of REL within RELA) with related confusion +# about how, when, where and which addends to use. A DSO must have the +# same value in the addend as in the data, so either can be used. + +Relocation section '\.rela\.text' at offset 0x32c contains 1 entries: + Offset Info Type Symbol's Value Symbol's Name Addend +00000340 000000a5 R_SH_RELATIVE 00000344 + +Hex dump of section '\.rela\.text': + 0x0000032c 00000344 000000a5 00000340 .* + +Hex dump of section '\.text': + 0x00000338 00000344 00090009 00090009 .* diff --git a/ld/testsuite/ld-sh/sub2l-1.d b/ld/testsuite/ld-sh/sub2l-1.d new file mode 100644 index 0000000..87c7ca1 --- /dev/null +++ b/ld/testsuite/ld-sh/sub2l-1.d @@ -0,0 +1,23 @@ +#source: sub2l.s +#as: -little +#ld: -EL -e 0x1000 +#objdump: -st + + +.*/dump: file format elf32-shl + +SYMBOL TABLE: +#... +0+1000 l .text 00000000 f +0+1002 l .text 00000000 f2 +0+1028 l .text 00000000 L +0+1020 g .text 00000000 ff +#... + +Contents of section \.text: + 1000 0b000900 09000900 09000900 09000900 .* + 1010 09000900 09000900 09000900 09000900 .* + 1020 09000900 09000900 0b000900 d8ffffff .* + 1030 daffffff 02100000 28100000 24100000 .* +Contents of section \.data: +#pass diff --git a/ld/testsuite/ld-sh/sub2l.s b/ld/testsuite/ld-sh/sub2l.s new file mode 100644 index 0000000..1a077d0 --- /dev/null +++ b/ld/testsuite/ld-sh/sub2l.s @@ -0,0 +1,26 @@ +! "The subtraction of two symbols". + .little + .text + .align 5 +f: + rts +f2: + nop + + .section .text.foo,"ax",@progbits + .align 5 + .global ff +ff: + nop + nop + nop + nop +L: + rts + nop + .align 2 + .long f-L + .long f2-L + .long f2 + .long L + .long ff+4 diff --git a/ld/testsuite/ld-sh/weak1.d b/ld/testsuite/ld-sh/weak1.d new file mode 100644 index 0000000..fe27278 --- /dev/null +++ b/ld/testsuite/ld-sh/weak1.d @@ -0,0 +1,20 @@ +#source: weak1.s +#as: -little +#ld: -e 0x1000 -EL +#objdump: -ts + +.*: file format elf32-shl + +SYMBOL TABLE: +#... +0+10a0 l .data 0+ d0 +0+1000 l .text 0+ f +0+10a4 w .data 0+ w0 +#... + +Contents of section .text: + 1000 01d11260 0b000900 a4100000 09000900 .* + 1010 09000900 09000900 09000900 09000900 .* +Contents of section .data: + 10a0 01000000 00000000 .* +#pass diff --git a/ld/testsuite/ld-sh/weak1.s b/ld/testsuite/ld-sh/weak1.s new file mode 100644 index 0000000..79192af --- /dev/null +++ b/ld/testsuite/ld-sh/weak1.s @@ -0,0 +1,19 @@ + .data + .align 2 +d0: + .long 1 + .global w0 +w0: + .long 0 + .weak w0 + .text + .align 5 +f: + mov.l .L3,r1 + mov.l @r1,r0 + rts + nop + .align 2 +.L3: + .long w0 +