Patchwork Clean up TARGET_ASM_NAMED_SECTION defaults

login
register
mail settings
Submitter Joseph S. Myers
Date June 21, 2011, 11:21 p.m.
Message ID <Pine.LNX.4.64.1106212319290.21088@digraph.polyomino.org.uk>
Download mbox | patch
Permalink /patch/101383/
State New
Headers show

Comments

Joseph S. Myers - June 21, 2011, 11:21 p.m.
I noted in <http://gcc.gnu.org/ml/gcc-patches/2011-05/msg02172.html>
the fragile nature of the default of TARGET_HAVE_NAMED_SECTIONS based
on TARGET_ASM_NAMED_SECTION (relying on (a) TARGET_ASM_NAMED_SECTION
being defined in tm.h not a .c file and (b) the order in which headers
are included).

This patch simplifies the logic and makes it less fragile by
defaulting TARGET_HAVE_NAMED_SECTIONS to "true" - which is correct for
almost all targets - and then explicitly defining it to "false" for
the targets without named section support.  Although this duplicates
information from TARGET_ASM_NAMED_SECTION, I think doing so is better
than the fragile dependencies listed above.

Bootstrapped with no regressions on x86_64-unknown-linux-gnu, and
tested building cc1 and xgcc for crosses to: alpha-dec-osf5.1
hppa2.0w-hp-hpux11.23 i686-openbsd2 m32c-elf m68k-openbsd pdp11-none
vax-openbsd.  (vax-openbsd failed because of the pre-existing PR
47122.)  OK to commit?

(My inclination is that the OpenBSD targets without named sections -
presumably a.out - should be deprecated.  In the case of the x86
target FSF GCC also has a more recent OpenBSD target with named
section support; for the other architectures there isn't a more recent
target in FSF GCC and I don't know if OpenBSD's own toolchain has
since moved to ELF on M68K or VAX.)

2011-06-21  Joseph Myers  <joseph@codesourcery.com>

	* common/common-target-def.h (TARGET_HAVE_NAMED_SECTIONS): Don't
	default based on TARGET_ASM_NAMED_SECTION.
	* common/common-target.def (have_named_sections): Default to true.
	* common/config/default-common.c: Don't include tm.h.
	* common/config/picochip/picochip-common.c
	(TARGET_HAVE_NAMED_SECTIONS): Don't define.
	* common/config/m32c/m32c-common.c: Remove.
	* config.gcc (m32c*-*-*): Set target_has_targetm_common=no.
	* config/alpha/osf5.h (TARGET_HAVE_NAMED_SECTIONS): Define to
	false.
	* config/i386/openbsd.h (TARGET_HAVE_NAMED_SECTIONS): Define to
	false.
	* config/m68k/openbsd.h (TARGET_HAVE_NAMED_SECTIONS): Define to
	false.
	* config/pa/som.h (TARGET_HAVE_NAMED_SECTIONS): Define to false.
	* config/pdp11/pdp11.h (TARGET_HAVE_NAMED_SECTIONS): Define to
	false.
	* config/vax/openbsd.h (TARGET_HAVE_NAMED_SECTIONS): Define to
	false.
Joseph S. Myers - June 28, 2011, 10:33 a.m.
Ping.  This patch 
<http://gcc.gnu.org/ml/gcc-patches/2011-06/msg01642.html> is pending 
review.
Joseph S. Myers - July 5, 2011, 7:16 p.m.
Ping^2.  The patch 
<http://gcc.gnu.org/ml/gcc-patches/2011-06/msg01642.html> is still pending 
review.
Richard Guenther - July 6, 2011, 8:27 a.m.
On Tue, Jul 5, 2011 at 9:16 PM, Joseph S. Myers <joseph@codesourcery.com> wrote:
> Ping^2.  The patch
> <http://gcc.gnu.org/ml/gcc-patches/2011-06/msg01642.html> is still pending
> review.

Ok if there are no objections from target maintainers in 24h.

Thanks,
Richard.

> --
> Joseph S. Myers
> joseph@codesourcery.com
>

Patch

Index: gcc/common/config/m32c/m32c-common.c
===================================================================
--- gcc/common/config/m32c/m32c-common.c	(revision 175248)
+++ gcc/common/config/m32c/m32c-common.c	(working copy)
@@ -1,31 +0,0 @@ 
-/* Common hooks for R8C/M16C/M32C.
-   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
-   Free Software Foundation, Inc.
-
-   This file is part of GCC.
-
-   GCC is free software; you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published
-   by the Free Software Foundation; either version 3, or (at your
-   option) any later version.
-
-   GCC is distributed in the hope that it will be useful, but WITHOUT
-   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-   License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-#include "tm.h"
-#include "common/common-target.h"
-#include "common/common-target-def.h"
-
-#undef TARGET_HAVE_NAMED_SECTIONS
-#define TARGET_HAVE_NAMED_SECTIONS true
-
-struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
Index: gcc/common/config/default-common.c
===================================================================
--- gcc/common/config/default-common.c	(revision 175248)
+++ gcc/common/config/default-common.c	(working copy)
@@ -21,12 +21,10 @@  along with GCC; see the file COPYING3.  
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
-#include "tm.h" /* For TARGET_ASM_NAMED_SECTION used in default for
-		   TARGET_HAVE_NAMED_SECTIONS.  */
 #include "common/common-target.h"
 #include "common/common-target-def.h"
 
-/* FIXME: Do not include tm.h or tm_p.h here; if it is useful for a target to
+/* Do not include tm.h or tm_p.h here; if it is useful for a target to
    define some macros for the initializer in a header without defining
    targetm_common itself (for example, because of interactions with
    some hooks depending on the target OS and others on the target
Index: gcc/common/config/picochip/picochip-common.c
===================================================================
--- gcc/common/config/picochip/picochip-common.c	(revision 175248)
+++ gcc/common/config/picochip/picochip-common.c	(working copy)
@@ -31,9 +31,6 @@  static const struct default_options pico
     { OPT_LEVELS_NONE, 0, NULL, 0 }
   };
 
-#undef TARGET_HAVE_NAMED_SECTIONS
-#define TARGET_HAVE_NAMED_SECTIONS 1
-
 #undef TARGET_OPTION_OPTIMIZATION_TABLE
 #define TARGET_OPTION_OPTIMIZATION_TABLE picochip_option_optimization_table
 
Index: gcc/common/common-target.def
===================================================================
--- gcc/common/common-target.def	(revision 175248)
+++ gcc/common/common-target.def	(working copy)
@@ -86,7 +86,7 @@  DEFHOOKPOD
 DEFHOOKPOD
 (have_named_sections,
  "",
- bool, false)
+ bool, true)
 
 DEFHOOKPOD
 (always_strip_dotdot,
Index: gcc/common/common-target-def.h
===================================================================
--- gcc/common/common-target-def.h	(revision 175248)
+++ gcc/common/common-target-def.h	(working copy)
@@ -16,10 +16,6 @@ 
    along with this program; see the file COPYING3.  If not see
    <http://www.gnu.org/licenses/>.  */
 
-#ifdef TARGET_ASM_NAMED_SECTION
-#define TARGET_HAVE_NAMED_SECTIONS true
-#endif
-
 #include "common/common-target-hooks-def.h"
 #include "hooks.h"
 #include "common/common-targhooks.h"
Index: gcc/config.gcc
===================================================================
--- gcc/config.gcc	(revision 175248)
+++ gcc/config.gcc	(working copy)
@@ -298,6 +298,7 @@  case ${target} in
 m32c*-*-*)
         cpu_type=m32c
 	tmake_file=m32c/t-m32c
+	target_has_targetm_common=no
         ;;
 alpha*-*-*)
 	cpu_type=alpha
Index: gcc/config/alpha/osf5.h
===================================================================
--- gcc/config/alpha/osf5.h	(revision 175248)
+++ gcc/config/alpha/osf5.h	(working copy)
@@ -259,3 +259,5 @@  along with GCC; see the file COPYING3.  
 
 /* Handle #pragma extern_prefix.  */
 #define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX 1
+
+#define TARGET_HAVE_NAMED_SECTIONS false
Index: gcc/config/i386/openbsd.h
===================================================================
--- gcc/config/i386/openbsd.h	(revision 175248)
+++ gcc/config/i386/openbsd.h	(working copy)
@@ -98,3 +98,5 @@  along with GCC; see the file COPYING3.  
 
 /* OpenBSD gas currently does not support quad, so do not use it.  */
 #undef ASM_QUAD
+
+#define TARGET_HAVE_NAMED_SECTIONS false
Index: gcc/config/pdp11/pdp11.h
===================================================================
--- gcc/config/pdp11/pdp11.h	(revision 175248)
+++ gcc/config/pdp11/pdp11.h	(working copy)
@@ -664,3 +664,5 @@  extern rtx cc0_reg_rtx;
 
 
 #define COMPARE_FLAG_MODE HImode
+
+#define TARGET_HAVE_NAMED_SECTIONS false
Index: gcc/config/m68k/openbsd.h
===================================================================
--- gcc/config/m68k/openbsd.h	(revision 175248)
+++ gcc/config/m68k/openbsd.h	(working copy)
@@ -1,5 +1,5 @@ 
 /* Configuration file for an m68k OpenBSD target.
-   Copyright (C) 1999, 2002, 2003, 2007, 2009, 2010
+   Copyright (C) 1999, 2002, 2003, 2007, 2009, 2010, 2011
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -87,3 +87,5 @@  along with GCC; see the file COPYING3.  
 /* All configurations that don't use elf must be explicit about not using
    dwarf unwind information.  */
 #define DWARF2_UNWIND_INFO 0
+
+#define TARGET_HAVE_NAMED_SECTIONS false
Index: gcc/config/pa/som.h
===================================================================
--- gcc/config/pa/som.h	(revision 175248)
+++ gcc/config/pa/som.h	(working copy)
@@ -340,3 +340,5 @@  do {						\
 /* Shared library suffix.  Collect2 strips the version string after
    this suffix when generating constructor/destructor names.  */ 
 #define SHLIB_SUFFIX ".sl"
+
+#define TARGET_HAVE_NAMED_SECTIONS false
Index: gcc/config/vax/openbsd.h
===================================================================
--- gcc/config/vax/openbsd.h	(revision 175248)
+++ gcc/config/vax/openbsd.h	(working copy)
@@ -1,5 +1,5 @@ 
 /* Configuration fragment for a VAX OpenBSD target.
-   Copyright (C) 2000, 2002, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2002, 2007, 2009, 2011 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -46,3 +46,5 @@  along with GCC; see the file COPYING3.  
 
 #undef WINT_TYPE
 #define WINT_TYPE "int"
+
+#define TARGET_HAVE_NAMED_SECTIONS false