aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPierre-Marie de Rodat <derodat@adacore.com>2015-12-17 14:09:26 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2015-12-17 14:09:26 +0000
commit6592d14b43d21382d7876484d3ba90ba650fbc6e (patch)
treed3c4a684ec8da4b8efa794c5eccd75c8af29e425 /gcc
parent70decafb4d3a0286fe03abee93d700a174488506 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/gcc-interface/misc.c4
-rw-r--r--gcc/common.opt21
-rw-r--r--gcc/defaults.h4
-rw-r--r--gcc/flag-types.h15
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