Patchwork Remove MODIFY_TARGET_NAME

login
register
mail settings
Submitter Joseph S. Myers
Date June 25, 2010, midnight
Message ID <Pine.LNX.4.64.1006242358210.7812@digraph.polyomino.org.uk>
Download mbox | patch
Permalink /patch/56872/
State New
Headers show

Comments

Joseph S. Myers - June 25, 2010, midnight
A target macro MODIFY_TARGET_NAME was added by
<http://gcc.gnu.org/ml/gcc-patches/2000-09/msg00897.html>.  This
provided a way for targets to have options that were effectively
special cases of -b: PA options -32 and -64 were added whose effect
was to remove or add "64" in the first part of the target triplet.

The implementation in terms of modifying spec_machine may have worked
at the time; it was how -b was implemented then, and modifying
spec_machine would have caused the compiler to read specs from the
location where the other-target compiler had installed them.  But the
old style of implementing -b and -V proved problematic and -b was
reimplemented to exec an alternative driver in
<http://gcc.gnu.org/ml/gcc-patches/2002-06/msg00820.html>.  The
installation of specs files was then stopped by
<http://gcc.gnu.org/ml/gcc-patches/2004-12/msg01459.html>, removing
the last chance of such a spec_machine change working in a normal
installation.  Finally, -b and -V were removed
<http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00384.html> (patch
posting: <http://gcc.gnu.org/ml/gcc-patches/2010-02/msg00915.html>),
leaving MODIFY_TARGET_NAME as the only relic of one GCC installation
trying to run pieces of another installation.

This patch removes MODIFY_TARGET_NAME in order to facilitate sharing
option processing machinery between the driver and the compilers
proper.  I think the development direction is clear that one
installation should not be running pieces of another and any
replacement should involve multiple targets built into GCC at once.
(In the PA case, it would surely be simpler to implement conventional
-m32/-m64 options as on many other targets rather than linking in
multiple variant copies of the back end - even if you want to do it
for HP-UX where 32-bit and 64-bit use different object formats.)

Bootstrapped with no regressions on x86_64-unknown-linux-gnu.  OK to
commit?

2010-06-24  Joseph Myers  <joseph@codesourcery.com>

	* config/pa/pa.h (MODIFY_TARGET_NAME): Remove.
	* doc/tm.texi (MODIFY_TARGET_NAME): Don't document.
	* gcc.c (enum add_del, struct modify_target, modify_target):
	Remove.
	(process_command): Remove code conditional on MODIFY_TARGET_NAME.
	* system.h (MODIFY_TARGET_NAME): Poison.
Richard Guenther - June 25, 2010, 8:42 a.m.
On Fri, Jun 25, 2010 at 2:51 AM, John David Anglin
<dave@hiauly1.hia.nrc.ca> wrote:
>> Bootstrapped with no regressions on x86_64-unknown-linux-gnu.  OK to
>> commit?
>>
>> 2010-06-24  Joseph Myers  <joseph@codesourcery.com>
>>
>>       * config/pa/pa.h (MODIFY_TARGET_NAME): Remove.
>
> This part is ok.  The -32 and -64 options don't work, and the 32-bit
> target naming conventions are not consistent with -32 on hpux.  So,
> there is is no reason to retain these options.  However, as I recall,
> it is not easy to implement -m32 and -m64 on PA-RISC.

The rest is also ok.

Thanks,
Richard.

> Dave
> --
> J. David Anglin                                  dave.anglin@nrc-cnrc.gc.ca
> National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)
>

Patch

diff -rupN --exclude=.svn gcc-mainline-opt5/gcc/config/pa/pa.h gcc-mainline/gcc/config/pa/pa.h
--- gcc-mainline-opt5/gcc/config/pa/pa.h	2009-10-07 09:35:30.000000000 -0700
+++ gcc-mainline/gcc/config/pa/pa.h	2010-06-24 15:21:30.000000000 -0700
@@ -1,6 +1,6 @@ 
 /* Definitions of target machine for GNU compiler, for the HP Spectrum.
    Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-   2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
    Free Software Foundation, Inc.
    Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support
    and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for
@@ -222,15 +222,6 @@  do {								\
 #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}"
 #endif
 
-/* This macro defines command-line switches that modify the default
-   target name.
-
-   The definition is be an initializer for an array of structures.  Each
-   array element has have three elements: the switch name, one of the
-   enumeration codes ADD or DELETE to indicate whether the string should be
-   inserted or deleted, and the string to be inserted or deleted.  */
-#define MODIFY_TARGET_NAME {{"-32", DELETE, "64"}, {"-64", ADD, "64"}}
-
 /* Make gcc agree with <machine/ansi.h> */
 
 #define SIZE_TYPE "unsigned int"
diff -rupN --exclude=.svn gcc-mainline-opt5/gcc/doc/tm.texi gcc-mainline/gcc/doc/tm.texi
--- gcc-mainline-opt5/gcc/doc/tm.texi	2010-06-17 03:29:51.000000000 -0700
+++ gcc-mainline/gcc/doc/tm.texi	2010-06-24 15:21:49.000000000 -0700
@@ -523,31 +523,6 @@  Cross compilers do not search either @fi
 replacement.
 @end defmac
 
-@defmac MODIFY_TARGET_NAME
-Define this macro if you wish to define command-line switches that
-modify the default target name.
-
-For each switch, you can include a string to be appended to the first
-part of the configuration name or a string to be deleted from the
-configuration name, if present.  The definition should be an initializer
-for an array of structures.  Each array element should have three
-elements: the switch name (a string constant, including the initial
-dash), one of the enumeration codes @code{ADD} or @code{DELETE} to
-indicate whether the string should be inserted or deleted, and the string
-to be inserted or deleted (a string constant).
-
-For example, on a machine where @samp{64} at the end of the
-configuration name denotes a 64-bit target and you want the @option{-32}
-and @option{-64} switches to select between 32- and 64-bit targets, you would
-code
-
-@smallexample
-#define MODIFY_TARGET_NAME \
-  @{ @{ "-32", DELETE, "64"@}, \
-     @{"-64", ADD, "64"@}@}
-@end smallexample
-@end defmac
-
 @defmac SYSTEM_INCLUDE_DIR
 Define this macro as a C string constant if you wish to specify a
 system-specific directory to search for header files before the standard
diff -rupN --exclude=.svn gcc-mainline-opt5/gcc/gcc.c gcc-mainline/gcc/gcc.c
--- gcc-mainline-opt5/gcc/gcc.c	2010-06-23 13:36:36.000000000 -0700
+++ gcc-mainline/gcc/gcc.c	2010-06-24 15:23:53.000000000 -0700
@@ -280,23 +280,6 @@  static const char *cross_compile = "1";
 static const char *cross_compile = "0";
 #endif
 
-#ifdef MODIFY_TARGET_NAME
-
-/* Information on how to alter the target name based on a command-line
-   switch.  The only case we support now is simply appending or deleting a
-   string to or from the end of the first part of the configuration name.  */
-
-enum add_del {ADD, DELETE};
-
-static const struct modify_target
-{
-  const char *const sw;
-  const enum add_del add_del;
-  const char *const str;
-}
-modify_target[] = MODIFY_TARGET_NAME;
-#endif
-
 /* Greatest exit code of sub-processes that has been encountered up to
    now.  */
 static int greatest_status = 1;
@@ -3502,10 +3485,6 @@  process_command (int argc, const char **
   const char *spec_lang = 0;
   int last_language_n_infiles;
   int lang_n_infiles = 0;
-#ifdef MODIFY_TARGET_NAME
-  int is_modify_target_name;
-  unsigned int j;
-#endif
   const char *tooldir_prefix;
   char *(*get_relative_prefix) (const char *, const char *,
 				const char *) = NULL;
@@ -4127,43 +4106,6 @@  process_command (int argc, const char **
 	    default:
 	    normal_switch:
 
-#ifdef MODIFY_TARGET_NAME
-	      is_modify_target_name = 0;
-
-	      for (j = 0; j < ARRAY_SIZE (modify_target); j++)
-		if (! strcmp (argv[i], modify_target[j].sw))
-		  {
-		    char *new_name = XNEWVEC (char, strlen (modify_target[j].str)
-					      + strlen (spec_machine));
-		    const char *p, *r;
-		    char *q;
-		    int made_addition = 0;
-
-		    is_modify_target_name = 1;
-		    for (p = spec_machine, q = new_name; *p != 0; )
-		      {
-			if (modify_target[j].add_del == DELETE
-			    && (! strncmp (q, modify_target[j].str,
-					   strlen (modify_target[j].str))))
-			  p += strlen (modify_target[j].str);
-			else if (modify_target[j].add_del == ADD
-				 && ! made_addition && *p == '-')
-			  {
-			    for (r = modify_target[j].str; *r != 0; )
-			      *q++ = *r++;
-			    made_addition = 1;
-			  }
-
-			*q++ = *p++;
-		      }
-
-		    spec_machine = new_name;
-		  }
-
-	      if (is_modify_target_name)
-		break;
-#endif
-
 	      n_switches++;
 
 	      if (SWITCH_TAKES_ARG (c) > (p[1] != 0))
@@ -4304,17 +4246,6 @@  process_command (int argc, const char **
   for (i = 1; i < argc; i++)
     {
       /* Just skip the switches that were handled by the preceding loop.  */
-#ifdef MODIFY_TARGET_NAME
-      is_modify_target_name = 0;
-
-      for (j = 0; j < ARRAY_SIZE (modify_target); j++)
-	if (! strcmp (argv[i], modify_target[j].sw))
-	  is_modify_target_name = 1;
-
-      if (is_modify_target_name)
-	;
-      else
-#endif
       if (! strncmp (argv[i], "-Wa,", 4))
 	;
       else if (! strncmp (argv[i], "-Wp,", 4))
diff -rupN --exclude=.svn gcc-mainline-opt5/gcc/system.h gcc-mainline/gcc/system.h
--- gcc-mainline-opt5/gcc/system.h	2010-06-21 15:27:06.000000000 -0700
+++ gcc-mainline/gcc/system.h	2010-06-24 15:22:11.000000000 -0700
@@ -769,7 +769,7 @@  extern void fancy_abort (const char *, i
 	ASM_OUTPUT_SHARED_LOCAL ASM_MAKE_LABEL_LINKONCE			   \
 	STACK_CHECK_PROBE_INTERVAL STACK_CHECK_PROBE_LOAD		   \
 	ORDER_REGS_FOR_LOCAL_ALLOC FUNCTION_OUTGOING_VALUE		   \
-	ASM_DECLARE_CONSTANT_NAME
+	ASM_DECLARE_CONSTANT_NAME MODIFY_TARGET_NAME
 
 /* Hooks that are no longer used.  */
  #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE	\