diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/darwin-driver.c | 30 | ||||
-rw-r--r-- | gcc/config/darwin.h | 298 | ||||
-rw-r--r-- | gcc/config/darwin.opt | 155 | ||||
-rw-r--r-- | gcc/config/i386/darwin.h | 9 |
4 files changed, 228 insertions, 264 deletions
diff --git a/gcc/config/darwin-driver.c b/gcc/config/darwin-driver.c index 573abae..a036e09 100644 --- a/gcc/config/darwin-driver.c +++ b/gcc/config/darwin-driver.c @@ -259,14 +259,11 @@ maybe_get_sysroot_from_sdkroot () return xstrndup (maybe_sysroot, strlen (maybe_sysroot)); } -/* Translate -filelist and -framework options in *DECODED_OPTIONS - (size *DECODED_OPTIONS_COUNT) to use -Xlinker so that they are - considered to be linker inputs in the case that no other inputs are - specified. Handling these options in DRIVER_SELF_SPECS does not - suffice because specs are too late to add linker inputs, and - handling them in LINK_SPEC does not suffice because the linker will - not be called if there are no other inputs. When native, also - default the -mmacosx-version-min flag. */ +/* Handle the deduction of m32/m64 from -arch flags and the interactions + between them (i.e. try to warn a user who thinks that they have a driver + that can produce multi-slice "FAT" outputs with more than one arch). + Default the -mmacosx-version-min flag, which requires a system call on + native hosts. */ void darwin_driver_init (unsigned int *decoded_options_count, @@ -326,23 +323,6 @@ darwin_driver_init (unsigned int *decoded_options_count, seenM64 = true; break; - case OPT_filelist: - case OPT_framework: - ++*decoded_options_count; - *decoded_options = XRESIZEVEC (struct cl_decoded_option, - *decoded_options, - *decoded_options_count); - memmove (*decoded_options + i + 2, - *decoded_options + i + 1, - ((*decoded_options_count - i - 2) - * sizeof (struct cl_decoded_option))); - generate_option (OPT_Xlinker, (*decoded_options)[i].arg, 1, - CL_DRIVER, &(*decoded_options)[i + 1]); - generate_option (OPT_Xlinker, - (*decoded_options)[i].canonical_option[0], 1, - CL_DRIVER, &(*decoded_options)[i]); - break; - case OPT_mmacosx_version_min_: seen_version_min = true; vers_string = diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index 0fa1c57..4aedf46 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -118,25 +118,164 @@ 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; -/* 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. +/* Darwin has a user convenience feature where some linker options are exposed + at the driver level (so one can type "-all_load" instead of "-Wl,-all_load" + or "-Xlinker -all_load"). We retain this, but now these options are all + marked as 'Driver' and we process them as early as possible so that they + get allocated to the right toolchain command. There are a couple of special + cases where these driver opts are used multiple times, or to control + operations on more than one command (e.g. dynamiclib). These are handled + specially and we then add %<xxxx specs for the commands that _don't_ need + them. NOTE: the order of 'shared' and 'dynamiclib' is significant, hence + they are placed out of alphabetical order at the start. Likewise, we keep + a couple of cases where a negative option originally appeared after the + positive alternate, potentially overriding it. + When we report an error with %e, it seems necessary to strip the option + before doing so, otherwise it survives to the cc1 command line (%e doesn't + appear to abort the program before this). + Right now there's no mechanism to split up the "variable portion" (%*) of + the matched spec string, so where we have some driver specs that take 2 + or 3 arguments, these cannot be processed here, but are deferred until the + LINK_SPEC, where they are copied verbatim. + We have a "safe" version of the MacOS version string, that's been sanity- + checked and truncated to minor version. If the 'tiny' (3rd) portion of the + value is not significant, it's better to use this in version-compare(). */ - 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. */ #undef SUBTARGET_DRIVER_SELF_SPECS #define SUBTARGET_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", \ -"%{rpath*: -Xlinker -rpath -Xlinker %*}", \ -"%{shared:-Zdynamiclib} %<shared", \ -"%{static:%{Zdynamic:%e conflicting code gen style switches are used}}",\ -"%{y*:%nthe y option is obsolete and ignored} %<y*", \ -"%<Mach " + "%{shared:%{!dynamiclib:-dynamiclib}} %<shared", \ + "%{static:%{dynamic|dynamiclib:%econflicting code generation switches}}",\ + "%{dynamiclib:-Xlinker -dylib \ + %{allowable_client*:-Xlinker -allowable_client -Xlinker %*} \ + %<allowable_client* \ + %{bundle_loader*: %<bundle_loader* \ + %e-bundle_loader not allowed with -dynamiclib} \ + %{client_name*: %<client_name* \ + %e-client_name not allowed with -dynamiclib} \ + %{compatibility_version*:\ + -Xlinker -dylib_compatibility_version -Xlinker %*} \ + %<compatibility_version* \ + %{current_version*:-Xlinker -dylib_current_version -Xlinker %*} \ + %<current_version* \ + %{install_name*:-Xlinker -dylib_install_name -Xlinker %* } \ + %<install_name* \ + %{keep_private_externs: %<keep_private_externs \ + %e-keep_private_externs not allowed with -dynamiclib} \ + %{private_bundle: %<private_bundle \ + %e-private_bundle not allowed with -dynamiclib} \ + }", \ + "%{!dynamiclib: \ + %{bundle_loader*:-Xlinker -bundle_loader -Xlinker %*} \ + %<bundle_loader* \ + %{client_name*:-Xlinker -client_name -Xlinker %*} \ + %<client_name* \ + %{compatibility_version*: %<compatibility_version* \ + %e-compatibility_version only allowed with -dynamiclib} \ + %{current_version*: %<current_version* \ + %e-current_version only allowed with -dynamiclib} \ + %{install_name*: %<install_name* \ + %e-install_name only allowed with -dynamiclib} \ + %{keep_private_externs:-Xlinker -keep_private_externs} \ + %<keep_private_externs \ + %{private_bundle:-Xlinker -private_bundle} \ + %<private_bundle \ + }", \ + "%{all_load:-Xlinker -all_load} %<all_load", \ + "%{arch_errors_fatal:-Xlinker -arch_errors_fatal} \ + %<arch_errors_fatal", \ + "%{bind_at_load:-Xlinker -bind_at_load} %<bind_at_load", \ + "%{bundle:%{!dynamiclib:-Xlinker -bundle; \ + :%e-bundle not allowed with -dynamiclib}}", \ + "%{dead_strip:-Xlinker -dead_strip} %<dead_strip", \ + "%{dylib_file*:-Xlinker -dylib_file -Xlinker %*} %<dylib_file*", \ + "%{dylinker:-Xlinker -dylinker} %<dylinker", \ + "%{dylinker_install_name*:-Xlinker -dylinker_install_name -Xlinker %*}\ + %<dylinker_install_name*", \ + "%{exported_symbols_list*:-Xlinker -exported_symbols_list -Xlinker %*}\ + %<exported_symbols_list", \ + "%{findirect-virtual-calls: -fapple-kext} %<findirect-virtual-calls", \ + "%{fterminated-vtables: -fapple-kext} %<fterminated-vtables", \ + "%{fapple-kext|mkernel:-static}", \ + "%{filelist*:-Xlinker -filelist -Xlinker %*} %<filelist*", \ + "%{flat_namespace:-Xlinker -flat_namespace} %<flat_namespace", \ + "%{force_cpusubtype_ALL:-Xassembler -force_cpusubtype_ALL} ", \ + "%{force_flat_namespace: \ + %{!dynamiclib:-Xlinker -force_flat_namespace; \ + :%e-force_flat_namespace not allowed with -dynamiclib}} \ + %<force_flat_namespace", \ + "%{framework*:-Xlinker -framework -Xlinker %*} %<framework*", \ + "%{gfull:-g -fno-eliminate-unused-debug-symbols} %<gfull", \ + "%{gused:-g -feliminate-unused-debug-symbols} %<gused", \ + "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} \ + %<gsplit-dwarf", \ + "%{headerpad_max_install_names:-Xlinker -headerpad_max_install_names}\ + %<headerpad_max_install_names", \ + "%{image_base*:-Xlinker -image_base -Xlinker %*} %<image_base*", \ + "%{init*:-Xlinker -init -Xlinker %*} %<init*", \ + "%{multi_module:-Xlinker -multi_module} %<multi_module", \ + "%{multiply_defined*:-Xlinker -multiply_defined -Xlinker %*; \ + :%{shared-libgcc: \ + %:version-compare(< 10.5 asm_macosx_version_min= -Xlinker) \ + %:version-compare(< 10.5 asm_macosx_version_min= -multiply_defined) \ + %:version-compare(< 10.5 asm_macosx_version_min= -Xlinker) \ + %:version-compare(< 10.5 asm_macosx_version_min= suppress)}} \ + %<multiply_defined*", \ + "%{multiplydefinedunused*:\ + -Xlinker -multiply_defined_unused -Xlinker %*} \ + %<multiplydefinedunused* ", \ + "%{no_dead_strip_inits_and_terms:\ + -Xlinker -no_dead_strip_inits_and_terms} \ + %<no_dead_strip_inits_and_terms", \ + "%{nofixprebinding:-Xlinker -nofixprebinding} %<nofixprebinding", \ + "%{nomultidefs:-Xlinker -nomultidefs} %<nomultidefs", \ + "%{pagezero_size*:-Xlinker -pagezero_size -Xlinker %*} \ + %<pagezero_size", \ + "%{prebind:-Xlinker -prebind} %<prebind", \ + "%{noprebind:-Xlinker -noprebind} %<noprebind", \ + "%{prebind_all_twolevel_modules:\ + -Xlinker -prebind_all_twolevel_modules} \ + %<prebind_all_twolevel_modules", \ + "%{preload:-Xlinker -preload} %<preload", \ + "%{read_only_relocs*:-Xlinker -read_only_relocs -Xlinker %*} \ + %<read_only_relocs*", \ + "%{rpath*: -Xlinker -rpath -Xlinker %*}", \ + "%{seg_addr_table_filename*: \ + -Xlinker -seg_addr_table_filename -Xlinker %*} \ + %<seg_addr_table_filename*", \ + "%{seg_addr_table*:-Xlinker -seg_addr_table -Xlinker %*} \ + %<seg_addr_table*", \ + "%{seg1addr*:-Xlinker -image_base -Xlinker %*} %<seg1addr*", \ + "%{seglinkedit:-Xlinker -seglinkedit} %<seglinkedit", \ + "%{noseglinkedit:-Xlinker -noseglinkedit} %<noseglinkedit", \ + "%{segs_read_only_addr*:-Xlinker -segs_read_only_addr -Xlinker %*} \ + %<segs_read_only_addr*", \ + "%{segs_read_write_addr*:-Xlinker -segs_read_write_addr -Xlinker %*} \ + %<segs_read_write_addr*", \ + "%{single_module:-Xlinker -single_module} %<single_module", \ + "%{sub_library*:-Xlinker -sub_library -Xlinker %*} %<sub_library*", \ + "%{sub_umbrella*:-Xlinker -sub_umbrella -Xlinker %*} %<sub_umbrella*",\ + "%{twolevel_namespace:-Xlinker -twolevel_namespace} \ + %<twolevel_namespace", \ + "%{twolevel_namespace_hints:-Xlinker -twolevel_namespace_hints} \ + %<twolevel_namespace_hints", \ + "%{umbrella*:-Xlinker -umbrella -Xlinker %*} %<umbrella*", \ + "%{undefined*:-Xlinker -undefined -Xlinker %*} %<undefined*", \ + "%{unexported_symbols_list*:\ + -Xlinker -unexported_symbols_list -Xlinker %*} \ + %<unexported_symbols_list*", \ + "%{!weak_reference_mismatches*:\ + %:version-compare(< 10.5 asm_macosx_version_min= -Xlinker) \ + %:version-compare(< 10.5 asm_macosx_version_min= -weak_reference_mismatches) \ + %:version-compare(< 10.5 asm_macosx_version_min= -Xlinker) \ + %:version-compare(< 10.5 asm_macosx_version_min= non-weak)}", \ + "%{weak_reference_mismatches*:\ + -Xlinker -weak_reference_mismatches -Xlinker %*} \ + %<weak_reference_mismatches*", \ + "%{whyload:-Xlinker -whyload} %<whyload", \ + "%{whatsloaded:-Xlinker -whatsloaded} %<whatsloaded", \ + "%{w:-Xlinker -w}", \ + "%<y*", \ + "%<Mach " #if LD64_HAS_EXPORT_DYNAMIC #define DARWIN_RDYNAMIC "%{rdynamic:-export_dynamic}" @@ -157,9 +296,7 @@ extern GTY(()) int darwin_ms_struct; %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) }" #define DARWIN_CC1_SPEC \ - "%{findirect-virtual-calls: -fapple-kext} %<findirect-virtual-calls " \ - "%{fterminated-vtables: -fapple-kext} %<fterminated-vtables " \ - "%<filelist* %<framework*" + "%<dynamic %<dynamiclib %<force_cpusubtype_ALL " #define SUBSUBTARGET_OVERRIDE_OPTIONS \ do { \ @@ -184,7 +321,7 @@ extern GTY(()) int darwin_ms_struct; #undef CPP_SPEC #define CPP_SPEC "%{static:%{!dynamic:-D__STATIC__}}%{!static:-D__DYNAMIC__}" \ - " %{pthread:-D_REENTRANT}" + " %{pthread:-D_REENTRANT} " /* This is a fix for PR41260 by passing -no_compact_unwind on darwin10 and later until the assembler, linker and libunwind are able to deal with the @@ -274,101 +411,38 @@ extern GTY(()) int darwin_ms_struct; #define HAVE_LD_SYSROOT 1 /* It seems the only (working) way to get a space after %R is to append a dangling '/'. */ -#define SYSROOT_SPEC "%{!isysroot*:-syslibroot %R/ }" +#define SYSROOT_SPEC "%{!isysroot*:-syslibroot %R/ } " /* Do the same as clang, for now, and insert the sysroot for ld when an isysroot is specified. */ -#define LINK_SYSROOT_SPEC "%{isysroot*:-syslibroot %*}" +#define LINK_SYSROOT_SPEC "%{isysroot*:-syslibroot %*} " /* Suppress the addition of extra prefix paths when a sysroot is in use. */ #define STANDARD_STARTFILE_PREFIX_1 "" #define STANDARD_STARTFILE_PREFIX_2 "" -/* Please keep the random linker options in alphabetical order (modulo - 'Z' and 'no' prefixes). Note that options taking arguments may appear - multiple times on a command line with different arguments each time, - so put a * after their names so all of them get passed. */ + +/* Please keep the random linker options in alphabetical order. + Note that options taking arguments may appear multiple times on a command + line with different arguments each time, so put a * after their names so + all of them get passed. */ #define LINK_SPEC \ - "%{static}%{!static:-dynamic} \ + "%{static}%{!static:%{!dynamic:-dynamic}} \ %:remove-outfile(-ldl) \ %:remove-outfile(-lm) \ %:remove-outfile(-lpthread) \ %{fgnu-runtime: %{static|static-libgcc: \ %:replace-outfile(-lobjc libobjc-gnu.a%s); \ - :%:replace-outfile(-lobjc -lobjc-gnu ) } }\ + :%:replace-outfile(-lobjc -lobjc-gnu )}}\ %{static|static-libgcc|static-libgfortran:%:replace-outfile(-lgfortran libgfortran.a%s)}\ %{static|static-libgcc|static-libstdc++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}\ %{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\ - %{!Zdynamiclib: \ - %{Zforce_cpusubtype_ALL:-arch %(darwin_arch) -force_cpusubtype_ALL} \ - %{!Zforce_cpusubtype_ALL:-arch %(darwin_subarch)} \ - %{Zbundle:-bundle} \ - %{Zbundle_loader*:-bundle_loader %*} \ - %{client_name*} \ - %{compatibility_version*:%e-compatibility_version only allowed with -dynamiclib\ -} \ - %{current_version*:%e-current_version only allowed with -dynamiclib} \ - %{Zforce_flat_namespace:-force_flat_namespace} \ - %{Zinstall_name*:%e-install_name only allowed with -dynamiclib} \ - %{keep_private_externs} \ - %{private_bundle} \ - } \ - %{Zdynamiclib: -dylib \ - %{Zbundle:%e-bundle not allowed with -dynamiclib} \ - %{Zbundle_loader*:%e-bundle_loader not allowed with -dynamiclib} \ - %{client_name*:%e-client_name not allowed with -dynamiclib} \ - %{compatibility_version*:-dylib_compatibility_version %*} \ - %{current_version*:-dylib_current_version %*} \ - %{Zforce_cpusubtype_ALL:-arch %(darwin_arch)} \ - %{!Zforce_cpusubtype_ALL: -arch %(darwin_subarch)} \ - %{Zforce_flat_namespace:%e-force_flat_namespace not allowed with -dynamiclib} \ - %{Zinstall_name*:-dylib_install_name %*} \ - %{keep_private_externs:%e-keep_private_externs not allowed with -dynamiclib} \ - %{private_bundle:%e-private_bundle not allowed with -dynamiclib} \ - } \ - %{Zall_load:-all_load} \ - %{Zallowable_client*:-allowable_client %*} \ - %{Zbind_at_load:-bind_at_load} \ - %{Zarch_errors_fatal:-arch_errors_fatal} \ - %{Zdead_strip:-dead_strip} \ - %{Zno_dead_strip_inits_and_terms:-no_dead_strip_inits_and_terms} \ - %{Zdylib_file*:-dylib_file %*} \ - %{Zdynamic:-dynamic}\ - %{Zexported_symbols_list*:-exported_symbols_list %*} \ - %{Zflat_namespace:-flat_namespace} \ - %{headerpad_max_install_names} \ - %{Zimage_base*:-image_base %*} \ - %{Zinit*:-init %*} \ - %{mmacosx-version-min=*:-macosx_version_min %*} \ - %{nomultidefs} \ - %{Zmulti_module:-multi_module} %{Zsingle_module:-single_module} \ - %{Zmultiply_defined*:-multiply_defined %*} \ - %{!Zmultiply_defined*:%{shared-libgcc: \ - %:version-compare(< 10.5 mmacosx-version-min= -multiply_defined) \ - %:version-compare(< 10.5 mmacosx-version-min= suppress)}} \ - %{Zmultiplydefinedunused*:-multiply_defined_unused %*} \ - %{prebind} %{noprebind} %{nofixprebinding} %{prebind_all_twolevel_modules} \ - %{read_only_relocs} \ - %{sectcreate*} %{sectorder*} %{seg1addr*} %{segprot*} \ - %{Zsegaddr*:-segaddr %*} \ - %{Zsegs_read_only_addr*:-segs_read_only_addr %*} \ - %{Zsegs_read_write_addr*:-segs_read_write_addr %*} \ - %{Zseg_addr_table*: -seg_addr_table %*} \ - %{Zfn_seg_addr_table_filename*:-seg_addr_table_filename %*} \ - %{sub_library*} %{sub_umbrella*} \ - " LINK_SYSROOT_SPEC " \ - %{twolevel_namespace} %{twolevel_namespace_hints} \ - %{Zumbrella*: -umbrella %*} \ - %{undefined*} \ - %{Zunexported_symbols_list*:-unexported_symbols_list %*} \ - %{Zweak_reference_mismatches*:-weak_reference_mismatches %*} \ - %{!Zweak_reference_mismatches*:-weak_reference_mismatches non-weak} \ - %{w} \ - %{pagezero_size*} %{segs_read_*} %{seglinkedit} %{noseglinkedit} \ - %{sectalign*} %{sectobjectsymbols*} %{segcreate*} %{whyload} \ - %{whatsloaded} %{dylinker_install_name*} \ - %{dylinker} " - + %{force_cpusubtype_ALL:-arch %(darwin_arch)} \ + %{!force_cpusubtype_ALL:-arch %(darwin_subarch)} "\ + LINK_SYSROOT_SPEC \ + "%{mmacosx-version-min=*:-macosx_version_min %*} \ + %{sectalign*} %{sectcreate*} %{sectobjectsymbols*} %{sectorder*} \ + %{segaddr*} %{segcreate*} %{segprot*} " /* Machine dependent libraries. */ @@ -410,9 +484,9 @@ extern GTY(()) int darwin_ms_struct; #undef STARTFILE_SPEC #define STARTFILE_SPEC \ -"%{Zdynamiclib: %(darwin_dylib1) %{fgnu-tm: -lcrttms.o}} \ - %{!Zdynamiclib:%{Zbundle:%(darwin_bundle1)} \ - %{!Zbundle:%{pg:%{static:-lgcrt0.o} \ +"%{dynamiclib: %(darwin_dylib1) %{fgnu-tm: -lcrttms.o}} \ + %{!dynamiclib:%{bundle:%(darwin_bundle1)} \ + %{!bundle:%{pg:%{static:-lgcrt0.o} \ %{!static:%{object:-lgcrt0.o} \ %{!object:%{preload:-lgcrt0.o} \ %{!preload:-lgcrt1.o \ @@ -423,7 +497,7 @@ extern GTY(()) int darwin_ms_struct; %{!object:%{preload:-lcrt0.o} \ %{!preload: %(darwin_crt1) \ %(darwin_crt2)}}}}}} \ - %(darwin_crt3)" + %(darwin_crt3) %<dynamiclib " /* We want a destructor last in the list. */ #define TM_DESTRUCTOR "%{fgnu-tm: -lcrttme.o}" @@ -463,24 +537,25 @@ extern GTY(()) int darwin_ms_struct; #ifdef HAVE_AS_MMACOSX_VERSION_MIN_OPTION /* Emit macosx version (but only major). */ #define ASM_MMACOSX_VERSION_MIN_SPEC \ - " %{asm_macosx_version_min=*: -mmacosx-version-min=%*} %<asm_macosx_version_min=*" +"%{asm_macosx_version_min=*: -mmacosx-version-min=%* } \ + %<asm_macosx_version_min=* " #else -#define ASM_MMACOSX_VERSION_MIN_SPEC " %<asm_macosx_version_min=*" +#define ASM_MMACOSX_VERSION_MIN_SPEC " %<asm_macosx_version_min=* " #endif -/* When we detect that we're cctools or llvm as, we need to insert the right - additional options. */ #if HAVE_GNU_AS +/* The options are added in gcc.c for this case. */ #define ASM_OPTIONS "" #else +/* When we detect that we're cctools or llvm as, we need to insert the right + additional options. Actually, currently these are the same as GAS. */ #define ASM_OPTIONS "%{v} %{w:-W} %{I*}" #endif /* Default Darwin ASM_SPEC, very simple. */ -#define ASM_SPEC "-arch %(darwin_arch) \ - " ASM_OPTIONS " \ - %{Zforce_cpusubtype_ALL:-force_cpusubtype_ALL} \ - %{static}" ASM_MMACOSX_VERSION_MIN_SPEC +#define ASM_SPEC \ +"%{static} -arch %(darwin_arch) " \ +ASM_OPTIONS ASM_MMACOSX_VERSION_MIN_SPEC #ifdef HAVE_AS_STABS_DIRECTIVE /* We only pass a debug option to the assembler if that supports stabs, since @@ -494,7 +569,8 @@ extern GTY(()) int darwin_ms_struct; #define ASM_DEBUG_OPTION_SPEC "" #define ASM_FINAL_SPEC \ - "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} %<gsplit-dwarf" + "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} \ + %<gsplit-dwarf" /* We now require C++11 to bootstrap and newer tools than those based on stabs, so require DWARF-2, even if stabs is supported by the assembler. */ diff --git a/gcc/config/darwin.opt b/gcc/config/darwin.opt index 23f3593..d1d1f81 100644 --- a/gcc/config/darwin.opt +++ b/gcc/config/darwin.opt @@ -90,11 +90,11 @@ Target RejectNegative Joined Separate Var(darwin_target_linker) Init(LD64_VERSIO ; Driver options. all_load -Driver RejectNegative Alias(Zall_load) +Driver RejectNegative Load all members of archive libraries, rather than only those that satisfy undefined symbols. allowable_client -Driver RejectNegative Separate Alias(Zallowable_client) +Driver RejectNegative Separate -allowable_client <name> The output dylib is private to the client <name>. arch @@ -102,7 +102,7 @@ Driver RejectNegative Separate -arch <name> Generate output for architecture <name>. arch_errors_fatal -Driver RejectNegative Alias(Zarch_errors_fatal) +Driver RejectNegative Mismatches between file architecture and one specified by \"-arch\" are errors instead of warnings. asm_macosx_version_min= @@ -110,15 +110,15 @@ Driver RejectNegative Joined The earliest macOS version on which this program will run (formatted for the assembler). bind_at_load -Driver RejectNegative Alias(Zbind_at_load) +Driver RejectNegative Generate an output executable that binds symbols on load, rather than lazily. bundle -Driver RejectNegative Alias(Zbundle) +Driver RejectNegative Generate a Mach-O bundle (file type MH_BUNDLE). bundle_loader -Driver RejectNegative Separate Alias(Zbundle_loader) +Driver RejectNegative Separate -bundle_loader <executable> Treat <executable> (that will be loading this bundle) as if it was one of the dynamic libraries the bundle is linked against for symbol resolution. client_name @@ -134,11 +134,12 @@ Driver RejectNegative Separate -current_version <number> Set the current version for the library to <number>. dead_strip -Driver RejectNegative Alias(Zdead_strip) +Driver RejectNegative Remove code and data that is unreachable from any exported symbol (including the entry point). dylib_file -Driver Separate Alias(Zdylib_file) +Driver RejectNegative Separate +-dylib_file install_name:file_name This allows linking of a dylib with \"install_name\" but to be found in a different install position \"file_name\" dylinker Driver RejectNegative @@ -149,15 +150,15 @@ Driver RejectNegative Separate -dylinker_install_name <path> Only used for building dyld. dynamic -Driver RejectNegative Alias(Zdynamic) +Driver RejectNegative The default (and opposite of -static), implied by user mode executables, shared libraries and bundles. dynamiclib -Driver RejectNegative Alias(Zdynamiclib) +Driver RejectNegative Produce a Mach-O shared library (file type MH_DYLIB), synonym for \"-shared\". exported_symbols_list -Driver RejectNegative Separate Alias(Zexported_symbols_list) +Driver RejectNegative Separate -exported_symbols_list <filename> Export global symbols in <filename> in linked output file; any symbols not mentioned will be treated as \"hidden\". filelist @@ -169,15 +170,15 @@ Driver RejectNegative Used for generating code for some older kernel revisions. flat_namespace -Driver RejectNegative Alias(Zflat_namespace) +Driver RejectNegative Ignore the normal two-level namespace; resolve symbols in command line order and do not record which library provided the resolved symbol. force_cpusubtype_ALL -Driver RejectNegative Alias(Zforce_cpusubtype_ALL) +Driver RejectNegative For the assembler (and linker) permit any architecture sub-variant to be used without error. force_flat_namespace -Driver RejectNegative Alias(Zforce_flat_namespace) +Driver RejectNegative Set the output object such that, on loading, dyld will ignore any two-level namespace information and resolve symbols in the discovery order for loaded libs. framework @@ -201,15 +202,15 @@ Driver RejectNegative Automatically adds space for longer path names in load commands (up to MAXPATHLEN). image_base -Driver RejectNegative Separate Alias(Zimage_base) +Driver RejectNegative Separate -image_base <address> Specify <address> as the base address for a dylib or bundle. init -Driver RejectNegative Separate Alias(Zinit) +Driver RejectNegative Separate -init <symbol_name> The symbol <symbol_name> will be used as the first initialiser for a dylib. install_name -Driver RejectNegative Separate Alias(Zinstall_name) +Driver RejectNegative Separate -install_name <name> Set the install name for a dylib. keep_private_externs @@ -217,19 +218,19 @@ Driver RejectNegative Usually \"private extern\" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported. multi_module -Driver RejectNegative Alias(Zmulti_module) +Driver RejectNegative (Obsolete after 10.4) Multi modules are ignored at runtime since macOS 10.4. multiply_defined -Driver RejectNegative Separate Alias(Zmultiply_defined) +Driver RejectNegative Separate (Obsolete after 10.4) -multiply_defined <treatment> Provided a mechanism for warning about symbols defined in multiple dylibs. multiply_defined_unused -Driver RejectNegative Separate Alias(Zmultiplydefinedunused) +Driver RejectNegative Separate (Obsolete after 10.4) -multiply_defined_unused <treatment> Provided a mechanism for warning about symbols defined in the current executable also being defined in linked dylibs. no_dead_strip_inits_and_terms -Driver RejectNegative Alias(Zno_dead_strip_inits_and_terms) +Driver RejectNegative (Obsolete) Current linkers never dead-strip these items, so the option is not needed. nofixprebinding @@ -299,12 +300,12 @@ Driver RejectNegative Separate Args(3) (Obsolete) -sectorder <segname> <sectname> <orderfile> Replaced by a more general option \"-order_file\". seg_addr_table -Driver RejectNegative Separate Alias(Zseg_addr_table) +Driver RejectNegative Separate -seg_addr_table <file> Specify the base addresses for dynamic libraries; <file> contains a line for each library. ; This is only usable by the ld_classic linker. seg_addr_table_filename -Driver RejectNegative Separate Alias(Zfn_seg_addr_table_filename) +Driver RejectNegative Separate (Obsolete, ld_classic only) -seg_addr_table_filename <path>. seg1addr @@ -312,7 +313,7 @@ Driver RejectNegative Separate Synonym for \"image_base\". segaddr -Driver RejectNegative Separate Args(2) Alias(Zsegaddr) +Driver RejectNegative Separate Args(2) -segaddr <name> <address> Set the base address of segment <name> to <address> which must be aligned to a page boundary (currently 4kb). ; This is only usable by the ld_classic linker. @@ -329,15 +330,15 @@ Driver RejectNegative Separate Args(3) -segprot <segname> <max_prot> <init_prot> The virtual memory protections for segment <segname> have maximum and initial values <max_prot> and <init_prot> respectively. The specified values may contain \"r\", \"w\", \"x\" or \"-\" the latter meaning \"no access\". segs_read_only_addr -Driver RejectNegative Separate Alias(Zsegs_read_only_addr) +Driver RejectNegative Separate -segs_read_only_addr <address> Specify that <address> is the base address of the read-only segments of a dylib. segs_read_write_addr -Driver RejectNegative Separate Alias(Zsegs_read_write_addr) +Driver RejectNegative Separate -segs_read_write_addr <address> Specify that <address> is the base address address of the read-write segments of a dylib. single_module -Driver RejectNegative Alias(Zsingle_module) +Driver RejectNegative (Obsolete) This is the default. sub_library @@ -357,7 +358,7 @@ Driver RejectNegative Add extra information to the executable that can speed up dynamic loading (provided that dependent libraries are unchanged). umbrella -Driver RejectNegative Separate Alias(Zumbrella) +Driver RejectNegative -umbrella <framework> The specified framework will be re-exported. undefined @@ -365,11 +366,11 @@ Driver RejectNegative Separate -undefined <treatment> Specify the handling for undefined symbols (default is error). unexported_symbols_list -Driver RejectNegative Separate Alias(Zunexported_symbols_list) +Driver RejectNegative Separate -unexported_symbols_list <filename> Do not export the global symbols listed in <filename>. weak_reference_mismatches -Driver RejectNegative Separate Alias(Zweak_reference_mismatches) +Driver RejectNegative Separate -weak_reference_mismatches <treatment> Specifies what to do if a symbol import conflicts between file (weak in one and not in another) the default is to treat the symbol as non-weak. whatsloaded @@ -391,97 +392,3 @@ Driver RejectNegative Joined Mach Driver RejectNegative (Obsolete and unhandled by ld64, ignored) ld should produce an executable (only handled by ld_classic). - -;; These are not "real" options, but placeholders used to hide the real options -;; from generic options processing... FIXME: they can be eliminated now. - -Zall_load -Driver - -Zallowable_client -Driver Separate - -Zarch_errors_fatal -Driver - -Zbind_at_load -Driver - -Zbundle -Driver - -Zbundle_loader -Driver Separate - -Zdead_strip -Driver - -Zdylib_file -Driver Separate - -Zdynamic -Driver - -Zdynamiclib -Driver - -Zexported_symbols_list -Driver Separate - -Zfn_seg_addr_table_filename -Driver Separate - -Zflat_namespace -Driver - -Zforce_cpusubtype_ALL -Driver - -Zforce_flat_namespace -Driver - -Zimage_base -Driver Separate - -Zinit -Driver Separate - -Zinstall_name -Driver Separate - -Zmulti_module -Driver - -Zmultiply_defined -Driver Separate - -Zmultiplydefinedunused -Driver Separate - -Zno_dead_strip_inits_and_terms -Driver - -Zseg_addr_table -Driver Separate - -Zsegaddr -Driver Separate Args(2) - -Zsegs_read_only_addr -Driver Separate - -Zsegs_read_write_addr -Driver Separate - -Zsingle_module -Driver - -Zumbrella -Driver Separate - -Zunexported_symbols_list -Driver Separate - -Zweak_reference_mismatches -Driver Separate - diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h index c4a6f4d..741f29a 100644 --- a/gcc/config/i386/darwin.h +++ b/gcc/config/i386/darwin.h @@ -128,15 +128,16 @@ along with GCC; see the file COPYING3. If not see /* This is a workaround for a tool bug: see PR100340. */ #ifdef HAVE_AS_MLLVM_X86_PAD_FOR_ALIGN -#define EXTRA_ASM_OPTS " -mllvm -x86-pad-for-align=false" +#define EXTRA_ASM_OPTS " -mllvm -x86-pad-for-align=false " #else #define EXTRA_ASM_OPTS "" #endif #undef ASM_SPEC -#define ASM_SPEC "-arch %(darwin_arch) \ - " ASM_OPTIONS " -force_cpusubtype_ALL \ - %{static}" ASM_MMACOSX_VERSION_MIN_SPEC EXTRA_ASM_OPTS +#define ASM_SPEC \ +"%{static} -arch %(darwin_arch) " \ + ASM_OPTIONS ASM_MMACOSX_VERSION_MIN_SPEC EXTRA_ASM_OPTS \ +"%{!force_cpusubtype_ALL:-force_cpusubtype_ALL} " #undef ENDFILE_SPEC #define ENDFILE_SPEC \ |