X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fconfig%2Ftc-iq2000.c;h=f150e19d028805563f9ac25ff676c98343854e08;hb=87789e08e5cb2191af1122ed98af2d6c023b3a0a;hp=0d689c09a21947cfd29de59124c0fd9df96ad723;hpb=01f0fe5e0450edf168c1f612feb93cf588e4e7ea;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/config/tc-iq2000.c b/gas/config/tc-iq2000.c index 0d689c09a2..f150e19d02 100644 --- a/gas/config/tc-iq2000.c +++ b/gas/config/tc-iq2000.c @@ -1,11 +1,11 @@ /* tc-iq2000.c -- Assembler for the Sitera IQ2000. - Copyright (C) 2003, 2004, 2005 Free Software Foundation. + Copyright (C) 2003-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, @@ -18,7 +18,6 @@ the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -#include #include "as.h" #include "safe-ctype.h" #include "subsegs.h" @@ -29,7 +28,7 @@ #include "elf/common.h" #include "elf/iq2000.h" #include "libbfd.h" -#include "hash.h" +#include "sb.h" #include "macro.h" /* Structure to hold all of the different components describing @@ -119,7 +118,7 @@ size_t md_longopts_size = sizeof (md_longopts); int md_parse_option (int c ATTRIBUTE_UNUSED, - char * arg ATTRIBUTE_UNUSED) + const char * arg ATTRIBUTE_UNUSED) { return 0; } @@ -234,7 +233,7 @@ iq2000_add_macro (const char * name, sb macro_name; const char *namestr; - macro = xmalloc (sizeof (macro_entry)); + macro = XNEW (macro_entry); sb_new (& macro->sub); sb_new (& macro_name); @@ -254,7 +253,7 @@ iq2000_add_macro (const char * name, { formal_entry *formal; - formal = xmalloc (sizeof (formal_entry)); + formal = XNEW (formal_entry); sb_new (& formal->name); sb_new (& formal->def); @@ -433,7 +432,7 @@ valueT 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 * @@ -534,9 +533,9 @@ iq2000_record_hi16 (int reloc_type, { struct iq2000_hi_fixup * hi_fixup; - assert (reloc_type == BFD_RELOC_HI16); + gas_assert (reloc_type == BFD_RELOC_HI16); - hi_fixup = xmalloc (sizeof * hi_fixup); + hi_fixup = XNEW (struct iq2000_hi_fixup); hi_fixup->fixp = fixP; hi_fixup->seg = now_seg; hi_fixup->next = iq2000_hi_fixup_list; @@ -587,7 +586,7 @@ iq2000_frob_file (void) segment_info_type * seginfo; int pass; - assert (FX_OPINFO_R_TYPE (l->fixp) == BFD_RELOC_HI16 + gas_assert (FX_OPINFO_R_TYPE (l->fixp) == BFD_RELOC_HI16 || FX_OPINFO_R_TYPE (l->fixp) == BFD_RELOC_LO16); /* Check quickly whether the next fixup happens to be a matching low. */ @@ -627,7 +626,7 @@ iq2000_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; @@ -725,61 +724,12 @@ md_operand (expressionS * exp) gas_cgen_md_operand (exp); } -/* Turn a string in input_line_pointer into a floating point constant - of type type, and store the appropriate bytes in *litP. The number - of LITTLENUMS emitted is stored in *sizeP . An error message is - returned, or NULL on OK. */ - -/* 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); - - for (i = 0; i < prec; 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, TRUE); } - bfd_boolean iq2000_fix_adjustable (fixS * fixP) { @@ -846,10 +796,9 @@ get_symbol (void) char *name; symbolS *p; - name = input_line_pointer; - c = get_symbol_end (); + c = get_symbol_name (&name); p = (symbolS *) symbol_find_or_make (name); - *input_line_pointer = c; + (void) restore_line_pointer (c); return p; } @@ -886,7 +835,7 @@ s_iq2000_end (int x ATTRIBUTE_UNUSED) if (p != NULL) { - assert (S_GET_NAME (p)); + gas_assert (S_GET_NAME (p)); if (strcmp (S_GET_NAME (p), S_GET_NAME (cur_proc_ptr->isym))) as_warn (_(".end symbol does not match .ent symbol.")); } @@ -958,7 +907,6 @@ get_number (void) static void s_iq2000_ent (int aent) { - int number = 0; symbolS *symbolP; int maybe_text; @@ -967,7 +915,7 @@ s_iq2000_ent (int aent) input_line_pointer++; SKIP_WHITESPACE (); if (ISDIGIT (*input_line_pointer) || *input_line_pointer == '-') - number = get_number (); + get_number (); if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0) maybe_text = 1;