* config/tc-i960.c (md_convert_frag): Add ATTRIBUTE_UNUSED to args.

(s_endian <ignore>): Likewise.
	(md_undefined_symbol <name>): Likewise.
	(tc_crawl_symbol_chain <headers>): Likewise.
	(tc_set_bal_of_call): Likewise.
	(tc_coff_symbol_emit_hook <symbolP>): Likewise.
	(i960_handle_align <fragp>): Likewise.
	(i960_validate_fix <this_segment_type>): Likewise
	(tc_gen_reloc <section>): Likewise.
	(tc_coff_symbol_emit_hook): Only define for OBJ_COFF.
	(struct memS, struct regop): Forward declare.
	(brcnt_emit, brlab_next, cobr_fmt, ctrl_fmt, emit, get_args,
	get_cdisp, get_ispec, get_regnum, i_scan, mem_fmt, mema_to_memb,
	parse_expr, parse_ldconst, parse_memop, parse_po, parse_regop,
	reg_fmt, relax_cobr, s_leafproc, s_sysproc, shift_ok, syntax,
	targ_has_sfr, targ_has_iclass, tc_bfd_fix2rtype): Prototype.
	(md_chars_to_number, md_number_to_imm): Make static, prototype.
	(md_number_to_field): Likewise.
	(md_number_to_disp): Remove unused function.
	(md_atof): Remove declaration of atof_ieee.
	(md_apply_fix3): Correct md_number_to_imm call.
This commit is contained in:
Alan Modra 2002-12-12 22:25:00 +00:00
parent 64384dfd06
commit b9195351ad
2 changed files with 116 additions and 90 deletions

View File

@ -1,5 +1,26 @@
2002-12-13 Alan Modra <amodra@bigpond.net.au> 2002-12-13 Alan Modra <amodra@bigpond.net.au>
* config/tc-i960.c (md_convert_frag): Add ATTRIBUTE_UNUSED to args.
(s_endian <ignore>): Likewise.
(md_undefined_symbol <name>): Likewise.
(tc_crawl_symbol_chain <headers>): Likewise.
(tc_set_bal_of_call): Likewise.
(tc_coff_symbol_emit_hook <symbolP>): Likewise.
(i960_handle_align <fragp>): Likewise.
(i960_validate_fix <this_segment_type>): Likewise
(tc_gen_reloc <section>): Likewise.
(tc_coff_symbol_emit_hook): Only define for OBJ_COFF.
(struct memS, struct regop): Forward declare.
(brcnt_emit, brlab_next, cobr_fmt, ctrl_fmt, emit, get_args,
get_cdisp, get_ispec, get_regnum, i_scan, mem_fmt, mema_to_memb,
parse_expr, parse_ldconst, parse_memop, parse_po, parse_regop,
reg_fmt, relax_cobr, s_leafproc, s_sysproc, shift_ok, syntax,
targ_has_sfr, targ_has_iclass, tc_bfd_fix2rtype): Prototype.
(md_chars_to_number, md_number_to_imm): Make static, prototype.
(md_number_to_field): Likewise.
(md_number_to_disp): Remove unused function.
(md_atof): Remove declaration of atof_ieee.
(md_apply_fix3): Correct md_number_to_imm call.
* config/tc-ip2k.c (md_assemble): Warning fix. * config/tc-ip2k.c (md_assemble): Warning fix.
* config/tc-m32r.c (md_parse_option <arg>): Add ATTRIBUTE_UNUSED. * config/tc-m32r.c (md_parse_option <arg>): Add ATTRIBUTE_UNUSED.
(fill_insn <ignore>): Likewise. (fill_insn <ignore>): Likewise.

View File

@ -132,33 +132,59 @@ const int md_reloc_size = sizeof (struct relocation_info);
#endif #endif
/* Local i80960 routines. */ /* Local i80960 routines. */
struct memS;
struct regop;
static void brcnt_emit (); /* Emit branch-prediction instrumentation code */ /* Emit branch-prediction instrumentation code */
static char *brlab_next (); /* Return next branch local label */ static void brcnt_emit PARAMS ((void));
void brtab_emit (); /* Emit br-predict instrumentation table */ /* Return next branch local label */
static void cobr_fmt (); /* Generate COBR instruction */ static char *brlab_next PARAMS ((void));
static void ctrl_fmt (); /* Generate CTRL instruction */ /* Generate COBR instruction */
static char *emit (); /* Emit (internally) binary */ static void cobr_fmt PARAMS ((char *[], long, struct i960_opcode *));
static int get_args (); /* Break arguments out of comma-separated list */ /* Generate CTRL instruction */
static void get_cdisp (); /* Handle COBR or CTRL displacement */ static void ctrl_fmt PARAMS ((char *, long, int));
static char *get_ispec (); /* Find index specification string */ /* Emit (internally) binary */
static int get_regnum (); /* Translate text to register number */ static char *emit PARAMS ((long));
static int i_scan (); /* Lexical scan of instruction source */ /* Break arguments out of comma-separated list */
static void mem_fmt (); /* Generate MEMA or MEMB instruction */ static int get_args PARAMS ((char *, char *[]));
static void mema_to_memb (); /* Convert MEMA instruction to MEMB format */ /* Handle COBR or CTRL displacement */
static void parse_expr (); /* Parse an expression */ static void get_cdisp PARAMS ((char *, char *, long, int, int, int));
static int parse_ldconst (); /* Parse and replace a 'ldconst' pseudo-op */ /* Find index specification string */
static void parse_memop (); /* Parse a memory operand */ static char *get_ispec PARAMS ((char *));
static void parse_po (); /* Parse machine-dependent pseudo-op */ /* Translate text to register number */
static void parse_regop (); /* Parse a register operand */ static int get_regnum PARAMS ((char *));
static void reg_fmt (); /* Generate a REG format instruction */ /* Lexical scan of instruction source */
static void relax_cobr (); /* "De-optimize" cobr into compare/branch */ static int i_scan PARAMS ((char *, char *[]));
static void s_leafproc (); /* Process '.leafproc' pseudo-op */ /* Generate MEMA or MEMB instruction */
static void s_sysproc (); /* Process '.sysproc' pseudo-op */ static void mem_fmt PARAMS ((char *[], struct i960_opcode *, int));
static int shift_ok (); /* Will a 'shlo' substiture for a 'ldconst'? */ /* Convert MEMA instruction to MEMB format */
static void syntax (); /* Give syntax error */ static void mema_to_memb PARAMS ((char *));
static int targ_has_sfr (); /* Target chip supports spec-func register? */ /* Parse an expression */
static int targ_has_iclass (); /* Target chip supports instruction set? */ static void parse_expr PARAMS ((char *, expressionS *));
/* Parse and replace a 'ldconst' pseudo-op */
static int parse_ldconst PARAMS ((char *[]));
/* Parse a memory operand */
static void parse_memop PARAMS ((struct memS *, char *, int));
/* Parse machine-dependent pseudo-op */
static void parse_po PARAMS ((int));
/* Parse a register operand */
static void parse_regop PARAMS ((struct regop *, char *, char));
/* Generate a REG format instruction */
static void reg_fmt PARAMS ((char *[], struct i960_opcode *));
/* "De-optimize" cobr into compare/branch */
static void relax_cobr PARAMS ((fragS *));
/* Process '.leafproc' pseudo-op */
static void s_leafproc PARAMS ((int, char *[]));
/* Process '.sysproc' pseudo-op */
static void s_sysproc PARAMS ((int, char *[]));
/* Will a 'shlo' substiture for a 'ldconst'? */
static int shift_ok PARAMS ((int));
/* Give syntax error */
static void syntax PARAMS ((void));
/* Target chip supports spec-func register? */
static int targ_has_sfr PARAMS ((int));
/* Target chip supports instruction set? */
static int targ_has_iclass PARAMS ((int));
/* See md_parse_option() for meanings of these options */ /* See md_parse_option() for meanings of these options */
static char norelax; /* True if -norelax switch seen */ static char norelax; /* True if -norelax switch seen */
@ -276,7 +302,7 @@ const pseudo_typeS md_pseudo_table[] =
#define MEMA_ABASE 0x2000 #define MEMA_ABASE 0x2000
/* Info from which a MEMA or MEMB format instruction can be generated */ /* Info from which a MEMA or MEMB format instruction can be generated */
typedef struct typedef struct memS
{ {
/* (First) 32 bits of instruction */ /* (First) 32 bits of instruction */
long opcode; long opcode;
@ -286,7 +312,6 @@ typedef struct
displacement should be determined. */ displacement should be determined. */
char *e; char *e;
} }
memS; memS;
/* The two pieces of info we need to generate a register operand */ /* The two pieces of info we need to generate a register operand */
@ -707,7 +732,9 @@ md_number_to_chars (buf, value, n)
md_chars_to_number: convert from target byte order to host byte order. md_chars_to_number: convert from target byte order to host byte order.
*************************************************************************** */ *************************************************************************** */
int static int md_chars_to_number PARAMS ((unsigned char *, int));
static int
md_chars_to_number (val, n) md_chars_to_number (val, n)
unsigned char *val; /* Value in target byte order */ unsigned char *val; /* Value in target byte order */
int n; /* Number of bytes in the input */ int n; /* Number of bytes in the input */
@ -747,7 +774,6 @@ md_atof (type, litP, sizeP)
LITTLENUM_TYPE *wordP; LITTLENUM_TYPE *wordP;
int prec; int prec;
char *t; char *t;
char *atof_ieee ();
switch (type) switch (type)
{ {
@ -798,7 +824,9 @@ md_atof (type, litP, sizeP)
md_number_to_imm md_number_to_imm
*************************************************************************** */ *************************************************************************** */
void static void md_number_to_imm PARAMS ((char *, long, int));
static void
md_number_to_imm (buf, val, n) md_number_to_imm (buf, val, n)
char *buf; char *buf;
long val; long val;
@ -807,19 +835,6 @@ md_number_to_imm (buf, val, n)
md_number_to_chars (buf, val, n); md_number_to_chars (buf, val, n);
} }
/*****************************************************************************
md_number_to_disp
*************************************************************************** */
void
md_number_to_disp (buf, val, n)
char *buf;
long val;
int n;
{
md_number_to_chars (buf, val, n);
}
/***************************************************************************** /*****************************************************************************
md_number_to_field: md_number_to_field:
@ -827,7 +842,9 @@ md_number_to_disp (buf, val, n)
previously-generated instruction. previously-generated instruction.
*************************************************************************** */ *************************************************************************** */
void static void md_number_to_field PARAMS ((char *, long, bit_fixS *));
static void
md_number_to_field (instrP, val, bfixP) md_number_to_field (instrP, val, bfixP)
char *instrP; /* Pointer to instruction to be fixed */ char *instrP; /* Pointer to instruction to be fixed */
long val; /* Address fixup value */ long val; /* Address fixup value */
@ -1023,14 +1040,14 @@ md_show_usage (stream)
#ifndef BFD_ASSEMBLER #ifndef BFD_ASSEMBLER
void void
md_convert_frag (headers, seg, fragP) md_convert_frag (headers, seg, fragP)
object_headers *headers; object_headers *headers ATTRIBUTE_UNUSED;
segT seg; segT seg ATTRIBUTE_UNUSED;
fragS *fragP; fragS *fragP;
#else #else
void void
md_convert_frag (abfd, sec, fragP) md_convert_frag (abfd, sec, fragP)
bfd *abfd; bfd *abfd ATTRIBUTE_UNUSED;
segT sec; segT sec ATTRIBUTE_UNUSED;
fragS *fragP; fragS *fragP;
#endif #endif
{ {
@ -1212,8 +1229,7 @@ brtab_emit ()
cobr_fmt: generate a COBR-format instruction cobr_fmt: generate a COBR-format instruction
*************************************************************************** */ *************************************************************************** */
static static void
void
cobr_fmt (arg, opcode, oP) cobr_fmt (arg, opcode, oP)
/* arg[0]->opcode mnemonic, arg[1-3]->operands (ascii) */ /* arg[0]->opcode mnemonic, arg[1-3]->operands (ascii) */
char *arg[]; char *arg[];
@ -1280,8 +1296,7 @@ cobr_fmt (arg, opcode, oP)
ctrl_fmt: generate a CTRL-format instruction ctrl_fmt: generate a CTRL-format instruction
*************************************************************************** */ *************************************************************************** */
static static void
void
ctrl_fmt (targP, opcode, num_ops) ctrl_fmt (targP, opcode, num_ops)
char *targP; /* Pointer to text of lone operand (if any) */ char *targP; /* Pointer to text of lone operand (if any) */
long opcode; /* Template of instruction */ long opcode; /* Template of instruction */
@ -1327,8 +1342,7 @@ ctrl_fmt (targP, opcode, num_ops)
Return pointer to where it was placed. Return pointer to where it was placed.
*************************************************************************** */ *************************************************************************** */
static static char *
char *
emit (instr) emit (instr)
long instr; /* Word to be output, host byte order */ long instr; /* Word to be output, host byte order */
{ {
@ -1432,8 +1446,7 @@ get_args (p, args)
address displacement is greater than 13 bits. address displacement is greater than 13 bits.
****************************************************************************/ ****************************************************************************/
static static void
void
get_cdisp (dispP, ifmtP, instr, numbits, var_frag, callj) get_cdisp (dispP, ifmtP, instr, numbits, var_frag, callj)
/* displacement as specified in source instruction */ /* displacement as specified in source instruction */
char *dispP; char *dispP;
@ -1517,8 +1530,7 @@ get_cdisp (dispP, ifmtP, instr, numbits, var_frag, callj)
square brackets, and return a pointer to it. Otherwise, return NULL. square brackets, and return a pointer to it. Otherwise, return NULL.
*************************************************************************** */ *************************************************************************** */
static static char *
char *
get_ispec (textP) get_ispec (textP)
/* Pointer to memory operand from source instruction, no white space. */ /* Pointer to memory operand from source instruction, no white space. */
char *textP; char *textP;
@ -1566,8 +1578,7 @@ get_ispec (textP)
associated register number (or -1 if not found). associated register number (or -1 if not found).
*************************************************************************** */ *************************************************************************** */
static static int
int
get_regnum (regname) get_regnum (regname)
char *regname; /* Suspected register name */ char *regname; /* Suspected register name */
{ {
@ -1846,8 +1857,7 @@ parse_expr (textP, expP)
Returns the new number of arguments, or -1 on failure. Returns the new number of arguments, or -1 on failure.
*************************************************************************** */ *************************************************************************** */
static static int
int
parse_ldconst (arg) parse_ldconst (arg)
char *arg[]; /* See above */ char *arg[]; /* See above */
{ {
@ -1959,8 +1969,7 @@ parse_ldconst (arg)
the displacement. the displacement.
*************************************************************************** */ *************************************************************************** */
static static void
void
parse_memop (memP, argP, optype) parse_memop (memP, argP, optype)
memS *memP; /* Where to put the results */ memS *memP; /* Where to put the results */
char *argP; /* Text of the operand to be parsed */ char *argP; /* Text of the operand to be parsed */
@ -2164,8 +2173,7 @@ parse_memop (memP, argP, optype)
up the rest of the input line, breaks out the individual arguments, up the rest of the input line, breaks out the individual arguments,
and dispatches them to the correct handler. and dispatches them to the correct handler.
*************************************************************************** */ *************************************************************************** */
static static void
void
parse_po (po_num) parse_po (po_num)
int po_num; /* Pseudo-op number: currently S_LEAFPROC or S_SYSPROC */ int po_num; /* Pseudo-op number: currently S_LEAFPROC or S_SYSPROC */
{ {
@ -2220,8 +2228,7 @@ parse_po (po_num)
In case of illegal operand, issue a message and return some valid In case of illegal operand, issue a message and return some valid
information so instruction processing can continue. information so instruction processing can continue.
*************************************************************************** */ *************************************************************************** */
static static void
void
parse_regop (regopP, optext, opdesc) parse_regop (regopP, optext, opdesc)
struct regop *regopP; /* Where to put description of register operand */ struct regop *regopP; /* Where to put description of register operand */
char *optext; /* Text of operand */ char *optext; /* Text of operand */
@ -2431,8 +2438,7 @@ coj[] =
{ CMPI, BO }, /* 0x3f - cmpibo */ { CMPI, BO }, /* 0x3f - cmpibo */
}; };
static static void
void
relax_cobr (fragP) relax_cobr (fragP)
register fragS *fragP; /* fragP->fr_opcode is assumed to point to register fragS *fragP; /* fragP->fr_opcode is assumed to point to
* the cobr instruction, which comes at the * the cobr instruction, which comes at the
@ -2667,8 +2673,7 @@ s_sysproc (n_ops, args)
Caller calculates X by shifting original constant right 'shift' places. Caller calculates X by shifting original constant right 'shift' places.
*************************************************************************** */ *************************************************************************** */
static static int
int
shift_ok (n) shift_ok (n)
int n; /* The constant of interest */ int n; /* The constant of interest */
{ {
@ -2706,8 +2711,7 @@ syntax ()
Return TRUE iff the target architecture supports the specified Return TRUE iff the target architecture supports the specified
special-function register (sfr). */ special-function register (sfr). */
static static int
int
targ_has_sfr (n) targ_has_sfr (n)
int n; /* Number (0-31) of sfr */ int n; /* Number (0-31) of sfr */
{ {
@ -2730,8 +2734,7 @@ targ_has_sfr (n)
Return TRUE iff the target architecture supports the indicated Return TRUE iff the target architecture supports the indicated
class of instructions. */ class of instructions. */
static static int
int
targ_has_iclass (ic) targ_has_iclass (ic)
/* Instruction class; one of: /* Instruction class; one of:
I_BASE, I_CX, I_DEC, I_KX, I_FP, I_MIL, I_CASIM, I_CX2, I_HX, I_HX2 I_BASE, I_CX, I_DEC, I_KX, I_FP, I_MIL, I_CASIM, I_CX2, I_HX, I_HX2
@ -2768,7 +2771,7 @@ targ_has_iclass (ic)
static void static void
s_endian (ignore) s_endian (ignore)
int ignore; int ignore ATTRIBUTE_UNUSED;
{ {
char *name; char *name;
char c; char c;
@ -2791,7 +2794,7 @@ s_endian (ignore)
symbolS * symbolS *
md_undefined_symbol (name) md_undefined_symbol (name)
char *name; char *name ATTRIBUTE_UNUSED;
{ {
return 0; return 0;
} }
@ -2826,7 +2829,7 @@ md_apply_fix3 (fixP, valP, seg)
fixP->fx_addnumber = val; fixP->fx_addnumber = val;
#endif #endif
md_number_to_imm (place, val, fixP->fx_size, fixP); md_number_to_imm (place, val, fixP->fx_size);
} }
else if ((int) fixP->fx_bit_fixP == 13 else if ((int) fixP->fx_bit_fixP == 13
&& fixP->fx_addsy != NULL && fixP->fx_addsy != NULL
@ -3040,7 +3043,7 @@ tc_headers_hook (headers)
void void
tc_crawl_symbol_chain (headers) tc_crawl_symbol_chain (headers)
object_headers *headers; object_headers *headers ATTRIBUTE_UNUSED;
{ {
symbolS *symbolP; symbolS *symbolP;
@ -3098,8 +3101,8 @@ tc_crawl_symbol_chain (headers)
void void
tc_set_bal_of_call (callP, balP) tc_set_bal_of_call (callP, balP)
symbolS *callP; symbolS *callP ATTRIBUTE_UNUSED;
symbolS *balP; symbolS *balP ATTRIBUTE_UNUSED;
{ {
know (TC_S_IS_CALLNAME (callP)); know (TC_S_IS_CALLNAME (callP));
know (TC_S_IS_BALNAME (balP)); know (TC_S_IS_BALNAME (balP));
@ -3129,7 +3132,7 @@ tc_set_bal_of_call (callP, balP)
symbolS * symbolS *
tc_get_bal_of_call (callP) tc_get_bal_of_call (callP)
symbolS *callP; symbolS *callP ATTRIBUTE_UNUSED;
{ {
symbolS *retval; symbolS *retval;
@ -3149,13 +3152,13 @@ tc_get_bal_of_call (callP)
return retval; return retval;
} /* _tc_get_bal_of_call() */ } /* _tc_get_bal_of_call() */
#ifdef OBJ_COFF
void void
tc_coff_symbol_emit_hook (symbolP) tc_coff_symbol_emit_hook (symbolP)
symbolS *symbolP; symbolS *symbolP ATTRIBUTE_UNUSED;
{ {
if (TC_S_IS_CALLNAME (symbolP)) if (TC_S_IS_CALLNAME (symbolP))
{ {
#ifdef OBJ_COFF
symbolS *balP = tc_get_bal_of_call (symbolP); symbolS *balP = tc_get_bal_of_call (symbolP);
#if 0 #if 0
@ -3170,13 +3173,13 @@ tc_coff_symbol_emit_hook (symbolP)
S_SET_DATA_TYPE (symbolP, S_GET_DATA_TYPE (symbolP) | (DT_FCN << N_BTSHFT)); S_SET_DATA_TYPE (symbolP, S_GET_DATA_TYPE (symbolP) | (DT_FCN << N_BTSHFT));
/* fix up the bal symbol */ /* fix up the bal symbol */
S_SET_STORAGE_CLASS (balP, C_LABEL); S_SET_STORAGE_CLASS (balP, C_LABEL);
#endif /* OBJ_COFF */
} /* only on calls */ } /* only on calls */
} }
#endif /* OBJ_COFF */
void void
i960_handle_align (fragp) i960_handle_align (fragp)
fragS *fragp; fragS *fragp ATTRIBUTE_UNUSED;
{ {
if (!linkrelax) if (!linkrelax)
return; return;
@ -3204,7 +3207,7 @@ i960_handle_align (fragp)
int int
i960_validate_fix (fixP, this_segment_type) i960_validate_fix (fixP, this_segment_type)
fixS *fixP; fixS *fixP;
segT this_segment_type; segT this_segment_type ATTRIBUTE_UNUSED;
{ {
if (fixP->fx_tcbit && TC_S_IS_CALLNAME (fixP->fx_addsy)) if (fixP->fx_tcbit && TC_S_IS_CALLNAME (fixP->fx_addsy))
{ {
@ -3228,6 +3231,8 @@ i960_validate_fix (fixP, this_segment_type)
/* From cgen.c: */ /* From cgen.c: */
static short tc_bfd_fix2rtype PARAMS ((fixS *));
static short static short
tc_bfd_fix2rtype (fixP) tc_bfd_fix2rtype (fixP)
fixS *fixP; fixS *fixP;
@ -3254,7 +3259,7 @@ tc_bfd_fix2rtype (fixP)
arelent * arelent *
tc_gen_reloc (section, fixP) tc_gen_reloc (section, fixP)
asection *section; asection *section ATTRIBUTE_UNUSED;
fixS *fixP; fixS *fixP;
{ {
arelent * reloc; arelent * reloc;