Patchwork RFA: don't emit .debug_pub*

login
register
mail settings
Submitter Tom Tromey
Date June 29, 2010, 7:20 p.m.
Message ID <m34oglve6s.fsf@fleche.redhat.com>
Download mbox | patch
Permalink /patch/57301/
State New
Headers show

Comments

Tom Tromey - June 29, 2010, 7:20 p.m.
>>>>> "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.
Richard Henderson - June 29, 2010, 11:43 p.m.
On 06/29/2010 12:20 PM, Tom Tromey wrote:
>>>>>> "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.

Yes, target-def.h needed an ifdef.

But now the patch needs to be re-written, since Joern has
committed a patch that re-works the target hooks.  Which
will also force you to write documentation, which you had
forgotten for this new hook.  ;-)


r~

Patch

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