[Darwin,committed] More specs TLC.

Message ID 2E1022D9-46FD-4A82-B290-59A98B11DEE8@googlemail.com
State New
Headers show
  • [Darwin,committed] More specs TLC.
Related show

Commit Message

Iain Sandoe July 19, 2019, 8:16 p.m.
This strips out (%< wise) a few driver specs that are only specifying a default state.
Also warn on an option now ignored, and add some comments to the driver specs
section.  Update the comments to explain why we can’t process all the driver specs

Tested on x86-64-darwin,
applied to mainline

2019-07-19  Iain Sandoe  <iain@sandoe.co.uk>

	* config/darwin.h (DRIVER_SELF_SPECS): Ignore X and Mach specs which
	refer to default conditions.  Warn for the 'y' spec which is ignored
	by current linkers.


diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index e17bc64..ed87984 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -118,13 +118,23 @@  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 /* True if pragma ms_struct is in effect.  */
 extern GTY(()) int darwin_ms_struct;
-#define DRIVER_SELF_SPECS                                      \
-  "%{gfull:-g -fno-eliminate-unused-debug-symbols} %<gfull",   \
-  "%{gused:-g -feliminate-unused-debug-symbols} %<gused",      \
-  "%{fapple-kext|mkernel:-static}",                            \
-  "%{shared:-Zdynamiclib} %<shared",                            \
-  "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} \
-     %<gsplit-dwarf"
+/* The majority of Darwin's special driver opts are direct access to ld flags
+   (to save the user typing -Wl,xxxxx or Xlinker xxxxx) but we can't process
+   them here, since doing so will make it appear that there are linker infiles
+   and the linker will invoked even when it is not necessary.
+   However, a few can be handled and we can elide options that are silently-
+   ignored defaults, plus warn on obsolete ones that no longer function.  */
+#define DRIVER_SELF_SPECS                                              \
+"%{fapple-kext|mkernel:-static}",                                      \
+"%{gfull:-g -fno-eliminate-unused-debug-symbols} %<gfull",             \
+"%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} \
+   %<gsplit-dwarf",                                                    \
+"%{gused:-g -feliminate-unused-debug-symbols} %<gused",                        \
+"%{shared:-Zdynamiclib} %<shared",                                     \
+"%{static:%{Zdynamic:%e conflicting code gen style switches are used}}",\
+"%{y*:%nthe y option is obsolete and ignored} %<y*",                   \
+"%<Mach %<X"
 #define DARWIN_RDYNAMIC "%{rdynamic:-export_dynamic}"
@@ -342,13 +352,11 @@  extern GTY(()) int darwin_ms_struct;
    %{Zunexported_symbols_list*:-unexported_symbols_list %*} \
    %{Zweak_reference_mismatches*:-weak_reference_mismatches %*} \
    %{!Zweak_reference_mismatches*:-weak_reference_mismatches non-weak} \
-   %{X} \
-   %{y*} \
    %{w} \
    %{pagezero_size*} %{segs_read_*} %{seglinkedit} %{noseglinkedit}  \
    %{sectalign*} %{sectobjectsymbols*} %{segcreate*} %{whyload} \
    %{whatsloaded} %{dylinker_install_name*} \
-   %{dylinker} %{Mach} "
+   %{dylinker} "
 /* Machine dependent libraries.  */