aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog9
-rw-r--r--gas/as.c4
-rw-r--r--gas/config/tc-ia64.c7
-rw-r--r--gas/config/tc-ia64.h2
-rw-r--r--gas/doc/internals.texi5
5 files changed, 26 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index b2caa0b..261ce4d 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2001-11-28 Andreas Schwab <schwab@suse.de>
+
+ * as.c (parse_args): Call md_after_parse_args if defined.
+ * config/tc-ia64.h (md_after_parse_args): Define.
+ * config/tc-ia64.c (ia64_after_parse_args): Reject --gstabs.
+ * doc/internals.texi (CPU backend): Document md_after_parse_args.
+
2001-11-23 Jakub Jelinek <jakub@redhat.com>
* config/tc-alpha.c (tc_gen_reloc): Remove SEC_MERGE test.
@@ -1772,7 +1779,7 @@ Wed Aug 29 12:05:13 2001 J"orn Rennecke <amylaar@redhat.com>
TC_FINALIZE_SYMS_BEFORE_SIZE_SEG just before size_segs is
called.
- * doc/internals.texi; Document
+ * doc/internals.texi: Document
TC_FINALIZE_SYMS_BEFORE_SIZE_SEG.
2001-07-02 Alan Modra <amodra@bigpond.net.au>
diff --git a/gas/as.c b/gas/as.c
index d5922b0..5f6832f 100644
--- a/gas/as.c
+++ b/gas/as.c
@@ -762,6 +762,10 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
*pargc = new_argc;
*pargv = new_argv;
+
+#ifdef md_after_parse_args
+ md_after_parse_args ();
+#endif
}
static long start_time;
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index d2523cf..8c98cc2 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -6310,6 +6310,13 @@ IA-64 options:\n\
stream);
}
+void
+ia64_after_parse_args ()
+{
+ if (debug_type == DEBUG_STABS)
+ as_fatal (_("--gstabs is not supported for ia64"));
+}
+
/* Return true if TYPE fits in TEMPL at SLOT. */
static int
diff --git a/gas/config/tc-ia64.h b/gas/config/tc-ia64.h
index 7921abf..320798b 100644
--- a/gas/config/tc-ia64.h
+++ b/gas/config/tc-ia64.h
@@ -86,6 +86,7 @@ extern int ia64_elf_section_type PARAMS ((const char *, size_t len));
extern long ia64_pcrel_from_section PARAMS ((struct fix *fix, segT sec));
extern void ia64_md_do_align PARAMS ((int, const char *, int, int));
extern void ia64_handle_align PARAMS ((fragS *f));
+extern void ia64_after_parse_args PARAMS ((void));
#define md_end() ia64_end_of_source ()
#define md_start_line_hook() ia64_start_line ()
@@ -114,6 +115,7 @@ extern void ia64_handle_align PARAMS ((fragS *f));
#define md_do_align(n,f,l,m,j) ia64_md_do_align (n,f,l,m)
#define HANDLE_ALIGN(f) ia64_handle_align (f)
#define md_elf_section_type(str,len) ia64_elf_section_type (str, len)
+#define md_after_parse_args() ia64_after_parse_args ()
#define MAX_MEM_FOR_RS_ALIGN_CODE (15 + 16)
diff --git a/gas/doc/internals.texi b/gas/doc/internals.texi
index 4abf0d9..e7d3009 100644
--- a/gas/doc/internals.texi
+++ b/gas/doc/internals.texi
@@ -843,11 +843,13 @@ zero if the target is little endian.
@itemx md_longopts_size
@itemx md_parse_option
@itemx md_show_usage
+@itemx md_after_parse_args
@cindex md_shortopts
@cindex md_longopts
@cindex md_longopts_size
@cindex md_parse_option
@cindex md_show_usage
+@cindex md_after_parse_args
GAS uses these variables and functions during option processing.
@code{md_shortopts} is a @code{const char *} which GAS adds to the machine
independent string passed to @code{getopt}. @code{md_longopts} is a
@@ -859,6 +861,9 @@ GAS will call @code{md_parse_option} whenever @code{getopt} returns an
unrecognized code, presumably indicating a special code value which appears in
@code{md_longopts}. GAS will call @code{md_show_usage} when a usage message is
printed; it should print a description of the machine specific options.
+@code{md_after_pase_args}, if defined, is called after all options are
+processed, to let the backend override settings done by the generic option
+parsing.
@item md_begin
@cindex md_begin