2000-09-09 Kazu Hirata <kazu@hxi.com>
* input-file.c: Fix formatting. * itbl-ops.c: Likewise. * messages.c: Likewise.
This commit is contained in:
parent
27985c55a4
commit
c488923f16
4 changed files with 76 additions and 80 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2000-09-09 Kazu Hirata <kazu@hxi.com>
|
||||||
|
|
||||||
|
* input-file.c: Fix formatting.
|
||||||
|
* itbl-ops.c: Likewise.
|
||||||
|
* messages.c: Likewise.
|
||||||
|
|
||||||
2000-09-08 Philip Blundell <philb@gnu.org>
|
2000-09-08 Philip Blundell <philb@gnu.org>
|
||||||
|
|
||||||
* config/tc-arm.c (md_apply_fix3): Correct handling of ADRL when
|
* config/tc-arm.c (md_apply_fix3): Correct handling of ADRL when
|
||||||
|
|
|
@ -65,27 +65,27 @@ struct saved_file
|
||||||
char *app_save;
|
char *app_save;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* These hooks accomodate most operating systems. */
|
/* These hooks accomodate most operating systems. */
|
||||||
|
|
||||||
void
|
void
|
||||||
input_file_begin ()
|
input_file_begin ()
|
||||||
{
|
{
|
||||||
f_in = (FILE *) 0;
|
f_in = (FILE *) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
input_file_end ()
|
input_file_end ()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return BUFFER_SIZE. */
|
/* Return BUFFER_SIZE. */
|
||||||
unsigned int
|
unsigned int
|
||||||
input_file_buffer_size ()
|
input_file_buffer_size ()
|
||||||
{
|
{
|
||||||
return (BUFFER_SIZE);
|
return (BUFFER_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
input_file_is_open ()
|
input_file_is_open ()
|
||||||
{
|
{
|
||||||
return f_in != (FILE *) 0;
|
return f_in != (FILE *) 0;
|
||||||
|
@ -130,7 +130,7 @@ input_file_pop (arg)
|
||||||
|
|
||||||
void
|
void
|
||||||
input_file_open (filename, pre)
|
input_file_open (filename, pre)
|
||||||
char *filename; /* "" means use stdin. Must not be 0. */
|
char *filename; /* "" means use stdin. Must not be 0. */
|
||||||
int pre;
|
int pre;
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
|
@ -138,16 +138,16 @@ input_file_open (filename, pre)
|
||||||
|
|
||||||
preprocess = pre;
|
preprocess = pre;
|
||||||
|
|
||||||
assert (filename != 0); /* Filename may not be NULL. */
|
assert (filename != 0); /* Filename may not be NULL. */
|
||||||
if (filename[0])
|
if (filename[0])
|
||||||
{ /* We have a file name. Suck it and see. */
|
{ /* We have a file name. Suck it and see. */
|
||||||
f_in = fopen (filename, "r");
|
f_in = fopen (filename, "r");
|
||||||
file_name = filename;
|
file_name = filename;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ /* use stdin for the input file. */
|
{ /* use stdin for the input file. */
|
||||||
f_in = stdin;
|
f_in = stdin;
|
||||||
file_name = _("{standard input}"); /* For error messages. */
|
file_name = _("{standard input}"); /* For error messages. */
|
||||||
}
|
}
|
||||||
if (f_in == (FILE *) 0)
|
if (f_in == (FILE *) 0)
|
||||||
{
|
{
|
||||||
|
@ -180,7 +180,7 @@ input_file_open (filename, pre)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Close input file. */
|
/* Close input file. */
|
||||||
void
|
void
|
||||||
input_file_close ()
|
input_file_close ()
|
||||||
{
|
{
|
||||||
if (f_in != NULL)
|
if (f_in != NULL)
|
||||||
|
@ -212,9 +212,9 @@ input_file_get (buf, buflen)
|
||||||
|
|
||||||
char *
|
char *
|
||||||
input_file_give_next_buffer (where)
|
input_file_give_next_buffer (where)
|
||||||
char *where; /* Where to place 1st character of new buffer. */
|
char *where; /* Where to place 1st character of new buffer. */
|
||||||
{
|
{
|
||||||
char *return_value; /* -> Last char of what we read, + 1. */
|
char *return_value; /* -> Last char of what we read, + 1. */
|
||||||
register int size;
|
register int size;
|
||||||
|
|
||||||
if (f_in == (FILE *) 0)
|
if (f_in == (FILE *) 0)
|
||||||
|
|
|
@ -128,12 +128,11 @@ struct itbl_field
|
||||||
struct itbl_field *next; /* next field in list */
|
struct itbl_field *next; /* next field in list */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* These structures define the instructions and registers for a processor.
|
/* These structures define the instructions and registers for a processor.
|
||||||
* If the type is an instruction, the structure defines the format of an
|
* If the type is an instruction, the structure defines the format of an
|
||||||
* instruction where the fields are the list of operands.
|
* instruction where the fields are the list of operands.
|
||||||
* The flags field below uses the same values as those defined in the
|
* The flags field below uses the same values as those defined in the
|
||||||
* gnu assembler and are machine specific. */
|
* gnu assembler and are machine specific. */
|
||||||
struct itbl_entry
|
struct itbl_entry
|
||||||
{
|
{
|
||||||
e_processor processor; /* processor number */
|
e_processor processor; /* processor number */
|
||||||
|
@ -146,7 +145,6 @@ struct itbl_entry
|
||||||
struct itbl_entry *next; /* next entry */
|
struct itbl_entry *next; /* next entry */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* local data and structures */
|
/* local data and structures */
|
||||||
|
|
||||||
static int itbl_num_opcodes = 0;
|
static int itbl_num_opcodes = 0;
|
||||||
|
@ -163,30 +161,28 @@ static struct itbl_entry *entries[e_nprocs][e_ntypes] =
|
||||||
static unsigned long build_opcode PARAMS ((struct itbl_entry *e));
|
static unsigned long build_opcode PARAMS ((struct itbl_entry *e));
|
||||||
static e_type get_type PARAMS ((int yytype));
|
static e_type get_type PARAMS ((int yytype));
|
||||||
static e_processor get_processor PARAMS ((int yyproc));
|
static e_processor get_processor PARAMS ((int yyproc));
|
||||||
static struct itbl_entry **get_entries PARAMS ((e_processor processor,
|
static struct itbl_entry **get_entries PARAMS ((e_processor processor,
|
||||||
e_type type));
|
e_type type));
|
||||||
static struct itbl_entry *find_entry_byname PARAMS ((e_processor processor,
|
static struct itbl_entry *find_entry_byname PARAMS ((e_processor processor,
|
||||||
e_type type, char *name));
|
e_type type, char *name));
|
||||||
static struct itbl_entry *find_entry_byval PARAMS ((e_processor processor,
|
static struct itbl_entry *find_entry_byval PARAMS ((e_processor processor,
|
||||||
e_type type, unsigned long val, struct itbl_range *r));
|
e_type type, unsigned long val, struct itbl_range *r));
|
||||||
static struct itbl_entry *alloc_entry PARAMS ((e_processor processor,
|
static struct itbl_entry *alloc_entry PARAMS ((e_processor processor,
|
||||||
e_type type, char *name, unsigned long value));
|
e_type type, char *name, unsigned long value));
|
||||||
static unsigned long apply_range PARAMS ((unsigned long value,
|
static unsigned long apply_range PARAMS ((unsigned long value,
|
||||||
struct itbl_range r));
|
struct itbl_range r));
|
||||||
static unsigned long extract_range PARAMS ((unsigned long value,
|
static unsigned long extract_range PARAMS ((unsigned long value,
|
||||||
struct itbl_range r));
|
struct itbl_range r));
|
||||||
static struct itbl_field *alloc_field PARAMS ((e_type type, int sbit,
|
static struct itbl_field *alloc_field PARAMS ((e_type type, int sbit,
|
||||||
int ebit, unsigned long flags));
|
int ebit, unsigned long flags));
|
||||||
|
|
||||||
|
|
||||||
/*======================================================================*/
|
/*======================================================================*/
|
||||||
/* Interfaces to the parser */
|
/* Interfaces to the parser */
|
||||||
|
|
||||||
|
|
||||||
/* Open the table and use lex and yacc to parse the entries.
|
/* Open the table and use lex and yacc to parse the entries.
|
||||||
* Return 1 for failure; 0 for success. */
|
* Return 1 for failure; 0 for success. */
|
||||||
|
|
||||||
int
|
int
|
||||||
itbl_parse (char *insntbl)
|
itbl_parse (char *insntbl)
|
||||||
{
|
{
|
||||||
extern FILE *yyin;
|
extern FILE *yyin;
|
||||||
|
@ -213,7 +209,7 @@ struct itbl_entry *
|
||||||
itbl_add_reg (int yyprocessor, int yytype, char *regname,
|
itbl_add_reg (int yyprocessor, int yytype, char *regname,
|
||||||
int regnum)
|
int regnum)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
#include "as.h"
|
#include "as.h"
|
||||||
#include "symbols.h"
|
#include "symbols.h"
|
||||||
/* Since register names don't have a prefix, we put them in the symbol table so
|
/* Since register names don't have a prefix, we put them in the symbol table so
|
||||||
|
@ -256,7 +252,7 @@ itbl_add_operand (struct itbl_entry *e, int yytype, int sbit,
|
||||||
struct itbl_field *f, **last_f;
|
struct itbl_field *f, **last_f;
|
||||||
if (!e)
|
if (!e)
|
||||||
return 0;
|
return 0;
|
||||||
/* Add to end of fields' list. */
|
/* Add to end of fields' list. */
|
||||||
f = alloc_field (get_type (yytype), sbit, ebit, flags);
|
f = alloc_field (get_type (yytype), sbit, ebit, flags);
|
||||||
if (f)
|
if (f)
|
||||||
{
|
{
|
||||||
|
@ -269,7 +265,6 @@ itbl_add_operand (struct itbl_entry *e, int yytype, int sbit,
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*======================================================================*/
|
/*======================================================================*/
|
||||||
/* Interfaces for assembler and disassembler */
|
/* Interfaces for assembler and disassembler */
|
||||||
|
|
||||||
|
@ -279,7 +274,7 @@ itbl_add_operand (struct itbl_entry *e, int yytype, int sbit,
|
||||||
static void append_insns_as_macros (void);
|
static void append_insns_as_macros (void);
|
||||||
|
|
||||||
/* initialize for gas */
|
/* initialize for gas */
|
||||||
void
|
void
|
||||||
itbl_init (void)
|
itbl_init (void)
|
||||||
{
|
{
|
||||||
struct itbl_entry *e, **es;
|
struct itbl_entry *e, **es;
|
||||||
|
@ -291,7 +286,7 @@ itbl_init (void)
|
||||||
|
|
||||||
/* Since register names don't have a prefix, put them in the symbol table so
|
/* Since register names don't have a prefix, put them in the symbol table so
|
||||||
they can't be used as symbols. This simplifies argument parsing as
|
they can't be used as symbols. This simplifies argument parsing as
|
||||||
we can let gas parse registers for us. */
|
we can let gas parse registers for us. */
|
||||||
/* Use symbol_create instead of symbol_new so we don't try to
|
/* Use symbol_create instead of symbol_new so we don't try to
|
||||||
output registers into the object file's symbol table. */
|
output registers into the object file's symbol table. */
|
||||||
|
|
||||||
|
@ -308,16 +303,15 @@ itbl_init (void)
|
||||||
append_insns_as_macros ();
|
append_insns_as_macros ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Append insns to opcodes table and increase number of opcodes
|
||||||
/* Append insns to opcodes table and increase number of opcodes
|
* Structure of opcodes table:
|
||||||
* Structure of opcodes table:
|
|
||||||
* struct itbl_opcode
|
* struct itbl_opcode
|
||||||
* {
|
* {
|
||||||
* const char *name;
|
* const char *name;
|
||||||
* const char *args; - string describing the arguments.
|
* const char *args; - string describing the arguments.
|
||||||
* unsigned long match; - opcode, or ISA level if pinfo=INSN_MACRO
|
* unsigned long match; - opcode, or ISA level if pinfo=INSN_MACRO
|
||||||
* unsigned long mask; - opcode mask, or macro id if pinfo=INSN_MACRO
|
* unsigned long mask; - opcode mask, or macro id if pinfo=INSN_MACRO
|
||||||
* unsigned long pinfo; - insn flags, or INSN_MACRO
|
* unsigned long pinfo; - insn flags, or INSN_MACRO
|
||||||
* };
|
* };
|
||||||
* examples:
|
* examples:
|
||||||
* {"li", "t,i", 0x34000000, 0xffe00000, WR_t },
|
* {"li", "t,i", 0x34000000, 0xffe00000, WR_t },
|
||||||
|
@ -325,7 +319,7 @@ itbl_init (void)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static char *form_args (struct itbl_entry *e);
|
static char *form_args (struct itbl_entry *e);
|
||||||
static void
|
static void
|
||||||
append_insns_as_macros (void)
|
append_insns_as_macros (void)
|
||||||
{
|
{
|
||||||
struct ITBL_OPCODE_STRUCT *new_opcodes, *o;
|
struct ITBL_OPCODE_STRUCT *new_opcodes, *o;
|
||||||
|
@ -352,7 +346,7 @@ append_insns_as_macros (void)
|
||||||
ASSERT (new_size > size);
|
ASSERT (new_size > size);
|
||||||
|
|
||||||
/* FIXME since ITBL_OPCODES culd be a static table,
|
/* FIXME since ITBL_OPCODES culd be a static table,
|
||||||
we can't realloc or delete the old memory. */
|
we can't realloc or delete the old memory. */
|
||||||
new_opcodes = (struct ITBL_OPCODE_STRUCT *) malloc (new_size);
|
new_opcodes = (struct ITBL_OPCODE_STRUCT *) malloc (new_size);
|
||||||
if (!new_opcodes)
|
if (!new_opcodes)
|
||||||
{
|
{
|
||||||
|
@ -363,7 +357,7 @@ append_insns_as_macros (void)
|
||||||
memcpy (new_opcodes, ITBL_OPCODES, size);
|
memcpy (new_opcodes, ITBL_OPCODES, size);
|
||||||
|
|
||||||
/* FIXME! some NUMOPCODES are calculated expressions.
|
/* FIXME! some NUMOPCODES are calculated expressions.
|
||||||
These need to be changed before itbls can be supported. */
|
These need to be changed before itbls can be supported. */
|
||||||
|
|
||||||
id = ITBL_NUM_MACROS; /* begin the next macro id after the last */
|
id = ITBL_NUM_MACROS; /* begin the next macro id after the last */
|
||||||
o = &new_opcodes[ITBL_NUM_OPCODES]; /* append macro to opcodes list */
|
o = &new_opcodes[ITBL_NUM_OPCODES]; /* append macro to opcodes list */
|
||||||
|
@ -407,7 +401,7 @@ append_insns_as_macros (void)
|
||||||
Don't free name though, since name is being used by the new
|
Don't free name though, since name is being used by the new
|
||||||
opcodes table.
|
opcodes table.
|
||||||
|
|
||||||
Eventually, we should also free the new opcodes table itself
|
Eventually, we should also free the new opcodes table itself
|
||||||
on exit.
|
on exit.
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
@ -454,7 +448,6 @@ form_args (struct itbl_entry *e)
|
||||||
}
|
}
|
||||||
#endif /* !STAND_ALONE */
|
#endif /* !STAND_ALONE */
|
||||||
|
|
||||||
|
|
||||||
/* Get processor's register name from val */
|
/* Get processor's register name from val */
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -501,13 +494,12 @@ itbl_get_val (e_processor processor, e_type type, char *name,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Assemble instruction "name" with operands "s".
|
/* Assemble instruction "name" with operands "s".
|
||||||
* name - name of instruction
|
* name - name of instruction
|
||||||
* s - operands
|
* s - operands
|
||||||
* returns - long word for assembled instruction */
|
* returns - long word for assembled instruction */
|
||||||
|
|
||||||
unsigned long
|
unsigned long
|
||||||
itbl_assemble (char *name, char *s)
|
itbl_assemble (char *name, char *s)
|
||||||
{
|
{
|
||||||
unsigned long opcode;
|
unsigned long opcode;
|
||||||
|
@ -531,7 +523,7 @@ itbl_assemble (char *name, char *s)
|
||||||
opcode = build_opcode (e);
|
opcode = build_opcode (e);
|
||||||
|
|
||||||
/* parse opcode's args (if any) */
|
/* parse opcode's args (if any) */
|
||||||
for (f = e->fields; f; f = f->next) /* for each arg, ... */
|
for (f = e->fields; f; f = f->next) /* for each arg, ... */
|
||||||
{
|
{
|
||||||
struct itbl_entry *r;
|
struct itbl_entry *r;
|
||||||
unsigned long value;
|
unsigned long value;
|
||||||
|
@ -573,7 +565,7 @@ itbl_assemble (char *name, char *s)
|
||||||
*/
|
*/
|
||||||
/* If not a symbol, fall thru to IMMED */
|
/* If not a symbol, fall thru to IMMED */
|
||||||
case e_immed:
|
case e_immed:
|
||||||
if (*n == '0' && *(n + 1) == 'x') /* hex begins 0x... */
|
if (*n == '0' && *(n + 1) == 'x') /* hex begins 0x... */
|
||||||
{
|
{
|
||||||
n += 2;
|
n += 2;
|
||||||
value = strtol (n, 0, 16);
|
value = strtol (n, 0, 16);
|
||||||
|
@ -603,7 +595,7 @@ itbl_assemble (char *name, char *s)
|
||||||
* returns - 1 if succeeded; 0 if failed
|
* returns - 1 if succeeded; 0 if failed
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
itbl_disassemble (char *s, unsigned long insn)
|
itbl_disassemble (char *s, unsigned long insn)
|
||||||
{
|
{
|
||||||
e_processor processor;
|
e_processor processor;
|
||||||
|
@ -621,7 +613,7 @@ itbl_disassemble (char *s, unsigned long insn)
|
||||||
strcpy (s, e->name);
|
strcpy (s, e->name);
|
||||||
|
|
||||||
/* parse insn's args (if any) */
|
/* parse insn's args (if any) */
|
||||||
for (f = e->fields; f; f = f->next) /* for each arg, ... */
|
for (f = e->fields; f; f = f->next) /* for each arg, ... */
|
||||||
{
|
{
|
||||||
struct itbl_entry *r;
|
struct itbl_entry *r;
|
||||||
unsigned long value;
|
unsigned long value;
|
||||||
|
@ -670,7 +662,7 @@ itbl_disassemble (char *s, unsigned long insn)
|
||||||
|
|
||||||
/* Calculate instruction's opcode and function values from entry */
|
/* Calculate instruction's opcode and function values from entry */
|
||||||
|
|
||||||
static unsigned long
|
static unsigned long
|
||||||
build_opcode (struct itbl_entry *e)
|
build_opcode (struct itbl_entry *e)
|
||||||
{
|
{
|
||||||
unsigned long opcode;
|
unsigned long opcode;
|
||||||
|
@ -691,7 +683,7 @@ build_opcode (struct itbl_entry *e)
|
||||||
* mask: 0x01f00000.
|
* mask: 0x01f00000.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static unsigned long
|
static unsigned long
|
||||||
apply_range (unsigned long rval, struct itbl_range r)
|
apply_range (unsigned long rval, struct itbl_range r)
|
||||||
{
|
{
|
||||||
unsigned long mask;
|
unsigned long mask;
|
||||||
|
@ -715,7 +707,7 @@ apply_range (unsigned long rval, struct itbl_range r)
|
||||||
/* Calculate relative value given the absolute value and bit position range
|
/* Calculate relative value given the absolute value and bit position range
|
||||||
* within the instruction. */
|
* within the instruction. */
|
||||||
|
|
||||||
static unsigned long
|
static unsigned long
|
||||||
extract_range (unsigned long aval, struct itbl_range r)
|
extract_range (unsigned long aval, struct itbl_range r)
|
||||||
{
|
{
|
||||||
unsigned long mask;
|
unsigned long mask;
|
||||||
|
@ -772,7 +764,7 @@ find_entry_byname (e_processor processor,
|
||||||
struct itbl_entry *e, **es;
|
struct itbl_entry *e, **es;
|
||||||
|
|
||||||
es = get_entries (processor, type);
|
es = get_entries (processor, type);
|
||||||
for (e = *es; e; e = e->next) /* for each entry, ... */
|
for (e = *es; e; e = e->next) /* for each entry, ... */
|
||||||
{
|
{
|
||||||
if (!strcmp (e->name, n))
|
if (!strcmp (e->name, n))
|
||||||
return e;
|
return e;
|
||||||
|
@ -794,7 +786,7 @@ find_entry_byval (e_processor processor, e_type type,
|
||||||
unsigned long eval;
|
unsigned long eval;
|
||||||
|
|
||||||
es = get_entries (processor, type);
|
es = get_entries (processor, type);
|
||||||
for (e = *es; e; e = e->next) /* for each entry, ... */
|
for (e = *es; e; e = e->next) /* for each entry, ... */
|
||||||
{
|
{
|
||||||
if (processor != e->processor)
|
if (processor != e->processor)
|
||||||
continue;
|
continue;
|
||||||
|
@ -804,7 +796,7 @@ find_entry_byval (e_processor processor, e_type type,
|
||||||
* This could cause ambiguities.
|
* This could cause ambiguities.
|
||||||
* For operands, we get an extracted value and a range.
|
* For operands, we get an extracted value and a range.
|
||||||
*/
|
*/
|
||||||
/* if range is 0, mask val against the range of the compared entry. */
|
/* if range is 0, mask val against the range of the compared entry. */
|
||||||
if (r == 0) /* if no range passed, must be whole 32-bits
|
if (r == 0) /* if no range passed, must be whole 32-bits
|
||||||
* so create 32-bit value from entry's range */
|
* so create 32-bit value from entry's range */
|
||||||
{
|
{
|
||||||
|
@ -825,7 +817,7 @@ find_entry_byval (e_processor processor, e_type type,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return a pointer to the list of entries for a given processor and type. */
|
/* Return a pointer to the list of entries for a given processor and type. */
|
||||||
|
|
||||||
static struct itbl_entry **
|
static struct itbl_entry **
|
||||||
get_entries (e_processor processor, e_type type)
|
get_entries (e_processor processor, e_type type)
|
||||||
|
@ -833,9 +825,9 @@ get_entries (e_processor processor, e_type type)
|
||||||
return &entries[processor][type];
|
return &entries[processor][type];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return an integral value for the processor passed from yyparse. */
|
/* Return an integral value for the processor passed from yyparse. */
|
||||||
|
|
||||||
static e_processor
|
static e_processor
|
||||||
get_processor (int yyproc)
|
get_processor (int yyproc)
|
||||||
{
|
{
|
||||||
/* translate from yacc's processor to enum */
|
/* translate from yacc's processor to enum */
|
||||||
|
@ -844,9 +836,9 @@ get_processor (int yyproc)
|
||||||
return e_invproc; /* error; invalid processor */
|
return e_invproc; /* error; invalid processor */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return an integral value for the entry type passed from yyparse. */
|
/* Return an integral value for the entry type passed from yyparse. */
|
||||||
|
|
||||||
static e_type
|
static e_type
|
||||||
get_type (int yytype)
|
get_type (int yytype)
|
||||||
{
|
{
|
||||||
switch (yytype)
|
switch (yytype)
|
||||||
|
@ -869,7 +861,6 @@ get_type (int yytype)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Allocate and initialize an entry */
|
/* Allocate and initialize an entry */
|
||||||
|
|
||||||
static struct itbl_entry *
|
static struct itbl_entry *
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
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"
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ identify (file)
|
||||||
|
|
||||||
static int warning_count; /* Count of number of warnings issued */
|
static int warning_count; /* Count of number of warnings issued */
|
||||||
|
|
||||||
int
|
int
|
||||||
had_warnings ()
|
had_warnings ()
|
||||||
{
|
{
|
||||||
return (warning_count);
|
return (warning_count);
|
||||||
|
@ -118,13 +118,12 @@ had_warnings ()
|
||||||
|
|
||||||
static int error_count;
|
static int error_count;
|
||||||
|
|
||||||
int
|
int
|
||||||
had_errors ()
|
had_errors ()
|
||||||
{
|
{
|
||||||
return (error_count);
|
return (error_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Print the current location to stderr. */
|
/* Print the current location to stderr. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -145,9 +144,9 @@ as_show_where ()
|
||||||
* Like perror(3), but with more info.
|
* Like perror(3), but with more info.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
as_perror (gripe, filename)
|
as_perror (gripe, filename)
|
||||||
const char *gripe; /* Unpunctuated error theme. */
|
const char *gripe; /* Unpunctuated error theme. */
|
||||||
const char *filename;
|
const char *filename;
|
||||||
{
|
{
|
||||||
const char *errtxt;
|
const char *errtxt;
|
||||||
|
@ -176,7 +175,7 @@ as_perror (gripe, filename)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef USE_STDARG
|
#ifdef USE_STDARG
|
||||||
void
|
void
|
||||||
as_tsktsk (const char *format,...)
|
as_tsktsk (const char *format,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
@ -188,7 +187,7 @@ as_tsktsk (const char *format,...)
|
||||||
(void) putc ('\n', stderr);
|
(void) putc ('\n', stderr);
|
||||||
} /* as_tsktsk() */
|
} /* as_tsktsk() */
|
||||||
#else
|
#else
|
||||||
void
|
void
|
||||||
as_tsktsk (format, va_alist)
|
as_tsktsk (format, va_alist)
|
||||||
const char *format;
|
const char *format;
|
||||||
va_dcl
|
va_dcl
|
||||||
|
@ -237,7 +236,7 @@ as_warn_internal (file, line, buffer)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef USE_STDARG
|
#ifdef USE_STDARG
|
||||||
void
|
void
|
||||||
as_warn (const char *format,...)
|
as_warn (const char *format,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
@ -253,7 +252,7 @@ as_warn (const char *format,...)
|
||||||
} /* as_warn() */
|
} /* as_warn() */
|
||||||
#else
|
#else
|
||||||
/*VARARGS1 */
|
/*VARARGS1 */
|
||||||
void
|
void
|
||||||
as_warn (format, va_alist)
|
as_warn (format, va_alist)
|
||||||
const char *format;
|
const char *format;
|
||||||
va_dcl
|
va_dcl
|
||||||
|
@ -276,7 +275,7 @@ as_warn (format, va_alist)
|
||||||
to handle the varargs correctly and portably. */
|
to handle the varargs correctly and portably. */
|
||||||
|
|
||||||
#ifdef USE_STDARG
|
#ifdef USE_STDARG
|
||||||
void
|
void
|
||||||
as_warn_where (char *file, unsigned int line, const char *format,...)
|
as_warn_where (char *file, unsigned int line, const char *format,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
@ -292,7 +291,7 @@ as_warn_where (char *file, unsigned int line, const char *format,...)
|
||||||
} /* as_warn() */
|
} /* as_warn() */
|
||||||
#else
|
#else
|
||||||
/*VARARGS1 */
|
/*VARARGS1 */
|
||||||
void
|
void
|
||||||
as_warn_where (file, line, format, va_alist)
|
as_warn_where (file, line, format, va_alist)
|
||||||
char *file;
|
char *file;
|
||||||
unsigned int line;
|
unsigned int line;
|
||||||
|
@ -346,7 +345,7 @@ as_bad_internal (file, line, buffer)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef USE_STDARG
|
#ifdef USE_STDARG
|
||||||
void
|
void
|
||||||
as_bad (const char *format,...)
|
as_bad (const char *format,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
@ -361,7 +360,7 @@ as_bad (const char *format,...)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/*VARARGS1 */
|
/*VARARGS1 */
|
||||||
void
|
void
|
||||||
as_bad (format, va_alist)
|
as_bad (format, va_alist)
|
||||||
const char *format;
|
const char *format;
|
||||||
va_dcl
|
va_dcl
|
||||||
|
@ -382,7 +381,7 @@ as_bad (format, va_alist)
|
||||||
to handle the varargs correctly and portably. */
|
to handle the varargs correctly and portably. */
|
||||||
|
|
||||||
#ifdef USE_STDARG
|
#ifdef USE_STDARG
|
||||||
void
|
void
|
||||||
as_bad_where (char *file, unsigned int line, const char *format,...)
|
as_bad_where (char *file, unsigned int line, const char *format,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
@ -397,7 +396,7 @@ as_bad_where (char *file, unsigned int line, const char *format,...)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/*VARARGS1 */
|
/*VARARGS1 */
|
||||||
void
|
void
|
||||||
as_bad_where (file, line, format, va_alist)
|
as_bad_where (file, line, format, va_alist)
|
||||||
char *file;
|
char *file;
|
||||||
unsigned int line;
|
unsigned int line;
|
||||||
|
@ -425,7 +424,7 @@ as_bad_where (file, line, format, va_alist)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef USE_STDARG
|
#ifdef USE_STDARG
|
||||||
void
|
void
|
||||||
as_fatal (const char *format,...)
|
as_fatal (const char *format,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
@ -440,7 +439,7 @@ as_fatal (const char *format,...)
|
||||||
} /* as_fatal() */
|
} /* as_fatal() */
|
||||||
#else
|
#else
|
||||||
/*VARARGS1*/
|
/*VARARGS1*/
|
||||||
void
|
void
|
||||||
as_fatal (format, va_alist)
|
as_fatal (format, va_alist)
|
||||||
char *format;
|
char *format;
|
||||||
va_dcl
|
va_dcl
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue