@R changes to work with gcc-6.2.0
This commit is contained in:
parent
ce410ad89a
commit
590f1f95a2
|
@ -204,7 +204,7 @@ USUAL_MAKEINFO = `if [ -f $$r/texinfo/makeinfo/makeinfo ] ; \
|
|||
# sub-makes. It lets flags be given on the command line while still
|
||||
# using the makeinfo from the object tree.
|
||||
# (Default to avoid splitting info files.)
|
||||
MAKEINFOFLAGS = --no-split
|
||||
MAKEINFOFLAGS = --no-split --force
|
||||
|
||||
EXPECT = `if [ -f $$r/expect/expect ] ; \
|
||||
then echo $$r/expect/expect ; \
|
||||
|
|
|
@ -207,7 +207,7 @@ USUAL_MAKEINFO = `if [ -f $$r/texinfo/makeinfo/makeinfo ] ; \
|
|||
# sub-makes. It lets flags be given on the command line while still
|
||||
# using the makeinfo from the object tree.
|
||||
# (Default to avoid splitting info files.)
|
||||
MAKEINFOFLAGS = --no-split
|
||||
MAKEINFOFLAGS = --no-split --force
|
||||
|
||||
EXPECT = `if [ -f $$r/expect/expect ] ; \
|
||||
then echo $$r/expect/expect ; \
|
||||
|
|
25
gas/app.c
25
gas/app.c
|
@ -351,6 +351,8 @@ do_scrub_chars (get, tostart, tolen)
|
|||
char *fromend;
|
||||
int fromlen;
|
||||
register int ch, ch2 = 0;
|
||||
/* Character that started the string we're working on. */
|
||||
static char quotechar;
|
||||
|
||||
/*State 0: beginning of normal line
|
||||
1: After first whitespace on line (flush more white)
|
||||
|
@ -536,11 +538,8 @@ do_scrub_chars (get, tostart, tolen)
|
|||
for (s = from; s < fromend; s++)
|
||||
{
|
||||
ch = *s;
|
||||
/* This condition must be changed if the type of any
|
||||
other character can be LEX_IS_STRINGQUOTE. */
|
||||
if (ch == '\\'
|
||||
|| ch == '"'
|
||||
|| ch == '\''
|
||||
|| ch == quotechar
|
||||
|| ch == '\n')
|
||||
break;
|
||||
}
|
||||
|
@ -558,12 +557,12 @@ do_scrub_chars (get, tostart, tolen)
|
|||
ch = GET ();
|
||||
if (ch == EOF)
|
||||
{
|
||||
as_warn (_("end of file in string; inserted '\"'"));
|
||||
as_warn (_("end of file in string; '%c' inserted"), quotechar);
|
||||
state = old_state;
|
||||
UNGET ('\n');
|
||||
PUT ('"');
|
||||
PUT (quotechar);
|
||||
}
|
||||
else if (lex[ch] == LEX_IS_STRINGQUOTE)
|
||||
else if (ch == quotechar)
|
||||
{
|
||||
state = old_state;
|
||||
PUT (ch);
|
||||
|
@ -603,8 +602,8 @@ do_scrub_chars (get, tostart, tolen)
|
|||
continue;
|
||||
|
||||
case EOF:
|
||||
as_warn (_("end of file in string; '\"' inserted"));
|
||||
PUT ('"');
|
||||
as_warn (_("end of file in string; '%c' inserted"), quotechar);
|
||||
PUT (quotechar);
|
||||
continue;
|
||||
|
||||
case '"':
|
||||
|
@ -638,10 +637,9 @@ do_scrub_chars (get, tostart, tolen)
|
|||
|
||||
case 7:
|
||||
ch = GET ();
|
||||
quotechar = ch;
|
||||
state = 5;
|
||||
old_state = 8;
|
||||
if (ch == EOF)
|
||||
goto fromeof;
|
||||
PUT (ch);
|
||||
continue;
|
||||
|
||||
|
@ -952,6 +950,7 @@ do_scrub_chars (get, tostart, tolen)
|
|||
break;
|
||||
|
||||
case LEX_IS_STRINGQUOTE:
|
||||
quotechar = ch;
|
||||
if (state == 10)
|
||||
{
|
||||
/* Preserve the whitespace in foo "bar". */
|
||||
|
@ -1279,6 +1278,8 @@ do_scrub_chars (get, tostart, tolen)
|
|||
case 1: *to++ = *from++;
|
||||
}
|
||||
}
|
||||
if (to >= toend)
|
||||
goto tofull;
|
||||
ch = GET ();
|
||||
}
|
||||
}
|
||||
|
@ -1297,7 +1298,7 @@ do_scrub_chars (get, tostart, tolen)
|
|||
}
|
||||
else if (state == 9)
|
||||
{
|
||||
if (lex[ch] != LEX_IS_SYMBOL_COMPONENT)
|
||||
if (!IS_SYMBOL_COMPONENT (ch))
|
||||
state = 3;
|
||||
}
|
||||
else if (state == 10)
|
||||
|
|
|
@ -1,212 +1,277 @@
|
|||
/* AmigaOS object file format
|
||||
Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
GAS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2,
|
||||
or (at your option) any later version.
|
||||
|
||||
GAS is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GAS; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
|
||||
#include "as.h"
|
||||
|
||||
enum {
|
||||
N_UNDF=0,
|
||||
/*N_ABS=2,*/
|
||||
/*N_TEXT=4,*/
|
||||
/*N_DATA=6,*/
|
||||
/*N_BSS=8,*/
|
||||
N_INDR=0xa,
|
||||
/*N_COMM=0x12,*/
|
||||
N_SETA=0x14,
|
||||
N_SETT=0x16,
|
||||
N_SETD=0x18,
|
||||
N_SETB=0x1a,
|
||||
/*N_SETV=0x1c,*/
|
||||
N_WARNING=0x1e,
|
||||
/*N_FN=0x1f*/
|
||||
N_EXT=1,
|
||||
N_TYPE=0x1e,
|
||||
/*N_STAB=0xe0,*/
|
||||
};
|
||||
|
||||
static void obj_amiga_line PARAMS ((int));
|
||||
static void obj_amiga_weak PARAMS ((int));
|
||||
|
||||
const pseudo_typeS obj_pseudo_table[] =
|
||||
{
|
||||
{"line", obj_amiga_line, 0}, /* source code line number */
|
||||
{"weak", obj_amiga_weak, 0}, /* mark symbol as weak. */
|
||||
|
||||
/* other stuff */
|
||||
{"ABORT", s_abort, 0},
|
||||
|
||||
{NULL, NULL, 0} /* end sentinel */
|
||||
};
|
||||
|
||||
#ifdef BFD_ASSEMBLER
|
||||
|
||||
void
|
||||
obj_amiga_frob_symbol (sym, punt)
|
||||
symbolS *sym;
|
||||
int *punt ATTRIBUTE_UNUSED;
|
||||
{
|
||||
sec_ptr sec = S_GET_SEGMENT (sym);
|
||||
unsigned int type = amiga_symbol (symbol_get_bfdsym (sym))->type;
|
||||
|
||||
/* Only frob simple symbols this way right now. */
|
||||
if (! (type & ~ (N_TYPE | N_EXT)))
|
||||
{
|
||||
if (type == (N_UNDF | N_EXT)
|
||||
&& sec == &bfd_abs_section)
|
||||
{
|
||||
sec = bfd_und_section_ptr;
|
||||
S_SET_SEGMENT (sym, sec);
|
||||
}
|
||||
|
||||
if ((type & N_TYPE) != N_INDR
|
||||
&& (type & N_TYPE) != N_SETA
|
||||
&& (type & N_TYPE) != N_SETT
|
||||
&& (type & N_TYPE) != N_SETD
|
||||
&& (type & N_TYPE) != N_SETB
|
||||
&& type != N_WARNING
|
||||
&& (sec == &bfd_abs_section
|
||||
|| sec == &bfd_und_section))
|
||||
return;
|
||||
if (symbol_get_bfdsym (sym)->flags & BSF_EXPORT)
|
||||
type |= N_EXT;
|
||||
|
||||
switch (type & N_TYPE)
|
||||
{
|
||||
case N_SETA:
|
||||
case N_SETT:
|
||||
case N_SETD:
|
||||
case N_SETB:
|
||||
/* Set the debugging flag for constructor symbols so that
|
||||
BFD leaves them alone. */
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_DEBUGGING;
|
||||
|
||||
/* You can't put a common symbol in a set. The way a set
|
||||
element works is that the symbol has a definition and a
|
||||
name, and the linker adds the definition to the set of
|
||||
that name. That does not work for a common symbol,
|
||||
because the linker can't tell which common symbol the
|
||||
user means. FIXME: Using as_bad here may be
|
||||
inappropriate, since the user may want to force a
|
||||
particular type without regard to the semantics of sets;
|
||||
on the other hand, we certainly don't want anybody to be
|
||||
mislead into thinking that their code will work. */
|
||||
if (S_IS_COMMON (sym))
|
||||
as_bad (_("Attempt to put a common symbol into set %s"),
|
||||
S_GET_NAME (sym));
|
||||
/* Similarly, you can't put an undefined symbol in a set. */
|
||||
else if (! S_IS_DEFINED (sym))
|
||||
as_bad (_("Attempt to put an undefined symbol into set %s"),
|
||||
S_GET_NAME (sym));
|
||||
|
||||
break;
|
||||
case N_INDR:
|
||||
/* Put indirect symbols in the indirect section. */
|
||||
S_SET_SEGMENT (sym, bfd_ind_section_ptr);
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_INDIRECT;
|
||||
if (type & N_EXT)
|
||||
{
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_EXPORT;
|
||||
symbol_get_bfdsym (sym)->flags &=~ BSF_LOCAL;
|
||||
}
|
||||
break;
|
||||
case N_WARNING:
|
||||
/* Mark warning symbols. */
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_WARNING;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_DEBUGGING;
|
||||
}
|
||||
|
||||
amiga_symbol (symbol_get_bfdsym (sym))->type = type;
|
||||
|
||||
/* Double check weak symbols. */
|
||||
if (S_IS_WEAK (sym))
|
||||
{
|
||||
if (S_IS_COMMON (sym))
|
||||
as_bad (_("Symbol `%s' can not be both weak and common"),
|
||||
S_GET_NAME (sym));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
obj_amiga_frob_file_before_fix ()
|
||||
{
|
||||
/* Relocation processing may require knowing the VMAs of the sections.
|
||||
Since writing to a section will cause the BFD back end to compute the
|
||||
VMAs, fake it out here.... */
|
||||
bfd_byte b = 0;
|
||||
bfd_boolean x = TRUE;
|
||||
if (bfd_section_size (stdoutput, text_section) != 0)
|
||||
{
|
||||
x = bfd_set_section_contents (stdoutput, text_section, &b, (file_ptr) 0,
|
||||
(bfd_size_type) 1);
|
||||
}
|
||||
else if (bfd_section_size (stdoutput, data_section) != 0)
|
||||
{
|
||||
x = bfd_set_section_contents (stdoutput, data_section, &b, (file_ptr) 0,
|
||||
(bfd_size_type) 1);
|
||||
}
|
||||
assert (x);
|
||||
}
|
||||
|
||||
#endif /* BFD_ASSEMBLER */
|
||||
|
||||
static void
|
||||
obj_amiga_line (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
{
|
||||
/* Assume delimiter is part of expression.
|
||||
BSD4.2 as fails with delightful bug, so we
|
||||
are not being incompatible here. */
|
||||
new_logical_line ((char *) NULL, (int) (get_absolute_expression ()));
|
||||
demand_empty_rest_of_line ();
|
||||
} /* obj_amiga_line() */
|
||||
|
||||
/* Handle .weak. This is a GNU extension. */
|
||||
|
||||
static void
|
||||
obj_amiga_weak (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
{
|
||||
char *name;
|
||||
int c;
|
||||
symbolS *symbolP;
|
||||
|
||||
do
|
||||
{
|
||||
name = input_line_pointer;
|
||||
c = get_symbol_end ();
|
||||
symbolP = symbol_find_or_make (name);
|
||||
*input_line_pointer = c;
|
||||
SKIP_WHITESPACE ();
|
||||
S_SET_WEAK (symbolP);
|
||||
if (c == ',')
|
||||
{
|
||||
input_line_pointer++;
|
||||
SKIP_WHITESPACE ();
|
||||
if (*input_line_pointer == '\n')
|
||||
c = '\n';
|
||||
}
|
||||
}
|
||||
while (c == ',');
|
||||
demand_empty_rest_of_line ();
|
||||
}
|
||||
/* AmigaOS object file format
|
||||
Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
GAS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2,
|
||||
or (at your option) any later version.
|
||||
|
||||
GAS is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GAS; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
|
||||
#include "as.h"
|
||||
|
||||
enum {
|
||||
N_UNDF=0,
|
||||
/*N_ABS=2,*/
|
||||
/*N_TEXT=4,*/
|
||||
/*N_DATA=6,*/
|
||||
/*N_BSS=8,*/
|
||||
N_INDR=0xa,
|
||||
/*N_COMM=0x12,*/
|
||||
N_SETA=0x14,
|
||||
N_SETT=0x16,
|
||||
N_SETD=0x18,
|
||||
N_SETB=0x1a,
|
||||
/*N_SETV=0x1c,*/
|
||||
N_WARNING=0x1e,
|
||||
/*N_FN=0x1f*/
|
||||
N_EXT=1,
|
||||
N_TYPE=0x1e,
|
||||
/*N_STAB=0xe0,*/
|
||||
};
|
||||
|
||||
static void obj_amiga_line PARAMS ((int));
|
||||
static void obj_amiga_weak PARAMS ((int));
|
||||
static void obj_amiga_section PARAMS((int));
|
||||
static char * obj_amiga_section_name PARAMS ((void));
|
||||
|
||||
const pseudo_typeS obj_pseudo_table[] =
|
||||
{
|
||||
{"line", obj_amiga_line, 0}, /* source code line number */
|
||||
{"weak", obj_amiga_weak, 0}, /* mark symbol as weak. */
|
||||
|
||||
{"2byte", cons, 2},
|
||||
{"4byte", cons, 4},
|
||||
{"8byte", cons, 8},
|
||||
{"hidden", s_ignore, 0},
|
||||
{"local", s_ignore, 0},
|
||||
{"section", obj_amiga_section, 0},
|
||||
{"section.s", obj_amiga_section, 0},
|
||||
{"sect", obj_amiga_section, 0},
|
||||
{"sect.s", obj_amiga_section, 0},
|
||||
{"swbeg", s_ignore, 0},
|
||||
|
||||
/* other stuff */
|
||||
{"ABORT", s_abort, 0},
|
||||
|
||||
{NULL, NULL, 0} /* end sentinel */
|
||||
};
|
||||
|
||||
#ifdef BFD_ASSEMBLER
|
||||
|
||||
void
|
||||
obj_amiga_frob_symbol (sym, punt)
|
||||
symbolS *sym;
|
||||
int *punt ATTRIBUTE_UNUSED;
|
||||
{
|
||||
sec_ptr sec = S_GET_SEGMENT (sym);
|
||||
unsigned int type = amiga_symbol (symbol_get_bfdsym (sym))->type;
|
||||
|
||||
/* Only frob simple symbols this way right now. */
|
||||
if (! (type & ~ (N_TYPE | N_EXT)))
|
||||
{
|
||||
if (type == (N_UNDF | N_EXT)
|
||||
&& sec == &bfd_abs_section)
|
||||
{
|
||||
sec = bfd_und_section_ptr;
|
||||
S_SET_SEGMENT (sym, sec);
|
||||
}
|
||||
|
||||
if ((type & N_TYPE) != N_INDR
|
||||
&& (type & N_TYPE) != N_SETA
|
||||
&& (type & N_TYPE) != N_SETT
|
||||
&& (type & N_TYPE) != N_SETD
|
||||
&& (type & N_TYPE) != N_SETB
|
||||
&& type != N_WARNING
|
||||
&& (sec == &bfd_abs_section
|
||||
|| sec == &bfd_und_section))
|
||||
return;
|
||||
if (symbol_get_bfdsym (sym)->flags & BSF_EXPORT)
|
||||
type |= N_EXT;
|
||||
|
||||
switch (type & N_TYPE)
|
||||
{
|
||||
case N_SETA:
|
||||
case N_SETT:
|
||||
case N_SETD:
|
||||
case N_SETB:
|
||||
/* Set the debugging flag for constructor symbols so that
|
||||
BFD leaves them alone. */
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_DEBUGGING;
|
||||
|
||||
/* You can't put a common symbol in a set. The way a set
|
||||
element works is that the symbol has a definition and a
|
||||
name, and the linker adds the definition to the set of
|
||||
that name. That does not work for a common symbol,
|
||||
because the linker can't tell which common symbol the
|
||||
user means. FIXME: Using as_bad here may be
|
||||
inappropriate, since the user may want to force a
|
||||
particular type without regard to the semantics of sets;
|
||||
on the other hand, we certainly don't want anybody to be
|
||||
mislead into thinking that their code will work. */
|
||||
if (S_IS_COMMON (sym))
|
||||
as_bad (_("Attempt to put a common symbol into set %s"),
|
||||
S_GET_NAME (sym));
|
||||
/* Similarly, you can't put an undefined symbol in a set. */
|
||||
else if (! S_IS_DEFINED (sym))
|
||||
as_bad (_("Attempt to put an undefined symbol into set %s"),
|
||||
S_GET_NAME (sym));
|
||||
|
||||
break;
|
||||
case N_INDR:
|
||||
/* Put indirect symbols in the indirect section. */
|
||||
S_SET_SEGMENT (sym, bfd_ind_section_ptr);
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_INDIRECT;
|
||||
if (type & N_EXT)
|
||||
{
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_EXPORT;
|
||||
symbol_get_bfdsym (sym)->flags &=~ BSF_LOCAL;
|
||||
}
|
||||
break;
|
||||
case N_WARNING:
|
||||
/* Mark warning symbols. */
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_WARNING;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_DEBUGGING;
|
||||
}
|
||||
|
||||
amiga_symbol (symbol_get_bfdsym (sym))->type = type;
|
||||
|
||||
/* Double check weak symbols. */
|
||||
if (S_IS_WEAK (sym))
|
||||
{
|
||||
if (S_IS_COMMON (sym))
|
||||
as_bad (_("Symbol `%s' can not be both weak and common"),
|
||||
S_GET_NAME (sym));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
obj_amiga_frob_file_before_fix ()
|
||||
{
|
||||
/* Relocation processing may require knowing the VMAs of the sections.
|
||||
Since writing to a section will cause the BFD back end to compute the
|
||||
VMAs, fake it out here.... */
|
||||
bfd_byte b = 0;
|
||||
bfd_boolean x = TRUE;
|
||||
if (bfd_section_size (stdoutput, text_section) != 0)
|
||||
{
|
||||
x = bfd_set_section_contents (stdoutput, text_section, &b, (file_ptr) 0,
|
||||
(bfd_size_type) 1);
|
||||
}
|
||||
else if (bfd_section_size (stdoutput, data_section) != 0)
|
||||
{
|
||||
x = bfd_set_section_contents (stdoutput, data_section, &b, (file_ptr) 0,
|
||||
(bfd_size_type) 1);
|
||||
}
|
||||
assert (x);
|
||||
}
|
||||
|
||||
#endif /* BFD_ASSEMBLER */
|
||||
|
||||
/* Get name of section. */
|
||||
static char *
|
||||
obj_amiga_section_name ()
|
||||
{
|
||||
char *name;
|
||||
|
||||
SKIP_WHITESPACE ();
|
||||
if (*input_line_pointer == '"')
|
||||
{
|
||||
int dummy;
|
||||
|
||||
name = demand_copy_C_string (&dummy);
|
||||
if (name == NULL)
|
||||
{
|
||||
ignore_rest_of_line ();
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
char *end = input_line_pointer;
|
||||
|
||||
while (0 == strchr ("\n\t,; ", *end))
|
||||
end++;
|
||||
if (end == input_line_pointer)
|
||||
{
|
||||
as_warn (_("missing name"));
|
||||
ignore_rest_of_line ();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
name = xmalloc (end - input_line_pointer + 1);
|
||||
memcpy (name, input_line_pointer, end - input_line_pointer);
|
||||
name[end - input_line_pointer] = '\0';
|
||||
input_line_pointer = end;
|
||||
}
|
||||
SKIP_WHITESPACE ();
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
static void obj_amiga_section(int push) {
|
||||
char const * name = obj_amiga_section_name();
|
||||
if (name == NULL)
|
||||
return;
|
||||
|
||||
if (0 == strcmp(".rodata", name))
|
||||
s_text();
|
||||
else
|
||||
s_data();
|
||||
}
|
||||
|
||||
static void
|
||||
obj_amiga_line (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
{
|
||||
/* Assume delimiter is part of expression.
|
||||
BSD4.2 as fails with delightful bug, so we
|
||||
are not being incompatible here. */
|
||||
new_logical_line ((char *) NULL, (int) (get_absolute_expression ()));
|
||||
demand_empty_rest_of_line ();
|
||||
} /* obj_amiga_line() */
|
||||
|
||||
/* Handle .weak. This is a GNU extension. */
|
||||
|
||||
static void
|
||||
obj_amiga_weak (ignore)
|
||||
int ignore ATTRIBUTE_UNUSED;
|
||||
{
|
||||
char *name;
|
||||
int c;
|
||||
symbolS *symbolP;
|
||||
|
||||
do
|
||||
{
|
||||
name = input_line_pointer;
|
||||
c = get_symbol_end ();
|
||||
symbolP = symbol_find_or_make (name);
|
||||
*input_line_pointer = c;
|
||||
SKIP_WHITESPACE ();
|
||||
S_SET_WEAK (symbolP);
|
||||
if (c == ',')
|
||||
{
|
||||
input_line_pointer++;
|
||||
SKIP_WHITESPACE ();
|
||||
if (*input_line_pointer == '\n')
|
||||
c = '\n';
|
||||
}
|
||||
}
|
||||
while (c == ',');
|
||||
demand_empty_rest_of_line ();
|
||||
}
|
||||
|
|
|
@ -75,6 +75,8 @@ const segT N_TYPE_seg[N_TYPE + 2] =
|
|||
static void obj_aout_line PARAMS ((int));
|
||||
static void obj_aout_weak PARAMS ((int));
|
||||
static void obj_aout_type PARAMS ((int));
|
||||
static void obj_section PARAMS((int));
|
||||
static char * obj_section_name PARAMS ((void));
|
||||
|
||||
const pseudo_typeS aout_pseudo_table[] =
|
||||
{
|
||||
|
@ -100,6 +102,17 @@ const pseudo_typeS aout_pseudo_table[] =
|
|||
|
||||
{"optim", s_ignore, 0}, /* For sun386i cc (?) */
|
||||
|
||||
{"2byte", cons, 2},
|
||||
{"4byte", cons, 4},
|
||||
{"8byte", cons, 8},
|
||||
{"hidden", s_ignore, 0},
|
||||
{"local", s_ignore, 0},
|
||||
{"section", obj_section, 0},
|
||||
{"section.s", obj_section, 0},
|
||||
{"sect", obj_section, 0},
|
||||
{"sect.s", obj_section, 0},
|
||||
{"swbeg", s_ignore, 0},
|
||||
|
||||
/* other stuff */
|
||||
{"ABORT", s_abort, 0},
|
||||
|
||||
|
@ -229,6 +242,59 @@ obj_aout_frob_file_before_fix ()
|
|||
|
||||
#else /* ! BFD_ASSEMBLER */
|
||||
|
||||
/* Get name of section. */
|
||||
static char *
|
||||
obj_section_name ()
|
||||
{
|
||||
char *name;
|
||||
|
||||
SKIP_WHITESPACE ();
|
||||
if (*input_line_pointer == '"')
|
||||
{
|
||||
int dummy;
|
||||
|
||||
name = demand_copy_C_string (&dummy);
|
||||
if (name == NULL)
|
||||
{
|
||||
ignore_rest_of_line ();
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
char *end = input_line_pointer;
|
||||
|
||||
while (0 == strchr ("\n\t,; ", *end))
|
||||
end++;
|
||||
if (end == input_line_pointer)
|
||||
{
|
||||
as_warn (_("missing name"));
|
||||
ignore_rest_of_line ();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
name = xmalloc (end - input_line_pointer + 1);
|
||||
memcpy (name, input_line_pointer, end - input_line_pointer);
|
||||
name[end - input_line_pointer] = '\0';
|
||||
input_line_pointer = end;
|
||||
}
|
||||
SKIP_WHITESPACE ();
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
static void obj_section(int push) {
|
||||
char const * name = obj_section_name();
|
||||
if (name == NULL)
|
||||
return;
|
||||
|
||||
if (0 == strcmp(".rodata", name))
|
||||
s_text(push);
|
||||
else
|
||||
s_data(push);
|
||||
}
|
||||
|
||||
|
||||
/* Relocation. */
|
||||
|
||||
/*
|
||||
|
|
|
@ -132,6 +132,10 @@ int elf_s_get_other PARAMS ((symbolS *));
|
|||
(elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_other = (V))
|
||||
#endif
|
||||
|
||||
#ifndef S_GET_TYPE
|
||||
#define S_GET_TYPE(S) (0)
|
||||
#endif
|
||||
|
||||
extern asection *gdb_section;
|
||||
|
||||
#ifndef obj_frob_file
|
||||
|
|
19
gas/read.c
19
gas/read.c
|
@ -237,6 +237,10 @@ static segT get_known_segmented_expression PARAMS ((expressionS * expP));
|
|||
static void pobegin PARAMS ((void));
|
||||
static int get_line_sb PARAMS ((sb *));
|
||||
static void generate_file_debug PARAMS ((void));
|
||||
void ignore_rest_of_line (void);
|
||||
static void ignore_rest_of_line2 (int);
|
||||
|
||||
|
||||
|
||||
void
|
||||
read_begin ()
|
||||
|
@ -1425,7 +1429,8 @@ s_comm (ignore)
|
|||
#endif /* not OBJ_VMS */
|
||||
know (symbolP->sy_frag == &zero_address_frag);
|
||||
|
||||
demand_empty_rest_of_line ();
|
||||
ignore_rest_of_line2 (0);
|
||||
// demand_empty_rest_of_line ();
|
||||
|
||||
if (flag_mri)
|
||||
mri_comment_end (stop, stopc);
|
||||
|
@ -3167,15 +3172,21 @@ demand_empty_rest_of_line ()
|
|||
|
||||
void
|
||||
ignore_rest_of_line ()
|
||||
{
|
||||
ignore_rest_of_line2(1);
|
||||
}
|
||||
|
||||
void
|
||||
ignore_rest_of_line2 (int out)
|
||||
{
|
||||
/* For suspect lines: gives warning. */
|
||||
if (!is_end_of_line[(unsigned char) *input_line_pointer])
|
||||
{
|
||||
if (ISPRINT (*input_line_pointer))
|
||||
as_warn (_("rest of line ignored; first ignored character is `%c'"),
|
||||
if (out) as_warn (_("rest of line ignored; first ignored character is `%c'"),
|
||||
*input_line_pointer);
|
||||
else
|
||||
as_warn (_("rest of line ignored; first ignored character valued 0x%x"),
|
||||
if (out) as_warn (_("rest of line ignored; first ignored character valued 0x%x"),
|
||||
*input_line_pointer);
|
||||
|
||||
while (input_line_pointer < buffer_limit
|
||||
|
@ -3355,7 +3366,7 @@ parse_repeat_cons PARAMS ((expressionS *exp, unsigned int nbytes));
|
|||
|
||||
static void
|
||||
cons_worker (nbytes, rva)
|
||||
register int nbytes; /* 1=.byte, 2=.word, 4=.long. */
|
||||
register int nbytes; /* 1=.byte, 2=.word, 4=.long, 8=.8bytes. */
|
||||
int rva;
|
||||
{
|
||||
int c;
|
||||
|
|
|
@ -192,7 +192,7 @@ TODO acinclude.m4 aclocal.m4 configure configure.in gconfig.in
|
|||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = gtar
|
||||
TAR = tar
|
||||
GZIP_ENV = --best
|
||||
SOURCES = $(gprof_SOURCES)
|
||||
OBJECTS = $(gprof_OBJECTS)
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
/* Header file the type CGEN_BITSET.
|
||||
|
||||
Copyright 2002, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB, the GNU debugger, and the GNU Binutils.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
#ifndef CGEN_BITSET_H
|
||||
#define CGEN_BITSET_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* A bitmask represented as a string.
|
||||
Each member of the set is represented as a bit
|
||||
in the string. Bytes are indexed from left to right in the string and
|
||||
bits from most significant to least within each byte.
|
||||
|
||||
For example, the bit representing member number 6 is (set->bits[0] & 0x02).
|
||||
*/
|
||||
typedef struct cgen_bitset
|
||||
{
|
||||
unsigned length;
|
||||
char *bits;
|
||||
} CGEN_BITSET;
|
||||
|
||||
extern CGEN_BITSET *cgen_bitset_create PARAMS ((unsigned));
|
||||
extern void cgen_bitset_init PARAMS ((CGEN_BITSET *, unsigned));
|
||||
extern void cgen_bitset_clear PARAMS ((CGEN_BITSET *));
|
||||
extern void cgen_bitset_add PARAMS ((CGEN_BITSET *, unsigned));
|
||||
extern void cgen_bitset_set PARAMS ((CGEN_BITSET *, unsigned));
|
||||
extern int cgen_bitset_compare PARAMS ((CGEN_BITSET *, CGEN_BITSET *));
|
||||
extern void cgen_bitset_union PARAMS ((CGEN_BITSET *, CGEN_BITSET *, CGEN_BITSET *));
|
||||
extern int cgen_bitset_intersect_p PARAMS ((CGEN_BITSET *, CGEN_BITSET *));
|
||||
extern int cgen_bitset_contains PARAMS ((CGEN_BITSET *, unsigned));
|
||||
extern CGEN_BITSET *cgen_bitset_copy PARAMS ((CGEN_BITSET *));
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -341,7 +341,7 @@ sh64-*-elf*)
|
|||
m68k-sony-*) targ_emul=news ;;
|
||||
m68k-hp-bsd*) targ_emul=hp300bsd ;;
|
||||
m68*-motorola-sysv*) targ_emul=delta68 ;;
|
||||
m68*-*-amigaos*) targ_emul=amiga ; targ_extra_emuls=amiga_bss;;
|
||||
m68*-amigaos* | m68*-*-amigaos*) targ_emul=amiga ; targ_extra_emuls=amiga_bss;;
|
||||
m68*-*-aout) targ_emul=m68kaout ;;
|
||||
m68*-*-coff) targ_emul=m68kcoff ;;
|
||||
m68*-*-elf) targ_emul=m68kelf ;;
|
||||
|
|
|
@ -4,3 +4,4 @@ TEXT_START_ADDR=0x0
|
|||
SEGMENT_SIZE=0x0
|
||||
TEMPLATE_NAME=amiga
|
||||
ARCH=m68k
|
||||
EMULATION_NAME=amiga
|
|
@ -4,3 +4,4 @@ TEXT_START_ADDR=0x0
|
|||
SEGMENT_SIZE=0x0
|
||||
TEMPLATE_NAME=amiga
|
||||
ARCH=m68k
|
||||
EMULATION_NAME=amiga_bss
|
5
ltconfig
5
ltconfig
|
@ -1038,10 +1038,9 @@ aix4* | aix5*)
|
|||
;;
|
||||
|
||||
amigaos*)
|
||||
library_names_spec='$libname.library $libname.a'
|
||||
library_names_spec='$libname.ixlibrary $libname.a'
|
||||
# Create ${libname}_ixlibrary.a entries in /sys/libs.
|
||||
#FIXME: finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
|
||||
finish_eval='/bin/true';
|
||||
finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
|
||||
;;
|
||||
|
||||
beos*)
|
||||
|
|
8
md5.sum
8
md5.sum
|
@ -5424,3 +5424,11 @@ aa9faff15fc4bc65940d62236b7f1de8 opcodes/z8k-opc.h
|
|||
671f95a4f3f078b483390601bc8a729d symlink-tree
|
||||
869b0770320db2cd18093b1a9ffafef8 texinfo/texinfo.tex
|
||||
7588c5103af27cc93537977f059f52dc ylwrap
|
||||
148fad0cc1f763de146e8b24585ecc7c cgen/cpu/fr30.cpu
|
||||
9c5d5fa5b445b9355b85077bd49a5f97 cgen/cpu/fr30.opc
|
||||
75592d87915e75debae73108ddc302b2 cgen/cpu/ip2k.cpu
|
||||
8d5edda5f98445600dee230f555a2456 cgen/cpu/ip2k.opc
|
||||
867a60d05d64405fdb1ef21000caeedc cgen/cpu/openrisc.cpu
|
||||
945e53326e14b969cd64bb0cb5a37c30 cgen/cpu/openrisc.opc
|
||||
660d36f7635ce300de54206767f36c5b cgen/cpu/xstormy16.cpu
|
||||
ce470f63afdfaaaffd13956b0d3b51db cgen/cpu/xstormy16.opc
|
||||
|
|
Loading…
Reference in New Issue