@R changes to work with gcc-6.2.0

This commit is contained in:
bebbo 2016-11-28 22:19:06 +01:00
parent ce410ad89a
commit 590f1f95a2
14 changed files with 446 additions and 235 deletions

View File

@ -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 # sub-makes. It lets flags be given on the command line while still
# using the makeinfo from the object tree. # using the makeinfo from the object tree.
# (Default to avoid splitting info files.) # (Default to avoid splitting info files.)
MAKEINFOFLAGS = --no-split MAKEINFOFLAGS = --no-split --force
EXPECT = `if [ -f $$r/expect/expect ] ; \ EXPECT = `if [ -f $$r/expect/expect ] ; \
then echo $$r/expect/expect ; \ then echo $$r/expect/expect ; \

View File

@ -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 # sub-makes. It lets flags be given on the command line while still
# using the makeinfo from the object tree. # using the makeinfo from the object tree.
# (Default to avoid splitting info files.) # (Default to avoid splitting info files.)
MAKEINFOFLAGS = --no-split MAKEINFOFLAGS = --no-split --force
EXPECT = `if [ -f $$r/expect/expect ] ; \ EXPECT = `if [ -f $$r/expect/expect ] ; \
then echo $$r/expect/expect ; \ then echo $$r/expect/expect ; \

View File

@ -351,6 +351,8 @@ do_scrub_chars (get, tostart, tolen)
char *fromend; char *fromend;
int fromlen; int fromlen;
register int ch, ch2 = 0; register int ch, ch2 = 0;
/* Character that started the string we're working on. */
static char quotechar;
/*State 0: beginning of normal line /*State 0: beginning of normal line
1: After first whitespace on line (flush more white) 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++) for (s = from; s < fromend; s++)
{ {
ch = *s; ch = *s;
/* This condition must be changed if the type of any
other character can be LEX_IS_STRINGQUOTE. */
if (ch == '\\' if (ch == '\\'
|| ch == '"' || ch == quotechar
|| ch == '\''
|| ch == '\n') || ch == '\n')
break; break;
} }
@ -558,12 +557,12 @@ do_scrub_chars (get, tostart, tolen)
ch = GET (); ch = GET ();
if (ch == EOF) if (ch == EOF)
{ {
as_warn (_("end of file in string; inserted '\"'")); as_warn (_("end of file in string; '%c' inserted"), quotechar);
state = old_state; state = old_state;
UNGET ('\n'); UNGET ('\n');
PUT ('"'); PUT (quotechar);
} }
else if (lex[ch] == LEX_IS_STRINGQUOTE) else if (ch == quotechar)
{ {
state = old_state; state = old_state;
PUT (ch); PUT (ch);
@ -603,8 +602,8 @@ do_scrub_chars (get, tostart, tolen)
continue; continue;
case EOF: case EOF:
as_warn (_("end of file in string; '\"' inserted")); as_warn (_("end of file in string; '%c' inserted"), quotechar);
PUT ('"'); PUT (quotechar);
continue; continue;
case '"': case '"':
@ -638,10 +637,9 @@ do_scrub_chars (get, tostart, tolen)
case 7: case 7:
ch = GET (); ch = GET ();
quotechar = ch;
state = 5; state = 5;
old_state = 8; old_state = 8;
if (ch == EOF)
goto fromeof;
PUT (ch); PUT (ch);
continue; continue;
@ -952,6 +950,7 @@ do_scrub_chars (get, tostart, tolen)
break; break;
case LEX_IS_STRINGQUOTE: case LEX_IS_STRINGQUOTE:
quotechar = ch;
if (state == 10) if (state == 10)
{ {
/* Preserve the whitespace in foo "bar". */ /* Preserve the whitespace in foo "bar". */
@ -1279,6 +1278,8 @@ do_scrub_chars (get, tostart, tolen)
case 1: *to++ = *from++; case 1: *to++ = *from++;
} }
} }
if (to >= toend)
goto tofull;
ch = GET (); ch = GET ();
} }
} }
@ -1297,7 +1298,7 @@ do_scrub_chars (get, tostart, tolen)
} }
else if (state == 9) else if (state == 9)
{ {
if (lex[ch] != LEX_IS_SYMBOL_COMPONENT) if (!IS_SYMBOL_COMPONENT (ch))
state = 3; state = 3;
} }
else if (state == 10) else if (state == 10)

View File

@ -1,212 +1,277 @@
/* AmigaOS object file format /* AmigaOS object file format
Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc. Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler. This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2, published by the Free Software Foundation; either version 2,
or (at your option) any later version. or (at your option) any later version.
GAS is distributed in the hope that it will be useful, but GAS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details. the GNU General Public License for more details.
You should have received a copy of the GNU General Public License 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 along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */ 02111-1307, USA. */
#include "as.h" #include "as.h"
enum { enum {
N_UNDF=0, N_UNDF=0,
/*N_ABS=2,*/ /*N_ABS=2,*/
/*N_TEXT=4,*/ /*N_TEXT=4,*/
/*N_DATA=6,*/ /*N_DATA=6,*/
/*N_BSS=8,*/ /*N_BSS=8,*/
N_INDR=0xa, N_INDR=0xa,
/*N_COMM=0x12,*/ /*N_COMM=0x12,*/
N_SETA=0x14, N_SETA=0x14,
N_SETT=0x16, N_SETT=0x16,
N_SETD=0x18, N_SETD=0x18,
N_SETB=0x1a, N_SETB=0x1a,
/*N_SETV=0x1c,*/ /*N_SETV=0x1c,*/
N_WARNING=0x1e, N_WARNING=0x1e,
/*N_FN=0x1f*/ /*N_FN=0x1f*/
N_EXT=1, N_EXT=1,
N_TYPE=0x1e, N_TYPE=0x1e,
/*N_STAB=0xe0,*/ /*N_STAB=0xe0,*/
}; };
static void obj_amiga_line PARAMS ((int)); static void obj_amiga_line PARAMS ((int));
static void obj_amiga_weak PARAMS ((int)); static void obj_amiga_weak PARAMS ((int));
static void obj_amiga_section PARAMS((int));
const pseudo_typeS obj_pseudo_table[] = static char * obj_amiga_section_name PARAMS ((void));
{
{"line", obj_amiga_line, 0}, /* source code line number */ const pseudo_typeS obj_pseudo_table[] =
{"weak", obj_amiga_weak, 0}, /* mark symbol as weak. */ {
{"line", obj_amiga_line, 0}, /* source code line number */
/* other stuff */ {"weak", obj_amiga_weak, 0}, /* mark symbol as weak. */
{"ABORT", s_abort, 0},
{"2byte", cons, 2},
{NULL, NULL, 0} /* end sentinel */ {"4byte", cons, 4},
}; {"8byte", cons, 8},
{"hidden", s_ignore, 0},
#ifdef BFD_ASSEMBLER {"local", s_ignore, 0},
{"section", obj_amiga_section, 0},
void {"section.s", obj_amiga_section, 0},
obj_amiga_frob_symbol (sym, punt) {"sect", obj_amiga_section, 0},
symbolS *sym; {"sect.s", obj_amiga_section, 0},
int *punt ATTRIBUTE_UNUSED; {"swbeg", s_ignore, 0},
{
sec_ptr sec = S_GET_SEGMENT (sym); /* other stuff */
unsigned int type = amiga_symbol (symbol_get_bfdsym (sym))->type; {"ABORT", s_abort, 0},
/* Only frob simple symbols this way right now. */ {NULL, NULL, 0} /* end sentinel */
if (! (type & ~ (N_TYPE | N_EXT))) };
{
if (type == (N_UNDF | N_EXT) #ifdef BFD_ASSEMBLER
&& sec == &bfd_abs_section)
{ void
sec = bfd_und_section_ptr; obj_amiga_frob_symbol (sym, punt)
S_SET_SEGMENT (sym, sec); symbolS *sym;
} int *punt ATTRIBUTE_UNUSED;
{
if ((type & N_TYPE) != N_INDR sec_ptr sec = S_GET_SEGMENT (sym);
&& (type & N_TYPE) != N_SETA unsigned int type = amiga_symbol (symbol_get_bfdsym (sym))->type;
&& (type & N_TYPE) != N_SETT
&& (type & N_TYPE) != N_SETD /* Only frob simple symbols this way right now. */
&& (type & N_TYPE) != N_SETB if (! (type & ~ (N_TYPE | N_EXT)))
&& type != N_WARNING {
&& (sec == &bfd_abs_section if (type == (N_UNDF | N_EXT)
|| sec == &bfd_und_section)) && sec == &bfd_abs_section)
return; {
if (symbol_get_bfdsym (sym)->flags & BSF_EXPORT) sec = bfd_und_section_ptr;
type |= N_EXT; S_SET_SEGMENT (sym, sec);
}
switch (type & N_TYPE)
{ if ((type & N_TYPE) != N_INDR
case N_SETA: && (type & N_TYPE) != N_SETA
case N_SETT: && (type & N_TYPE) != N_SETT
case N_SETD: && (type & N_TYPE) != N_SETD
case N_SETB: && (type & N_TYPE) != N_SETB
/* Set the debugging flag for constructor symbols so that && type != N_WARNING
BFD leaves them alone. */ && (sec == &bfd_abs_section
symbol_get_bfdsym (sym)->flags |= BSF_DEBUGGING; || sec == &bfd_und_section))
return;
/* You can't put a common symbol in a set. The way a set if (symbol_get_bfdsym (sym)->flags & BSF_EXPORT)
element works is that the symbol has a definition and a type |= N_EXT;
name, and the linker adds the definition to the set of
that name. That does not work for a common symbol, switch (type & N_TYPE)
because the linker can't tell which common symbol the {
user means. FIXME: Using as_bad here may be case N_SETA:
inappropriate, since the user may want to force a case N_SETT:
particular type without regard to the semantics of sets; case N_SETD:
on the other hand, we certainly don't want anybody to be case N_SETB:
mislead into thinking that their code will work. */ /* Set the debugging flag for constructor symbols so that
if (S_IS_COMMON (sym)) BFD leaves them alone. */
as_bad (_("Attempt to put a common symbol into set %s"), symbol_get_bfdsym (sym)->flags |= BSF_DEBUGGING;
S_GET_NAME (sym));
/* Similarly, you can't put an undefined symbol in a set. */ /* You can't put a common symbol in a set. The way a set
else if (! S_IS_DEFINED (sym)) element works is that the symbol has a definition and a
as_bad (_("Attempt to put an undefined symbol into set %s"), name, and the linker adds the definition to the set of
S_GET_NAME (sym)); that name. That does not work for a common symbol,
because the linker can't tell which common symbol the
break; user means. FIXME: Using as_bad here may be
case N_INDR: inappropriate, since the user may want to force a
/* Put indirect symbols in the indirect section. */ particular type without regard to the semantics of sets;
S_SET_SEGMENT (sym, bfd_ind_section_ptr); on the other hand, we certainly don't want anybody to be
symbol_get_bfdsym (sym)->flags |= BSF_INDIRECT; mislead into thinking that their code will work. */
if (type & N_EXT) if (S_IS_COMMON (sym))
{ as_bad (_("Attempt to put a common symbol into set %s"),
symbol_get_bfdsym (sym)->flags |= BSF_EXPORT; S_GET_NAME (sym));
symbol_get_bfdsym (sym)->flags &=~ BSF_LOCAL; /* Similarly, you can't put an undefined symbol in a set. */
} else if (! S_IS_DEFINED (sym))
break; as_bad (_("Attempt to put an undefined symbol into set %s"),
case N_WARNING: S_GET_NAME (sym));
/* Mark warning symbols. */
symbol_get_bfdsym (sym)->flags |= BSF_WARNING; break;
break; case N_INDR:
} /* Put indirect symbols in the indirect section. */
} S_SET_SEGMENT (sym, bfd_ind_section_ptr);
else symbol_get_bfdsym (sym)->flags |= BSF_INDIRECT;
{ if (type & N_EXT)
symbol_get_bfdsym (sym)->flags |= BSF_DEBUGGING; {
} symbol_get_bfdsym (sym)->flags |= BSF_EXPORT;
symbol_get_bfdsym (sym)->flags &=~ BSF_LOCAL;
amiga_symbol (symbol_get_bfdsym (sym))->type = type; }
break;
/* Double check weak symbols. */ case N_WARNING:
if (S_IS_WEAK (sym)) /* Mark warning symbols. */
{ symbol_get_bfdsym (sym)->flags |= BSF_WARNING;
if (S_IS_COMMON (sym)) break;
as_bad (_("Symbol `%s' can not be both weak and common"), }
S_GET_NAME (sym)); }
} else
} {
symbol_get_bfdsym (sym)->flags |= BSF_DEBUGGING;
void }
obj_amiga_frob_file_before_fix ()
{ amiga_symbol (symbol_get_bfdsym (sym))->type = type;
/* Relocation processing may require knowing the VMAs of the sections.
Since writing to a section will cause the BFD back end to compute the /* Double check weak symbols. */
VMAs, fake it out here.... */ if (S_IS_WEAK (sym))
bfd_byte b = 0; {
bfd_boolean x = TRUE; if (S_IS_COMMON (sym))
if (bfd_section_size (stdoutput, text_section) != 0) as_bad (_("Symbol `%s' can not be both weak and common"),
{ S_GET_NAME (sym));
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) void
{ obj_amiga_frob_file_before_fix ()
x = bfd_set_section_contents (stdoutput, data_section, &b, (file_ptr) 0, {
(bfd_size_type) 1); /* Relocation processing may require knowing the VMAs of the sections.
} Since writing to a section will cause the BFD back end to compute the
assert (x); VMAs, fake it out here.... */
} bfd_byte b = 0;
bfd_boolean x = TRUE;
#endif /* BFD_ASSEMBLER */ if (bfd_section_size (stdoutput, text_section) != 0)
{
static void x = bfd_set_section_contents (stdoutput, text_section, &b, (file_ptr) 0,
obj_amiga_line (ignore) (bfd_size_type) 1);
int ignore ATTRIBUTE_UNUSED; }
{ else if (bfd_section_size (stdoutput, data_section) != 0)
/* Assume delimiter is part of expression. {
BSD4.2 as fails with delightful bug, so we x = bfd_set_section_contents (stdoutput, data_section, &b, (file_ptr) 0,
are not being incompatible here. */ (bfd_size_type) 1);
new_logical_line ((char *) NULL, (int) (get_absolute_expression ())); }
demand_empty_rest_of_line (); assert (x);
} /* obj_amiga_line() */ }
/* Handle .weak. This is a GNU extension. */ #endif /* BFD_ASSEMBLER */
static void /* Get name of section. */
obj_amiga_weak (ignore) static char *
int ignore ATTRIBUTE_UNUSED; obj_amiga_section_name ()
{ {
char *name; char *name;
int c;
symbolS *symbolP; SKIP_WHITESPACE ();
if (*input_line_pointer == '"')
do {
{ int dummy;
name = input_line_pointer;
c = get_symbol_end (); name = demand_copy_C_string (&dummy);
symbolP = symbol_find_or_make (name); if (name == NULL)
*input_line_pointer = c; {
SKIP_WHITESPACE (); ignore_rest_of_line ();
S_SET_WEAK (symbolP); return NULL;
if (c == ',') }
{ }
input_line_pointer++; else
SKIP_WHITESPACE (); {
if (*input_line_pointer == '\n') char *end = input_line_pointer;
c = '\n';
} while (0 == strchr ("\n\t,; ", *end))
} end++;
while (c == ','); if (end == input_line_pointer)
demand_empty_rest_of_line (); {
} 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 ();
}

View File

@ -75,6 +75,8 @@ const segT N_TYPE_seg[N_TYPE + 2] =
static void obj_aout_line PARAMS ((int)); static void obj_aout_line PARAMS ((int));
static void obj_aout_weak PARAMS ((int)); static void obj_aout_weak PARAMS ((int));
static void obj_aout_type 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[] = const pseudo_typeS aout_pseudo_table[] =
{ {
@ -100,6 +102,17 @@ const pseudo_typeS aout_pseudo_table[] =
{"optim", s_ignore, 0}, /* For sun386i cc (?) */ {"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 */ /* other stuff */
{"ABORT", s_abort, 0}, {"ABORT", s_abort, 0},
@ -229,6 +242,59 @@ obj_aout_frob_file_before_fix ()
#else /* ! BFD_ASSEMBLER */ #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. */ /* Relocation. */
/* /*

View File

@ -132,6 +132,10 @@ int elf_s_get_other PARAMS ((symbolS *));
(elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_other = (V)) (elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_other = (V))
#endif #endif
#ifndef S_GET_TYPE
#define S_GET_TYPE(S) (0)
#endif
extern asection *gdb_section; extern asection *gdb_section;
#ifndef obj_frob_file #ifndef obj_frob_file

View File

@ -237,6 +237,10 @@ static segT get_known_segmented_expression PARAMS ((expressionS * expP));
static void pobegin PARAMS ((void)); static void pobegin PARAMS ((void));
static int get_line_sb PARAMS ((sb *)); static int get_line_sb PARAMS ((sb *));
static void generate_file_debug PARAMS ((void)); static void generate_file_debug PARAMS ((void));
void ignore_rest_of_line (void);
static void ignore_rest_of_line2 (int);
void void
read_begin () read_begin ()
@ -1425,7 +1429,8 @@ s_comm (ignore)
#endif /* not OBJ_VMS */ #endif /* not OBJ_VMS */
know (symbolP->sy_frag == &zero_address_frag); 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) if (flag_mri)
mri_comment_end (stop, stopc); mri_comment_end (stop, stopc);
@ -3167,15 +3172,21 @@ demand_empty_rest_of_line ()
void void
ignore_rest_of_line () ignore_rest_of_line ()
{
ignore_rest_of_line2(1);
}
void
ignore_rest_of_line2 (int out)
{ {
/* For suspect lines: gives warning. */ /* For suspect lines: gives warning. */
if (!is_end_of_line[(unsigned char) *input_line_pointer]) if (!is_end_of_line[(unsigned char) *input_line_pointer])
{ {
if (ISPRINT (*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); *input_line_pointer);
else 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); *input_line_pointer);
while (input_line_pointer < buffer_limit while (input_line_pointer < buffer_limit
@ -3355,7 +3366,7 @@ parse_repeat_cons PARAMS ((expressionS *exp, unsigned int nbytes));
static void static void
cons_worker (nbytes, rva) 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 rva;
{ {
int c; int c;

View File

@ -192,7 +192,7 @@ TODO acinclude.m4 aclocal.m4 configure configure.in gconfig.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = gtar TAR = tar
GZIP_ENV = --best GZIP_ENV = --best
SOURCES = $(gprof_SOURCES) SOURCES = $(gprof_SOURCES)
OBJECTS = $(gprof_OBJECTS) OBJECTS = $(gprof_OBJECTS)

55
include/opcode/cgen-bitset.h Executable file
View File

@ -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

View File

@ -341,7 +341,7 @@ sh64-*-elf*)
m68k-sony-*) targ_emul=news ;; m68k-sony-*) targ_emul=news ;;
m68k-hp-bsd*) targ_emul=hp300bsd ;; m68k-hp-bsd*) targ_emul=hp300bsd ;;
m68*-motorola-sysv*) targ_emul=delta68 ;; 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*-*-aout) targ_emul=m68kaout ;;
m68*-*-coff) targ_emul=m68kcoff ;; m68*-*-coff) targ_emul=m68kcoff ;;
m68*-*-elf) targ_emul=m68kelf ;; m68*-*-elf) targ_emul=m68kelf ;;

View File

@ -4,3 +4,4 @@ TEXT_START_ADDR=0x0
SEGMENT_SIZE=0x0 SEGMENT_SIZE=0x0
TEMPLATE_NAME=amiga TEMPLATE_NAME=amiga
ARCH=m68k ARCH=m68k
EMULATION_NAME=amiga

View File

@ -4,3 +4,4 @@ TEXT_START_ADDR=0x0
SEGMENT_SIZE=0x0 SEGMENT_SIZE=0x0
TEMPLATE_NAME=amiga TEMPLATE_NAME=amiga
ARCH=m68k ARCH=m68k
EMULATION_NAME=amiga_bss

View File

@ -1038,10 +1038,9 @@ aix4* | aix5*)
;; ;;
amigaos*) amigaos*)
library_names_spec='$libname.library $libname.a' library_names_spec='$libname.ixlibrary $libname.a'
# Create ${libname}_ixlibrary.a entries in /sys/libs. # 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='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';
;; ;;
beos*) beos*)

View File

@ -5424,3 +5424,11 @@ aa9faff15fc4bc65940d62236b7f1de8 opcodes/z8k-opc.h
671f95a4f3f078b483390601bc8a729d symlink-tree 671f95a4f3f078b483390601bc8a729d symlink-tree
869b0770320db2cd18093b1a9ffafef8 texinfo/texinfo.tex 869b0770320db2cd18093b1a9ffafef8 texinfo/texinfo.tex
7588c5103af27cc93537977f059f52dc ylwrap 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