X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fcond.c;h=4b6326f463c7a597c2da90cd08e3fe847433f0da;hb=de88229846525b2afb4a8b85b7f60f3246d3e90d;hp=8cd98c2a2d291128a65332494ff5bbf2813de23e;hpb=26aca5f60e2dde898fb5e6d71859778f0b786f09;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/cond.c b/gas/cond.c index 8cd98c2a2d..4b6326f463 100644 --- a/gas/cond.c +++ b/gas/cond.c @@ -1,12 +1,12 @@ /* cond.c - conditional assembly pseudo-ops, and .include Copyright 1990, 1991, 1992, 1993, 1995, 1997, 1998, 2000, 2001, 2002, - 2003 Free Software Foundation, Inc. + 2003, 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. GAS 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, or (at your option) + the Free Software Foundation; either version 3, or (at your option) any later version. GAS is distributed in the hope that it will be useful, @@ -20,6 +20,7 @@ 02110-1301, USA. */ #include "as.h" +#include "sb.h" #include "macro.h" #include "obstack.h" @@ -102,7 +103,7 @@ s_ifdef (int test_defined) considered to be undefined. */ is_defined = symbolP != NULL - && S_IS_DEFINED (symbolP) + && (S_IS_DEFINED (symbolP) || symbol_equated_p (symbolP)) && S_GET_SEGMENT (symbolP) != reg_section; cframe.ignoring = ! (test_defined ^ is_defined); @@ -144,7 +145,7 @@ s_if (int arg) } else { - expression (&operand); + expression_and_evaluate (&operand); if (operand.X_op != O_constant) as_bad (_("non-constant expression in \".if\" statement")); } @@ -310,10 +311,10 @@ s_elseif (int arg) as_bad (_("\".elseif\" after \".else\"")); as_bad_where (current_cframe->else_file_line.file, current_cframe->else_file_line.line, - _("here is the previous \"else\"")); + _("here is the previous \".else\"")); as_bad_where (current_cframe->if_file_line.file, current_cframe->if_file_line.line, - _("here is the previous \"if\"")); + _("here is the previous \".if\"")); } else { @@ -340,7 +341,7 @@ s_elseif (int arg) /* Leading whitespace is part of operand. */ SKIP_WHITESPACE (); - expression (&operand); + expression_and_evaluate (&operand); if (operand.X_op != O_constant) as_bad (_("non-constant expression in \".elseif\" statement")); @@ -413,13 +414,13 @@ s_else (int arg ATTRIBUTE_UNUSED) } else if (current_cframe->else_seen) { - as_bad (_("duplicate \"else\"")); + as_bad (_("duplicate \".else\"")); as_bad_where (current_cframe->else_file_line.file, current_cframe->else_file_line.line, - _("here is the previous \"else\"")); + _("here is the previous \".else\"")); as_bad_where (current_cframe->if_file_line.file, current_cframe->if_file_line.line, - _("here is the previous \"if\"")); + _("here is the previous \".if\"")); } else {