This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: RFA: don't emit .debug_pub*
- From: Tom Tromey <tromey at redhat dot com>
- To: Richard Henderson <rth at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org, Jakub Jelinek <jakub at redhat dot com>
- Date: Tue, 29 Jun 2010 13:20:11 -0600
- Subject: Re: RFA: don't emit .debug_pub*
- References: <m3r5k0f2o9.fsf@fleche.redhat.com> <4C293E85.8090305@redhat.com>
- Reply-to: Tom Tromey <tromey at redhat dot com>
>>>>> "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