From 8545d1a9dd556efc7950409426bd70d439fa43d8 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Thu, 24 May 2007 09:24:09 +0000 Subject: * ldlex.l: ASSERT is recognized in SCRIPT env. NAMES cannot contain commas in EXP env. * ldgram.y (extern_name_list): Push to EXP env, move body to ... (extern_name_list_body): ... here. (script_file, ifile_list): Reformat. (statement): Add ASSERT. testsuite: * ld-scripts/assert.t: Add additional cases. * ld-scripts/extern.t, ld-scripts/extern.s, ld-scripts/extern.exp: New. --- ld/testsuite/ChangeLog | 6 ++++ ld/testsuite/ld-scripts/assert.t | 6 +++- ld/testsuite/ld-scripts/extern.exp | 68 ++++++++++++++++++++++++++++++++++++++ ld/testsuite/ld-scripts/extern.s | 1 + ld/testsuite/ld-scripts/extern.t | 14 ++++++++ 5 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 ld/testsuite/ld-scripts/extern.exp create mode 100644 ld/testsuite/ld-scripts/extern.s create mode 100644 ld/testsuite/ld-scripts/extern.t (limited to 'ld/testsuite') diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 0eba593..b5f29f7 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2007-05-24 Nathan Sidwell + + * ld-scripts/assert.t: Add additional cases. + * ld-scripts/extern.t, ld-scripts/extern.s, + ld-scripts/extern.exp: New. + 2007-05-22 Paul Brook * ld-arm/arm-pic-veneer.d: Update expected output. diff --git a/ld/testsuite/ld-scripts/assert.t b/ld/testsuite/ld-scripts/assert.t index 62aee34..c3caebd 100644 --- a/ld/testsuite/ld-scripts/assert.t +++ b/ld/testsuite/ld-scripts/assert.t @@ -1,5 +1,9 @@ SECTIONS { - .empty : {} + .empty : { + here = !.; + ASSERT (!., "dot is not zero"); + ASSERT (here, "here is zero"); + } ASSERT (!SIZEOF(.empty), "Empty is not empty") } diff --git a/ld/testsuite/ld-scripts/extern.exp b/ld/testsuite/ld-scripts/extern.exp new file mode 100644 index 0000000..a613a75 --- /dev/null +++ b/ld/testsuite/ld-scripts/extern.exp @@ -0,0 +1,68 @@ +# Test EXTERN in a linker script. +# By Nathan Sidwell, CodeSourcery LLC +# Copyright 2007 +# 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + +set testname "EXTERN" + +if ![ld_assemble $as $srcdir/$subdir/extern.s tmpdir/extern.o] { + unresolved $testname + return +} + +if ![ld_simple_link $ld tmpdir/extern "-T $srcdir/$subdir/extern.t tmpdir/extern.o"] { + fail $testname +} + +if ![ld_nm $nm "" tmpdir/extern] { + unresolved $testname + return +} + +if {![info exists nm_output(sym1)] || $nm_output(sym1) != 1} { + send_log "sym1 wrong\n" + verbose "sym1 wrong" + fail $testname + return +} + +if {![info exists nm_output(sym2)] || $nm_output(sym2) != 2} { + send_log "sym1 wrong\n" + verbose "sym1 wrong" + fail $testname + return +} +if {![info exists nm_output(sym3)] || $nm_output(sym3) != 3} { + send_log "sym1 wrong\n" + verbose "sym1 wrong" + fail $testname + return +} +if {![info exists nm_output(sym4)] || $nm_output(sym4) != 4} { + send_log "sym1 wrong\n" + verbose "sym1 wrong" + fail $testname + return +} +if {![info exists nm_output(sym5)] || $nm_output(sym5) != 5} { + send_log "sym1 wrong\n" + verbose "sym1 wrong" + fail $testname + return +} + +pass $testname diff --git a/ld/testsuite/ld-scripts/extern.s b/ld/testsuite/ld-scripts/extern.s new file mode 100644 index 0000000..09cc1e1 --- /dev/null +++ b/ld/testsuite/ld-scripts/extern.s @@ -0,0 +1 @@ + .text diff --git a/ld/testsuite/ld-scripts/extern.t b/ld/testsuite/ld-scripts/extern.t new file mode 100644 index 0000000..b2a012a --- /dev/null +++ b/ld/testsuite/ld-scripts/extern.t @@ -0,0 +1,14 @@ + +EXTERN(sym1) +EXTERN(sym2, sym3) +EXTERN(sym4 sym5) + +PROVIDE(sym1 = 1); +PROVIDE(sym2 = 2); +PROVIDE(sym3 = 3); +PROVIDE(sym4 = 4); +PROVIDE(sym5 = 5); + +SECTIONS +{ +} -- cgit v1.1