diff options
author | Jeff Law <law@redhat.com> | 1999-09-15 11:17:54 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1999-09-15 11:17:54 +0000 |
commit | 2d93dcc4506d364e1d5672520668b1fdd485d958 (patch) | |
tree | a5d05ecb9bd9bdbb32ac8b45565a8b411f264ce6 /gas | |
parent | 3b97fa5ed0c8eb82081e4232cb75707e8ed4bab2 (diff) | |
download | gdb-2d93dcc4506d364e1d5672520668b1fdd485d958.zip gdb-2d93dcc4506d364e1d5672520668b1fdd485d958.tar.gz gdb-2d93dcc4506d364e1d5672520668b1fdd485d958.tar.bz2 |
* config/tc-hppa.c: Include dwarf2dbg.h if OBJ_ELF. Declare
debug_line.
(md_pseudo_table): Add .file and .line pseudo-ops for OBJ_ELF.
(md_assemble): Call dwarf2_where for OBJ_ELF.
(pa_ip): Call dwarf2_gen_line_info for OBJ_ELF.
(pa_end_of_source): New function.
* tc-hppa.h (md_end): Define for OBJ_ELF.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 10 | ||||
-rw-r--r-- | gas/config/tc-hppa.c | 38 | ||||
-rw-r--r-- | gas/config/tc-hppa.h | 3 |
3 files changed, 51 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index ca19c00..f8f3b45 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,13 @@ +Wed Sep 15 05:14:32 1999 Jeffrey A Law (law@cygnus.com) + + * config/tc-hppa.c: Include dwarf2dbg.h if OBJ_ELF. Declare + debug_line. + (md_pseudo_table): Add .file and .line pseudo-ops for OBJ_ELF. + (md_assemble): Call dwarf2_where for OBJ_ELF. + (pa_ip): Call dwarf2_gen_line_info for OBJ_ELF. + (pa_end_of_source): New function. + * tc-hppa.h (md_end): Define for OBJ_ELF. + 1999-09-14 Michael Meissner <meissner@cygnus.com> * configure.in (Canonicalization of target names): Remove adding diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c index 823238f..eda75aa 100644 --- a/gas/config/tc-hppa.c +++ b/gas/config/tc-hppa.c @@ -39,6 +39,14 @@ error only one of OBJ_ELF and OBJ_SOM can be defined #endif +/* If we are using ELF, then we probably can support dwarf2 debug + records. Furthermore, if we are supporting dwarf2 debug records, + then we want to use the assembler support for compact line numbers. */ +#ifdef OBJ_ELF +#include "dwarf2dbg.h" +struct dwarf2_line_info debug_line; +#endif + /* A "convient" place to put object file dependencies which do not need to be seen outside of tc-hppa.c. */ #ifdef OBJ_ELF @@ -630,6 +638,9 @@ const pseudo_typeS md_pseudo_table[] = {"equ", pa_equ, 0}, {"exit", pa_exit, 0}, {"export", pa_export, 0}, +#ifdef OBJ_ELF + { "file", dwarf2_directive_file }, +#endif {"fill", pa_fill, 0}, {"float", pa_float_cons, 'f'}, {"half", pa_cons, 2}, @@ -639,6 +650,9 @@ const pseudo_typeS md_pseudo_table[] = {"lcomm", pa_lcomm, 0}, {"leave", pa_leave, 0}, {"level", pa_level, 0}, +#ifdef OBJ_ELF + { "loc", dwarf2_directive_loc }, +#endif {"long", pa_cons, 4}, {"lsym", pa_lsym, 0}, #ifdef OBJ_SOM @@ -1443,6 +1457,12 @@ md_assemble (str) (offsetT) 0, &the_insn.exp, the_insn.pcrel, the_insn.reloc, the_insn.field_selector, the_insn.format, the_insn.arg_reloc, NULL); + +#ifdef OBJ_ELF + if (debug_type == DEBUG_DWARF2) + dwarf2_where (&debug_line); +#endif + } /* Do the real work for assembling a single instruction. Store results @@ -3357,6 +3377,16 @@ pa_ip (str) break; } +#ifdef OBJ_ELF + if (debug_type == DEBUG_DWARF2) + { + bfd_vma addr; + + addr = frag_now->fr_address + frag_now_fix (); + dwarf2_gen_line_info (addr, &debug_line); + } +#endif + the_insn.opcode = opcode; } @@ -7504,3 +7534,11 @@ elf_hppa_final_processing () } } #endif + +#ifdef OBJ_ELF +pa_end_of_source () +{ + if (debug_type == DEBUG_DWARF2) + dwarf2_finish (); +} +#endif diff --git a/gas/config/tc-hppa.h b/gas/config/tc-hppa.h index 13e10da..67d55dc 100644 --- a/gas/config/tc-hppa.h +++ b/gas/config/tc-hppa.h @@ -162,6 +162,9 @@ void elf_hppa_final_processing PARAMS ((void)); #endif #define md_operand(x) +#ifdef OBJ_ELF +#define md_end() pa_end_of_source () +#endif #define TC_FIX_TYPE PTR #define TC_INIT_FIX_DATA(FIXP) ((FIXP)->tc_fix_data = NULL) |