aboutsummaryrefslogtreecommitdiff
path: root/gas/ecoff.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1995-07-05 16:10:50 +0000
committerIan Lance Taylor <ian@airs.com>1995-07-05 16:10:50 +0000
commit22ba90ce857a55522551a6dd06410534d0b02fd2 (patch)
tree6fd24938ae0ea7899e96d3e450cf609c76decf2b /gas/ecoff.c
parent9525b61b1b82bcd7f9de30c9278cc9d52e9794b9 (diff)
downloadgdb-22ba90ce857a55522551a6dd06410534d0b02fd2.zip
gdb-22ba90ce857a55522551a6dd06410534d0b02fd2.tar.gz
gdb-22ba90ce857a55522551a6dd06410534d0b02fd2.tar.bz2
* ecoff.c (ecoff_debugging_seen): New global variable.
(ecoff_directive_def): Set ecoff_debugging_seen. (ecoff_stab): Likewise. * ecoff.h: Make idempotent. (ecoff_debugging_seen): Declare. * config/tc-mips.c: Include ecoff.h. (mips_debug): New static variable. (s_stringer, s_mips_space): Remove unneeded declarations. (md_parse_option): In case 'g', set mips_debug to debugging level. (mips_local_label): New function. * tc-mips.h (LOCAL_LABEL): Call mips_local_label. (mips_local_label): Declare. PR 6978.
Diffstat (limited to 'gas/ecoff.c')
-rw-r--r--gas/ecoff.c36
1 files changed, 25 insertions, 11 deletions
diff --git a/gas/ecoff.c b/gas/ecoff.c
index fbd8683..682bc9e 100644
--- a/gas/ecoff.c
+++ b/gas/ecoff.c
@@ -1390,6 +1390,9 @@ static const st_t map_coff_sym_type[] = {
/* Keep track of different sized allocation requests. */
static alloc_info_t alloc_counts[ (int)alloc_type_last ];
+/* Record whether we have seen any debugging information. */
+int ecoff_debugging_seen = 0;
+
/* Various statics. */
static efdr_t *cur_file_ptr = (efdr_t *) 0; /* current file desc. header */
static proc_t *cur_proc_ptr = (proc_t *) 0; /* current procedure header */
@@ -2489,6 +2492,8 @@ ecoff_directive_def (ignore)
char *name;
char name_end;
+ ecoff_debugging_seen = 1;
+
SKIP_WHITESPACE ();
name = input_line_pointer;
@@ -2675,7 +2680,11 @@ ecoff_directive_type (ignore)
{
if (tq_ptr == &coff_type.type_qualifiers[0])
{
- as_warn ("Too derived values in .type argument");
+ /* FIXME: We could handle this by setting the continued bit.
+ There would still be a limit: the .type argument can not
+ be infinite. */
+ as_warn ("The type of %s is too complex; it will be simplified",
+ coff_sym_name);
break;
}
if (ISPTR (val))
@@ -3328,7 +3337,8 @@ mark_stabs (ignore)
value a numeric value or an address. */
void
-ecoff_stab (what, string, type, other, desc)
+ecoff_stab (sec, what, string, type, other, desc)
+ segT sec;
int what;
const char *string;
int type;
@@ -3343,6 +3353,8 @@ ecoff_stab (what, string, type, other, desc)
symint_t indx;
localsym_t *hold = NULL;
+ ecoff_debugging_seen = 1;
+
/* We don't handle .stabd. */
if (what != 's' && what != 'n')
{
@@ -4540,7 +4552,8 @@ ecoff_build_debug (hdr, bufp, backend)
fil_ptr = fil_ptr->next_file)
{
cur_file_ptr = fil_ptr;
- while (cur_file_ptr->cur_scope->prev != (scope_t *) NULL)
+ while (cur_file_ptr->cur_scope != (scope_t *) NULL
+ && cur_file_ptr->cur_scope->prev != (scope_t *) NULL)
{
cur_file_ptr->cur_scope = cur_file_ptr->cur_scope->prev;
if (! end_warning)
@@ -4549,11 +4562,12 @@ ecoff_build_debug (hdr, bufp, backend)
end_warning = 1;
}
}
- (void) add_ecoff_symbol ((const char *) NULL,
- st_End, sc_Text,
- (symbolS *) NULL,
- (symint_t) 0,
- (symint_t) 0);
+ if (cur_file_ptr->cur_scope != (scope_t *) NULL)
+ (void) add_ecoff_symbol ((const char *) NULL,
+ st_End, sc_Text,
+ (symbolS *) NULL,
+ (symint_t) 0,
+ (symint_t) 0);
}
/* Build the symbolic information. */
@@ -5029,7 +5043,7 @@ ecoff_set_gp_prolog_size (sz)
int sz;
{
if (cur_proc_ptr == 0)
- abort ();
+ return;
cur_proc_ptr->pdr.gp_prologue = sz;
if (cur_proc_ptr->pdr.gp_prologue != sz)
@@ -5146,8 +5160,8 @@ ecoff_no_current_file ()
void
ecoff_generate_asm_lineno (filename, lineno)
- char *filename;
- int lineno;
+ const char *filename;
+ int lineno;
{
lineno_list_t *list;