[2/9] Specs cleanup: -A, -d and -m for linker

Joseph S. Myers joseph@codesourcery.com
Thu Dec 2 16:34:00 GMT 2010


LINK_COMMAND_SPEC (including modified copies for two targets) passes
-A, -d and -m to the linker and has further %{!A:...} specs.

This is not consistent with the semantics of -A (preprocessor assert),
-d (compiler dump) and -m (prefix to machine-specific compiler
options; if passed on its own, will get passed to cc1 then rejected by
cc1) in GCC.  Thus, this patch removes that specs handling; any such
options actually needing to be passed to the linker must be passed
using -Wl, or -Xlinker.

2010-12-02  Joseph Myers  <joseph@codesourcery.com>

	* gcc.c (LINK_COMMAND_SPEC): Don't handle -A, -d or -m.
	* config/darwin.h (LINK_COMMAND_SPEC_A): Likewise.
	* config/i386/djgpp.h (LINK_COMMAND_SPEC): Likewise.

diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/darwin.h gcc-mainline/gcc/config/darwin.h
--- gcc-mainline-1/gcc/config/darwin.h	2010-11-30 03:36:38.000000000 -0800
+++ gcc-mainline/gcc/config/darwin.h	2010-12-01 16:46:05.000000000 -0800
@@ -172,17 +172,17 @@ extern GTY(()) int darwin_ms_struct;
     %(linker) \
     %{flto*:%<fcompare-debug*} \
     %{flto*} \
-    %l %X %{d} %{s} %{t} %{Z} %{u*} \
-    %{A} %{e*} %{m} %{r} \
+    %l %X %{s} %{t} %{Z} %{u*} \
+    %{e*} %{r} \
     %{o*}%{!o:-o a.out} \
-    %{!A:%{!nostdlib:%{!nostartfiles:%S}}} \
+    %{!nostdlib:%{!nostartfiles:%S}} \
     %{L*} %(link_libgcc) %o %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \
     %{fopenmp|ftree-parallelize-loops=*: \
       %{static|static-libgcc|static-libstdc++|static-libgfortran: libgomp.a%s; : -lgomp } } \
     %{!nostdlib:%{!nodefaultlibs:\
       %(link_ssp) %(link_gcc_c_sequence)\
     }}\
-    %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} %{F*} }}}}}}}"
+    %{!nostdlib:%{!nostartfiles:%E}} %{T*} %{F*} }}}}}}}"
 
 #define DSYMUTIL "\ndsymutil"
 
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/i386/djgpp.h gcc-mainline/gcc/config/i386/djgpp.h
--- gcc-mainline-1/gcc/config/i386/djgpp.h	2010-11-19 13:22:39.000000000 -0800
+++ gcc-mainline/gcc/config/i386/djgpp.h	2010-12-01 16:46:48.000000000 -0800
@@ -96,12 +96,12 @@ along with GCC; see the file COPYING3.  
 #undef LINK_COMMAND_SPEC
 #define LINK_COMMAND_SPEC \
 "%{!fsyntax-only: \
-%{!c:%{!M:%{!MM:%{!E:%{!S:%(linker) %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \
+%{!c:%{!M:%{!MM:%{!E:%{!S:%(linker) %l %X %{o*} %{e*} %{N} %{n} \
 \t%{r} %{s} %{t} %{u*} %{z} %{Z}\
-\t%{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
+\t%{!nostdlib:%{!nostartfiles:%S}}\
 \t%{static:} %{L*} %D %o\
 \t%{!nostdlib:%{!nodefaultlibs:%G %L %G}}\
-\t%{!A:%{!nostdlib:%{!nostartfiles:%E}}}\
+\t%{!nostdlib:%{!nostartfiles:%E}}\
 \t-Tdjgpp.djl %{T*}}}}}}}\n\
 %{!c:%{!M:%{!MM:%{!E:%{!S:stubify %{v} %{o*:%*} %{!o*:a.out} }}}}}"
 
diff -rupN --exclude=.svn gcc-mainline-1/gcc/gcc.c gcc-mainline/gcc/gcc.c
--- gcc-mainline-1/gcc/gcc.c	2010-11-30 03:36:38.000000000 -0800
+++ gcc-mainline/gcc/gcc.c	2010-12-01 16:45:23.000000000 -0800
@@ -641,14 +641,14 @@ proper position among the other output f
     } \
     %{flto*:%<fcompare-debug*} \
     %{flto*} %l " LINK_PIE_SPEC \
-   "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
-    %{s} %{t} %{u*} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
+   "%X %{o*} %{e*} %{N} %{n} %{r}\
+    %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}}\
     %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\
     %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\
     %(mflib) " STACK_SPLIT_SPEC "\
     %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\
     %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\
-    %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}"
+    %{!nostdlib:%{!nostartfiles:%E}} %{T*} }}}}}}"
 #endif
 
 #ifndef LINK_LIBGCC_SPEC

-- 
Joseph S. Myers
joseph@codesourcery.com



More information about the Gcc-patches mailing list