* config/tc-v850.c: Support dwarf2.

* config/tc-v850.h: Ditto.

* config/tc-v850.c (cons_fix_new_v850): Don't rely on
parse_cons_expression_v850 to initialize hold_cons_reloc.
This commit is contained in:
DJ Delorie 2000-11-15 19:22:22 +00:00
parent 296731c177
commit a8761a19f4
3 changed files with 34 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2000-11-14 DJ Delorie <dj@redhat.com>
* config/tc-v850.c: Support dwarf2.
* config/tc-v850.h: Ditto.
* config/tc-v850.c (cons_fix_new_v850): Don't rely on
parse_cons_expression_v850 to initialize hold_cons_reloc.
2000-11-15 Bernd Schmidt <bernds@redhat.com>
* tc-ia64.c (struct md): New entries LAST_GROUPS, GROUP_IDX.

View File

@ -1,5 +1,5 @@
/* tc-v850.c -- Assembler code for the NEC V850
Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation.
Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation.
This file is part of GAS, the GNU Assembler.
@ -23,6 +23,7 @@
#include "as.h"
#include "subsegs.h"
#include "opcode/v850.h"
#include "dwarf2dbg.h"
#define AREA_ZDA 0
#define AREA_SDA 1
@ -32,7 +33,7 @@
#define SEXT16(x) ((((x) & 0xffff) ^ (~0x7fff)) + 0x8000)
/* Temporarily holds the reloc in a cons expression. */
static bfd_reloc_code_real_type hold_cons_reloc;
static bfd_reloc_code_real_type hold_cons_reloc = BFD_RELOC_UNUSED;
/* Set to TRUE if we want to be pedantic about signed overflows. */
static boolean warn_signed_overflows = FALSE;
@ -607,6 +608,8 @@ const pseudo_typeS md_pseudo_table[] =
{"call_table_text", v850_call_table_text, 0},
{"v850e", set_machine, bfd_mach_v850e},
{"v850ea", set_machine, bfd_mach_v850ea},
{"file", dwarf2_directive_file },
{"loc", dwarf2_directive_loc },
{ NULL, NULL, 0}
};
@ -1708,6 +1711,7 @@ md_assemble (str)
int relaxable = 0;
unsigned long insn;
unsigned long insn_size;
unsigned long total_insn_size = 0;
char *f;
int i;
int match;
@ -2183,6 +2187,7 @@ md_assemble (str)
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 4);
}
total_insn_size = insn_size;
}
else
{
@ -2197,12 +2202,14 @@ md_assemble (str)
insn_size = 2;
f = frag_more (insn_size);
total_insn_size = insn_size;
md_number_to_chars (f, insn, insn_size);
if (extra_data_after_insn)
{
f = frag_more (extra_data_len);
total_insn_size += extra_data_len;
md_number_to_chars (f, extra_data, extra_data_len);
@ -2276,6 +2283,9 @@ md_assemble (str)
}
input_line_pointer = saved_input_line_pointer;
if (debug_type == DEBUG_DWARF2)
dwarf2_generate_asm_lineno (total_insn_size);
}
/* If while processing a fixup, a reloc really needs to be created
@ -2489,6 +2499,8 @@ cons_fix_new_v850 (frag, where, size, exp)
fix_new_exp (frag, where, size, exp, 0, hold_cons_reloc);
else
fix_new (frag, where, size, NULL, 0, 0, hold_cons_reloc);
hold_cons_reloc = BFD_RELOC_UNUSED;
}
boolean
@ -2531,3 +2543,10 @@ v850_force_relocation (fixP)
return 0;
}
void
v850_finalize ()
{
if (debug_type == DEBUG_DWARF2)
dwarf2_finish ();
}

View File

@ -89,3 +89,8 @@ extern const struct relax_type md_relax_table[];
#define MD_PCREL_FROM_SECTION(fixP,section) v850_pcrel_from_section (fixP, section)
extern long v850_pcrel_from_section ();
#define md_end() v850_finalize ()
extern void v850_finalize PARAMS ((void));
#define DWARF2_LINE_MIN_INSN_LENGTH 2