projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[ARC] Add SYNTAX_NOP and SYNTAX_1OP for extension instructions
[deliverable/binutils-gdb.git]
/
gas
/
config
/
tc-d30v.c
diff --git
a/gas/config/tc-d30v.c
b/gas/config/tc-d30v.c
index e257f75a3a2903b19f2d548543825c541045c80c..88fc124377a3f410f2221dfc8f4fc769e694416b 100644
(file)
--- a/
gas/config/tc-d30v.c
+++ b/
gas/config/tc-d30v.c
@@
-1,6
+1,5
@@
/* tc-d30v.c -- Assembler code for the Mitsubishi D30V
/* tc-d30v.c -- Assembler code for the Mitsubishi D30V
- Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007
- Free Software Foundation, Inc.
+ Copyright (C) 1997-2016 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
This file is part of GAS, the GNU Assembler.
@@
-23,6
+22,7
@@
#include "safe-ctype.h"
#include "subsegs.h"
#include "opcode/d30v.h"
#include "safe-ctype.h"
#include "subsegs.h"
#include "opcode/d30v.h"
+#include "dwarf2dbg.h"
const char comment_chars[] = ";";
const char line_comment_chars[] = "#";
const char comment_chars[] = ";";
const char line_comment_chars[] = "#";
@@
-245,7
+245,7
@@
md_show_usage (FILE *stream)
}
int
}
int
-md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
+md_parse_option (int c, c
onst c
har *arg ATTRIBUTE_UNUSED)
{
switch (c)
{
{
switch (c)
{
@@
-285,7
+285,7
@@
md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
return 0;
}
return 0;
}
-char *
+c
onst c
har *
md_atof (int type, char *litP, int *sizeP)
{
return ieee_md_atof (type, litP, sizeP, TRUE);
md_atof (int type, char *litP, int *sizeP)
{
return ieee_md_atof (type, litP, sizeP, TRUE);
@@
-303,7
+303,7
@@
valueT
md_section_align (asection *seg, valueT addr)
{
int align = bfd_get_section_alignment (stdoutput, seg);
md_section_align (asection *seg, valueT addr)
{
int align = bfd_get_section_alignment (stdoutput, seg);
- return ((addr + (1 << align) - 1) &
(-
1 << align));
+ return ((addr + (1 << align) - 1) &
-(
1 << align));
}
void
}
void
@@
-352,7
+352,7
@@
postfix (char *p)
}
static bfd_reloc_code_real_type
}
static bfd_reloc_code_real_type
-get_reloc (struct d30v_operand *op, int rel_flag)
+get_reloc (
const
struct d30v_operand *op, int rel_flag)
{
switch (op->bits)
{
{
switch (op->bits)
{
@@
-484,7
+484,7
@@
get_operands (expressionS exp[], int cmp_hack)
static long long
build_insn (struct d30v_insn *opcode, expressionS *opers)
{
static long long
build_insn (struct d30v_insn *opcode, expressionS *opers)
{
- int i,
length,
bits, shift, flags;
+ int i, bits, shift, flags;
unsigned long number, id = 0;
long long insn;
struct d30v_opcode *op = opcode->op;
unsigned long number, id = 0;
long long insn;
struct d30v_opcode *op = opcode->op;
@@
-506,7
+506,6
@@
build_insn (struct d30v_insn *opcode, expressionS *opers)
if (flags & OPERAND_SHIFT)
bits += 3;
if (flags & OPERAND_SHIFT)
bits += 3;
- length = d30v_operand_table[form->operands[i]].length;
shift = 12 - d30v_operand_table[form->operands[i]].position;
if (opers[i].X_op != O_symbol)
number = opers[i].X_add_number;
shift = 12 - d30v_operand_table[form->operands[i]].position;
if (opers[i].X_op != O_symbol)
number = opers[i].X_add_number;
@@
-538,7
+537,7
@@
build_insn (struct d30v_insn *opcode, expressionS *opers)
as_fatal (_("too many fixups"));
fixups->fix[fixups->fc].reloc =
as_fatal (_("too many fixups"));
fixups->fix[fixups->fc].reloc =
- get_reloc (
(struct d30v_operand *) &d30v_operand_table[form->operands[i]
], op->reloc_flag);
+ get_reloc (
d30v_operand_table + form->operands[i
], op->reloc_flag);
fixups->fix[fixups->fc].size = 4;
fixups->fix[fixups->fc].exp = opers[i];
fixups->fix[fixups->fc].operand = form->operands[i];
fixups->fix[fixups->fc].size = 4;
fixups->fix[fixups->fc].exp = opers[i];
fixups->fix[fixups->fc].operand = form->operands[i];
@@
-593,6
+592,7
@@
write_long (struct d30v_insn *opcode ATTRIBUTE_UNUSED,
int i, where;
char *f = frag_more (8);
int i, where;
char *f = frag_more (8);
+ dwarf2_emit_insn (8);
insn |= FM11;
d30v_number_to_chars (f, insn, 8);
insn |= FM11;
d30v_number_to_chars (f, insn, 8);
@@
-620,6
+620,7
@@
write_1_short (struct d30v_insn *opcode,
char *f = frag_more (8);
int i, where;
char *f = frag_more (8);
int i, where;
+ dwarf2_emit_insn (8);
if (warn_nops == NOP_ALL)
as_warn (_("%s NOP inserted"), use_sequential ?
_("sequential") : _("parallel"));
if (warn_nops == NOP_ALL)
as_warn (_("%s NOP inserted"), use_sequential ?
_("sequential") : _("parallel"));
@@
-1087,6
+1088,7
@@
write_2_short (struct d30v_insn *opcode1,
}
f = frag_more (8);
}
f = frag_more (8);
+ dwarf2_emit_insn (8);
d30v_number_to_chars (f, insn, 8);
/* If the previous instruction was a 32-bit multiply but it is put into a
d30v_number_to_chars (f, insn, 8);
/* If the previous instruction was a 32-bit multiply but it is put into a
@@
-1129,26
+1131,26
@@
find_format (struct d30v_opcode *opcode,
int fsize,
int cmp_hack)
{
int fsize,
int cmp_hack)
{
- int
numops, match,
index, i = 0, j, k;
+ int
match, opcode_
index, i = 0, j, k;
struct d30v_format *fm;
if (opcode == NULL)
return NULL;
/* Get all the operands and save them as expressions. */
struct d30v_format *fm;
if (opcode == NULL)
return NULL;
/* Get all the operands and save them as expressions. */
-
numops =
get_operands (myops, cmp_hack);
+ get_operands (myops, cmp_hack);
- while ((index = opcode->format[i++]) != 0)
+ while ((
opcode_
index = opcode->format[i++]) != 0)
{
{
- if (fsize == FORCE_SHORT && index >= LONG)
+ if (fsize == FORCE_SHORT &&
opcode_
index >= LONG)
continue;
continue;
- if (fsize == FORCE_LONG && index < LONG)
+ if (fsize == FORCE_LONG &&
opcode_
index < LONG)
continue;
continue;
- fm = (struct d30v_format *) &d30v_format_table[index];
- k = index;
- while (fm->form == index)
+ fm = (struct d30v_format *) &d30v_format_table[
opcode_
index];
+ k =
opcode_
index;
+ while (fm->form ==
opcode_
index)
{
match = 1;
/* Now check the operands for compatibility. */
{
match = 1;
/* Now check the operands for compatibility. */
@@
-1240,12
+1242,10
@@
find_format (struct d30v_opcode *opcode,
/* Calculate the current address by running through the
previous frags and adding our current offset. */
/* Calculate the current address by running through the
previous frags and adding our current offset. */
- value =
0
;
+ value =
frag_now_fix_octets ()
;
for (f = frchain_now->frch_root; f; f = f->fr_next)
value += f->fr_fix + f->fr_offset;
for (f = frchain_now->frch_root; f; f = f->fr_next)
value += f->fr_fix + f->fr_offset;
- value = (S_GET_VALUE (myops[j].X_add_symbol) - value
- - (obstack_next_free (&frchain_now->frch_obstack)
- - frag_now->fr_literal));
+ value = S_GET_VALUE (myops[j].X_add_symbol) - value;
if (check_range (value, bits, flags))
match = 0;
}
if (check_range (value, bits, flags))
match = 0;
}
@@
-1342,13
+1342,14
@@
do_assemble (char *str,
if (!strncmp (name, "cmp", 3))
{
int p, i;
if (!strncmp (name, "cmp", 3))
{
int p, i;
- char **str = (char **) d30v_cc_names;
+ char **d30v_str = (char **) d30v_cc_names;
+
if (name[3] == 'u')
p = 4;
else
p = 3;
if (name[3] == 'u')
p = 4;
else
p = 3;
- for (i = 1; *
str && strncmp (*str, &name[p], 2); i++,
str++)
+ for (i = 1; *
d30v_str && strncmp (*d30v_str, &name[p], 2); i++, d30v_
str++)
;
/* cmpu only supports some condition codes. */
;
/* cmpu only supports some condition codes. */
@@
-1361,7
+1362,7
@@
do_assemble (char *str,
}
}
}
}
- if (!*str)
+ if (!*
d30v_
str)
{
name[p + 2] = 0;
as_bad (_("unknown condition code: %s"), &name[p]);
{
name[p + 2] = 0;
as_bad (_("unknown condition code: %s"), &name[p]);
@@
-1516,7
+1517,7
@@
d30v_align (int n, char *pfill, symbolS *label)
valueT old_value;
valueT new_value;
valueT old_value;
valueT new_value;
- assert (S_GET_SEGMENT (label) == now_seg);
+
gas_
assert (S_GET_SEGMENT (label) == now_seg);
old_frag = symbol_get_frag (label);
old_value = S_GET_VALUE (label);
old_frag = symbol_get_frag (label);
old_value = S_GET_VALUE (label);
@@
-1684,6
+1685,7
@@
md_assemble (char *str)
else
{
f = frag_more (8);
else
{
f = frag_more (8);
+ dwarf2_emit_insn (8);
d30v_number_to_chars (f, NOP2, 8);
if (warn_nops == NOP_ALL || warn_nops == NOP_MULTIPLY)
d30v_number_to_chars (f, NOP2, 8);
if (warn_nops == NOP_ALL || warn_nops == NOP_MULTIPLY)
@@
-1758,8
+1760,8
@@
arelent *
tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixp)
{
arelent *reloc;
tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixp)
{
arelent *reloc;
- reloc =
xmalloc (sizeof (arelent)
);
- 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;
reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
*reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
@@
-1838,7
+1840,7
@@
d30v_start_line (void)
}
static void
}
static void
-check_size (long value, int bits, char *file, int line)
+check_size (long value, int bits, c
onst c
har *file, int line)
{
int tmp, max;
{
int tmp, max;
@@
-1868,6
+1870,8
@@
d30v_frob_label (symbolS *lab)
/* Record this label for future adjustment after we find out what
kind of data it references, and the required alignment therewith. */
d30v_last_label = lab;
/* Record this label for future adjustment after we find out what
kind of data it references, and the required alignment therewith. */
d30v_last_label = lab;
+
+ dwarf2_emit_label (lab);
}
/* Hook into cons for capturing alignment changes. */
}
/* Hook into cons for capturing alignment changes. */
@@
-1877,6
+1881,11
@@
d30v_cons_align (int size)
{
int log_size;
{
int log_size;
+ /* Don't specially align anything in debug sections. */
+ if ((now_seg->flags & SEC_ALLOC) == 0
+ || strcmp (now_seg->name, ".eh_frame") == 0)
+ return;
+
log_size = 0;
while ((size >>= 1) != 0)
++log_size;
log_size = 0;
while ((size >>= 1) != 0)
++log_size;
@@
-2113,4
+2122,3
@@
const pseudo_typeS md_pseudo_table[] =
{ "sect.s", s_d30v_section, 0 },
{ NULL, NULL, 0 }
};
{ "sect.s", s_d30v_section, 0 },
{ NULL, NULL, 0 }
};
-
This page took
0.029618 seconds
and
4
git commands to generate.