prototypes and casts.
* config/tc-sh.h: Likewise.
* config/tc-sh64.c: Likewise.
* config/tc-sh64.h: Likewise.
+2003-10-11 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+
+ * config/tc-sh.c: Convert to ISO C90. Remove unnecessary
+ prototypes and casts.
+ * config/tc-sh.h: Likewise.
+ * config/tc-sh64.c: Likewise.
+ * config/tc-sh64.h: Likewise.
+
2003-10-08 Dave Brolley <brolley@redhat.com>
* config/tc-frv.c (fr550_check_insn_acc_range): New function.
const char line_separator_chars[] = ";";
const char line_comment_chars[] = "!#";
-static void s_uses PARAMS ((int));
-
-static void sh_count_relocs PARAMS ((bfd *, segT, PTR));
-static void sh_frob_section PARAMS ((bfd *, segT, PTR));
-
-static void s_uacons PARAMS ((int));
-static sh_opcode_info *find_cooked_opcode PARAMS ((char **));
-static unsigned int assemble_ppi PARAMS ((char *, sh_opcode_info *));
-static void little PARAMS ((int));
-static void big PARAMS ((int));
-static int parse_reg PARAMS ((char *, int *, int *));
-static char *parse_exp PARAMS ((char *, sh_operand_info *));
-static char *parse_at PARAMS ((char *, sh_operand_info *));
-static void get_operand PARAMS ((char **, sh_operand_info *));
-static char *get_operands
- PARAMS ((sh_opcode_info *, char *, sh_operand_info *));
-static sh_opcode_info *get_specific
- PARAMS ((sh_opcode_info *, sh_operand_info *));
-static void insert PARAMS ((char *, int, int, sh_operand_info *));
-static void build_relax PARAMS ((sh_opcode_info *, sh_operand_info *));
-static char *insert_loop_bounds PARAMS ((char *, sh_operand_info *));
-static unsigned int build_Mytes
- PARAMS ((sh_opcode_info *, sh_operand_info *));
-static bfd_boolean sh_local_pcrel PARAMS ((fixS *fix));
+static void s_uses (int);
+static void s_uacons (int);
#ifdef OBJ_ELF
-static void sh_elf_cons PARAMS ((int));
-
-inline static int sh_PIC_related_p PARAMS ((symbolS *));
-static int sh_check_fixup PARAMS ((expressionS *, bfd_reloc_code_real_type *));
-inline static char *sh_end_of_match PARAMS ((char *, char *));
+static void sh_elf_cons (int);
symbolS *GOT_symbol; /* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
#endif
static void
-big (ignore)
- int ignore ATTRIBUTE_UNUSED;
+big (int ignore ATTRIBUTE_UNUSED)
{
if (! target_big_endian)
as_bad (_("directive .big encountered when option -big required"));
}
static void
-little (ignore)
- int ignore ATTRIBUTE_UNUSED;
+little (int ignore ATTRIBUTE_UNUSED)
{
if (target_big_endian)
as_bad (_("directive .little encountered when option -little required"));
/* Determinet whether the symbol needs any kind of PIC relocation. */
inline static int
-sh_PIC_related_p (sym)
- symbolS *sym;
+sh_PIC_related_p (symbolS *sym)
{
expressionS *exp;
expression, that may be rearranged. */
static int
-sh_check_fixup (main_exp, r_type_p)
- expressionS *main_exp;
- bfd_reloc_code_real_type *r_type_p;
+sh_check_fixup (expressionS *main_exp, bfd_reloc_code_real_type *r_type_p)
{
expressionS *exp = main_exp;
/* Add expression EXP of SIZE bytes to offset OFF of fragment FRAG. */
void
-sh_cons_fix_new (frag, off, size, exp)
- fragS *frag;
- int off, size;
- expressionS *exp;
+sh_cons_fix_new (fragS *frag, int off, int size, expressionS *exp)
{
bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED;
suffixes such as @GOT, @GOTOFF and @PLT, that generate
machine-specific relocation types. So we must define it here. */
/* Clobbers input_line_pointer, checks end-of-line. */
+/* NBYTES 1=.byte, 2=.word, 4=.long */
static void
-sh_elf_cons (nbytes)
- register int nbytes; /* 1=.byte, 2=.word, 4=.long */
+sh_elf_cons (register int nbytes)
{
expressionS exp;
set up all the tables, etc that the MD part of the assembler needs. */
void
-md_begin ()
+md_begin (void)
{
const sh_opcode_info *opcode;
char *prev_name = "";
/* Try to parse a reg name. Return the number of chars consumed. */
static int
-parse_reg (src, mode, reg)
- char *src;
- int *mode;
- int *reg;
+parse_reg (char *src, int *mode, int *reg)
{
char l0 = TOLOWER (src[0]);
char l1 = l0 ? TOLOWER (src[1]) : 0;
}
static char *
-parse_exp (s, op)
- char *s;
- sh_operand_info *op;
+parse_exp (char *s, sh_operand_info *op)
{
char *save;
char *new;
*/
static char *
-parse_at (src, op)
- char *src;
- sh_operand_info *op;
+parse_at (char *src, sh_operand_info *op)
{
int len;
int mode;
}
static void
-get_operand (ptr, op)
- char **ptr;
- sh_operand_info *op;
+get_operand (char **ptr, sh_operand_info *op)
{
char *src = *ptr;
int mode = -1;
}
static char *
-get_operands (info, args, operand)
- sh_opcode_info *info;
- char *args;
- sh_operand_info *operand;
+get_operands (sh_opcode_info *info, char *args, sh_operand_info *operand)
{
char *ptr = args;
if (info->arg[0])
provided. */
static sh_opcode_info *
-get_specific (opcode, operands)
- sh_opcode_info *opcode;
- sh_operand_info *operands;
+get_specific (sh_opcode_info *opcode, sh_operand_info *operands)
{
sh_opcode_info *this_try = opcode;
char *name = opcode->name;
}
static void
-insert (where, how, pcrel, op)
- char *where;
- int how;
- int pcrel;
- sh_operand_info *op;
+insert (char *where, int how, int pcrel, sh_operand_info *op)
{
fix_new_exp (frag_now,
where - frag_now->fr_literal,
}
static void
-build_relax (opcode, op)
- sh_opcode_info *opcode;
- sh_operand_info *op;
+build_relax (sh_opcode_info *opcode, sh_operand_info *op)
{
int high_byte = target_big_endian ? 0 : 1;
char *p;
/* Insert ldrs & ldre with fancy relocations that relaxation can recognize. */
static char *
-insert_loop_bounds (output, operand)
- char *output;
- sh_operand_info *operand;
+insert_loop_bounds (char *output, sh_operand_info *operand)
{
char *name;
symbolS *end_sym;
/* Now we know what sort of opcodes it is, let's build the bytes. */
static unsigned int
-build_Mytes (opcode, operand)
- sh_opcode_info *opcode;
- sh_operand_info *operand;
+build_Mytes (sh_opcode_info *opcode, sh_operand_info *operand)
{
int index;
char nbuf[4];
*STR_P to the first character after the last one read. */
static sh_opcode_info *
-find_cooked_opcode (str_p)
- char **str_p;
+find_cooked_opcode (char **str_p)
{
char *str = *str_p;
unsigned char *op_start;
#define DDT_BASE 0xf000 /* Base value for double data transfer insns */
static unsigned int
-assemble_ppi (op_end, opcode)
- char *op_end;
- sh_opcode_info *opcode;
+assemble_ppi (char *op_end, sh_opcode_info *opcode)
{
int movx = 0;
int movy = 0;
the frags/bytes it assembles to. */
void
-md_assemble (str)
- char *str;
+md_assemble (char *str)
{
unsigned char *op_end;
sh_operand_info operand[3];
emits a BFD_RELOC_SH_LABEL reloc if necessary. */
void
-sh_frob_label ()
+sh_frob_label (void)
{
static fragS *last_label_frag;
static int last_label_offset;
data. It emits a BFD_RELOC_SH_DATA reloc if necessary. */
void
-sh_flush_pending_output ()
+sh_flush_pending_output (void)
{
if (sh_relax
&& seg_info (now_seg)->tc_segment_info_data.in_code)
}
symbolS *
-md_undefined_symbol (name)
- char *name ATTRIBUTE_UNUSED;
+md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
{
return 0;
}
#ifndef BFD_ASSEMBLER
void
-tc_crawl_symbol_chain (headers)
- object_headers *headers ATTRIBUTE_UNUSED;
+tc_crawl_symbol_chain (object_headers *headers ATTRIBUTE_UNUSED)
{
printf (_("call to tc_crawl_symbol_chain \n"));
}
void
-tc_headers_hook (headers)
- object_headers *headers ATTRIBUTE_UNUSED;
+tc_headers_hook (object_headers *headers ATTRIBUTE_UNUSED)
{
printf (_("call to tc_headers_hook \n"));
}
returned, or NULL on OK. */
char *
-md_atof (type, litP, sizeP)
- int type;
- char *litP;
- int *sizeP;
+md_atof (int type, char *litP, int *sizeP)
{
int prec;
LITTLENUM_TYPE words[4];
special reloc for the linker. */
static void
-s_uses (ignore)
- int ignore ATTRIBUTE_UNUSED;
+s_uses (int ignore ATTRIBUTE_UNUSED)
{
expressionS ex;
size_t md_longopts_size = sizeof (md_longopts);
int
-md_parse_option (c, arg)
- int c;
- char *arg ATTRIBUTE_UNUSED;
+md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
{
switch (c)
{
}
void
-md_show_usage (stream)
- FILE *stream;
+md_show_usage (FILE *stream)
{
fprintf (stream, _("\
SH options:\n\
bfd_map_over_sections. */
static void
-sh_count_relocs (abfd, sec, data)
- bfd *abfd ATTRIBUTE_UNUSED;
- segT sec;
- PTR data;
+sh_count_relocs (bfd *abfd ATTRIBUTE_UNUSED, segT sec, void *data)
{
struct sh_count_relocs *info = (struct sh_count_relocs *) data;
segment_info_type *seginfo;
BFD_ASSEMBLER, this is called via bfd_map_over_sections. */
static void
-sh_frob_section (abfd, sec, ignore)
- bfd *abfd ATTRIBUTE_UNUSED;
- segT sec;
- PTR ignore ATTRIBUTE_UNUSED;
+sh_frob_section (bfd *abfd ATTRIBUTE_UNUSED, segT sec,
+ void *ignore ATTRIBUTE_UNUSED)
{
segment_info_type *seginfo;
fixS *fix;
info.sym = sym;
info.count = 0;
#ifdef BFD_ASSEMBLER
- bfd_map_over_sections (stdoutput, sh_count_relocs, (PTR) &info);
+ bfd_map_over_sections (stdoutput, sh_count_relocs, &info);
#else
{
int iscan;
for (iscan = SEG_E0; iscan < SEG_UNKNOWN; iscan++)
- sh_count_relocs ((bfd *) NULL, iscan, (PTR) &info);
+ sh_count_relocs ((bfd *) NULL, iscan, &info);
}
#endif
the stored function address entirely. */
void
-sh_frob_file ()
+sh_frob_file (void)
{
#ifdef HAVE_SH64
shmedia_frob_file_before_adjust ();
return;
#ifdef BFD_ASSEMBLER
- bfd_map_over_sections (stdoutput, sh_frob_section, (PTR) NULL);
+ bfd_map_over_sections (stdoutput, sh_frob_section, NULL);
#else
{
int iseg;
for (iseg = SEG_E0; iseg < SEG_UNKNOWN; iseg++)
- sh_frob_section ((bfd *) NULL, iseg, (PTR) NULL);
+ sh_frob_section ((bfd *) NULL, iseg, NULL);
}
#endif
}
create relocs so that md_apply_fix3 will fill in the correct values. */
void
-md_convert_frag (headers, seg, fragP)
#ifdef BFD_ASSEMBLER
- bfd *headers ATTRIBUTE_UNUSED;
+md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT seg, fragS *fragP)
#else
- object_headers *headers ATTRIBUTE_UNUSED;
+md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED, segT seg,
+ fragS *fragP)
#endif
- segT seg;
- fragS *fragP;
{
int donerelax = 0;
}
valueT
-md_section_align (seg, size)
- segT seg ATTRIBUTE_UNUSED;
- valueT size;
+md_section_align (segT seg ATTRIBUTE_UNUSED, valueT size)
{
#ifdef BFD_ASSEMBLER
#ifdef OBJ_ELF
to be aligned. */
static void
-s_uacons (bytes)
- int bytes;
+s_uacons (int bytes)
{
/* Tell sh_cons_align not to align this value. */
sh_no_align_cons = 1;
enable this warning? */
void
-sh_cons_align (nbytes)
- int nbytes;
+sh_cons_align (int nbytes)
{
int nalign;
char *p;
also where we check for misaligned data. */
void
-sh_handle_align (frag)
- fragS *frag;
+sh_handle_align (fragS *frag)
{
int bytes = frag->fr_next->fr_address - frag->fr_address - frag->fr_fix;
/* See whether the relocation should be resolved locally. */
static bfd_boolean
-sh_local_pcrel (fix)
- fixS *fix;
+sh_local_pcrel (fixS *fix)
{
return (! sh_relax
&& (fix->fx_r_type == BFD_RELOC_SH_PCDISP8BY2
relaxing. */
int
-sh_force_relocation (fix)
- fixS *fix;
+sh_force_relocation (fixS *fix)
{
/* These relocations can't make it into a DSO, so no use forcing
them for global symbols. */
#ifdef OBJ_ELF
bfd_boolean
-sh_fix_adjustable (fixP)
- fixS *fixP;
+sh_fix_adjustable (fixS *fixP)
{
if (fixP->fx_r_type == BFD_RELOC_32_PLT_PCREL
|| fixP->fx_r_type == BFD_RELOC_32_GOT_PCREL
}
void
-sh_elf_final_processing ()
+sh_elf_final_processing (void)
{
int val;
/* Apply a fixup to the object file. */
void
-md_apply_fix3 (fixP, valP, seg)
- fixS * fixP;
- valueT * valP;
- segT seg ATTRIBUTE_UNUSED;
+md_apply_fix3 (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
{
char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
int lowbyte = target_big_endian ? 1 : 0;
by which a fragment must grow to reach it's destination. */
int
-md_estimate_size_before_relax (fragP, segment_type)
- register fragS *fragP;
- register segT segment_type;
+md_estimate_size_before_relax (fragS *fragP, segT segment_type)
{
int what;
/* Put number into target byte order. */
void
-md_number_to_chars (ptr, use, nbytes)
- char *ptr;
- valueT use;
- int nbytes;
+md_number_to_chars (char *ptr, valueT use, int nbytes)
{
#ifdef HAVE_SH64
/* We might need to set the contents type to data. */
eg for the sh-hms target. */
long
-md_pcrel_from (fixP)
- fixS *fixP;
+md_pcrel_from (fixS *fixP)
{
return fixP->fx_size + fixP->fx_where + fixP->fx_frag->fr_address + 2;
}
long
-md_pcrel_from_section (fixP, sec)
- fixS *fixP;
- segT sec;
+md_pcrel_from_section (fixS *fixP, segT sec)
{
if (! sh_local_pcrel (fixP)
&& fixP->fx_addsy != (symbolS *) NULL
#ifdef OBJ_COFF
int
-tc_coff_sizemachdep (frag)
- fragS *frag;
+tc_coff_sizemachdep (fragS *frag)
{
return md_relax_table[frag->fr_subtype].rlx_length;
}
but does some minor tweaking. */
void
-sh_coff_reloc_mangle (seg, fix, intr, paddr)
- segment_info_type *seg;
- fixS *fix;
- struct internal_reloc *intr;
- unsigned int paddr;
+sh_coff_reloc_mangle (segment_info_type *seg, fixS *fix,
+ struct internal_reloc *intr, unsigned int paddr)
{
symbolS *symbol_ptr = fix->fx_addsy;
symbolS *dot;
/* Create a reloc. */
arelent *
-tc_gen_reloc (section, fixp)
- asection *section ATTRIBUTE_UNUSED;
- fixS *fixp;
+tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
{
arelent *rel;
bfd_reloc_code_real_type r_type;
#ifdef OBJ_ELF
inline static char *
-sh_end_of_match (cont, what)
- char *cont, *what;
+sh_end_of_match (char *cont, char *what)
{
int len = strlen (what);
}
int
-sh_parse_name (name, exprP, nextcharP)
- char const *name;
- expressionS *exprP;
- char *nextcharP;
+sh_parse_name (char const *name, expressionS *exprP, char *nextcharP)
{
char *next = input_line_pointer;
char *next_end;
/* We require .long, et. al., to be aligned correctly. */
#define md_cons_align(nbytes) sh_cons_align (nbytes)
-extern void sh_cons_align PARAMS ((int));
+extern void sh_cons_align (int);
/* When relaxing, we need to generate relocations for alignment
directives. */
#define HANDLE_ALIGN(frag) sh_handle_align (frag)
-extern void sh_handle_align PARAMS ((fragS *));
+extern void sh_handle_align (fragS *);
#define MAX_MEM_FOR_RS_ALIGN_CODE (1 + 2)
/* We need to force out some relocations when relaxing. */
#define TC_FORCE_RELOCATION(fix) sh_force_relocation (fix)
-extern int sh_force_relocation PARAMS ((struct fix *));
+extern int sh_force_relocation (struct fix *);
/* This macro decides whether a particular reloc is an entry in a
switch table. It is used when relaxing, because the linker needs
(sh_relax && SWITCH_TABLE (FIX))
#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
-extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
+extern long md_pcrel_from_section (struct fix *, segT);
#define IGNORE_NONSTANDARD_ESCAPES
/* We call a routine to emit a reloc for a label, so that the linker
can align loads and stores without crossing a label. */
-extern void sh_frob_label PARAMS ((void));
+extern void sh_frob_label (void);
#define tc_frob_label(sym) sh_frob_label ()
/* We call a routine to flush pending output in order to output a DATA
reloc when required. */
-extern void sh_flush_pending_output PARAMS ((void));
+extern void sh_flush_pending_output (void);
#define md_flush_pending_output() sh_flush_pending_output ()
#ifdef BFD_ASSEMBLER
#else
#define tc_frob_file sh_frob_file
#endif
-extern void sh_frob_file PARAMS ((void));
+extern void sh_frob_file (void);
#ifdef OBJ_COFF
#define TC_RELOC_MANGLE(seg, fix, int, paddr) \
sh_coff_reloc_mangle ((seg), (fix), (int), (paddr))
extern void sh_coff_reloc_mangle
- PARAMS ((struct segment_info_struct *, struct fix *,
- struct internal_reloc *, unsigned int));
+ (struct segment_info_struct *, struct fix *,
+ struct internal_reloc *, unsigned int));
#define tc_coff_symbol_emit_hook(a) ; /* not used */
#define TC_KEEP_FX_OFFSET 1
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag)
-extern int tc_coff_sizemachdep PARAMS ((fragS *));
+extern int tc_coff_sizemachdep (fragS *);
#ifdef BFD_ASSEMBLER
#define SEG_NAME(SEG) segment_name (SEG)
#endif
#define elf_tc_final_processing sh_elf_final_processing
-extern void sh_elf_final_processing PARAMS ((void));
+extern void sh_elf_final_processing (void);
#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */
#define TC_RELOC_GLOBAL_OFFSET_TABLE BFD_RELOC_SH_GOTPC
#define tc_fix_adjustable(FIX) sh_fix_adjustable(FIX)
-extern bfd_boolean sh_fix_adjustable PARAMS ((struct fix *));
+extern bfd_boolean sh_fix_adjustable (struct fix *);
/* Values passed to md_apply_fix3 don't include symbol values. */
#define MD_APPLY_SYM_VALUE(FIX) 0
#define md_parse_name(name, exprP, nextcharP) \
sh_parse_name ((name), (exprP), (nextcharP))
-int sh_parse_name PARAMS ((char const *name,
- expressionS *exprP,
- char *nextchar));
+int sh_parse_name (char const *name, expressionS *exprP, char *nextchar);
#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP) \
sh_cons_fix_new ((FRAG), (OFF), (LEN), (EXP))
-void sh_cons_fix_new PARAMS ((fragS *, int, int, expressionS *));
+void sh_cons_fix_new (fragS *, int, int, expressionS *);
/* This is used to construct expressions out of @GOTOFF, @PLT and @GOT
symbols. The relocation type is stored in X_md. */
(SHMEDIA_NOP_OPC >> 16) & 255, (SHMEDIA_NOP_OPC >> 24) & 255
};
-static void shmedia_md_begin
- PARAMS ((void));
-static int shmedia_parse_reg
- PARAMS ((char *, int *, int *, shmedia_arg_type));
-static void shmedia_md_assemble
- PARAMS ((char *));
-static void shmedia_md_apply_fix3
- PARAMS ((fixS *, valueT *));
-static int shmedia_md_estimate_size_before_relax
- PARAMS ((fragS *, segT));
-static int shmedia_init_reloc
- PARAMS ((arelent *, fixS *));
-static char *shmedia_get_operands
- PARAMS ((shmedia_opcode_info *, char *, shmedia_operands_info *));
-static void s_sh64_mode
- PARAMS ((int));
-static void s_sh64_abi
- PARAMS ((int));
-static void shmedia_md_convert_frag
- PARAMS ((bfd *, segT, fragS *, bfd_boolean));
-static void shmedia_check_limits
- PARAMS ((offsetT *, bfd_reloc_code_real_type, fixS *));
-static void sh64_set_contents_type
- PARAMS ((enum sh64_elf_cr_type));
-static void shmedia_get_operand
- PARAMS ((char **, shmedia_operand_info *, shmedia_arg_type));
-static unsigned long shmedia_immediate_op
- PARAMS ((char *, shmedia_operand_info *, int, bfd_reloc_code_real_type));
-static char *shmedia_parse_exp
- PARAMS ((char *, shmedia_operand_info *));
-static void shmedia_frob_file_before_adjust
- PARAMS ((void));
-static void sh64_emit_crange
- PARAMS ((symbolS *, symbolS *, enum sh64_elf_cr_type));
-static void sh64_flush_last_crange
- PARAMS ((bfd *, asection *, PTR));
-static void sh64_flag_output
- PARAMS ((void));
-static void sh64_update_contents_mark
- PARAMS ((bfd_boolean));
-static void sh64_vtable_entry
- PARAMS ((int));
-static void sh64_vtable_inherit
- PARAMS ((int));
-static char * strip_datalabels
- PARAMS ((void));
-static int shmedia_build_Mytes
- PARAMS ((shmedia_opcode_info *, shmedia_operands_info *));
-static shmedia_opcode_info * shmedia_find_cooked_opcode
- PARAMS ((char **));
-static unsigned long shmedia_mask_number
- PARAMS ((unsigned long, bfd_reloc_code_real_type));
+static void shmedia_md_begin (void);
+static int shmedia_parse_reg (char *, int *, int *, shmedia_arg_type);
+static void shmedia_md_assemble (char *);
+static void shmedia_md_apply_fix3 (fixS *, valueT *);
+static int shmedia_md_estimate_size_before_relax (fragS *, segT);
+static int shmedia_init_reloc (arelent *, fixS *);
+static char *shmedia_get_operands (shmedia_opcode_info *, char *,
+ shmedia_operands_info *);
+static void s_sh64_mode (int);
+static void s_sh64_abi (int);
+static void shmedia_md_convert_frag (bfd *, segT, fragS *, bfd_boolean);
+static void shmedia_check_limits (offsetT *, bfd_reloc_code_real_type,
+ fixS *);
+static void sh64_set_contents_type (enum sh64_elf_cr_type);
+static void shmedia_get_operand (char **, shmedia_operand_info *,
+ shmedia_arg_type);
+static unsigned long shmedia_immediate_op (char *, shmedia_operand_info *,
+ int, bfd_reloc_code_real_type);
+static char *shmedia_parse_exp (char *, shmedia_operand_info *);
+static void shmedia_frob_file_before_adjust (void);
+static void sh64_emit_crange (symbolS *, symbolS *, enum sh64_elf_cr_type);
+static void sh64_flush_last_crange (bfd *, asection *, void *);
+static void sh64_flag_output (void);
+static void sh64_update_contents_mark (bfd_boolean);
+static void sh64_vtable_entry (int);
+static void sh64_vtable_inherit (int);
+static char *strip_datalabels (void);
+static int shmedia_build_Mytes (shmedia_opcode_info *,
+ shmedia_operands_info *);
+static shmedia_opcode_info *shmedia_find_cooked_opcode (char **);
+static unsigned long shmedia_mask_number (unsigned long,
+ bfd_reloc_code_real_type);
#include "tc-sh.c"
void
-shmedia_md_end ()
+shmedia_md_end (void)
{
symbolS *symp;
+ offset" value. */
static void
-shmedia_frob_file_before_adjust ()
+shmedia_frob_file_before_adjust (void)
{
symbolS *symp;
for (symp = symbol_rootP; symp != NULL; symp = symp->sy_next)
static in read.c. That solution was discarded a too kludgy. */
void
-sh64_do_align (n, fill, len, max)
- int n;
- const char *fill;
- int len;
- int max;
+sh64_do_align (int n, const char *fill, int len, int max)
{
/* Update region, or put a data region in front. */
sh64_update_contents_mark (TRUE);
assembly). */
int
-sh64_max_mem_for_rs_align_code ()
+sh64_max_mem_for_rs_align_code (void)
{
segment_info_type *seginfo;
fragS *mode_start_frag;
/* Put in SHmedia NOP:s if the alignment was created when in SHmedia mode. */
void
-sh64_handle_align (frag)
- fragS * frag;
+sh64_handle_align (fragS * frag)
{
int bytes = frag->fr_next->fr_address - frag->fr_address - frag->fr_fix;
char * p = frag->fr_literal + frag->fr_fix;
/* Set SEC_SH64_ISA32 for SHmedia sections. */
void
-shmedia_frob_section_type (sec)
- asection *sec;
+shmedia_frob_section_type (asection *sec)
{
segment_info_type *seginfo;
seginfo = seg_info (sec);
seems too much for little benefit. */
void
-sh64_adjust_symtab ()
+sh64_adjust_symtab (void)
{
symbolS *symp;
/* Fill-in an allocated arelent. */
static int
-shmedia_init_reloc (rel, fixP)
- arelent *rel;
- fixS *fixP;
+shmedia_init_reloc (arelent *rel, fixS *fixP)
{
/* Adjust parts of *relp according to *fixp, and tell that it has been
done, so default initializations will not happen. */
/* Hook called from md_apply_fix3 in tc-sh.c. */
static void
-shmedia_md_apply_fix3 (fixP, valp)
- fixS *fixP;
- valueT *valp;
+shmedia_md_apply_fix3 (fixS *fixP, valueT *valp)
{
offsetT val = *valp;
char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
/* Hook called from md_convert_frag in tc-sh.c. */
static void
-shmedia_md_convert_frag (output_bfd, seg, fragP, final)
- bfd *output_bfd ATTRIBUTE_UNUSED;
- segT seg ATTRIBUTE_UNUSED;
- fragS *fragP;
- bfd_boolean final;
+shmedia_md_convert_frag (bfd *output_bfd ATTRIBUTE_UNUSED,
+ segT seg ATTRIBUTE_UNUSED, fragS *fragP,
+ bfd_boolean final)
{
/* Pointer to first byte in variable-sized part of the frag. */
char *var_partp;
reloc. */
static unsigned long
-shmedia_mask_number (number, how)
- unsigned long number;
- bfd_reloc_code_real_type how;
+shmedia_mask_number (unsigned long number, bfd_reloc_code_real_type how)
{
switch (how)
{
non-NULL, as_bad otherwise. */
static void
-shmedia_check_limits (valp, reloc, fixp)
- offsetT *valp;
- bfd_reloc_code_real_type reloc;
- fixS *fixp;
+shmedia_check_limits (offsetT *valp, bfd_reloc_code_real_type reloc,
+ fixS *fixp)
{
offsetT val = *valp;
"or" into the opcode (non-zero if the value was a constant number). */
static unsigned long
-shmedia_immediate_op (where, op, pcrel, how)
- char *where;
- shmedia_operand_info *op;
- int pcrel;
- bfd_reloc_code_real_type how;
+shmedia_immediate_op (char *where, shmedia_operand_info *op, int pcrel,
+ bfd_reloc_code_real_type how)
{
unsigned long retval = 0;
chars consumed. */
static int
-shmedia_parse_reg (src, mode, reg, argtype)
- char *src;
- int *mode;
- int *reg;
- shmedia_arg_type argtype;
+shmedia_parse_reg (char *src, int *mode, int *reg, shmedia_arg_type argtype)
{
int l0 = TOLOWER (src[0]);
int l1 = l0 ? TOLOWER (src[1]) : 0;
/* Called from md_estimate_size_before_relax in tc-sh.c */
static int
-shmedia_md_estimate_size_before_relax (fragP, segment_type)
- fragS *fragP;
- segT segment_type ATTRIBUTE_UNUSED;
+shmedia_md_estimate_size_before_relax (fragS *fragP,
+ segT segment_type ATTRIBUTE_UNUSED)
{
int old_fr_fix;
expressionS *exp;
datatypes adjusted. */
static char *
-shmedia_parse_exp (s, op)
- char *s;
- shmedia_operand_info *op;
+shmedia_parse_exp (char *s, shmedia_operand_info *op)
{
char *save;
char *new;
/* Parse an operand. Store pointer to next character in *PTR. */
static void
-shmedia_get_operand (ptr, op, argtype)
- char **ptr;
- shmedia_operand_info *op;
- shmedia_arg_type argtype;
+shmedia_get_operand (char **ptr, shmedia_operand_info *op,
+ shmedia_arg_type argtype)
{
char *src = *ptr;
int mode = -1;
how much text was consumed. */
static char *
-shmedia_get_operands (info, args, operands)
- shmedia_opcode_info *info;
- char *args;
- shmedia_operands_info *operands;
+shmedia_get_operands (shmedia_opcode_info *info, char *args,
+ shmedia_operands_info *operands)
{
char *ptr = args;
int i;
*STR_P to the first character after the last one read. */
static shmedia_opcode_info *
-shmedia_find_cooked_opcode (str_p)
- char **str_p;
+shmedia_find_cooked_opcode (char **str_p)
{
char *str = *str_p;
char *op_start;
/* Build up an instruction, including allocating the frag. */
static int
-shmedia_build_Mytes (opcode, operands)
- shmedia_opcode_info *opcode;
- shmedia_operands_info *operands;
+shmedia_build_Mytes (shmedia_opcode_info *opcode,
+ shmedia_operands_info *operands)
{
unsigned long insn = opcode->opcode_base;
int i, j;
/* Assemble a SHmedia instruction. */
static void
-shmedia_md_assemble (str)
- char *str;
+shmedia_md_assemble (char *str)
{
char *op_end;
shmedia_opcode_info *opcode;
/* Hook called from md_begin in tc-sh.c. */
void
-shmedia_md_begin ()
+shmedia_md_begin (void)
{
const shmedia_opcode_info *shmedia_opcode;
shmedia_opcode_hash_control = hash_new ();
options was specified. */
static void
-s_sh64_mode (ignore)
- int ignore ATTRIBUTE_UNUSED;
+s_sh64_mode (int ignore ATTRIBUTE_UNUSED)
{
char *name = input_line_pointer, ch;
--abi options was specified. */
static void
-s_sh64_abi (ignore)
- int ignore ATTRIBUTE_UNUSED;
+s_sh64_abi (int ignore ATTRIBUTE_UNUSED)
{
char *name = input_line_pointer, ch;
when options were being parsed. */
const char *
-sh64_target_format ()
+sh64_target_format (void)
{
#ifdef TE_NetBSD
/* For NetBSD, if the ISA is unspecified, always use SHmedia. */
/* The worker function of TARGET_MACH. */
int
-sh64_target_mach ()
+sh64_target_mach (void)
{
/* We need to explicitly set bfd_mach_sh5 instead of the default 0. But
we only do this for the 64-bit ABI: if we do it for the 32-bit ABI,
md_pcrel_from (in tc-sh.c). */
valueT
-shmedia_md_pcrel_from_section (fixP, sec)
- struct fix *fixP;
- segT sec ATTRIBUTE_UNUSED;
+shmedia_md_pcrel_from_section (struct fix *fixP, segT sec ATTRIBUTE_UNUSED)
{
know (fixP->fx_frag->fr_type == rs_machine_dependent);
and ENDSYM marking end, and CR_TYPE specifying the type. */
static void
-sh64_emit_crange (startsym, endsym, cr_type)
- symbolS *startsym;
- symbolS *endsym;
- enum sh64_elf_cr_type cr_type;
+sh64_emit_crange (symbolS *startsym, symbolS *endsym,
+ enum sh64_elf_cr_type cr_type)
{
expressionS exp;
segT current_seg = now_seg;
function isn't called. */
static void
-sh64_set_contents_type (new_contents_type)
- enum sh64_elf_cr_type new_contents_type;
+sh64_set_contents_type (enum sh64_elf_cr_type new_contents_type)
{
segment_info_type *seginfo;
doesn't matter whether or not an assembled opcode is nearby. */
void
-sh64_frob_label (symp)
- symbolS *symp;
+sh64_frob_label (symbolS *symp)
{
segT seg = S_GET_SEGMENT (symp);
static const symbolS *null = NULL;
symbol hook. */
int
-sh64_consume_datalabel (name, exp, cp, operandf)
- const char *name;
- expressionS *exp;
- char *cp;
- segT (*operandf) PARAMS ((expressionS *));
+sh64_consume_datalabel (const char *name, expressionS *exp, char *cp,
+ segT (*operandf) (expressionS *))
{
static int parsing_datalabel = 0;
then we need not output the main symbol. */
int
-sh64_exclude_symbol (symp)
- symbolS *symp;
+sh64_exclude_symbol (symbolS *symp)
{
symbolS *main_symbol = *symbol_get_tc (symp);
a new region if needed. */
static void
-sh64_update_contents_mark (update_type)
- bfd_boolean update_type;
+sh64_update_contents_mark (bfd_boolean update_type)
{
segment_info_type *seginfo;
seginfo = seg_info (now_seg);
just switching segments. */
void
-sh64_flush_pending_output ()
+sh64_flush_pending_output (void)
{
sh64_update_contents_mark (TRUE);
sh_flush_pending_output ();
/* Flush out the last crange descriptor after all insns have been emitted. */
static void
-sh64_flush_last_crange (abfd, seg, countparg)
- bfd *abfd ATTRIBUTE_UNUSED;
- asection *seg;
- PTR countparg ATTRIBUTE_UNUSED;
+sh64_flush_last_crange (bfd *abfd ATTRIBUTE_UNUSED, asection *seg,
+ void *countparg ATTRIBUTE_UNUSED)
{
segment_info_type *seginfo;
descriptors. */
static void
-sh64_flag_output ()
+sh64_flag_output (void)
{
if (sh64_isa_mode != sh64_isa_unspecified
&& !seen_insn
any we find. */
static char *
-strip_datalabels ()
+strip_datalabels (void)
{
char *src, *dest, *start=input_line_pointer;
}
static void
-sh64_vtable_entry (ignore)
- int ignore ATTRIBUTE_UNUSED;
+sh64_vtable_entry (int ignore ATTRIBUTE_UNUSED)
{
char *eol = strip_datalabels ();
}
static void
-sh64_vtable_inherit (ignore)
- int ignore ATTRIBUTE_UNUSED;
+sh64_vtable_inherit (int ignore ATTRIBUTE_UNUSED)
{
char *eol = strip_datalabels ();
obj_elf_vtable_inherit (0);
input_line_pointer = eol;
}
+
SHcompact NOP:s. */
#undef HANDLE_ALIGN
#define HANDLE_ALIGN(frag) sh64_handle_align (frag)
-extern void sh64_handle_align PARAMS ((fragS *));
+extern void sh64_handle_align (fragS *);
#undef MAX_MEM_FOR_RS_ALIGN_CODE
#define MAX_MEM_FOR_RS_ALIGN_CODE sh64_max_mem_for_rs_align_code ()
-extern int sh64_max_mem_for_rs_align_code PARAMS ((void));
+extern int sh64_max_mem_for_rs_align_code (void);
#undef LISTING_HEADER
#define LISTING_HEADER \
: "SuperH SHcompact/SHmedia Little Endian GAS")
/* We need to record the new frag position after an .align. */
-extern void sh64_do_align PARAMS ((int, const char *, int, int));
+extern void sh64_do_align (int, const char *, int, int);
#define md_do_align(n, fill, len, max, l) \
do { sh64_do_align (n, fill, len, max); goto l; } while (0)
#undef TARGET_FORMAT
#define TARGET_FORMAT sh64_target_format ()
-extern const char *sh64_target_format PARAMS ((void));
+extern const char *sh64_target_format (void);
#define TARGET_MACH sh64_target_mach ()
-extern int sh64_target_mach PARAMS ((void));
+extern int sh64_target_mach (void);
#undef TC_FORCE_RELOCATION_LOCAL
#define TC_FORCE_RELOCATION_LOCAL(FIX) \
#undef md_parse_name
#define md_parse_name(NAME, EXP, CP) \
sh64_consume_datalabel (NAME, EXP, CP, operand)
-extern int sh64_consume_datalabel
- PARAMS ((const char *, expressionS *, char *, segT (*) (expressionS *)));
+extern int sh64_consume_datalabel (const char *, expressionS *, char *,
+ segT (*) (expressionS *));
/* Saying "$" is the same as saying ".". */
#define DOLLAR_DOT
#define MD_PCREL_FROM_SECTION(FIX, SEC) \
shmedia_md_pcrel_from_section (FIX, SEC)
-extern valueT shmedia_md_pcrel_from_section PARAMS ((struct fix *, segT));
+extern valueT shmedia_md_pcrel_from_section (struct fix *, segT);
/* We need to mark this symbol as a BranchTarget; setting st_other for it
and adding 1 to its value (temporarily). */
-extern void sh64_frob_label PARAMS ((symbolS *));
+extern void sh64_frob_label (symbolS *);
#undef tc_frob_label
#define tc_frob_label(sym) \
} \
while (0)
-extern int sh64_exclude_symbol PARAMS ((symbolS *));
+extern int sh64_exclude_symbol (symbolS *);
-extern void sh64_adjust_symtab PARAMS ((void));
+extern void sh64_adjust_symtab (void);
#define tc_adjust_symtab sh64_adjust_symtab
#undef md_flush_pending_output
#define md_flush_pending_output() sh64_flush_pending_output ()
-extern void sh64_flush_pending_output PARAMS ((void));
+extern void sh64_flush_pending_output (void);
/* Note that tc-sh.c has a sh_frob_section, but it's called from
tc_frob_file_before_adjust. */
#define tc_frob_section(sec) shmedia_frob_section_type (sec)
-extern void shmedia_frob_section_type PARAMS ((asection *));
+extern void shmedia_frob_section_type (asection *);
/* We need to emit fixups relative to the frag in which the instruction
resides. Safest way without calculating max fragment growth or making
extern fragS *sh64_last_insn_frag;
#define md_end() shmedia_md_end ()
-void shmedia_md_end PARAMS ((void));
+void shmedia_md_end (void);
/* Because we make .debug_line hold the SHmedia instruction address | 1,
we have to say we only have minimum byte-size insns. */