* 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:
parent
296731c177
commit
a8761a19f4
@ -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>
|
2000-11-15 Bernd Schmidt <bernds@redhat.com>
|
||||||
|
|
||||||
* tc-ia64.c (struct md): New entries LAST_GROUPS, GROUP_IDX.
|
* tc-ia64.c (struct md): New entries LAST_GROUPS, GROUP_IDX.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* tc-v850.c -- Assembler code for the NEC V850
|
/* 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.
|
This file is part of GAS, the GNU Assembler.
|
||||||
|
|
||||||
@ -23,6 +23,7 @@
|
|||||||
#include "as.h"
|
#include "as.h"
|
||||||
#include "subsegs.h"
|
#include "subsegs.h"
|
||||||
#include "opcode/v850.h"
|
#include "opcode/v850.h"
|
||||||
|
#include "dwarf2dbg.h"
|
||||||
|
|
||||||
#define AREA_ZDA 0
|
#define AREA_ZDA 0
|
||||||
#define AREA_SDA 1
|
#define AREA_SDA 1
|
||||||
@ -32,7 +33,7 @@
|
|||||||
#define SEXT16(x) ((((x) & 0xffff) ^ (~0x7fff)) + 0x8000)
|
#define SEXT16(x) ((((x) & 0xffff) ^ (~0x7fff)) + 0x8000)
|
||||||
|
|
||||||
/* Temporarily holds the reloc in a cons expression. */
|
/* 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. */
|
/* Set to TRUE if we want to be pedantic about signed overflows. */
|
||||||
static boolean warn_signed_overflows = FALSE;
|
static boolean warn_signed_overflows = FALSE;
|
||||||
@ -607,6 +608,8 @@ const pseudo_typeS md_pseudo_table[] =
|
|||||||
{"call_table_text", v850_call_table_text, 0},
|
{"call_table_text", v850_call_table_text, 0},
|
||||||
{"v850e", set_machine, bfd_mach_v850e},
|
{"v850e", set_machine, bfd_mach_v850e},
|
||||||
{"v850ea", set_machine, bfd_mach_v850ea},
|
{"v850ea", set_machine, bfd_mach_v850ea},
|
||||||
|
{"file", dwarf2_directive_file },
|
||||||
|
{"loc", dwarf2_directive_loc },
|
||||||
{ NULL, NULL, 0}
|
{ NULL, NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1708,6 +1711,7 @@ md_assemble (str)
|
|||||||
int relaxable = 0;
|
int relaxable = 0;
|
||||||
unsigned long insn;
|
unsigned long insn;
|
||||||
unsigned long insn_size;
|
unsigned long insn_size;
|
||||||
|
unsigned long total_insn_size = 0;
|
||||||
char *f;
|
char *f;
|
||||||
int i;
|
int i;
|
||||||
int match;
|
int match;
|
||||||
@ -2183,6 +2187,7 @@ md_assemble (str)
|
|||||||
md_number_to_chars (f, insn, insn_size);
|
md_number_to_chars (f, insn, insn_size);
|
||||||
md_number_to_chars (f + 2, 0, 4);
|
md_number_to_chars (f + 2, 0, 4);
|
||||||
}
|
}
|
||||||
|
total_insn_size = insn_size;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2197,12 +2202,14 @@ md_assemble (str)
|
|||||||
insn_size = 2;
|
insn_size = 2;
|
||||||
|
|
||||||
f = frag_more (insn_size);
|
f = frag_more (insn_size);
|
||||||
|
total_insn_size = insn_size;
|
||||||
|
|
||||||
md_number_to_chars (f, insn, insn_size);
|
md_number_to_chars (f, insn, insn_size);
|
||||||
|
|
||||||
if (extra_data_after_insn)
|
if (extra_data_after_insn)
|
||||||
{
|
{
|
||||||
f = frag_more (extra_data_len);
|
f = frag_more (extra_data_len);
|
||||||
|
total_insn_size += extra_data_len;
|
||||||
|
|
||||||
md_number_to_chars (f, extra_data, 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;
|
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
|
/* 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);
|
fix_new_exp (frag, where, size, exp, 0, hold_cons_reloc);
|
||||||
else
|
else
|
||||||
fix_new (frag, where, size, NULL, 0, 0, hold_cons_reloc);
|
fix_new (frag, where, size, NULL, 0, 0, hold_cons_reloc);
|
||||||
|
|
||||||
|
hold_cons_reloc = BFD_RELOC_UNUSED;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean
|
boolean
|
||||||
@ -2531,3 +2543,10 @@ v850_force_relocation (fixP)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
v850_finalize ()
|
||||||
|
{
|
||||||
|
if (debug_type == DEBUG_DWARF2)
|
||||||
|
dwarf2_finish ();
|
||||||
|
}
|
||||||
|
@ -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)
|
#define MD_PCREL_FROM_SECTION(fixP,section) v850_pcrel_from_section (fixP, section)
|
||||||
extern long v850_pcrel_from_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
|
||||||
|
Loading…
Reference in New Issue
Block a user