diff options
author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-08-27 02:37:40 +0000 |
---|---|---|
committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-08-27 02:37:40 +0000 |
commit | 985956c181783ae1649c7861d793139ded88889a (patch) | |
tree | 848c61a91662d479d931045e6aee44b755d53d5a | |
parent | 1d622e4efc2f2a6c372d386404d30d19cedb90c3 (diff) | |
download | gcc-985956c181783ae1649c7861d793139ded88889a.tar.gz |
Add support for defering line number table construction to assembler.
* dwarf2out.c (DWARF2_ASM_LINE_DEBUG_INFO): Add default definition.
(debug_dwarf): Add DWARF2_ASM_LINE_DEBUG_INFO support.
(dwarf2out_line, dwarf2out_finish): Likewise.
* tm.texi (DWARF2_ASM_LINE_DEBUG_INFO): Add documetation.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28910 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 39 | ||||
-rw-r--r-- | gcc/tm.texi | 6 |
3 files changed, 47 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e1debc0cbc0..85b24a5f07a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Thu Aug 26 19:33:23 1999 Jim Wilson <wilson@cygnus.com> + + * dwarf2out.c (DWARF2_ASM_LINE_DEBUG_INFO): Add default definition. + (debug_dwarf): Add DWARF2_ASM_LINE_DEBUG_INFO support. + (dwarf2out_line, dwarf2out_finish): Likewise. + * tm.texi (DWARF2_ASM_LINE_DEBUG_INFO): Add documetation. + Thu Aug 26 16:10:56 1999 Gavin Romig-Koch <gavin@cygnus.com> * tree.c (lang_unsave_expr_now) : Correct return type. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index bcb94762fac..81792b56490 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -2237,6 +2237,11 @@ extern char *language_string; #define DWARF_ARANGES_HEADER_SIZE \ (DWARF_ROUND (2 * DWARF_OFFSET_SIZE + 4, PTR_SIZE * 2) - DWARF_OFFSET_SIZE) +/* The default is to have gcc emit the line number tables. */ +#ifndef DWARF2_ASM_LINE_DEBUG_INFO +#define DWARF2_ASM_LINE_DEBUG_INFO 0 +#endif + /* Define the architecture-dependent minimum instruction length (in bytes). In this implementation of DWARF, this field is used for information purposes only. Since GCC generates assembly language, we have @@ -4446,7 +4451,8 @@ debug_dwarf () { print_indent = 0; print_die (comp_unit_die, stderr); - print_dwarf_line_table (stderr); + if (! DWARF2_ASM_LINE_DEBUG_INFO) + print_dwarf_line_table (stderr); } /* Traverse the DIE, and add a sibling attribute if it may have the @@ -9850,7 +9856,27 @@ dwarf2out_line (filename, line) { function_section (current_function_decl); - if (DECL_SECTION_NAME (current_function_decl)) + if (DWARF2_ASM_LINE_DEBUG_INFO) + { + static char *lastfile; + + /* Emit the .file and .loc directives understood by GNU as. */ + if (lastfile == 0 || strcmp (filename, lastfile)) + { + fprintf (asm_out_file, "\t.file 0 \"%s\"\n", filename); + lastfile = filename; + } + + fprintf (asm_out_file, "\t.loc 0 %d 0\n", line); + + /* Indicate that line number info exists. */ + ++line_info_table_in_use; + + /* Indicate that multiple line number tables exist. */ + if (DECL_SECTION_NAME (current_function_decl)) + ++separate_line_info_table_in_use; + } + else if (DECL_SECTION_NAME (current_function_decl)) { register dw_separate_line_info_ref line_info; ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, SEPARATE_LINE_CODE_LABEL, @@ -10097,9 +10123,12 @@ dwarf2out_finish () /* Output the source line correspondence table. */ if (line_info_table_in_use > 1 || separate_line_info_table_in_use) { - fputc ('\n', asm_out_file); - ASM_OUTPUT_SECTION (asm_out_file, DEBUG_LINE_SECTION); - output_line_info (); + if (! DWARF2_ASM_LINE_DEBUG_INFO) + { + fputc ('\n', asm_out_file); + ASM_OUTPUT_SECTION (asm_out_file, DEBUG_LINE_SECTION); + output_line_info (); + } /* We can only use the low/high_pc attributes if all of the code was in .text. */ diff --git a/gcc/tm.texi b/gcc/tm.texi index ed286fe2010..c3e3c271f68 100644 --- a/gcc/tm.texi +++ b/gcc/tm.texi @@ -6943,6 +6943,12 @@ label to mark the beginning of the text section. If it is better simply to use the name of the text section itself, rather than an explicit label, to indicate the beginning of the text section, define this macro to zero. +@findex DWARF2_ASM_LINE_DEBUG_INFO +@item DWARF2_ASM_LINE_DEBUG_INFO +Define this macro to be a nonzero value if the assembler can generate Dwarf 2 +line debug info sections. This will result in much more compact line number +tables, and hence is desirable if it works. + @findex PUT_SDB_@dots{} @item PUT_SDB_@dots{} Define these macros to override the assembler syntax for the special |