* config/tc-mips.c (s_mips_globl): Allow multiple symbols per .globl.

This commit is contained in:
Thiemo Seufer 2005-07-30 13:53:13 +00:00
parent dbfb74ddb5
commit 8a06b76942
2 changed files with 42 additions and 23 deletions

View File

@ -1,3 +1,7 @@
2005-07-29 Thiemo Seufer <ths@networkno.de>
* config/tc-mips.c (s_mips_globl): Allow multiple symbols per .globl.
2005-07-29 Paul Brook <paul@codesourcery.com>
* config/tc-arm.c (T16_32_TAB): Add "addr". Fix encoding of push and

View File

@ -11407,35 +11407,50 @@ s_mips_globl (int x ATTRIBUTE_UNUSED)
symbolS *symbolP;
flagword flag;
name = input_line_pointer;
c = get_symbol_end ();
symbolP = symbol_find_or_make (name);
*input_line_pointer = c;
SKIP_WHITESPACE ();
/* On Irix 5, every global symbol that is not explicitly labelled as
being a function is apparently labelled as being an object. */
flag = BSF_OBJECT;
if (! is_end_of_line[(unsigned char) *input_line_pointer])
do
{
char *secname;
asection *sec;
secname = input_line_pointer;
name = input_line_pointer;
c = get_symbol_end ();
sec = bfd_get_section_by_name (stdoutput, secname);
if (sec == NULL)
as_bad (_("%s: no such section"), secname);
symbolP = symbol_find_or_make (name);
S_SET_EXTERNAL (symbolP);
*input_line_pointer = c;
SKIP_WHITESPACE ();
if (sec != NULL && (sec->flags & SEC_CODE) != 0)
flag = BSF_FUNCTION;
/* On Irix 5, every global symbol that is not explicitly labelled as
being a function is apparently labelled as being an object. */
flag = BSF_OBJECT;
if (!is_end_of_line[(unsigned char) *input_line_pointer]
&& (*input_line_pointer != ','))
{
char *secname;
asection *sec;
secname = input_line_pointer;
c = get_symbol_end ();
sec = bfd_get_section_by_name (stdoutput, secname);
if (sec == NULL)
as_bad (_("%s: no such section"), secname);
*input_line_pointer = c;
if (sec != NULL && (sec->flags & SEC_CODE) != 0)
flag = BSF_FUNCTION;
}
symbol_get_bfdsym (symbolP)->flags |= flag;
c = *input_line_pointer;
if (c == ',')
{
input_line_pointer++;
SKIP_WHITESPACE ();
if (is_end_of_line[(unsigned char) *input_line_pointer])
c = '\n';
}
}
while (c == ',');
symbol_get_bfdsym (symbolP)->flags |= flag;
S_SET_EXTERNAL (symbolP);
demand_empty_rest_of_line ();
}