-diff -Nur binutils-2.13.90.0.18.orig/gas/Makefile.am binutils-2.13.90.0.18/gas/Makefile.am
---- binutils-2.13.90.0.18.orig/gas/Makefile.am Sun Feb 2 03:21:17 2003
-+++ binutils-2.13.90.0.18/gas/Makefile.am Sun Feb 2 12:25:10 2003
-@@ -197,7 +197,7 @@
+--- binutils-2.17.50.0.13/gas/Makefile.am.orig 2007-03-16 16:48:29.000000000 +0100
++++ binutils-2.17.50.0.13/gas/Makefile.am 2007-03-16 20:26:20.200480821 +0100
+@@ -199,7 +199,7 @@
symbols.c \
write.c
HFILES = \
as.h \
-@@ -452,7 +452,8 @@
+@@ -455,7 +455,8 @@
# Note: GASP is now deprecated and has been removed. It is still
# available in the CVS archive or older binutils releases if it is needed.
noinst_SCRIPTS = $(GDBINIT)
EXTRA_SCRIPTS = .gdbinit
-@@ -515,6 +516,10 @@
+@@ -517,6 +518,10 @@
as.h asintl.h bignum.h bit_fix.h config.h emul.h expr.h flonum.h \
frags.h hash.h listing.h obj.h read.h symbols.h tc.h write.h
+gasp_new_LDADD = ../libiberty/libiberty.a $(INTLLIBS)
+gasp_new_DEPENDENCIES = ../libiberty/libiberty.a $(INTLDEPS)
+
- EXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \
- echo $${rootme}/../expect/expect ; \
- else echo expect ; fi`
-@@ -2416,6 +2421,8 @@
- $(INCDIR)/obstack.h subsegs.h struc-symbol.h
- write.o: write.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \
- output-file.h dwarf2dbg.h
+ EXPECT = expect
+ RUNTEST = runtest
+ RUNTESTFLAGS=
+@@ -2146,6 +2151,8 @@
+ subsegs.h struc-symbol.h
+ write.o: write.c subsegs.h $(INCDIR)/obstack.h output-file.h \
+ dwarf2dbg.h $(BFDDIR)/libbfd.h $(INCDIR)/hashtab.h
+gasp.o: gasp.c $(INCDIR)/getopt.h $(INCDIR)/safe-ctype.h \
-+ sb.h macro.h $(INCDIR)/xregex.h $(INCDIR)/xregex2.h
- itbl-ops.o: itbl-ops.c itbl-ops.h $(INCDIR)/symcat.h
- e-crisaout.o: $(srcdir)/config/e-crisaout.c $(INCDIR)/symcat.h \
- emul-target.h
-diff -Nur binutils-2.13.90.0.18.orig/gas/Makefile.in binutils-2.13.90.0.18/gas/Makefile.in
---- binutils-2.13.90.0.18.orig/gas/Makefile.in Sun Feb 2 03:21:17 2003
-+++ binutils-2.13.90.0.18/gas/Makefile.in Sun Feb 2 12:29:17 2003
-@@ -313,7 +313,7 @@
- write.c
-
-
--CFILES = $(GAS_CFILES) itbl-ops.c
-+CFILES = $(GAS_CFILES) gasp.c itbl-ops.c
-
- HFILES = \
- as.h \
-@@ -575,7 +575,8 @@
-
- # Note: GASP is now deprecated and has been removed. It is still
- # available in the CVS archive or older binutils releases if it is needed.
--noinst_PROGRAMS = as-new
-+# ...and it is needed for few packages in distribution.
-+noinst_PROGRAMS = as-new gasp-new
- noinst_SCRIPTS = $(GDBINIT)
- EXTRA_SCRIPTS = .gdbinit
-
-@@ -624,6 +625,10 @@
- $(extra_objects) $(GASLIBS) $(INTLDEPS)
-
-
-+gasp_new_SOURCES = gasp.c macro.c sb.c hash.c
-+gasp_new_LDADD = ../libiberty/libiberty.a $(INTLLIBS)
-+gasp_new_DEPENDENCIES = ../libiberty/libiberty.a $(INTLDEPS)
-+
- EXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \
- echo $${rootme}/../expect/expect ; \
- else echo expect ; fi`
-@@ -2431,7 +2436,7 @@
- mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
- CONFIG_HEADER = config.h
- CONFIG_CLEAN_FILES = ${GDBINIT}
--noinst_PROGRAMS = as-new$(EXEEXT)
-+noinst_PROGRAMS = as-new$(EXEEXT) gasp-new$(EXEEXT)
- PROGRAMS = $(noinst_PROGRAMS)
-
-
-@@ -2439,6 +2444,9 @@
- CPPFLAGS = @CPPFLAGS@
- LDFLAGS = @LDFLAGS@
- LIBS = @LIBS@
-+gasp_new_OBJECTS = gasp.$(OBJEXT) macro.$(OBJEXT) sb.$(OBJEXT) \
-+hash.$(OBJEXT)
-+gasp_new_LDFLAGS =
- itbl_test_OBJECTS = itbl-parse.$(OBJEXT) itbl-lex.$(OBJEXT)
- itbl_test_DEPENDENCIES = itbl-tops.o itbl-test.o \
- ../libiberty/libiberty.a
-@@ -2472,8 +2480,8 @@
-
- TAR = tar
- GZIP_ENV = --best
--SOURCES = $(itbl_test_SOURCES) $(as_new_SOURCES) $(EXTRA_as_new_SOURCES)
--OBJECTS = $(itbl_test_OBJECTS) $(as_new_OBJECTS)
-+SOURCES = $(gasp_new_SOURCES) $(itbl_test_SOURCES) $(as_new_SOURCES) $(EXTRA_as_new_SOURCES)
-+OBJECTS = $(gasp_new_OBJECTS) $(itbl_test_OBJECTS) $(as_new_OBJECTS)
-
- all: all-redirect
- .SUFFIXES:
-@@ -2576,6 +2584,10 @@
-
- maintainer-clean-libtool:
-
-+gasp-new$(EXEEXT): $(gasp_new_OBJECTS) $(gasp_new_DEPENDENCIES)
-+ @rm -f gasp-new$(EXEEXT)
-+ $(LINK) $(gasp_new_LDFLAGS) $(gasp_new_OBJECTS) $(gasp_new_LDADD) $(LIBS)
-+
- itbl-test$(EXEEXT): $(itbl_test_OBJECTS) $(itbl_test_DEPENDENCIES)
- @rm -f itbl-test$(EXEEXT)
- $(LINK) $(itbl_test_LDFLAGS) $(itbl_test_OBJECTS) $(itbl_test_LDADD) $(LIBS)
-@@ -3326,6 +3338,8 @@
- $(INCDIR)/obstack.h subsegs.h struc-symbol.h
- write.o: write.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \
- output-file.h dwarf2dbg.h
-+gasp.o: gasp.c $(INCDIR)/getopt.h $(INCDIR)/safe-ctype.h \
-+ sb.h macro.h $(INCDIR)/xregex.h $(INCDIR)/xregex2.h
- itbl-ops.o: itbl-ops.c itbl-ops.h $(INCDIR)/symcat.h
- e-crisaout.o: $(srcdir)/config/e-crisaout.c $(INCDIR)/symcat.h \
- emul-target.h
-diff -Nur binutils-2.13.90.0.18.orig/gas/doc/Makefile.am binutils-2.13.90.0.18/gas/doc/Makefile.am
---- binutils-2.13.90.0.18.orig/gas/doc/Makefile.am Sun Feb 2 03:21:17 2003
-+++ binutils-2.13.90.0.18/gas/doc/Makefile.am Sun Feb 2 12:35:43 2003
++ sb.h macro.h $(INCDIR)/xregex.h $(INCDIR)/xregex2.h
+ itbl-ops.o: itbl-ops.c itbl-ops.h
+ e-crisaout.o: $(srcdir)/config/e-crisaout.c emul-target.h
+ e-criself.o: $(srcdir)/config/e-criself.c emul-target.h
+--- binutils-2.17.50.0.13/gas/doc/Makefile.am.orig 2007-03-16 16:48:29.000000000 +0100
++++ binutils-2.17.50.0.13/gas/doc/Makefile.am 2007-03-16 20:27:05.810679469 +0100
@@ -15,7 +15,7 @@
man_MANS = as.1
-info_TEXINFOS = as.texinfo
-+info_TEXINFOS = as.texinfo gasp.texi
-
- asconfig.texi: $(CONFIG).texi
- rm -f asconfig.texi
-diff -Nur binutils-2.13.90.0.18.orig/gas/doc/Makefile.in binutils-2.13.90.0.18/gas/doc/Makefile.in
---- binutils-2.13.90.0.18.orig/gas/doc/Makefile.in Sun Feb 2 03:21:17 2003
-+++ binutils-2.13.90.0.18/gas/doc/Makefile.in Sun Feb 2 12:36:47 2003
-@@ -133,7 +133,7 @@
++info_TEXINFOS = as.texinfo gasp.texinfo
+ as_TEXINFOS = asconfig.texi $(CPU_DOCS)
- man_MANS = as.1
-
--info_TEXINFOS = as.texinfo
-+info_TEXINFOS = as.texinfo gasp.texi
-
- CPU_DOCS = \
- c-a29k.texi \
-@@ -182,9 +182,9 @@
- CONFIG_CLEAN_FILES =
- TEXI2DVI = `if test -f $(top_srcdir)/../texinfo/util/texi2dvi; then echo $(top_srcdir)/../texinfo/util/texi2dvi; else echo texi2dvi; fi`
- TEXINFO_TEX = $(top_srcdir)/../texinfo/texinfo.tex
--INFO_DEPS = as.info
-+INFO_DEPS = as.info gasp.info
- DVIS = as.dvi
--TEXINFOS = as.texinfo
-+TEXINFOS = as.texinfo gasp.texi
- man1dir = $(mandir)/man1
- MANS = $(man_MANS)
-
-diff -Nur binutils-2.13.90.0.18.orig/gas/doc/gasp.texi binutils-2.13.90.0.18/gas/doc/gasp.texi
---- binutils-2.13.90.0.18.orig/gas/doc/gasp.texi Thu Jan 1 01:00:00 1970
-+++ binutils-2.13.90.0.18/gas/doc/gasp.texi Wed Oct 30 05:09:13 2002
+ AM_MAKEINFOFLAGS = -I "$(srcdir)" -I "$(top_srcdir)/../libiberty" \
+--- binutils-2.16.91.0.2.org/gas/doc/gasp.texinfo 1970-01-01 00:00:00.000000000 +0000
++++ binutils-2.16.91.0.2/gas/doc/gasp.texinfo 2005-07-21 18:31:04.000000000 +0000
@@ -0,0 +1,1456 @@
+\input texinfo @c -*- Texinfo -*-
+@setfilename gasp.info
+
+@contents
+@bye
-diff -Nur binutils-2.13.90.0.18.orig/gas/gasp.c binutils-2.13.90.0.18/gas/gasp.c
---- binutils-2.13.90.0.18.orig/gas/gasp.c Thu Jan 1 01:00:00 1970
-+++ binutils-2.13.90.0.18/gas/gasp.c Sun May 26 18:57:12 2002
-@@ -0,0 +1,3761 @@
+--- binutils-2.17.50.0.2/gas/gasp.c.orig 1970-01-01 01:00:00.000000000 +0100
++++ binutils-2.17.50.0.2/gas/gasp.c 2006-06-07 11:22:13.774440000 +0200
+@@ -0,0 +1,3999 @@
+/* gasp.c - Gnu assembler preprocessor main program.
+ Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+ Free Software Foundation, Inc.
+*/
+
+#include "config.h"
-+#include "bin-bugs.h"
++#include "bfdver.h"
+
+#include <assert.h>
+#include <stdio.h>
+static void show_usage PARAMS ((FILE *, int));
+static void show_help PARAMS ((void));
+
++/* --- functions recently removed from sb.c --- */
++
++/* put a null at the end of the sb at in and return the start of the
++ * string, so that it can be used as an arg to printf %s. */
++
++static char *
++sb_name (sb *in)
++{
++ /* stick a null on the end of the string */
++ sb_add_char (in, 0);
++ return in->ptr;
++}
++
++/* print the sb at ptr to the output file */
++
++static void
++sb_print (FILE *outfile, sb *ptr)
++{
++ int i;
++ int nc = 0;
++
++ for (i = 0; i < ptr->len; i++)
++ {
++ if (nc)
++ {
++ fprintf (outfile, ",");
++ }
++ fprintf (outfile, "%d", ptr->ptr[i]);
++ nc = 1;
++ }
++}
++
++/* print the sb at ptr to the output file */
++
++static void
++sb_print_at (FILE *outfile, int idx, sb *ptr)
++{
++ int i;
++ for (i = idx; i < ptr->len; i++)
++ putc (ptr->ptr[i], outfile);
++}
++
+#define FATAL(x) \
+ do \
+ { \
+ else
+ exitcode = 0;
+
-+ if (stats)
-+ {
-+ int i;
-+ for (i = 0; i < sb_max_power_two; i++)
-+ {
-+ fprintf (stderr, "strings size %8d : %d\n",
-+ 1 << i, string_count[i]);
-+ }
-+ }
+ exit (exitcode);
+}
+
+ const char *err;
+ int line = linecount ();
+
-+ err = define_macro (idx, in, &label, get_line, (const char **) NULL);
++ err = define_macro (idx, in, &label, get_line, "[gasp]", line, (const char **) NULL);
+ if (err != NULL)
+ ERROR ((stderr, _("macro at line %d: %s\n"), line - 1, err));
+}
+ fprintf (stderr, _("\nPlease report this bug.\n"));
+ exit (1);
+}
-diff -Nur binutils-2.13.90.0.18.orig/gas/macro.c binutils-2.13.90.0.18/gas/macro.c
---- binutils-2.13.90.0.18.orig/gas/macro.c Sun Feb 2 03:21:18 2003
-+++ binutils-2.13.90.0.18/gas/macro.c Sun Feb 2 15:19:38 2003
-@@ -75,8 +75,8 @@
- static int sub_actual
- PARAMS ((int, sb *, sb *, struct hash_control *, int, sb *, int));
++
++/* duplicated from as internals */
++
++static void
++identify (char *file)
++{
++ static int identified;
++
++ if (identified)
++ return;
++ identified++;
++
++ if (file)
++ fprintf (stderr, "%s: ", file);
++ fprintf (stderr, _("Assembler messages:\n"));
++}
++
++/* The number of warnings issued. */
++static int warning_count;
++
++/* The common portion of as_warn and as_warn_where. */
++
++static void
++as_warn_internal (char *file, unsigned int line, char *buffer)
++{
++ ++warning_count;
++
++ identify (file);
++ if (file)
++ fprintf (stderr, "%s:%u: ", file, line);
++ fprintf (stderr, _("Warning: "));
++ fputs (buffer, stderr);
++ (void) putc ('\n', stderr);
++}
++
++/* Send to stderr a string as a warning, and locate warning
++ in input file(s).
++ Please only use this for when we have some recovery action.
++ Please explain in string (which may have '\n's) what recovery was
++ done. */
++
++void
++as_warn (const char *format, ...)
++{
++ va_list args;
++ char buffer[2000];
++
++ if (1 /*!flag_no_warnings*/)
++ {
++ va_start (args, format);
++ vsprintf (buffer, format, args);
++ va_end (args);
++ as_warn_internal ((char *) NULL, 0, buffer);
++ }
++}
++
++/* Like as_bad but the file name and line number are passed in.
++ Unfortunately, we have to repeat the function in order to handle
++ the varargs correctly and portably. */
++
++void
++as_warn_where (char *file, unsigned int line, const char *format, ...)
++{
++ va_list args;
++ char buffer[2000];
++
++ if (1 /*!flag_no_warnings*/)
++ {
++ va_start (args, format);
++ vsprintf (buffer, format, args);
++ va_end (args);
++ as_warn_internal (file, line, buffer);
++ }
++}
++
++/* Nonzero if we've hit a 'bad error', and should not write an obj file,
++ and exit with a nonzero error code. */
++
++static int error_count;
++
++/* The common portion of as_bad and as_bad_where. */
++
++static void
++as_bad_internal (char *file, unsigned int line, char *buffer)
++{
++ ++error_count;
++
++ identify (file);
++ if (file)
++ fprintf (stderr, "%s:%u: ", file, line);
++ fprintf (stderr, _("Error: "));
++ fputs (buffer, stderr);
++ (void) putc ('\n', stderr);
++}
++
++/* Send to stderr a string as a warning, and locate warning in input
++ file(s). Please us when there is no recovery, but we want to
++ continue processing but not produce an object file.
++ Please explain in string (which may have '\n's) what recovery was
++ done. */
++
++void
++as_bad (const char *format, ...)
++{
++ va_list args;
++ char buffer[2000];
++
++ va_start (args, format);
++ vsprintf (buffer, format, args);
++ va_end (args);
++
++ as_bad_internal ((char *) NULL, 0, buffer);
++}
++
++/* Like as_bad but the file name and line number are passed in.
++ Unfortunately, we have to repeat the function in order to handle
++ the varargs correctly and portably. */
++
++void
++as_bad_where (char *file, unsigned int line, const char *format, ...)
++{
++ va_list args;
++ char buffer[2000];
++
++ va_start (args, format);
++ vsprintf (buffer, format, args);
++ va_end (args);
++
++ as_bad_internal (file, line, buffer);
++}
++
++/* Indicate assertion failure.
++ Arguments: Filename, line number, optional function name. */
++
++void
++as_assert (const char *file, int line, const char *fn)
++{
++ fprintf (stderr, _("Internal error!\n"));
++ if (fn)
++ fprintf (stderr, _("Assertion failure in %s at %s line %d.\n"),
++ fn, file, line);
++ else
++ fprintf (stderr, _("Assertion failure at %s line %d.\n"), file, line);
++ fprintf (stderr, _("Please report this bug.\n"));
++ xexit (EXIT_FAILURE);
++}
++
++#ifndef LEX_AT
++/* The m88k unfortunately uses @ as a label beginner. */
++#define LEX_AT 0
++#endif
++
++#ifndef LEX_BR
++/* The RS/6000 assembler uses {,},[,] as parts of symbol names. */
++#define LEX_BR 0
++#endif
++
++#ifndef LEX_PCT
++/* The Delta 68k assembler permits % inside label names. */
++#define LEX_PCT 0
++#endif
++
++#ifndef LEX_QM
++/* The PowerPC Windows NT assemblers permits ? inside label names. */
++#define LEX_QM 0
++#endif
++
++#ifndef LEX_HASH
++/* The IA-64 assembler uses # as a suffix designating a symbol. We include
++ it in the symbol and strip it out in tc_canonicalize_symbol_name. */
++#define LEX_HASH 0
++#endif
++
++#ifndef LEX_DOLLAR
++/* The a29k assembler does not permits labels to start with $. */
++#define LEX_DOLLAR 3
++#endif
++
++#ifndef LEX_TILDE
++/* The Delta 68k assembler permits ~ at start of label names. */
++#define LEX_TILDE 0
++#endif
++
++/* Used by is_... macros. our ctype[]. */
++char lex_type[256] = {
++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* @ABCDEFGHIJKLMNO */
++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ[\]^_ */
++ 0, 0, 0, LEX_HASH, LEX_DOLLAR, LEX_PCT, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, /* _!"#$%&'()*+,-./ */
++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, LEX_QM, /* 0123456789:;<=>? */
++ LEX_AT, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* @ABCDEFGHIJKLMNO */
++ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, LEX_BR, 0, LEX_BR, 0, 3, /* PQRSTUVWXYZ[\]^_ */
++ 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* `abcdefghijklmno */
++ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, LEX_BR, 0, LEX_BR, LEX_TILDE, 0, /* pqrstuvwxyz{|}~. */
++ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
++ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
++ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
++ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
++ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
++ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
++ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
++ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
++};
++
++/* just a stub to satisfy unused function in sb.o */
++int do_scrub_chars (int (*get) (char*, int), char *tostart, int tolen) {}
+--- binutils-2.16.91.0.2.org/gas/macro.c 2005-05-10 22:46:44.000000000 +0000
++++ binutils-2.16.91.0.2/gas/macro.c 2005-07-21 18:31:04.000000000 +0000
+@@ -41,8 +41,8 @@
+ static int get_apost_token (int, sb *, sb *, int);
+ static int sub_actual (int, sb *, sb *, struct hash_control *, int, sb *, int);
static const char *macro_expand_body
-- PARAMS ((sb *, sb *, formal_entry *, struct hash_control *, int));
--static const char *macro_expand PARAMS ((int, sb *, macro_entry *, sb *));
-+ PARAMS ((sb *, sb *, formal_entry *, struct hash_control *, int,int ));
-+static const char *macro_expand PARAMS ((int, sb *, macro_entry *, sb *, int));
+- (sb *, sb *, formal_entry *, struct hash_control *, const macro_entry *);
+-static const char *macro_expand (int, sb *, macro_entry *, sb *);
++ (sb *, sb *, formal_entry *, struct hash_control *, const macro_entry *, int);
++static const char *macro_expand (int, sb *, macro_entry *, sb *, int);
+ static void free_macro(macro_entry *);
#define ISWHITE(x) ((x) == ' ' || (x) == '\t')
-
-@@ -653,11 +653,12 @@
- /* Expand the body of a macro. */
+@@ -754,7 +754,7 @@
static const char *
--macro_expand_body (in, out, formals, formal_hash, locals)
-+macro_expand_body (in, out, formals, formal_hash, comment_char, locals)
- sb *in;
- sb *out;
- formal_entry *formals;
- struct hash_control *formal_hash;
-+ int comment_char;
- int locals;
+ macro_expand_body (sb *in, sb *out, formal_entry *formals,
+- struct hash_control *formal_hash, const macro_entry *macro)
++ struct hash_control *formal_hash, const macro_entry *macro, int comment_char)
{
sb t;
-@@ -688,7 +689,14 @@
+ int src = 0, inquote = 0, macro_line = 0;
+@@ -786,7 +786,14 @@
else if (in->ptr[src] == '\\')
{
src++;
-- if (in->ptr[src] == '(')
+- if (src < in->len && in->ptr[src] == '(')
+ if (in->ptr[src] == comment_char && comment_char != '\0')
+ {
+ /* This is a comment, just drop the rest of the line. */
+ && in->ptr[src] != '\n')
+ src++;
+ }
-+ else if (in->ptr[src] == '(')
++ else if (src < in->len && in->ptr[src] == '(')
{
/* Sub in till the next ')' literally. */
src++;
-@@ -771,7 +779,7 @@
- formal_entry *f;
-
+@@ -867,7 +874,7 @@
+ else
+ {
src = sb_skip_white (src + 5, in);
- while (in->ptr[src] != '\n')
+ while (in->ptr[src] != '\n' && in->ptr[src] != comment_char)
{
- static int loccnt;
- char buf[20];
-@@ -798,6 +806,17 @@
+ const char *name;
+ formal_entry *f = new_formal ();
+@@ -903,6 +910,17 @@
}
}
}
else if (in->ptr[src] == '"'
|| (macro_mri && in->ptr[src] == '\''))
{
-@@ -880,11 +899,12 @@
+@@ -984,7 +1002,7 @@
body. */
static const char *
--macro_expand (idx, in, m, out)
-+macro_expand (idx, in, m, out, comment_char)
- int idx;
- sb *in;
- macro_entry *m;
- sb *out;
-+ int comment_char;
+-macro_expand (int idx, sb *in, macro_entry *m, sb *out)
++macro_expand (int idx, sb *in, macro_entry *m, sb *out, int comment_char)
{
sb t;
formal_entry *ptr;
-@@ -934,7 +954,7 @@
+@@ -1029,7 +1047,7 @@
/* Peel off the actuals and store them away in the hash tables' actuals. */
idx = sb_skip_white (idx, in);
{
int scan;
-@@ -1036,7 +1056,7 @@
- sb_add_string (&ptr->actual, buffer);
- }
+@@ -1156,7 +1174,7 @@
+ sb_add_string (&ptr->actual, buffer);
+ }
-- err = macro_expand_body (&m->sub, out, m->formals, m->formal_hash, 1);
-+ err = macro_expand_body (&m->sub, out, m->formals, m->formal_hash, comment_char, 1);
- if (err != NULL)
- return err;
+- err = macro_expand_body (&m->sub, out, m->formals, m->formal_hash, m);
++ err = macro_expand_body (&m->sub, out, m->formals, m->formal_hash, m, comment_char);
+ }
-@@ -1072,9 +1092,10 @@
+ /* Discard any unnamed formal arguments. */
+@@ -1189,7 +1207,7 @@
*EXPAND. Return 1 if a macro is found, 0 otherwise. */
int
--check_macro (line, expand, error, info)
-+check_macro (line, expand, comment_char, error, info)
- const char *line;
- sb *expand;
-+ int comment_char;
- const char **error;
- macro_entry **info;
+-check_macro (const char *line, sb *expand,
++check_macro (const char *line, sb *expand, int comment_char,
+ const char **error, macro_entry **info)
{
-@@ -1112,7 +1133,7 @@
+ const char *s;
+@@ -1224,7 +1242,7 @@
sb_add_char (&line_sb, *s++);
sb_new (expand);
sb_kill (&line_sb);
-@@ -1137,12 +1158,13 @@
+@@ -1285,7 +1303,7 @@
success, or an error message otherwise. */
const char *
--expand_irp (irpc, idx, in, out, get_line)
-+expand_irp (irpc, idx, in, out, get_line, comment_char)
- int irpc;
- int idx;
- sb *in;
- sb *out;
- int (*get_line) PARAMS ((sb *));
-+ int comment_char;
+-expand_irp (int irpc, int idx, sb *in, sb *out, int (*get_line) (sb *))
++expand_irp (int irpc, int idx, sb *in, sb *out, int (*get_line) (sb *), int comment_char)
{
- const char *mn;
sb sub;
-@@ -1180,10 +1202,10 @@
+ formal_entry f;
+@@ -1318,10 +1336,10 @@
sb_reset (out);
idx = sb_skip_comma (idx, in);
{
/* Expand once with a null string. */
- err = macro_expand_body (&sub, out, &f, h, 0);
-+ err = macro_expand_body (&sub, out, &f, h, comment_char, 0);
- if (err != NULL)
- return err;
++ err = macro_expand_body (&sub, out, &f, h, 0, comment_char);
}
-@@ -1191,7 +1213,7 @@
+ else
{
- if (irpc && in->ptr[idx] == '"')
- ++idx;
+@@ -1333,7 +1351,7 @@
+ ++idx;
+ }
+
- while (idx < in->len)
+ while (idx < in->len && in->ptr[idx] != comment_char)
{
if (!irpc)
- idx = get_any_string (idx, in, &f.actual, 1, 0);
-@@ -1202,7 +1224,7 @@
- int nxt;
-
+ idx = get_any_string (idx, in, &f.actual);
+@@ -1347,7 +1365,7 @@
+ in_quotes = ! in_quotes;
+
nxt = sb_skip_white (idx + 1, in);
- if (nxt >= in->len)
+ if (nxt >= in->len || in->ptr[nxt] == comment_char)
{
idx = nxt;
break;
-@@ -1212,7 +1234,7 @@
- sb_add_char (&f.actual, in->ptr[idx]);
+@@ -1358,7 +1376,7 @@
++idx;
}
+
- err = macro_expand_body (&sub, out, &f, h, 0);
-+ err = macro_expand_body (&sub, out, &f, h, comment_char, 0);
++ err = macro_expand_body (&sub, out, &f, h, 0, comment_char);
if (err != NULL)
- return err;
+ break;
if (!irpc)
-diff -Nur binutils-2.13.90.0.18.orig/gas/macro.h binutils-2.13.90.0.18/gas/macro.h
---- binutils-2.13.90.0.18.orig/gas/macro.h Sun Feb 2 03:21:18 2003
-+++ binutils-2.13.90.0.18/gas/macro.h Sun Feb 2 15:23:24 2003
-@@ -79,10 +79,10 @@
+--- binutils-2.16.91.0.2.org/gas/macro.h 2005-05-10 22:46:44.000000000 +0000
++++ binutils-2.16.91.0.2/gas/macro.h 2005-07-21 18:31:04.000000000 +0000
+@@ -90,8 +90,8 @@
+ extern void macro_mri_mode (int);
extern const char *define_macro
- PARAMS ((int, sb *, sb *, int (*) PARAMS ((sb *)), const char **));
- extern int check_macro
-- PARAMS ((const char *, sb *, const char **, macro_entry **));
-+ PARAMS ((const char *, sb *, int, const char **, macro_entry **));
- extern void delete_macro
- PARAMS ((const char *));
- extern const char *expand_irp
-- PARAMS ((int, int, sb *, sb *, int (*) PARAMS ((sb *))));
-+ PARAMS ((int, int, sb *, sb *, int (*) PARAMS ((sb *)), int));
+ (int, sb *, sb *, int (*) (sb *), char *, unsigned int, const char **);
+-extern int check_macro (const char *, sb *, const char **, macro_entry **);
++extern int check_macro (const char *, sb *, int, const char **, macro_entry **);
+ extern void delete_macro (const char *);
+-extern const char *expand_irp (int, int, sb *, sb *, int (*) (sb *));
++extern const char *expand_irp (int, int, sb *, sb *, int (*) (sb *), int);
#endif
-diff -Nur binutils-2.13.90.0.18.orig/gas/read.c binutils-2.13.90.0.18/gas/read.c
---- binutils-2.13.90.0.18.orig/gas/read.c Sun Feb 2 03:21:18 2003
-+++ binutils-2.13.90.0.18/gas/read.c Sun Feb 2 15:26:06 2003
-@@ -862,7 +862,7 @@
- const char *err;
- macro_entry *macro;
+--- binutils-2.16.91.0.2.org/gas/read.c 2005-06-22 20:53:34.000000000 +0000
++++ binutils-2.16.91.0.2/gas/read.c 2005-07-21 18:31:04.000000000 +0000
+@@ -555,7 +555,7 @@
+ const char *err;
+ macro_entry *macro;
-- if (check_macro (s, &out, &err, ¯o))
-+ if (check_macro (s, &out, '\0', &err, ¯o))
- {
- if (err != NULL)
- as_bad ("%s", err);
-@@ -1855,7 +1855,7 @@
+- if (check_macro (line, &out, &err, ¯o))
++ if (check_macro (line, &out, '\0', &err, ¯o))
+ {
+ if (err != NULL)
+ as_bad ("%s", err);
+@@ -1958,7 +1958,7 @@
sb_new (&out);