/* tc-iq2000.c -- Assembler for the Sitera IQ2000.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010
- Free Software Foundation. Inc.
+ Copyright (C) 2003-2021 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
#include "cgen.h"
#include "elf/common.h"
#include "elf/iq2000.h"
-#include "libbfd.h"
#include "sb.h"
#include "macro.h"
static struct iq2000_hi_fixup * iq2000_hi_fixup_list;
/* Macro hash table, which we will add to. */
-extern struct hash_control *macro_hash;
+extern struct htab *macro_hash;
\f
const char *md_shortopts = "";
struct option md_longopts[] =
int
md_parse_option (int c ATTRIBUTE_UNUSED,
- char * arg ATTRIBUTE_UNUSED)
+ const char * arg ATTRIBUTE_UNUSED)
{
return 0;
}
sb macro_name;
const char *namestr;
- macro = xmalloc (sizeof (macro_entry));
+ macro = XNEW (macro_entry);
sb_new (& macro->sub);
sb_new (& macro_name);
formal_entry ** p = ¯o->formals;
macro->formal_count = 0;
- macro->formal_hash = hash_new ();
+ macro->formal_hash = htab_create_alloc (7, hash_formal_entry,
+ eq_formal_entry,
+ NULL, xcalloc, free);
+
while (*arguments != NULL)
{
formal_entry *formal;
- formal = xmalloc (sizeof (formal_entry));
+ formal = XNEW (formal_entry);
sb_new (& formal->name);
sb_new (& formal->def);
sb_add_string (& formal->name, *arguments);
/* Add to macro's hash table. */
- hash_jam (macro->formal_hash, sb_terminate (& formal->name), formal);
-
+ htab_insert (macro->formal_hash,
+ formal_entry_alloc (sb_terminate (& formal->name),
+ formal),
+ 1);
formal->index = macro->formal_count;
macro->formal_count++;
*p = formal;
sb_add_string (¯o_name, name);
namestr = sb_terminate (¯o_name);
- hash_jam (macro_hash, namestr, macro);
+ htab_insert (macro_hash, macro_entry_alloc (namestr, macro), 1);
macro_defined = 1;
}
valueT
md_section_align (segT segment, valueT size)
{
- int align = bfd_get_section_alignment (stdoutput, segment);
- return ((size + (1 << align) - 1) & (-1 << align));
+ int align = bfd_section_alignment (segment);
+ return ((size + (1 << align) - 1) & -(1 << align));
}
symbolS *
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;
gas_cgen_md_operand (exp);
}
-char *
+const char *
md_atof (int type, char * litP, int * sizeP)
{
return ieee_md_atof (type, litP, sizeP, TRUE);
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;
}
else
p = NULL;
- if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
+ if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
maybe_text = 1;
else
maybe_text = 0;
if (ISDIGIT (*input_line_pointer) || *input_line_pointer == '-')
get_number ();
- if ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
+ if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
maybe_text = 1;
else
maybe_text = 0;