Patch for PR4587 + move proc run_list_test into gas-defs.exp

This commit is contained in:
Nick Clifton 2007-06-05 17:00:33 +00:00
parent 93e7bd98af
commit dfeb06664a
29 changed files with 106 additions and 302 deletions

View File

@ -1,3 +1,8 @@
2007-06-05 Nick Clifton <nickc@redhat.com>
PR gas/4587
* config/tc-sparc.c (sparc_ip): Terminate tls_ops array.
2007-06-05 Alan Modra <amodra@bigpond.net.au>
* config/tc-spu.c (spu_cons): Use deferred_expression. Handle

View File

@ -1860,7 +1860,8 @@ sparc_ip (str, pinsn)
case '\0': /* End of args. */
if (s[0] == ',' && s[1] == '%')
{
static const struct tls_ops {
static const struct tls_ops
{
/* The name as it appears in assembler. */
char *name;
/* strlen (name), precomputed for speed */
@ -1869,7 +1870,9 @@ sparc_ip (str, pinsn)
int reloc;
/* 1 if call. */
int call;
} tls_ops[] = {
}
tls_ops[] =
{
{ "tgd_add", 7, BFD_RELOC_SPARC_TLS_GD_ADD, 0 },
{ "tgd_call", 8, BFD_RELOC_SPARC_TLS_GD_CALL, 1 },
{ "tldm_add", 8, BFD_RELOC_SPARC_TLS_LDM_ADD, 0 },
@ -1877,7 +1880,8 @@ sparc_ip (str, pinsn)
{ "tldo_add", 8, BFD_RELOC_SPARC_TLS_LDO_ADD, 0 },
{ "tie_ldx", 7, BFD_RELOC_SPARC_TLS_IE_LDX, 0 },
{ "tie_ld", 6, BFD_RELOC_SPARC_TLS_IE_LD, 0 },
{ "tie_add", 7, BFD_RELOC_SPARC_TLS_IE_ADD, 0 }
{ "tie_add", 7, BFD_RELOC_SPARC_TLS_IE_ADD, 0 },
{ NULL, 0, 0, 0 }
};
const struct tls_ops *o;
char *s1;

View File

@ -1,3 +1,36 @@
2007-06-05 Nick Clifton <nickc@redhat.com>
PR gas/4587
* gas/sparc/sparc.exp: Run pr4587 list test.
* gas/sparc/pr4587.s: New test case.
* gas/sparc/pr4587.l: Expected assembler output.
2007-06-05 Nick Clifton <nickc@redhat.com>
* lib/gas-defs.exp (run_list_test): New proc.
* gas/alpha/alpha.exp: Delete proc run_list_test.
* gas/bfin/bfin.exp : Likewise.
* gas/cfi/cfi.exp : Likewise.
* gas/crx/allinsn.exp : Likewise.
* gas/d10v/d10v.exp : Likewise.
* gas/d30v/d30v.exp : Likewise.
* gas/frv/allinsn.exp : Likewise.
* gas/i386/i386.exp : Likewise.
* gas/i860.i860.exp : Likewise.
* gas/ia64/ia64.exp : Likewise.
* gas/lns/lns.exp : Likewise.
* gas/macros/macros.exp : Likewise.
* gas/maxq10/maxq10.exp : Likewise.
* gas/maxq20/maxq20.exp : Likewise.
* gas/mips/mips.exp : Likewise.
* gas/mmix/mmix-list.exp : Likewise.
* gas/mn10300/basic.exp : Likewise.
* gas/msp430/msp430.exp : Likewise.
* gas/pdp11/pdp11.exp : Likewise.
* gas/ppc/ppc.exp : Likewise.
* gas/s390/s390.exp : Likewise.
* gas/elf/elf.exp (proc run_list_test): Rename to run_elf_list_test.
2007-05-29 Jakub Jelinek <jakub@redhat.com>
PR gas/4558

View File

@ -2,19 +2,6 @@
# Some generic alpha tests
#
proc run_list_test { name opts } {
global srcdir subdir
set testname "alpha $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
if { [istarget alpha*-*-*] } then {
set elf [expr [istarget *-*-elf*] \

View File

@ -1,17 +1,5 @@
# Blackfin assembler testsuite
proc run_list_test { name opts } {
global srcdir subdir
set testname "bfin $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
if [istarget bfin*-*-*] {
run_dump_test "arithmetic"
run_dump_test "bit"

View File

@ -1,17 +1,3 @@
# ??? This probably shouldn't be replicated here...
proc run_list_test { name opts } {
global srcdir subdir
set testname "cfi $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
if ![is_elf_format] then {
return
}

View File

@ -2,19 +2,6 @@
# Driver for CRX assembler testsuite
#
proc run_list_test { name opts } {
global srcdir subdir
set testname "CRX $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if {[regexp_diff "dump.out" "${file}.l"] } {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
if ![istarget crx-*-*] {
return
}

View File

@ -1,19 +1,6 @@
#
# Driver for D10V assembler testsuite
#
proc run_list_test { name opts } {
global srcdir subdir
set testname "D10V $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if {[regexp_diff "dump.out" "${file}.l"] } {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
if {[istarget d10v-*-*]} {
run_dump_test "inst"
run_dump_test "address-001"

View File

@ -2,19 +2,6 @@
# D30V assembler tests
#
proc run_list_test { name opts } {
global srcdir subdir
set testname "D30V $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if {[regexp_diff "dump.out" "${file}.l"] } {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
if {[istarget d30v-*-*]} {
run_dump_test "inst"
run_dump_test "align"

View File

@ -2,7 +2,7 @@
# elf tests
#
proc run_list_test { name suffix opts readelf_opts readelf_pipe } {
proc run_elf_list_test { name suffix opts readelf_opts readelf_pipe } {
global READELF
global srcdir subdir
set testname "elf $name list"
@ -89,11 +89,11 @@ if { ([istarget "*-*-*elf*"]
}
run_dump_test "section0"
run_dump_test "section1"
run_list_test "section2" "$target_machine" "-al" "-s" ""
run_elf_list_test "section2" "$target_machine" "-al" "-s" ""
run_dump_test "section3"
run_dump_test "section4"
run_list_test "section5" "" "-al" "-SW" "| grep \" \\\\.test\\\[0-9\\\]\""
run_elf_list_test "section5" "" "-al" "-SW" "| grep \" \\\\.test\\\[0-9\\\]\""
run_dump_test "struct"
run_dump_test "symver"
run_list_test "type" "" "" "-s" "| grep \"1 \\\[FONT\\\]\""
run_elf_list_test "type" "" "" "-s" "| grep \"1 \\\[FONT\\\]\""
}

View File

@ -1,31 +1,19 @@
# FRV assembler testsuite.
proc run_list_test { name opts } {
global srcdir subdir
set testname "$name error test ($opts)"
gas_run $name.s $opts >&dump.out
if {[regexp_diff dump.out $srcdir/$subdir/$name.l]} {
fail $testname
verbose "output is [file_contents dump.out]" 2
return
}
pass $testname
}
if [istarget frv*-*-*] {
run_dump_test "allinsn"
run_dump_test "fdpic"
run_dump_test "reloc1"
run_dump_test "fr405-insn"
run_list_test "fr405-insn" "-mcpu=fr400"
run_list_test "fr405-insn" "-mcpu=fr500"
run_list_test "fr405-insn" "-mcpu=fr400" "fr405-insn -mcpu=fr400"
run_list_test "fr405-insn" "-mcpu=fr500" "fr405-insn -mcpu=fr500"
run_dump_test "fr450-spr"
run_dump_test "fr450-insn"
run_list_test "fr450-insn" "-mcpu=fr405"
run_list_test "fr450-insn" "-mcpu=fr400"
run_list_test "fr450-insn" "-mcpu=fr500"
run_list_test "fr450-insn" "-mcpu=fr405" "fr450-insn -mcpu=fr405"
run_list_test "fr450-insn" "-mcpu=fr400" "fr450-insn -mcpu=fr400"
run_list_test "fr450-insn" "-mcpu=fr500" "fr450-insn -mcpu=fr500"
run_list_test "fr450-media-issue" "-mcpu=fr450"
run_dump_test "fr550-pack1"

View File

@ -1,19 +1,6 @@
#
# i386 tests
#
proc run_list_test { name opts } {
global srcdir subdir
set testname "i386 $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
proc gas_64_check { } {
global NM
global NMFLAGS

View File

@ -1,18 +1,5 @@
# i860 assembler testsuite.
proc run_list_test { name opts } {
global srcdir subdir
set testname "i860 $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
if [istarget i860-*-*] {
run_dump_test "bitwise"
run_dump_test "branch"

View File

@ -1,19 +1,6 @@
#
# ia64 tests
#
proc run_list_test { name opts } {
global srcdir subdir
set testname "ia64 $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
if [istarget "ia64-*"] then {
run_dump_test "regs"

View File

@ -1,17 +1,3 @@
# ??? This probably shouldn't be replicated here...
proc run_list_test { name opts } {
global srcdir subdir
set testname "lns $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
if ![is_elf_format] then {
return
}

View File

@ -1,18 +1,5 @@
# Run some tests of gas macros.
proc run_list_test { name opts } {
global srcdir subdir
set testname "macros $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
if { ![istarget hppa*-*-*] || [istarget *-*-linux*] } {
run_dump_test test1
}
@ -69,6 +56,7 @@ run_dump_test app3
run_dump_test app4
run_list_test badarg ""
case $target_triplet in {
{ *c54x*-*-* } { }
{ *c4x*-*-* } { }

View File

@ -1,19 +1,6 @@
#
# MAXQ10 tests
#
proc run_list_test { name opts } {
global srcdir subdir
set testname "maxq10 $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
proc gas_64_check { } {
global NM
global NMFLAGS

View File

@ -1,19 +1,6 @@
#
# MAXQ20 tests
#
proc run_list_test { name opts } {
global srcdir subdir
set testname "maxq20 $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
proc gas_64_check { } {
global NM
global NMFLAGS

View File

@ -292,27 +292,6 @@ proc run_dump_test_arches { name arch_list } {
}
}
# run_list_test NAME OPTS (optional): TESTNAME
#
# Assemble the file "NAME.d" and compare the assembler standard error
# output against the regular expressions given in the file "NAME.l".
# The assembler is passed the flags given in OPTS. If TESTNAME is
# provided, it will be used as the name of the test.
proc run_list_test { name opts {testname {}} } {
global srcdir subdir
if { [string length $testname] == 0 } then {
set testname "MIPS $name"
}
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
# run_list_test_arch NAME OPTS ARCH
#
# Invoke "run_list_test" for test NAME with options OPTS, with extra

View File

@ -1,4 +1,4 @@
# Copyright (C) 2001 Free Software Foundation, Inc.
# Copyright (C) 2001, 2007 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -18,24 +18,6 @@ if { ! [istarget "mmix-*"] } {
return
}
proc run_list_test { name opts } {
global srcdir subdir runtests
if ![runtest_file_p $runtests $name] then {
return
}
set testname "mmix list $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
proc run_mmix_list_tests { } {
global srcdir subdir runtests
foreach test_name [lsort [find ${srcdir}/${subdir} *.l]] {

View File

@ -1,4 +1,4 @@
# Copyright (C) 1996, 2000, 2002, 2004 Free Software Foundation, Inc.
# Copyright (C) 1996, 2000, 2002, 2004, 2007 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -1768,20 +1768,6 @@ proc do_am33_8 {} {
if [expr $x==67] then { pass $testname } else { fail $testname }
}
proc run_list_test { name opts } {
global srcdir subdir
set testname "mn10300 $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
if [istarget mn10300*-*-*] then {
# Test the basic instruction parser.
do_add

View File

@ -1,19 +1,6 @@
#
# msp430 tests
#
proc run_list_test { name opts } {
global srcdir subdir
set testname "msp430 $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
exit
return
}
pass $testname
}
if [expr [istarget "msp430-*-*"]] then {
run_dump_test "opcode"

View File

@ -1,19 +1,6 @@
#
# pdp11/pdp11 tests
#
proc run_list_test { name opts } {
global srcdir subdir
set testname "pdp11 $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
exit
return
}
pass $testname
}
if [expr [istarget "pdp11-*-*"]] then {

View File

@ -2,19 +2,6 @@
# Some PowerPC tests
#
proc run_list_test { name opts } {
global srcdir subdir
set testname "ppc $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
# These tests are currently ELF specific, only because nobody has
# converted them to look for XCOFF relocations.

View File

@ -1,19 +1,6 @@
#
# s390/s390x tests
#
proc run_list_test { name opts } {
global srcdir subdir
set testname "s390 $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
exit
return
}
pass $testname
}
if [expr [istarget "s390-*-*"] || [istarget "s390x-*-*"]] then {

View File

@ -0,0 +1,2 @@
.*pr4587.s: Assembler messages:
.*pr4587.s:18: Error: Illegal operands

View File

@ -0,0 +1,22 @@
.section .data
.align 4
zero: .single 0.0
.section .text
.align 4
.global main
main:
save %sp, -96, %sp
! Zero-out the first FP register
set zero, %l0
ld [%l0], %f0
! Compare it to itself
! The third reg (%f0) will cause a segfault in as
! fcmps only takes two regs... this should be illegal operand error
fcmps %f0, %f0, %f0
! Return 0
ret
restore %g0, %g0, %o0

View File

@ -53,6 +53,8 @@ if [istarget sparc*-*-*] {
run_dump_test "v9branch3"
run_dump_test "v9branch4"
run_dump_test "v9branch5"
run_list_test "pr4587" ""
}
if [istarget sparc-*-vxworks*] {

View File

@ -1,5 +1,5 @@
# Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
# 2004, 2005 Free Software Foundation, Inc.
# 2004, 2005, 2007 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -888,3 +888,25 @@ if ![string length [info proc prune_warnings]] {
return $text
}
}
# run_list_test NAME OPTS (optional): TESTNAME
#
# Assemble the file "NAME.d" with command line options OPTS and
# compare the assembler standard error output against thee regular
# expressions given in the file "NAME.l". If TESTNAME is provided,
# it will be used as the name of the test.
proc run_list_test { name opts {testname {}} } {
global srcdir subdir
if { [string length $testname] == 0 } then {
set testname "[file tail $subdir] $name"
}
set file $srcdir/$subdir/$name
gas_run ${name}.s $opts ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}