/* tc-xstormy16.c -- Assembler for the Sanyo XSTORMY16.
- Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
- Free Software Foundation.
+ Copyright (C) 2000-2016 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
int
md_parse_option (int c ATTRIBUTE_UNUSED,
- char * arg ATTRIBUTE_UNUSED)
+ const char * arg ATTRIBUTE_UNUSED)
{
return 0;
}
xstormy16_cons_fix_new (fragS *f,
int where,
int nbytes,
- expressionS *exp)
+ expressionS *exp,
+ bfd_reloc_code_real_type code)
{
- bfd_reloc_code_real_type code;
- fixS *fix;
-
if (exp->X_op == O_fptr_symbol)
{
switch (nbytes)
/* This can happen when gcc is generating debug output.
For example it can create a stab with the address of
a function:
-
+
.stabs "foo:F(0,21)",36,0,0,@fptr(foo)
-
+
Since this does not involve switching code pages, we
just allow the reloc to be generated without any
@fptr behaviour. */
return;
}
- fix = fix_new_exp (f, where, nbytes, exp, 0, code);
+ fix_new_exp (f, where, nbytes, exp, 0, code);
}
/* Called while parsing an instruction to create a fixup.
{
int align = bfd_get_section_alignment (stdoutput, segment);
- return ((size + (1 << align) - 1) & (-1 << align));
+ return ((size + (1 << align) - 1) & -(1 << align));
}
symbolS *
|| xstormy16_force_relocation (fixP))
/* The symbol is undefined,
or it is defined but not in this section,
- or the relocation will be relative to this symbol not the section symbol.
+ or the relocation will be relative to this symbol not the section symbol.
Let the linker figure it out. */
return 0;
const CGEN_OPERAND *operand = cgen_operand_lookup_by_num (cd, opindex);
const char *errmsg;
bfd_reloc_code_real_type reloc_type;
- CGEN_FIELDS *fields = alloca (CGEN_CPU_SIZEOF_FIELDS (cd));
const CGEN_INSN *insn = fixP->fx_cgen.insn;
/* If the reloc has been fully resolved finish the operand here. */
/* FIXME: This duplicates the capabilities of code in BFD. */
if (fixP->fx_done)
{
+ CGEN_FIELDS *fields = xmalloc (CGEN_CPU_SIZEOF_FIELDS (cd));
+
CGEN_CPU_SET_FIELDS_BITSIZE (cd) (fields, CGEN_INSN_BITSIZE (insn));
CGEN_CPU_SET_VMA_OPERAND (cd) (cd, opindex, fields, (bfd_vma) value);
#endif
if (errmsg)
as_bad_where (fixP->fx_file, fixP->fx_line, "%s", errmsg);
+
+ free (fields);
}
if (fixP->fx_done)