X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fconfig%2Ftc-m32r.c;h=f77c1f180bfd3c8bbaba76e357726f031fac081e;hb=b99747aeed79ad69af8b8be4d9aa3a74200fca7d;hp=bec2a8ced1acd94a68f3a77f514fc4bb1d029ff0;hpb=ebd1c8757cf3f32daffe2615cbb778e495ebe412;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/config/tc-m32r.c b/gas/config/tc-m32r.c index bec2a8ced1..f77c1f180b 100644 --- a/gas/config/tc-m32r.c +++ b/gas/config/tc-m32r.c @@ -1,12 +1,11 @@ /* tc-m32r.c -- Assembler for the Renesas M32R. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006 Free Software Foundation, Inc. + Copyright (C) 1996-2016 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. GAS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + the Free Software Foundation; either version 3, or (at your option) any later version. GAS is distributed in the hope that it will be useful, @@ -267,7 +266,7 @@ parallel (void) } int -md_parse_option (int c, char *arg ATTRIBUTE_UNUSED) +md_parse_option (int c, const char *arg ATTRIBUTE_UNUSED) { switch (c) { @@ -406,11 +405,11 @@ md_show_usage (FILE *stream) fprintf (stream, _("\ -ignore-parallel-conflicts do not check parallel instructions\n")); fprintf (stream, _("\ - fo contraint violations\n")); + for constraint violations\n")); fprintf (stream, _("\ -no-ignore-parallel-conflicts check parallel instructions for\n")); fprintf (stream, _("\ - contraint violations\n")); + constraint violations\n")); fprintf (stream, _("\ -Ip synonym for -ignore-parallel-conflicts\n")); fprintf (stream, _("\ @@ -568,13 +567,10 @@ debug_sym (int ignore ATTRIBUTE_UNUSED) { char *name; char delim; - char *end_name; symbolS *symbolP; - sym_linkS *link; + sym_linkS *lnk; - name = input_line_pointer; - delim = get_symbol_end (); - end_name = input_line_pointer; + delim = get_symbol_name (&name); if ((symbolP = symbol_find (name)) == NULL && (symbolP = md_undefined_symbol (name)) == NULL) @@ -589,14 +585,14 @@ debug_sym (int ignore ATTRIBUTE_UNUSED) else { - link = (sym_linkS *) xmalloc (sizeof (sym_linkS)); - link->symbol = symbolP; - link->next = debug_sym_link; - debug_sym_link = link; + lnk = XNEW (sym_linkS); + lnk->symbol = symbolP; + lnk->next = debug_sym_link; + debug_sym_link = lnk; symbol_get_obj (symbolP)->local = 1; } - *end_name = delim; + (void) restore_line_pointer (delim); demand_empty_rest_of_line (); } @@ -617,7 +613,7 @@ expand_debug_syms (sym_linkS *syms, int align) { symbolS *symbolP = syms->symbol; next_syms = syms->next; - input_line_pointer = ".\n"; + input_line_pointer = (char *) ".\n"; pseudo_set (symbolP); free ((char *) syms); } @@ -713,6 +709,7 @@ md_begin (void) /* The sbss section is for local .scomm symbols. */ sbss_section = subseg_new (".sbss", 0); + seg_info (sbss_section)->bss = 1; /* This is copied from perform_an_assembly_pass. */ applicable = bfd_applicable_section_flags (stdoutput); @@ -722,12 +719,12 @@ md_begin (void) /* We must construct a fake section similar to bfd_com_section but with the name .scommon. */ - scom_section = bfd_com_section; + scom_section = *bfd_com_section_ptr; scom_section.name = ".scommon"; scom_section.output_section = & scom_section; scom_section.symbol = & scom_symbol; scom_section.symbol_ptr_ptr = & scom_section.symbol; - scom_symbol = * bfd_com_section.symbol; + scom_symbol = * bfd_com_section_ptr->symbol; scom_symbol.name = ".scommon"; scom_symbol.section = & scom_section; @@ -919,7 +916,7 @@ assemble_two_insns (char *str1, char *str2, int parallel_p) if (! (first.insn = m32r_cgen_assemble_insn (gas_cgen_cpu_desc, str1, & first.fields, first.buffer, & errmsg))) { - as_bad (errmsg); + as_bad ("%s", errmsg); return; } @@ -1033,7 +1030,7 @@ assemble_two_insns (char *str1, char *str2, int parallel_p) if (! (second.insn = m32r_cgen_assemble_insn (gas_cgen_cpu_desc, str1, & second.fields, second.buffer, & errmsg))) { - as_bad (errmsg); + as_bad ("%s", errmsg); return; } @@ -1224,7 +1221,7 @@ md_assemble (char *str) if (!insn.insn) { - as_bad (errmsg); + as_bad ("%s", errmsg); return; } @@ -1453,7 +1450,7 @@ md_section_align (segT segment, valueT size) { int align = bfd_get_section_alignment (stdoutput, segment); - return ((size + (1 << align) - 1) & (-1 << align)); + return ((size + (1 << align) - 1) & -(1 << align)); } symbolS * @@ -1480,13 +1477,12 @@ m32r_scomm (int ignore ATTRIBUTE_UNUSED) offsetT align; int align2; - name = input_line_pointer; - c = get_symbol_end (); + c = get_symbol_name (&name); /* Just after name is now '\0'. */ p = input_line_pointer; *p = c; - SKIP_WHITESPACE (); + SKIP_WHITESPACE_AFTER_NAME (); if (*input_line_pointer != ',') { as_bad (_("Expected comma after symbol-name: rest of line ignored.")); @@ -1808,8 +1804,8 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, { fixS *fixP; - assert (fragP->fr_subtype != 1); - assert (fragP->fr_cgen.insn != 0); + gas_assert (fragP->fr_subtype != 1); + gas_assert (fragP->fr_cgen.insn != 0); fixP = gas_cgen_record_fixup (fragP, /* Offset of branch insn in frag. */ @@ -1899,10 +1895,10 @@ m32r_record_hi16 (int reloc_type, { struct m32r_hi_fixup *hi_fixup; - assert (reloc_type == BFD_RELOC_M32R_HI16_SLO + gas_assert (reloc_type == BFD_RELOC_M32R_HI16_SLO || reloc_type == BFD_RELOC_M32R_HI16_ULO); - hi_fixup = xmalloc (sizeof (* hi_fixup)); + hi_fixup = XNEW (struct m32r_hi_fixup); hi_fixup->fixp = fixP; hi_fixup->seg = now_seg; hi_fixup->next = m32r_hi_fixup_list; @@ -2007,7 +2003,7 @@ m32r_frob_file (void) segment_info_type *seginfo; int pass; - assert (FX_OPINFO_R_TYPE (l->fixp) == BFD_RELOC_M32R_HI16_SLO + gas_assert (FX_OPINFO_R_TYPE (l->fixp) == BFD_RELOC_M32R_HI16_SLO || FX_OPINFO_R_TYPE (l->fixp) == BFD_RELOC_M32R_HI16_ULO); /* Check quickly whether the next fixup happens to be a matching low. */ @@ -2048,7 +2044,7 @@ m32r_frob_file (void) for (pf = &seginfo->fix_root; *pf != l->fixp; pf = & (*pf)->fx_next) - assert (*pf != NULL); + gas_assert (*pf != NULL); *pf = l->fixp->fx_next; @@ -2110,63 +2106,10 @@ md_number_to_chars (char *buf, valueT val, int n) /* Equal to MAX_PRECISION in atof-ieee.c. */ #define MAX_LITTLENUMS 6 -char * +const char * md_atof (int type, char *litP, int *sizeP) { - int i; - int prec; - LITTLENUM_TYPE words[MAX_LITTLENUMS]; - char *t; - - switch (type) - { - case 'f': - case 'F': - case 's': - case 'S': - prec = 2; - break; - - case 'd': - case 'D': - case 'r': - case 'R': - prec = 4; - break; - - /* FIXME: Some targets allow other format chars for bigger sizes - here. */ - - default: - *sizeP = 0; - return _("Bad call to md_atof()"); - } - - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - *sizeP = prec * sizeof (LITTLENUM_TYPE); - - if (target_big_endian) - { - for (i = 0; i < prec; i++) - { - md_number_to_chars (litP, (valueT) words[i], - sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - } - else - { - for (i = prec - 1; i >= 0; i--) - { - md_number_to_chars (litP, (valueT) words[i], - sizeof (LITTLENUM_TYPE)); - litP += sizeof (LITTLENUM_TYPE); - } - } - - return 0; + return ieee_md_atof (type, litP, sizeP, target_big_endian); } void @@ -2251,10 +2194,10 @@ tc_gen_reloc (asection * section, fixS * fixP) { arelent * reloc; bfd_reloc_code_real_type code; - - reloc = xmalloc (sizeof (* reloc)); - - reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *)); + + reloc = XNEW (arelent); + + reloc->sym_ptr_ptr = XNEW (asymbol *); *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixP->fx_addsy); reloc->address = fixP->fx_frag->fr_address + fixP->fx_where; @@ -2268,7 +2211,7 @@ tc_gen_reloc (asection * section, fixS * fixP) bfd_set_error (bfd_error_bad_value); } } - + code = fixP->fx_r_type; if (pic_code) { @@ -2320,7 +2263,7 @@ printf("%s",bfd_get_reloc_code_name(code)); printf(" => %s",bfd_get_reloc_code_name(code)); #endif } - + reloc->howto = bfd_reloc_type_lookup (stdoutput, code); #ifdef DEBUG_PIC @@ -2334,7 +2277,7 @@ printf(" => %s\n",reloc->howto->name); fixP->fx_r_type, bfd_get_reloc_code_name (code)); return NULL; } - + /* Use fx_offset for these cases. */ if ( fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY || fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT @@ -2352,12 +2295,12 @@ printf(" => %s\n",reloc->howto->name); reloc->addend = fixP->fx_offset; else reloc->addend = fixP->fx_addnumber; - + return reloc; } inline static char * -m32r_end_of_match (char *cont, char *what) +m32r_end_of_match (char *cont, const char *what) { int len = strlen (what);