From: Thomas Schwinge Date: Fri, 14 Aug 2015 10:37:14 +0000 (+0200) Subject: Add DWARF2_LINENO_DEBUGGING_INFO, and use it for nvptx X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c9665100d6ee2421d8dfe4d001d23019bd4e656b;p=gcc.git Add DWARF2_LINENO_DEBUGGING_INFO, and use it for nvptx gcc/ * config/nvptx/nvptx.c (nvptx_option_override): Don't override debug options. * config/nvptx/nvptx.h (DWARF2_LINENO_DEBUGGING_INFO): Define. (DWARF2_DEBUGGING_INFO): Don't define. * debug.h (dwarf2_lineno_debug_hooks): Declare. * toplev.c (process_options): Add a case for it. * dwarf2out.c (dwarf2_lineno_debug_hooks): New variable. (dwarf2out_init): Skip most initializations if DWARF2_LINENO_DEBUGGING_INFO, but set cur_line_info_table in that case. * defaults.h (PREFERRED_DEBUGGING_TYPE): Also use DWARF2_DEBUG if DWARF2_LINENO_DEBUGGING_INFO. * opts.c (set_debug_level): Likewise. Co-Authored-By: Bernd Schmidt From-SVN: r226890 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index af5e73c6d59..154c0778c53 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,20 @@ +2015-08-14 Thomas Schwinge + Bernd Schmidt + + * config/nvptx/nvptx.c (nvptx_option_override): Don't override + debug options. + * config/nvptx/nvptx.h (DWARF2_LINENO_DEBUGGING_INFO): Define. + (DWARF2_DEBUGGING_INFO): Don't define. + * debug.h (dwarf2_lineno_debug_hooks): Declare. + * toplev.c (process_options): Add a case for it. + * dwarf2out.c (dwarf2_lineno_debug_hooks): New variable. + (dwarf2out_init): Skip most initializations if + DWARF2_LINENO_DEBUGGING_INFO, but set cur_line_info_table in that + case. + * defaults.h (PREFERRED_DEBUGGING_TYPE): Also use DWARF2_DEBUG if + DWARF2_LINENO_DEBUGGING_INFO. + * opts.c (set_debug_level): Likewise. + 2015-08-14 James Greenhalgh * config/arm/types.md (is_neon_type): Add missing types. diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c index 5d9b41fb2b6..a3569670d62 100644 --- a/gcc/config/nvptx/nvptx.c +++ b/gcc/config/nvptx/nvptx.c @@ -103,8 +103,6 @@ nvptx_option_override (void) flag_toplevel_reorder = 1; /* Assumes that it will see only hard registers. */ flag_var_tracking = 0; - write_symbols = NO_DEBUG; - debug_info_level = DINFO_LEVEL_NONE; declared_fndecls_htab = hash_table::create_ggc (17); needed_fndecls_htab = hash_table::create_ggc (17); diff --git a/gcc/config/nvptx/nvptx.h b/gcc/config/nvptx/nvptx.h index 9cb46cc0b8f..afe4fcdd361 100644 --- a/gcc/config/nvptx/nvptx.h +++ b/gcc/config/nvptx/nvptx.h @@ -339,7 +339,7 @@ struct GTY(()) machine_function /* Misc. */ -#define DWARF2_DEBUGGING_INFO 1 +#define DWARF2_LINENO_DEBUGGING_INFO 1 #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) \ ((VALUE) = GET_MODE_BITSIZE ((MODE)), 2) diff --git a/gcc/debug.h b/gcc/debug.h index 269c4d83f17..9784300d748 100644 --- a/gcc/debug.h +++ b/gcc/debug.h @@ -207,6 +207,7 @@ extern const struct gcc_debug_hooks dbx_debug_hooks; extern const struct gcc_debug_hooks sdb_debug_hooks; extern const struct gcc_debug_hooks xcoff_debug_hooks; extern const struct gcc_debug_hooks dwarf2_debug_hooks; +extern const struct gcc_debug_hooks dwarf2_lineno_debug_hooks; extern const struct gcc_debug_hooks vmsdbg_debug_hooks; /* Dwarf2 frame information. */ diff --git a/gcc/defaults.h b/gcc/defaults.h index 9d38ba18ff4..713ca077c79 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -932,7 +932,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #elif defined SDB_DEBUGGING_INFO #define PREFERRED_DEBUGGING_TYPE SDB_DEBUG -#elif defined DWARF2_DEBUGGING_INFO +#elif defined DWARF2_DEBUGGING_INFO || defined DWARF2_LINENO_DEBUGGING_INFO #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG #elif defined VMS_DEBUGGING_INFO diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 2c7dc710dae..92903f89638 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -2489,6 +2489,43 @@ const struct gcc_debug_hooks dwarf2_debug_hooks = 1, /* start_end_main_source_file */ TYPE_SYMTAB_IS_DIE /* tree_type_symtab_field */ }; + +const struct gcc_debug_hooks dwarf2_lineno_debug_hooks = +{ + dwarf2out_init, + debug_nothing_charstar, + debug_nothing_void, + debug_nothing_void, + debug_nothing_int_charstar, + debug_nothing_int_charstar, + debug_nothing_int_charstar, + debug_nothing_int, + debug_nothing_int_int, /* begin_block */ + debug_nothing_int_int, /* end_block */ + debug_true_const_tree, /* ignore_block */ + dwarf2out_source_line, /* source_line */ + debug_nothing_int_charstar, /* begin_prologue */ + debug_nothing_int_charstar, /* end_prologue */ + debug_nothing_int_charstar, /* begin_epilogue */ + debug_nothing_int_charstar, /* end_epilogue */ + debug_nothing_tree, /* begin_function */ + debug_nothing_int, /* end_function */ + debug_nothing_tree, /* register_main_translation_unit */ + debug_nothing_tree, /* function_decl */ + debug_nothing_tree, /* early_global_decl */ + debug_nothing_tree, /* late_global_decl */ + debug_nothing_tree_int, /* type_decl */ + debug_nothing_tree_tree_tree_bool, /* imported_module_or_decl */ + debug_nothing_tree, /* deferred_inline_function */ + debug_nothing_tree, /* outlining_inline_function */ + debug_nothing_rtx_code_label, /* label */ + debug_nothing_int, /* handle_pch */ + debug_nothing_rtx_insn, /* var_location */ + debug_nothing_void, /* switch_text_section */ + debug_nothing_tree_tree, /* set_name */ + 0, /* start_end_main_source_file */ + TYPE_SYMTAB_IS_ADDRESS /* tree_type_symtab_field */ +}; /* NOTE: In the comments in this file, many references are made to "Debugging Information Entries". This term is abbreviated as `DIE' @@ -23183,6 +23220,7 @@ dwarf2out_init (const char *filename ATTRIBUTE_UNUSED) /* Allocate the file_table. */ file_table = hash_table::create_ggc (50); +#ifndef DWARF2_LINENO_DEBUGGING_INFO /* Allocate the decl_die_table. */ decl_die_table = hash_table::create_ggc (10); @@ -23298,11 +23336,16 @@ dwarf2out_init (const char *filename ATTRIBUTE_UNUSED) switch_to_section (text_section); ASM_OUTPUT_LABEL (asm_out_file, text_section_label); +#endif /* Make sure the line number table for .text always exists. */ text_section_line_info = new_line_info_table (); text_section_line_info->end_label = text_end_label; +#ifdef DWARF2_LINENO_DEBUGGING_INFO + cur_line_info_table = text_section_line_info; +#endif + /* If front-ends already registered a main translation unit but we were not ready to perform the association, do this now. */ if (main_translation_unit != NULL_TREE) diff --git a/gcc/opts.c b/gcc/opts.c index 468a802250e..9d5de96f3f3 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -2223,7 +2223,7 @@ set_debug_level (enum debug_info_type type, int extended, const char *arg, if (extended == 2) { -#ifdef DWARF2_DEBUGGING_INFO +#if defined DWARF2_DEBUGGING_INFO || defined DWARF2_LINENO_DEBUGGING_INFO opts->x_write_symbols = DWARF2_DEBUG; #elif defined DBX_DEBUGGING_INFO opts->x_write_symbols = DBX_DEBUG; diff --git a/gcc/toplev.c b/gcc/toplev.c index 0b0c7f1da76..d6efd0e7d17 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -1481,6 +1481,10 @@ process_options (void) #ifdef VMS_DEBUGGING_INFO else if (write_symbols == VMS_DEBUG || write_symbols == VMS_AND_DWARF2_DEBUG) debug_hooks = &vmsdbg_debug_hooks; +#endif +#ifdef DWARF2_LINENO_DEBUGGING_INFO + else if (write_symbols == DWARF2_DEBUG) + debug_hooks = &dwarf2_lineno_debug_hooks; #endif else error ("target system does not support the %qs debug format",