This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: don't emit .debug_pub*


>>>>> "rth" == Richard Henderson <rth@redhat.com> writes:

rth> One of these either needs an undef or an ifdef.

Thanks -- I think the target-def.h one, though as before I have no way
to test this.

Tom

2010-06-21  Tom Tromey  <tromey@redhat.com>

	* config/darwin.h (TARGET_WANT_DEBUG_PUB_SECTIONS): Define.
	* target-def.h (TARGET_INITIALIZER): Update.
	(TARGET_WANT_DEBUG_PUB_SECTIONS): New define.
	* dwarf2out.c (add_pubname_string): Check
	targetm.want_debug_pub_sections.
	(add_pubname): Likewise.
	(add_pubtype): Likewise.
	* target.h (struct gcc_target) <want_debug_pub_sections>: New
	field.

2010-06-21  Tom Tromey  <tromey@redhat.com>

	* g++.dg/debug/dwarf2/pubnames-1.C: Add dg-do compile.

Index: target.h
===================================================================
--- target.h	(revision 160567)
+++ target.h	(working copy)
@@ -1284,6 +1284,11 @@
    */
   bool arm_eabi_unwinder;
 
+  /* True if the target wants .debug_pubtypes and .debug_pubnames.  In
+     most cases these are not interesting, as GDB and other tools do
+     not use them.  */
+  bool want_debug_pub_sections;
+
   /* Leave the boolean fields at the end.  */
 };
 
Index: testsuite/g++.dg/debug/dwarf2/pubnames-1.C
===================================================================
--- testsuite/g++.dg/debug/dwarf2/pubnames-1.C	(revision 160567)
+++ testsuite/g++.dg/debug/dwarf2/pubnames-1.C	(working copy)
@@ -1,5 +1,6 @@
 // Contributed by Dodji Seketeli <dodji@redhat.com>
 // Origin PR debug/39706
+// { dg-do compile { target *-*-darwin* } }
 // { dg-options "-g -dA -fno-merge-debug-strings" }
 // { dg-do compile }
 //
Index: dwarf2out.c
===================================================================
--- dwarf2out.c	(revision 160567)
+++ dwarf2out.c	(working copy)
@@ -11080,17 +11080,20 @@
 static void
 add_pubname_string (const char *str, dw_die_ref die)
 {
-  pubname_entry e;
+  if (targetm.want_debug_pub_sections)
+    {
+      pubname_entry e;
 
-  e.die = die;
-  e.name = xstrdup (str);
-  VEC_safe_push (pubname_entry, gc, pubname_table, &e);
+      e.die = die;
+      e.name = xstrdup (str);
+      VEC_safe_push (pubname_entry, gc, pubname_table, &e);
+    }
 }
 
 static void
 add_pubname (tree decl, dw_die_ref die)
 {
-  if (TREE_PUBLIC (decl))
+  if (targetm.want_debug_pub_sections && TREE_PUBLIC (decl))
     {
       const char *name = dwarf2_name (decl, 1);
       if (name)
@@ -11105,6 +11108,9 @@
 {
   pubname_entry e;
 
+  if (!targetm.want_debug_pub_sections)
+    return;
+
   e.name = NULL;
   if ((TREE_PUBLIC (decl)
        || die->die_parent == comp_unit_die)
Index: target-def.h
===================================================================
--- target-def.h	(revision 160567)
+++ target-def.h	(working copy)
@@ -680,6 +680,10 @@
 
 #define TARGET_ARM_EABI_UNWINDER false
 
+#ifndef TARGET_WANT_DEBUG_PUB_SECTIONS
+#define TARGET_WANT_DEBUG_PUB_SECTIONS false
+#endif
+
 #define TARGET_PROMOTE_FUNCTION_MODE default_promote_function_mode
 #define TARGET_PROMOTE_PROTOTYPES hook_bool_const_tree_false
 
@@ -1085,7 +1089,8 @@
   TARGET_ASM_FILE_START_FILE_DIRECTIVE,		\
   TARGET_HANDLE_PRAGMA_EXTERN_PREFIX,		\
   TARGET_RELAXED_ORDERING,			\
-  TARGET_ARM_EABI_UNWINDER			\
+  TARGET_ARM_EABI_UNWINDER,			\
+  TARGET_WANT_DEBUG_PUB_SECTIONS		\
 }
 
 #define TARGET_HANDLE_C_OPTION default_handle_c_option
Index: config/darwin.h
===================================================================
--- config/darwin.h	(revision 160567)
+++ config/darwin.h	(working copy)
@@ -471,6 +471,8 @@
 #define DEBUG_STR_SECTION	"__DWARF,__debug_str,regular,debug"
 #define DEBUG_RANGES_SECTION	"__DWARF,__debug_ranges,regular,debug"
 
+#define TARGET_WANT_DEBUG_PUB_SECTIONS true
+
 /* When generating stabs debugging, use N_BINCL entries.  */
 
 #define DBX_USE_BINCL


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]