diff options
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 5 | ||||
-rw-r--r-- | ld/ldgram.y | 3 | ||||
-rw-r--r-- | ld/ldlang.c | 4 | ||||
-rw-r--r-- | ld/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/assert.exp | 31 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/assert.s | 1 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/assert.t | 5 |
7 files changed, 53 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 358b767..fc4b1be 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2004-02-18 Nathan Sidwell <nathan@codesourcery.com> + + * ldgram.y (statement_anywhere): Add assert rule. + * ldlang.c (exp_init_os): Add assert case. + 2004-02-14 Andrew Cagney <cagney@redhat.com> * ldmain.c (remove_output): Call bfd_cache_close. diff --git a/ld/ldgram.y b/ld/ldgram.y index 927114a..e885f7d 100644 --- a/ld/ldgram.y +++ b/ld/ldgram.y @@ -386,6 +386,9 @@ statement_anywhere: ENTRY '(' NAME ')' { lang_add_entry ($3, FALSE); } | assignment end + | ASSERT_K {ldlex_expression ();} '(' exp ',' NAME ')' + { ldlex_popstate (); + lang_add_assignment (exp_assert ($4, $6)); } ; /* The '*' and '?' cases are there because the lexer returns them as diff --git a/ld/ldlang.c b/ld/ldlang.c index 108ad58..487ee02 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -775,6 +775,10 @@ exp_init_os (etree_type *exp) exp_init_os (exp->trinary.rhs); break; + case etree_assert: + exp_init_os (exp->assert_s.child); + break; + case etree_unary: exp_init_os (exp->unary.child); break; diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 3b59938..282ee0c 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-02-18 Nathan Sidwell <nathan@codesourcery.com> + + * ld-scripts/assert.{s,t,exp}: New. + 2004-02-17 Richard Sandiford <rsandifo@redhat.com> * ld-mips/elf/elf-rel-xgot-{n32,n64-linux}.d: Update after 2004-02-02 diff --git a/ld/testsuite/ld-scripts/assert.exp b/ld/testsuite/ld-scripts/assert.exp new file mode 100644 index 0000000..5ba3a51 --- /dev/null +++ b/ld/testsuite/ld-scripts/assert.exp @@ -0,0 +1,31 @@ +# Test ASSERT in a linker script. +# By Nathan Sidwell, CodeSourcery LLC +# Copyright 2004 +# 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. + +set testname "ASSERT" + +if ![ld_assemble $as $srcdir/$subdir/assert.s tmpdir/assert.o] { + unresolved $testname + return +} + +if ![ld_simple_link $ld tmpdir/assert "-T $srcdir/$subdir/assert.t tmpdir/assert.o"] { + fail $testname +} else { + pass $testname +} diff --git a/ld/testsuite/ld-scripts/assert.s b/ld/testsuite/ld-scripts/assert.s new file mode 100644 index 0000000..0517ffe --- /dev/null +++ b/ld/testsuite/ld-scripts/assert.s @@ -0,0 +1 @@ +#nothing here diff --git a/ld/testsuite/ld-scripts/assert.t b/ld/testsuite/ld-scripts/assert.t new file mode 100644 index 0000000..62aee34 --- /dev/null +++ b/ld/testsuite/ld-scripts/assert.t @@ -0,0 +1,5 @@ +SECTIONS +{ + .empty : {} + ASSERT (!SIZEOF(.empty), "Empty is not empty") +} |