diff options
author | Pierre-Marie de Rodat <derodat@adacore.com> | 2015-12-17 14:09:26 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2015-12-17 14:09:26 +0000 |
commit | 6592d14b43d21382d7876484d3ba90ba650fbc6e (patch) | |
tree | d3c4a684ec8da4b8efa794c5eccd75c8af29e425 /gcc | |
parent | 70decafb4d3a0286fe03abee93d700a174488506 (diff) | |
download | gcc-6592d14b43d21382d7876484d3ba90ba650fbc6e.zip gcc-6592d14b43d21382d7876484d3ba90ba650fbc6e.tar.gz gcc-6592d14b43d21382d7876484d3ba90ba650fbc6e.tar.bz2 |
Add a flag to control the balance between GNAT encodings and std. DWARF
In order to accomodate the debugger's support evolution for "new" DWARF
constructs, we need to have an flag that controls the amount of GNAT
encodings/standard DWARF information that is emitted in the debug info.
Propagate this new parameter into the Ada front-end.
gcc/ChangeLog:
* common.opt (gnat_encodings): New variable
(dwarf_gnat_encodings): New enum type.
(fgnat_encodings): New option.
* flag-types.h (enum dwarf_gnat_encodings): New.
gcc/ada/ChangeLog:
* gcc-interface/misc.c (gnat_encodings): Undefine macro and
declare a global variable.
(gnat_post_options): Initialize this global from options.
From-SVN: r231761
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/ada/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/misc.c | 4 | ||||
-rw-r--r-- | gcc/common.opt | 21 | ||||
-rw-r--r-- | gcc/defaults.h | 4 | ||||
-rw-r--r-- | gcc/flag-types.h | 15 |
6 files changed, 56 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1db66d6..c55482b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-12-17 Pierre-Marie de Rodat <derodat@adacore.com> + + * common.opt (gnat_encodings): New variable + (dwarf_gnat_encodings): New enum type. + (fgnat_encodings): New option. + * flag-types.h (enum dwarf_gnat_encodings): New. + 2015-12-17 Christian Bruel <christian.bruel@st.com> * tree.h (TYPE_MODE_RAW): New macro. diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 6e2e7b1..4d802d2 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2015-12-17 Pierre-Marie de Rodat <derodat@adacore.com> + + * gcc-interface/misc.c (gnat_encodings): Undefine macro and + declare a global variable. + (gnat_post_options): Initialize this global from options. + 2015-12-10 Eric Botcazou <ebotcazou@adacore.com> PR ada/48013 diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c index 2a65142..ef0fe3f 100644 --- a/gcc/ada/gcc-interface/misc.c +++ b/gcc/ada/gcc-interface/misc.c @@ -68,7 +68,8 @@ extern const char **gnat_argv; /* Ada code requires variables for these settings rather than elements of the global_options structure because they are imported. */ -int gnat_encodings = 0; +#undef gnat_encodings +enum dwarf_gnat_encodings gnat_encodings = DWARF_GNAT_ENCODINGS_DEFAULT; #undef optimize int optimize; @@ -276,6 +277,7 @@ gnat_post_options (const char **pfilename ATTRIBUTE_UNUSED) "supported anymore"); /* Copy global settings to local versions. */ + gnat_encodings = global_options.x_gnat_encodings; optimize = global_options.x_optimize; optimize_size = global_options.x_optimize_size; flag_compare_debug = global_options.x_flag_compare_debug; diff --git a/gcc/common.opt b/gcc/common.opt index 6264bc0..d66013a 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -167,6 +167,11 @@ bool flag_stack_usage_info = false Variable int flag_debug_asm + +; Balance between GNAT encodings and standard DWARF to emit. +Variable +enum dwarf_gnat_encodings gnat_encodings = DWARF_GNAT_ENCODINGS_DEFAULT + ; -dP causes the rtl to be emitted as a comment in assembly. Variable int flag_dump_rtl_in_asm @@ -1337,6 +1342,22 @@ Common Report Var(flag_gcse_after_reload) Optimization Perform global common subexpression elimination after register allocation has finished. +Enum +Name(dwarf_gnat_encodings) Type(int) + +EnumValue +Enum(dwarf_gnat_encodings) String(all) Value(DWARF_GNAT_ENCODINGS_ALL) + +EnumValue +Enum(dwarf_gnat_encodings) String(gdb) Value(DWARF_GNAT_ENCODINGS_GDB) + +EnumValue +Enum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL) + +fgnat-encodings= +Common Enum(dwarf_gnat_encodings) Joined RejectNegative Report Undocumented Var(gnat_encodings) +-fgnat-encodings=[all|gdb|minimal] Select the balance between GNAT encodings and standard DWARF emitted in the debug information + ; This option is not documented yet as its semantics will change. fgraphite Common Report Var(flag_graphite) Optimization diff --git a/gcc/defaults.h b/gcc/defaults.h index 0f1c713..3583627 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -1488,4 +1488,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #endif /* GCC_INSN_FLAGS_H */ +#ifndef DWARF_GNAT_ENCODINGS_DEFAULT +#define DWARF_GNAT_ENCODINGS_DEFAULT DWARF_GNAT_ENCODINGS_GDB +#endif + #endif /* ! GCC_DEFAULTS_H */ diff --git a/gcc/flag-types.h b/gcc/flag-types.h index b130fc5..c81a8a2 100644 --- a/gcc/flag-types.h +++ b/gcc/flag-types.h @@ -91,6 +91,21 @@ enum debug_struct_file DINFO_STRUCT_FILE_ANY /* Debug structs defined in all files. */ }; +/* Balance between GNAT encodings and standard DWARF to emit. */ + +enum dwarf_gnat_encodings +{ + DWARF_GNAT_ENCODINGS_ALL = 0, /* Emit all GNAT encodings, then emit as + much standard DWARF as possible so it + does not conflict with GNAT + encodings. */ + DWARF_GNAT_ENCODINGS_GDB = 1, /* Emit as much standard DWARF as possible + as long as GDB handles them. Emit GNAT + encodings for the rest. */ + DWARF_GNAT_ENCODINGS_MINIMAL = 2 /* Emit all the standard DWARF we can. + Emit GNAT encodings for the rest. */ +}; + /* Enumerate Objective-c instance variable visibility settings. */ enum ivar_visibility |