forked from Imagelibrary/binutils-gdb
* symbols.c (S_SET_EXTERNAL): Warn if symbol is weak.
(S_CLEAR_EXTERNAL): Likewise. (S_SET_WEAK): Warn if symbol is global. PR 6750.
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
Wed Jul 5 12:01:49 1995 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* symbols.c (S_SET_EXTERNAL): Warn if symbol is weak.
|
||||
(S_CLEAR_EXTERNAL): Likewise.
|
||||
(S_SET_WEAK): Warn if symbol is global.
|
||||
|
||||
* config/obj-aout.c (obj_aout_frob_symbol): Warn about an attempt
|
||||
to put an undefined symbol into a set.
|
||||
|
||||
|
||||
@@ -157,13 +157,10 @@ colon (sym_name) /* just seen "x:" - rattle symbols & frags */
|
||||
{
|
||||
register symbolS *symbolP; /* symbol we are working with */
|
||||
|
||||
#ifdef LOCAL_LABELS_DOLLAR
|
||||
/* Sun local labels go out of scope whenever a non-local symbol is
|
||||
defined. */
|
||||
|
||||
if (*sym_name != 'L')
|
||||
if (LOCAL_LABELS_DOLLAR && *sym_name != 'L')
|
||||
dollar_label_clear ();
|
||||
#endif /* LOCAL_LABELS_DOLLAR */
|
||||
|
||||
#ifndef WORKING_DOT_WORD
|
||||
if (new_broken_words)
|
||||
@@ -765,8 +762,6 @@ resolve_symbol_value (symp)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef LOCAL_LABELS_DOLLAR
|
||||
|
||||
/* Dollar labels look like a number followed by a dollar sign. Eg, "42$".
|
||||
They are *really* local. That is, they go out of scope whenever we see a
|
||||
label that isn't local. Also, like fb labels, there can be multiple
|
||||
@@ -918,10 +913,6 @@ dollar_label_name (n, augend)
|
||||
return symbol_name_build;
|
||||
}
|
||||
|
||||
#endif /* LOCAL_LABELS_DOLLAR */
|
||||
|
||||
#ifdef LOCAL_LABELS_FB
|
||||
|
||||
/*
|
||||
* Sombody else's idea of local labels. They are made by "n:" where n
|
||||
* is any decimal digit. Refer to them with
|
||||
@@ -1091,9 +1082,6 @@ fb_label_name (n, augend)
|
||||
return (symbol_name_build);
|
||||
} /* fb_label_name() */
|
||||
|
||||
#endif /* LOCAL_LABELS_FB */
|
||||
|
||||
|
||||
/*
|
||||
* decode name that may have been generated by foo_label_name() above. If
|
||||
* the name wasn't generated by foo_label_name(), then return it unaltered.
|
||||
@@ -1112,37 +1100,26 @@ decode_local_label_name (s)
|
||||
const char *message_format = "\"%d\" (instance number %d of a %s label)";
|
||||
|
||||
if (s[0] != 'L')
|
||||
return (s);
|
||||
return s;
|
||||
|
||||
for (label_number = 0, p = s + 1; isdigit (*p); ++p)
|
||||
{
|
||||
label_number = (10 * label_number) + *p - '0';
|
||||
}
|
||||
label_number = (10 * label_number) + *p - '0';
|
||||
|
||||
if (*p == 1)
|
||||
{
|
||||
type = "dollar";
|
||||
}
|
||||
type = "dollar";
|
||||
else if (*p == 2)
|
||||
{
|
||||
type = "fb";
|
||||
}
|
||||
type = "fb";
|
||||
else
|
||||
{
|
||||
return (s);
|
||||
}
|
||||
return s;
|
||||
|
||||
for (instance_number = 0, p = s + 1; isdigit (*p); ++p)
|
||||
{
|
||||
instance_number = (10 * instance_number) + *p - '0';
|
||||
}
|
||||
for (instance_number = 0, p++; isdigit (*p); ++p)
|
||||
instance_number = (10 * instance_number) + *p - '0';
|
||||
|
||||
symbol_decode = obstack_alloc (¬es, strlen (message_format) + 30);
|
||||
(void) sprintf (symbol_decode, message_format, label_number,
|
||||
instance_number, type);
|
||||
sprintf (symbol_decode, message_format, label_number, instance_number, type);
|
||||
|
||||
return (symbol_decode);
|
||||
} /* decode_local_label_name() */
|
||||
return symbol_decode;
|
||||
}
|
||||
|
||||
/* Get the value of a symbol. */
|
||||
|
||||
@@ -1281,6 +1258,8 @@ void
|
||||
S_SET_EXTERNAL (s)
|
||||
symbolS *s;
|
||||
{
|
||||
if ((s->bsym->flags & BSF_WEAK) != 0)
|
||||
as_warn ("%s already declared as weak", S_GET_NAME (s));
|
||||
s->bsym->flags |= BSF_GLOBAL;
|
||||
s->bsym->flags &= ~(BSF_LOCAL|BSF_WEAK);
|
||||
}
|
||||
@@ -1289,6 +1268,8 @@ void
|
||||
S_CLEAR_EXTERNAL (s)
|
||||
symbolS *s;
|
||||
{
|
||||
if ((s->bsym->flags & BSF_WEAK) != 0)
|
||||
as_warn ("%s already declared as weak", S_GET_NAME (s));
|
||||
s->bsym->flags |= BSF_LOCAL;
|
||||
s->bsym->flags &= ~(BSF_GLOBAL|BSF_WEAK);
|
||||
}
|
||||
@@ -1297,6 +1278,8 @@ void
|
||||
S_SET_WEAK (s)
|
||||
symbolS *s;
|
||||
{
|
||||
if ((s->bsym->flags & BSF_GLOBAL) != 0)
|
||||
as_warn ("%s already declared as global", S_GET_NAME (s));
|
||||
s->bsym->flags |= BSF_WEAK;
|
||||
s->bsym->flags &= ~(BSF_GLOBAL|BSF_LOCAL);
|
||||
}
|
||||
@@ -1328,20 +1311,23 @@ symbol_begin ()
|
||||
#endif
|
||||
abs_symbol.sy_value.X_op = O_constant;
|
||||
|
||||
#ifdef LOCAL_LABELS_FB
|
||||
fb_label_init ();
|
||||
#endif /* LOCAL_LABELS_FB */
|
||||
if (LOCAL_LABELS_FB)
|
||||
fb_label_init ();
|
||||
}
|
||||
|
||||
|
||||
int indent_level;
|
||||
|
||||
#if 0
|
||||
|
||||
static void
|
||||
indent ()
|
||||
{
|
||||
printf ("%*s", indent_level * 4, "");
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void print_expr_1 PARAMS ((FILE *, expressionS *));
|
||||
void print_symbol_value_1 PARAMS ((FILE *, symbolS *));
|
||||
|
||||
@@ -1353,7 +1339,7 @@ print_symbol_value_1 (file, sym)
|
||||
const char *name = S_GET_NAME (sym);
|
||||
if (!name || !name[0])
|
||||
name = "(unnamed)";
|
||||
fprintf (file, "sym %lx %s", sym, name);
|
||||
fprintf (file, "sym %lx %s", (unsigned long) sym, name);
|
||||
if (sym->sy_frag != &zero_address_frag)
|
||||
fprintf (file, " frag %lx", (long) sym->sy_frag);
|
||||
if (sym->written)
|
||||
|
||||
Reference in New Issue
Block a user