Commit 8efc91cd by Mike Stump

darwin.h: Make pretty.

	* config/darwin.h: Make pretty.
	* config/t-darwin (config/darwin.h.rebuild): Add.
	(build/slashify): Add.
	* config/slashify.c: Add.

From-SVN: r170097
parent d65dd7dc
2011-02-12 Mike Stump <mikestump@comcast.net>
* config/darwin.h: Make pretty.
* config/t-darwin (config/darwin.h.rebuild): Add.
(build/slashify): Add.
* config/slashify.c: Add.
2011-02-12 Joseph Myers <joseph@codesourcery.com> 2011-02-12 Joseph Myers <joseph@codesourcery.com>
PR driver/45731 PR driver/45731
......
...@@ -123,46 +123,47 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -123,46 +123,47 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* True if pragma ms_struct is in effect. */ /* True if pragma ms_struct is in effect. */
extern GTY(()) int darwin_ms_struct; extern GTY(()) int darwin_ms_struct;
#define DRIVER_SELF_SPECS \ #define DRIVER_SELF_SPECS @(
"%{gfull:-g -fno-eliminate-unused-debug-symbols} %<gfull", \ "%{gfull:-g -fno-eliminate-unused-debug-symbols} %<gfull",
"%{gused:-g -feliminate-unused-debug-symbols} %<gused", \ "%{gused:-g -feliminate-unused-debug-symbols} %<gused",
"%{fapple-kext|mkernel:-static}", \ "%{fapple-kext|mkernel:-static}",
"%{shared:-Zdynamiclib} %<shared" "%{shared:-Zdynamiclib} %<shared"@)
#define DARWIN_CC1_SPEC \ #define DARWIN_CC1_SPEC @(
"%{findirect-virtual-calls: -fapple-kext} %<findirect-virtual-calls " \ "%{findirect-virtual-calls: -fapple-kext} %<findirect-virtual-calls "
"%{fterminated-vtables: -fapple-kext} %<fterminated-vtables " \ "%{fterminated-vtables: -fapple-kext} %<fterminated-vtables "
"%<filelist* %<framework*" "%<filelist* %<framework*"@)
#define SUBSUBTARGET_OVERRIDE_OPTIONS \ #define SUBSUBTARGET_OVERRIDE_OPTIONS @(
do { \ do {
darwin_override_options (); \ darwin_override_options ();
} while (0) } while (0)@)
#define SUBTARGET_C_COMMON_OVERRIDE_OPTIONS do { \ #define SUBTARGET_C_COMMON_OVERRIDE_OPTIONS @(
/* Sort out ObjC exceptions: If the runtime is NeXT we default to \ do {
sjlj for m32 only. */ \ /* Sort out ObjC exceptions: If the runtime is NeXT we default to
if (!global_options_set.x_flag_objc_sjlj_exceptions) \ sjlj for m32 only. */
global_options.x_flag_objc_sjlj_exceptions = \ if (!global_options_set.x_flag_objc_sjlj_exceptions)
flag_next_runtime && !TARGET_64BIT; \ global_options.x_flag_objc_sjlj_exceptions
if (flag_mkernel || flag_apple_kext) \ = flag_next_runtime && !TARGET_64BIT;
{ \ if (flag_mkernel || flag_apple_kext)
if (flag_use_cxa_atexit == 2) \ {
flag_use_cxa_atexit = 0; \ if (flag_use_cxa_atexit == 2)
/* kexts should always be built without the coalesced sections \ flag_use_cxa_atexit = 0;
because the kernel loader doesn't grok such sections. */ \ /* kexts should always be built without the coalesced sections
flag_weak = 0; \ because the kernel loader doesn't grok such sections. */
/* No RTTI in kexts. */ \ flag_weak = 0;
flag_rtti = 0; \ /* No RTTI in kexts. */
} \ flag_rtti = 0;
} while (0) }
} while (0)@)
/* Machine dependent cpp options. Don't add more options here, add /* Machine dependent cpp options. Don't add more options here, add
them to darwin_cpp_builtins in darwin-c.c. */ them to darwin_cpp_builtins in darwin-c.c. */
#undef CPP_SPEC #undef CPP_SPEC
#define CPP_SPEC "%{static:%{!dynamic:-D__STATIC__}}%{!static:-D__DYNAMIC__}" \ #define CPP_SPEC "%{static:%{!dynamic:-D__STATIC__}}%{!static:-D__DYNAMIC__}" @(
" %{pthread:-D_REENTRANT}" " %{pthread:-D_REENTRANT}"@)
/* This is mostly a clone of the standard LINK_COMMAND_SPEC, plus /* This is mostly a clone of the standard LINK_COMMAND_SPEC, plus
precomp, libtool, and fat build additions. precomp, libtool, and fat build additions.
...@@ -172,31 +173,31 @@ extern GTY(()) int darwin_ms_struct; ...@@ -172,31 +173,31 @@ extern GTY(()) int darwin_ms_struct;
specifying the handling of options understood by generic Unix specifying the handling of options understood by generic Unix
linkers, and for positional arguments like libraries. */ linkers, and for positional arguments like libraries. */
#define LINK_COMMAND_SPEC_A \ #define LINK_COMMAND_SPEC_A @(
"%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:
%(linker) \ %(linker)
%{flto*:%<fcompare-debug*} \ %{flto*:%<fcompare-debug*}
%{flto*} \ %{flto*}
%l %X %{s} %{t} %{Z} %{u*} \ %l %X %{s} %{t} %{Z} %{u*}
%{e*} %{r} \ %{e*} %{r}
%{o*}%{!o:-o a.out} \ %{o*}%{!o:-o a.out}
%{!nostdlib:%{!nostartfiles:%S}} \ %{!nostdlib:%{!nostartfiles:%S}}
%{L*} %(link_libgcc) %o %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \ %{L*} %(link_libgcc) %o %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}
%{fopenmp|ftree-parallelize-loops=*: \ %{fopenmp|ftree-parallelize-loops=*:
%{static|static-libgcc|static-libstdc++|static-libgfortran: libgomp.a%s; : -lgomp } } \ %{static|static-libgcc|static-libstdc++|static-libgfortran: libgomp.a%s; : -lgomp } }
%{!nostdlib:%{!nodefaultlibs:\ %{!nostdlib:%{!nodefaultlibs:
%(link_ssp) %(link_gcc_c_sequence)\ %(link_ssp) %(link_gcc_c_sequence)
}}\ }}
%{!nostdlib:%{!nostartfiles:%E}} %{T*} %{F*} }}}}}}}" %{!nostdlib:%{!nostartfiles:%E}} %{T*} %{F*} }}}}}}}"@)
#define DSYMUTIL "\ndsymutil" #define DSYMUTIL "\ndsymutil"
#define DSYMUTIL_SPEC \ #define DSYMUTIL_SPEC @(
"%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:
%{v} \ %{v}
%{gdwarf-2:%{!gstabs*:%{!g0: -idsym}}}\ %{gdwarf-2:%{!gstabs*:%{!g0: -idsym}}}
%{.c|.cc|.C|.cpp|.cp|.c++|.cxx|.CPP|.m|.mm: \ %{.c|.cc|.C|.cpp|.cp|.c++|.cxx|.CPP|.m|.mm:
%{gdwarf-2:%{!gstabs*:%{!g0: -dsym}}}}}}}}}}}" %{gdwarf-2:%{!gstabs*:%{!g0: -dsym}}}}}}}}}}}"@)
#define LINK_COMMAND_SPEC LINK_COMMAND_SPEC_A DSYMUTIL_SPEC #define LINK_COMMAND_SPEC LINK_COMMAND_SPEC_A DSYMUTIL_SPEC
...@@ -209,8 +210,8 @@ extern GTY(()) int darwin_ms_struct; ...@@ -209,8 +210,8 @@ extern GTY(()) int darwin_ms_struct;
#define LINK_GCC_C_SEQUENCE_SPEC "%G %L" #define LINK_GCC_C_SEQUENCE_SPEC "%G %L"
#ifdef TARGET_SYSTEM_ROOT #ifdef TARGET_SYSTEM_ROOT
#define LINK_SYSROOT_SPEC \ #define LINK_SYSROOT_SPEC @(
"%{isysroot*:-syslibroot %*;:-syslibroot " TARGET_SYSTEM_ROOT "}" "%{isysroot*:-syslibroot %*;:-syslibroot " TARGET_SYSTEM_ROOT "}"@)
#else #else
#define LINK_SYSROOT_SPEC "%{isysroot*:-syslibroot %*}" #define LINK_SYSROOT_SPEC "%{isysroot*:-syslibroot %*}"
#endif #endif
...@@ -219,90 +220,90 @@ extern GTY(()) int darwin_ms_struct; ...@@ -219,90 +220,90 @@ extern GTY(()) int darwin_ms_struct;
'Z' and 'no' prefixes). Note that options taking arguments may appear 'Z' and 'no' prefixes). Note that options taking arguments may appear
multiple times on a command line with different arguments each time, multiple times on a command line with different arguments each time,
so put a * after their names so all of them get passed. */ so put a * after their names so all of them get passed. */
#define LINK_SPEC \ #define LINK_SPEC @(
"%{static}%{!static:-dynamic} \ "%{static}%{!static:-dynamic}
%:remove-outfile(-ldl) \ %:remove-outfile(-ldl)
%:remove-outfile(-lm) \ %:remove-outfile(-lm)
%:remove-outfile(-lpthread) \ %:remove-outfile(-lpthread)
%{fgnu-runtime: %{static|static-libgcc: \ %{fgnu-runtime: %{static|static-libgcc:
%:replace-outfile(-lobjc libobjc-gnu.a%s); \ %: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-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++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}
%{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\ %{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}
%{!Zdynamiclib: \ %{!Zdynamiclib:
%{Zforce_cpusubtype_ALL:-arch %(darwin_arch) -force_cpusubtype_ALL} \ %{Zforce_cpusubtype_ALL:-arch %(darwin_arch) -force_cpusubtype_ALL}
%{!Zforce_cpusubtype_ALL:-arch %(darwin_subarch)} \ %{!Zforce_cpusubtype_ALL:-arch %(darwin_subarch)}
%{Zbundle:-bundle} \ %{Zbundle:-bundle}
%{Zbundle_loader*:-bundle_loader %*} \ %{Zbundle_loader*:-bundle_loader %*}
%{client_name*} \ %{client_name*}
%{compatibility_version*:%e-compatibility_version only allowed with -dynamiclib\ %{compatibility_version*:%e-compatibility_version only allowed with -dynamiclib
} \ }
%{current_version*:%e-current_version only allowed with -dynamiclib} \ %{current_version*:%e-current_version only allowed with -dynamiclib}
%{Zforce_flat_namespace:-force_flat_namespace} \ %{Zforce_flat_namespace:-force_flat_namespace}
%{Zinstall_name*:%e-install_name only allowed with -dynamiclib} \ %{Zinstall_name*:%e-install_name only allowed with -dynamiclib}
%{keep_private_externs} \ %{keep_private_externs}
%{private_bundle} \ %{private_bundle}
} \ }
%{Zdynamiclib: -dylib \ %{Zdynamiclib: -dylib
%{Zbundle:%e-bundle not allowed with -dynamiclib} \ %{Zbundle:%e-bundle not allowed with -dynamiclib}
%{Zbundle_loader*:%e-bundle_loader not allowed with -dynamiclib} \ %{Zbundle_loader*:%e-bundle_loader not allowed with -dynamiclib}
%{client_name*:%e-client_name not allowed with -dynamiclib} \ %{client_name*:%e-client_name not allowed with -dynamiclib}
%{compatibility_version*:-dylib_compatibility_version %*} \ %{compatibility_version*:-dylib_compatibility_version %*}
%{current_version*:-dylib_current_version %*} \ %{current_version*:-dylib_current_version %*}
%{Zforce_cpusubtype_ALL:-arch %(darwin_arch)} \ %{Zforce_cpusubtype_ALL:-arch %(darwin_arch)}
%{!Zforce_cpusubtype_ALL: -arch %(darwin_subarch)} \ %{!Zforce_cpusubtype_ALL: -arch %(darwin_subarch)}
%{Zforce_flat_namespace:%e-force_flat_namespace not allowed with -dynamiclib} \ %{Zforce_flat_namespace:%e-force_flat_namespace not allowed with -dynamiclib}
%{Zinstall_name*:-dylib_install_name %*} \ %{Zinstall_name*:-dylib_install_name %*}
%{keep_private_externs:%e-keep_private_externs not allowed with -dynamiclib} \ %{keep_private_externs:%e-keep_private_externs not allowed with -dynamiclib}
%{private_bundle:%e-private_bundle not allowed with -dynamiclib} \ %{private_bundle:%e-private_bundle not allowed with -dynamiclib}
} \ }
%{Zall_load:-all_load} \ %{Zall_load:-all_load}
%{Zallowable_client*:-allowable_client %*} \ %{Zallowable_client*:-allowable_client %*}
%{Zbind_at_load:-bind_at_load} \ %{Zbind_at_load:-bind_at_load}
%{Zarch_errors_fatal:-arch_errors_fatal} \ %{Zarch_errors_fatal:-arch_errors_fatal}
%{Zdead_strip:-dead_strip} \ %{Zdead_strip:-dead_strip}
%{Zno_dead_strip_inits_and_terms:-no_dead_strip_inits_and_terms} \ %{Zno_dead_strip_inits_and_terms:-no_dead_strip_inits_and_terms}
%{Zdylib_file*:-dylib_file %*} \ %{Zdylib_file*:-dylib_file %*}
%{Zdynamic:-dynamic}\ %{Zdynamic:-dynamic}
%{Zexported_symbols_list*:-exported_symbols_list %*} \ %{Zexported_symbols_list*:-exported_symbols_list %*}
%{Zflat_namespace:-flat_namespace} \ %{Zflat_namespace:-flat_namespace}
%{headerpad_max_install_names} \ %{headerpad_max_install_names}
%{Zimage_base*:-image_base %*} \ %{Zimage_base*:-image_base %*}
%{Zinit*:-init %*} \ %{Zinit*:-init %*}
%{!mmacosx-version-min=*:-macosx_version_min %(darwin_minversion)} \ %{!mmacosx-version-min=*:-macosx_version_min %(darwin_minversion)}
%{mmacosx-version-min=*:-macosx_version_min %*} \ %{mmacosx-version-min=*:-macosx_version_min %*}
%{nomultidefs} \ %{nomultidefs}
%{Zmulti_module:-multi_module} %{Zsingle_module:-single_module} \ %{Zmulti_module:-multi_module} %{Zsingle_module:-single_module}
%{Zmultiply_defined*:-multiply_defined %*} \ %{Zmultiply_defined*:-multiply_defined %*}
%{!Zmultiply_defined*:%{shared-libgcc: \ %{!Zmultiply_defined*:%{shared-libgcc:
%:version-compare(< 10.5 mmacosx-version-min= -multiply_defined) \ %:version-compare(< 10.5 mmacosx-version-min= -multiply_defined)
%:version-compare(< 10.5 mmacosx-version-min= suppress)}} \ %:version-compare(< 10.5 mmacosx-version-min= suppress)}}
%{Zmultiplydefinedunused*:-multiply_defined_unused %*} \ %{Zmultiplydefinedunused*:-multiply_defined_unused %*}
%{fpie:-pie} \ %{fpie:-pie}
%{prebind} %{noprebind} %{nofixprebinding} %{prebind_all_twolevel_modules} \ %{prebind} %{noprebind} %{nofixprebinding} %{prebind_all_twolevel_modules}
%{read_only_relocs} \ %{read_only_relocs}
%{sectcreate*} %{sectorder*} %{seg1addr*} %{segprot*} \ %{sectcreate*} %{sectorder*} %{seg1addr*} %{segprot*}
%{Zsegaddr*:-segaddr %*} \ %{Zsegaddr*:-segaddr %*}
%{Zsegs_read_only_addr*:-segs_read_only_addr %*} \ %{Zsegs_read_only_addr*:-segs_read_only_addr %*}
%{Zsegs_read_write_addr*:-segs_read_write_addr %*} \ %{Zsegs_read_write_addr*:-segs_read_write_addr %*}
%{Zseg_addr_table*: -seg_addr_table %*} \ %{Zseg_addr_table*: -seg_addr_table %*}
%{Zfn_seg_addr_table_filename*:-seg_addr_table_filename %*} \ %{Zfn_seg_addr_table_filename*:-seg_addr_table_filename %*}
%{sub_library*} %{sub_umbrella*} \ %{sub_library*} %{sub_umbrella*}
" LINK_SYSROOT_SPEC " \ " LINK_SYSROOT_SPEC "
%{twolevel_namespace} %{twolevel_namespace_hints} \ %{twolevel_namespace} %{twolevel_namespace_hints}
%{Zumbrella*: -umbrella %*} \ %{Zumbrella*: -umbrella %*}
%{undefined*} \ %{undefined*}
%{Zunexported_symbols_list*:-unexported_symbols_list %*} \ %{Zunexported_symbols_list*:-unexported_symbols_list %*}
%{Zweak_reference_mismatches*:-weak_reference_mismatches %*} \ %{Zweak_reference_mismatches*:-weak_reference_mismatches %*}
%{!Zweak_reference_mismatches*:-weak_reference_mismatches non-weak} \ %{!Zweak_reference_mismatches*:-weak_reference_mismatches non-weak}
%{X} \ %{X}
%{y*} \ %{y*}
%{w} \ %{w}
%{pagezero_size*} %{segs_read_*} %{seglinkedit} %{noseglinkedit} \ %{pagezero_size*} %{segs_read_*} %{seglinkedit} %{noseglinkedit}
%{sectalign*} %{sectobjectsymbols*} %{segcreate*} %{whyload} \ %{sectalign*} %{sectobjectsymbols*} %{segcreate*} %{whyload}
%{whatsloaded} %{dylinker_install_name*} \ %{whatsloaded} %{dylinker_install_name*}
%{dylinker} %{Mach} " %{dylinker} %{Mach} "@)
/* Machine dependent libraries. */ /* Machine dependent libraries. */
...@@ -323,19 +324,19 @@ extern GTY(()) int darwin_ms_struct; ...@@ -323,19 +324,19 @@ extern GTY(()) int darwin_ms_struct;
If it is linked against, it has to be before -lgcc, because it may If it is linked against, it has to be before -lgcc, because it may
need symbols from -lgcc. */ need symbols from -lgcc. */
#undef REAL_LIBGCC_SPEC #undef REAL_LIBGCC_SPEC
#define REAL_LIBGCC_SPEC \ #define REAL_LIBGCC_SPEC @(
"%{static-libgcc|static: -lgcc_eh -lgcc; \ "%{static-libgcc|static: -lgcc_eh -lgcc;
shared-libgcc|fexceptions|fgnu-runtime: \ shared-libgcc|fexceptions|fgnu-runtime:
%:version-compare(!> 10.5 mmacosx-version-min= -lgcc_s.10.4) \ %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_s.10.4)
%:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5)
%:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4)
%:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5)
-lgcc ; \ -lgcc ;
:%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \ :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4)
%:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5)
%:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4)
%:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5)
-lgcc }" -lgcc }"@)
/* We specify crt0.o as -lcrt0.o so that ld will search the library path. /* We specify crt0.o as -lcrt0.o so that ld will search the library path.
...@@ -345,42 +346,42 @@ extern GTY(()) int darwin_ms_struct; ...@@ -345,42 +346,42 @@ extern GTY(()) int darwin_ms_struct;
powerpc program built. */ powerpc program built. */
#undef STARTFILE_SPEC #undef STARTFILE_SPEC
#define STARTFILE_SPEC \ #define STARTFILE_SPEC @(
"%{Zdynamiclib: %(darwin_dylib1) } \ "%{Zdynamiclib: %(darwin_dylib1) }
%{!Zdynamiclib:%{Zbundle:%{!static:-lbundle1.o}} \ %{!Zdynamiclib:%{Zbundle:%{!static:-lbundle1.o}}
%{!Zbundle:%{pg:%{static:-lgcrt0.o} \ %{!Zbundle:%{pg:%{static:-lgcrt0.o}
%{!static:%{object:-lgcrt0.o} \ %{!static:%{object:-lgcrt0.o}
%{!object:%{preload:-lgcrt0.o} \ %{!object:%{preload:-lgcrt0.o}
%{!preload:-lgcrt1.o %(darwin_crt2)}}}} \ %{!preload:-lgcrt1.o %(darwin_crt2)}}}}
%{!pg:%{static:-lcrt0.o} \ %{!pg:%{static:-lcrt0.o}
%{!static:%{object:-lcrt0.o} \ %{!static:%{object:-lcrt0.o}
%{!object:%{preload:-lcrt0.o} \ %{!object:%{preload:-lcrt0.o}
%{!preload: %(darwin_crt1) \ %{!preload: %(darwin_crt1)
%(darwin_crt2)}}}}}} \ %(darwin_crt2)}}}}}}
%{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= crt3.o%s)}" %{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= crt3.o%s)}"@)
/* The native Darwin linker doesn't necessarily place files in the order /* The native Darwin linker doesn't necessarily place files in the order
that they're specified on the link line. Thus, it is pointless that they're specified on the link line. Thus, it is pointless
to put anything in ENDFILE_SPEC. */ to put anything in ENDFILE_SPEC. */
/* #define ENDFILE_SPEC "" */ /* #define ENDFILE_SPEC "" */
#define DARWIN_EXTRA_SPECS \ #define DARWIN_EXTRA_SPECS @(
{ "darwin_crt1", DARWIN_CRT1_SPEC }, \ { "darwin_crt1", DARWIN_CRT1_SPEC },
{ "darwin_dylib1", DARWIN_DYLIB1_SPEC }, \ { "darwin_dylib1", DARWIN_DYLIB1_SPEC },
{ "darwin_minversion", DARWIN_MINVERSION_SPEC }, { "darwin_minversion", DARWIN_MINVERSION_SPEC },@)
#define DARWIN_DYLIB1_SPEC \ #define DARWIN_DYLIB1_SPEC @(
"%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o) \ "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o)
%:version-compare(>= 10.5 mmacosx-version-min= -ldylib1.10.5.o)" %:version-compare(>= 10.5 mmacosx-version-min= -ldylib1.10.5.o)"@)
#define DARWIN_CRT1_SPEC \ #define DARWIN_CRT1_SPEC @(
"%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o) \ "%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o)
%:version-compare(>= 10.5 mmacosx-version-min= -lcrt1.10.5.o)" %:version-compare(>= 10.5 mmacosx-version-min= -lcrt1.10.5.o)"@)
/* Default Darwin ASM_SPEC, very simple. */ /* Default Darwin ASM_SPEC, very simple. */
#define ASM_SPEC "-arch %(darwin_arch) \ #define ASM_SPEC "-arch %(darwin_arch) @(
%{Zforce_cpusubtype_ALL:-force_cpusubtype_ALL} \ %{Zforce_cpusubtype_ALL:-force_cpusubtype_ALL}
%{static}" %{static}"@)
/* We still allow output of STABS. */ /* We still allow output of STABS. */
...@@ -423,27 +424,27 @@ extern GTY(()) int darwin_ms_struct; ...@@ -423,27 +424,27 @@ extern GTY(()) int darwin_ms_struct;
coalesced sections. Weak aliases (or any other kind of aliases) are coalesced sections. Weak aliases (or any other kind of aliases) are
not supported. Weak symbols that aren't visible outside the .s file not supported. Weak symbols that aren't visible outside the .s file
are not supported. */ are not supported. */
#define ASM_WEAKEN_DECL(FILE, DECL, NAME, ALIAS) \ #define ASM_WEAKEN_DECL(FILE, DECL, NAME, ALIAS) @(
do { \ do {
if (ALIAS) \ if (ALIAS)
{ \ {
warning (0, "alias definitions not supported in Mach-O; ignored"); \ warning (0, "alias definitions not supported in Mach-O; ignored");
break; \ break;
} \ }
\
if (! DECL_EXTERNAL (DECL) && TREE_PUBLIC (DECL)) \ if (! DECL_EXTERNAL (DECL) && TREE_PUBLIC (DECL))
targetm.asm_out.globalize_label (FILE, NAME); \ targetm.asm_out.globalize_label (FILE, NAME);
if (DECL_EXTERNAL (DECL)) \ if (DECL_EXTERNAL (DECL))
fputs ("\t.weak_reference ", FILE); \ fputs ("\t.weak_reference ", FILE);
else if (lookup_attribute ("weak_import", DECL_ATTRIBUTES (DECL))) \ else if (lookup_attribute ("weak_import", DECL_ATTRIBUTES (DECL)))
break; \ break;
else if (TREE_PUBLIC (DECL)) \ else if (TREE_PUBLIC (DECL))
fputs ("\t.weak_definition ", FILE); \ fputs ("\t.weak_definition ", FILE);
else \ else
break; \ break;
assemble_name (FILE, NAME); \ assemble_name (FILE, NAME);
fputc ('\n', FILE); \ fputc ('\n', FILE);
} while (0) } while (0)@)
/* Darwin has the pthread routines in libSystem, which every program /* Darwin has the pthread routines in libSystem, which every program
links to, so there's no need for weak-ness for that. */ links to, so there's no need for weak-ness for that. */
...@@ -524,24 +525,24 @@ extern GTY(()) int darwin_ms_struct; ...@@ -524,24 +525,24 @@ extern GTY(()) int darwin_ms_struct;
#undef TARGET_ASM_LTO_END #undef TARGET_ASM_LTO_END
#define TARGET_ASM_LTO_END darwin_asm_lto_end #define TARGET_ASM_LTO_END darwin_asm_lto_end
#define ASM_OUTPUT_SKIP(FILE,SIZE) \ #define ASM_OUTPUT_SKIP(FILE,SIZE) @(
fprintf (FILE, "\t.space "HOST_WIDE_INT_PRINT_UNSIGNED"\n", SIZE) fprintf (FILE, "\t.space "HOST_WIDE_INT_PRINT_UNSIGNED"\n", SIZE)@)
/* Give ObjC methods pretty symbol names. */ /* Give ObjC methods pretty symbol names. */
#undef OBJC_GEN_METHOD_LABEL #undef OBJC_GEN_METHOD_LABEL
#define OBJC_GEN_METHOD_LABEL(BUF,IS_INST,CLASS_NAME,CAT_NAME,SEL_NAME,NUM) \ #define OBJC_GEN_METHOD_LABEL(BUF,IS_INST,CLASS_NAME,CAT_NAME,SEL_NAME,NUM) @(
do { if (CAT_NAME) \ do { if (CAT_NAME)
sprintf (BUF, "%c[%s(%s) %s]", (IS_INST) ? '-' : '+', \ sprintf (BUF, "%c[%s(%s) %s]", (IS_INST) ? '-' : '+',
(CLASS_NAME), (CAT_NAME), (SEL_NAME)); \ (CLASS_NAME), (CAT_NAME), (SEL_NAME));
else \ else
sprintf (BUF, "%c[%s %s]", (IS_INST) ? '-' : '+', \ sprintf (BUF, "%c[%s %s]", (IS_INST) ? '-' : '+',
(CLASS_NAME), (SEL_NAME)); \ (CLASS_NAME), (SEL_NAME));
} while (0) } while (0)@)
#undef ASM_DECLARE_OBJECT_NAME #undef ASM_DECLARE_OBJECT_NAME
#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \ #define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) @(
darwin_asm_declare_object_name ((FILE), (NAME), (DECL)) darwin_asm_declare_object_name ((FILE), (NAME), (DECL))@)
/* The RTTI data (e.g., __ti4name) is common and public (and static), /* The RTTI data (e.g., __ti4name) is common and public (and static),
but it does need to be referenced via indirect PIC data pointers. but it does need to be referenced via indirect PIC data pointers.
...@@ -549,22 +550,22 @@ extern GTY(()) int darwin_ms_struct; ...@@ -549,22 +550,22 @@ extern GTY(()) int darwin_ms_struct;
that the name *is* defined in this module, so it doesn't need to that the name *is* defined in this module, so it doesn't need to
make them indirect. */ make them indirect. */
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \ #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) @(
do { \ do {
const char *xname = NAME; \ const char *xname = NAME;
if (GET_CODE (XEXP (DECL_RTL (DECL), 0)) != SYMBOL_REF) \ if (GET_CODE (XEXP (DECL_RTL (DECL), 0)) != SYMBOL_REF)
xname = IDENTIFIER_POINTER (DECL_NAME (DECL)); \ xname = IDENTIFIER_POINTER (DECL_NAME (DECL));
if (! DECL_WEAK (DECL) \ if (! DECL_WEAK (DECL)
&& ((TREE_STATIC (DECL) \ && ((TREE_STATIC (DECL)
&& (!DECL_COMMON (DECL) || !TREE_PUBLIC (DECL))) \ && (!DECL_COMMON (DECL) || !TREE_PUBLIC (DECL)))
|| DECL_INITIAL (DECL))) \ || DECL_INITIAL (DECL)))
machopic_define_symbol (DECL_RTL (DECL)); \ machopic_define_symbol (DECL_RTL (DECL));
if ((TREE_STATIC (DECL) \ if ((TREE_STATIC (DECL)
&& (!DECL_COMMON (DECL) || !TREE_PUBLIC (DECL))) \ && (!DECL_COMMON (DECL) || !TREE_PUBLIC (DECL)))
|| DECL_INITIAL (DECL)) \ || DECL_INITIAL (DECL))
(* targetm.encode_section_info) (DECL, DECL_RTL (DECL), false); \ (* targetm.encode_section_info) (DECL, DECL_RTL (DECL), false);
ASM_OUTPUT_FUNCTION_LABEL (FILE, xname, DECL); \ ASM_OUTPUT_FUNCTION_LABEL (FILE, xname, DECL);
} while (0) } while (0)@)
#undef TARGET_ASM_DECLARE_CONSTANT_NAME #undef TARGET_ASM_DECLARE_CONSTANT_NAME
#define TARGET_ASM_DECLARE_CONSTANT_NAME darwin_asm_declare_constant_name #define TARGET_ASM_DECLARE_CONSTANT_NAME darwin_asm_declare_constant_name
...@@ -576,38 +577,38 @@ extern GTY(()) int darwin_ms_struct; ...@@ -576,38 +577,38 @@ extern GTY(()) int darwin_ms_struct;
int darwin_label_is_anonymous_local_objc_name (const char *name); int darwin_label_is_anonymous_local_objc_name (const char *name);
#undef ASM_OUTPUT_LABELREF #undef ASM_OUTPUT_LABELREF
#define ASM_OUTPUT_LABELREF(FILE,NAME) \ #define ASM_OUTPUT_LABELREF(FILE,NAME) @(
do { \ do {
const char *xname = (NAME); \ const char *xname = (NAME);
if (! strcmp (xname, MACHOPIC_FUNCTION_BASE_NAME)) \ if (! strcmp (xname, MACHOPIC_FUNCTION_BASE_NAME))
machopic_output_function_base_name(FILE); \ machopic_output_function_base_name(FILE);
else if (xname[0] == '&' || xname[0] == '*') \ else if (xname[0] == '&' || xname[0] == '*')
{ \ {
int len = strlen (xname); \ int len = strlen (xname);
if (len > 6 && !strcmp ("$stub", xname + len - 5)) \ if (len > 6 && !strcmp ("$stub", xname + len - 5))
machopic_validate_stub_or_non_lazy_ptr (xname); \ machopic_validate_stub_or_non_lazy_ptr (xname);
else if (len > 7 && !strcmp ("$stub\"", xname + len - 6)) \ else if (len > 7 && !strcmp ("$stub\"", xname + len - 6))
machopic_validate_stub_or_non_lazy_ptr (xname); \ machopic_validate_stub_or_non_lazy_ptr (xname);
else if (len > 14 && !strcmp ("$non_lazy_ptr", xname + len - 13)) \ else if (len > 14 && !strcmp ("$non_lazy_ptr", xname + len - 13))
machopic_validate_stub_or_non_lazy_ptr (xname); \ machopic_validate_stub_or_non_lazy_ptr (xname);
else if (len > 15 && !strcmp ("$non_lazy_ptr\"", xname + len - 14)) \ else if (len > 15 && !strcmp ("$non_lazy_ptr\"", xname + len - 14))
machopic_validate_stub_or_non_lazy_ptr (xname); \ machopic_validate_stub_or_non_lazy_ptr (xname);
if (xname[1] != '"' && name_needs_quotes (&xname[1])) \ if (xname[1] != '"' && name_needs_quotes (&xname[1]))
fprintf (FILE, "\"%s\"", &xname[1]); \ fprintf (FILE, "\"%s\"", &xname[1]);
else \ else
fputs (&xname[1], FILE); \ fputs (&xname[1], FILE);
} \ }
else if (xname[0] == '+' || xname[0] == '-') \ else if (xname[0] == '+' || xname[0] == '-')
fprintf (FILE, "\"%s\"", xname); \ fprintf (FILE, "\"%s\"", xname);
else if (darwin_label_is_anonymous_local_objc_name (xname)) \ else if (darwin_label_is_anonymous_local_objc_name (xname))
fprintf (FILE, "L%s", xname); \ fprintf (FILE, "L%s", xname);
else if (!strncmp (xname, ".objc_class_name_", 17)) \ else if (!strncmp (xname, ".objc_class_name_", 17))
fprintf (FILE, "%s", xname); \ fprintf (FILE, "%s", xname);
else if (xname[0] != '"' && name_needs_quotes (xname)) \ else if (xname[0] != '"' && name_needs_quotes (xname))
fprintf (FILE, "\"%s\"", xname); \ fprintf (FILE, "\"%s\"", xname);
else \ else
asm_fprintf (FILE, "%U%s", xname); \ asm_fprintf (FILE, "%U%s", xname);
} while (0) } while (0)@)
/* Output before executable code. */ /* Output before executable code. */
#undef TEXT_SECTION_ASM_OP #undef TEXT_SECTION_ASM_OP
...@@ -622,9 +623,9 @@ int darwin_label_is_anonymous_local_objc_name (const char *name); ...@@ -622,9 +623,9 @@ int darwin_label_is_anonymous_local_objc_name (const char *name);
#define ALIGN_ASM_OP ".align" #define ALIGN_ASM_OP ".align"
#undef ASM_OUTPUT_ALIGN #undef ASM_OUTPUT_ALIGN
#define ASM_OUTPUT_ALIGN(FILE,LOG) \ #define ASM_OUTPUT_ALIGN(FILE,LOG) @(
if ((LOG) != 0) \ if ((LOG) != 0)
fprintf (FILE, "\t%s\t%d\n", ALIGN_ASM_OP, (LOG)) fprintf (FILE, "\t%s\t%d\n", ALIGN_ASM_OP, (LOG))@)
/* The maximum alignment which the object file format can support in /* The maximum alignment which the object file format can support in
bits. For Mach-O, this is 2^15 bytes. */ bits. For Mach-O, this is 2^15 bytes. */
...@@ -635,18 +636,18 @@ int darwin_label_is_anonymous_local_objc_name (const char *name); ...@@ -635,18 +636,18 @@ int darwin_label_is_anonymous_local_objc_name (const char *name);
#define L2_MAX_OFILE_ALIGNMENT 15 #define L2_MAX_OFILE_ALIGNMENT 15
/* These are the three variants that emit referenced blank space. */ /* These are the three variants that emit referenced blank space. */
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) @(
darwin_output_aligned_bss ((FILE), (DECL), (NAME), (SIZE), (ALIGN)) darwin_output_aligned_bss ((FILE), (DECL), (NAME), (SIZE), (ALIGN))@)
#undef ASM_OUTPUT_ALIGNED_DECL_LOCAL #undef ASM_OUTPUT_ALIGNED_DECL_LOCAL
#define ASM_OUTPUT_ALIGNED_DECL_LOCAL(FILE, DECL, NAME, SIZE, ALIGN) \ #define ASM_OUTPUT_ALIGNED_DECL_LOCAL(FILE, DECL, NAME, SIZE, ALIGN) @(
darwin_asm_output_aligned_decl_local \ darwin_asm_output_aligned_decl_local
((FILE), (DECL), (NAME), (SIZE), (ALIGN)) ((FILE), (DECL), (NAME), (SIZE), (ALIGN))@)
#undef ASM_OUTPUT_ALIGNED_DECL_COMMON #undef ASM_OUTPUT_ALIGNED_DECL_COMMON
#define ASM_OUTPUT_ALIGNED_DECL_COMMON(FILE, DECL, NAME, SIZE, ALIGN) \ #define ASM_OUTPUT_ALIGNED_DECL_COMMON(FILE, DECL, NAME, SIZE, ALIGN) @(
darwin_asm_output_aligned_decl_common \ darwin_asm_output_aligned_decl_common
((FILE), (DECL), (NAME), (SIZE), (ALIGN)) ((FILE), (DECL), (NAME), (SIZE), (ALIGN))@)
/* The generic version, archs should over-ride where required. */ /* The generic version, archs should over-ride where required. */
#define MACHOPIC_NL_SYMBOL_PTR_SECTION ".non_lazy_symbol_pointer" #define MACHOPIC_NL_SYMBOL_PTR_SECTION ".non_lazy_symbol_pointer"
...@@ -669,8 +670,8 @@ extern GTY(()) section * darwin_sections[NUM_DARWIN_SECTIONS]; ...@@ -669,8 +670,8 @@ extern GTY(()) section * darwin_sections[NUM_DARWIN_SECTIONS];
#define TARGET_ASM_FUNCTION_SECTION darwin_function_section #define TARGET_ASM_FUNCTION_SECTION darwin_function_section
#undef TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS #undef TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS
#define TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS \ #define TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS @(
darwin_function_switched_text_sections darwin_function_switched_text_sections@)
#undef TARGET_ASM_SELECT_RTX_SECTION #undef TARGET_ASM_SELECT_RTX_SECTION
#define TARGET_ASM_SELECT_RTX_SECTION machopic_select_rtx_section #define TARGET_ASM_SELECT_RTX_SECTION machopic_select_rtx_section
...@@ -682,27 +683,27 @@ extern GTY(()) section * darwin_sections[NUM_DARWIN_SECTIONS]; ...@@ -682,27 +683,27 @@ extern GTY(()) section * darwin_sections[NUM_DARWIN_SECTIONS];
#define TARGET_ASM_RELOC_RW_MASK machopic_reloc_rw_mask #define TARGET_ASM_RELOC_RW_MASK machopic_reloc_rw_mask
#define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) \ #define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) @(
do { \ do {
if (FILE) { \ if (FILE) {
if (MACHOPIC_INDIRECT) \ if (MACHOPIC_INDIRECT)
fprintf (FILE, "\t.lazy_reference "); \ fprintf (FILE, "\t.lazy_reference ");
else \ else
fprintf (FILE, "\t.reference "); \ fprintf (FILE, "\t.reference ");
assemble_name (FILE, NAME); \ assemble_name (FILE, NAME);
fprintf (FILE, "\n"); \ fprintf (FILE, "\n");
} \ }
} while (0) } while (0)@)
#define ASM_DECLARE_CLASS_REFERENCE(FILE,NAME) \ #define ASM_DECLARE_CLASS_REFERENCE(FILE,NAME) @(
do { \ do {
if (FILE) { \ if (FILE) {
fprintf (FILE, "\t"); \ fprintf (FILE, "\t");
assemble_name (FILE, NAME); \ assemble_name (FILE, NAME);
fprintf (FILE, "=0\n"); \ fprintf (FILE, "=0\n");
(*targetm.asm_out.globalize_label) (FILE, NAME); \ (*targetm.asm_out.globalize_label) (FILE, NAME);
} \ }
} while (0) } while (0)@)
/* Globalizing directive for a label. */ /* Globalizing directive for a label. */
#define GLOBAL_ASM_OP "\t.globl " #define GLOBAL_ASM_OP "\t.globl "
...@@ -715,16 +716,16 @@ extern GTY(()) section * darwin_sections[NUM_DARWIN_SECTIONS]; ...@@ -715,16 +716,16 @@ extern GTY(()) section * darwin_sections[NUM_DARWIN_SECTIONS];
#define TARGET_ASM_ASSEMBLE_VISIBILITY darwin_assemble_visibility #define TARGET_ASM_ASSEMBLE_VISIBILITY darwin_assemble_visibility
/* Extra attributes for Darwin. */ /* Extra attributes for Darwin. */
#define SUBTARGET_ATTRIBUTE_TABLE \ #define SUBTARGET_ATTRIBUTE_TABLE @(
/* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */ \ /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
{ "apple_kext_compatibility", 0, 0, false, true, false, \ { "apple_kext_compatibility", 0, 0, false, true, false,
darwin_handle_kext_attribute }, \ darwin_handle_kext_attribute },
{ "weak_import", 0, 0, true, false, false, \ { "weak_import", 0, 0, true, false, false,
darwin_handle_weak_import_attribute } darwin_handle_weak_import_attribute }@)
#undef ASM_GENERATE_INTERNAL_LABEL #undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \ #define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) @(
sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM)) sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM))@)
#undef TARGET_ASM_MARK_DECL_PRESERVED #undef TARGET_ASM_MARK_DECL_PRESERVED
#define TARGET_ASM_MARK_DECL_PRESERVED darwin_mark_decl_preserved #define TARGET_ASM_MARK_DECL_PRESERVED darwin_mark_decl_preserved
...@@ -770,61 +771,61 @@ enum machopic_addr_class { ...@@ -770,61 +771,61 @@ enum machopic_addr_class {
#undef TARGET_STRIP_NAME_ENCODING #undef TARGET_STRIP_NAME_ENCODING
#define TARGET_STRIP_NAME_ENCODING default_strip_name_encoding #define TARGET_STRIP_NAME_ENCODING default_strip_name_encoding
#define GEN_BINDER_NAME_FOR_STUB(BUF,STUB,STUB_LENGTH) \ #define GEN_BINDER_NAME_FOR_STUB(BUF,STUB,STUB_LENGTH) @(
do { \ do {
const char *const stub_ = (STUB); \ const char *const stub_ = (STUB);
char *buffer_ = (BUF); \ char *buffer_ = (BUF);
strcpy (buffer_, stub_); \ strcpy (buffer_, stub_);
if (stub_[0] == '"') \ if (stub_[0] == '"')
{ \ {
strcpy (buffer_ + (STUB_LENGTH) - 1, "_binder\""); \ strcpy (buffer_ + (STUB_LENGTH) - 1, "_binder\"");
} \ }
else \ else
{ \ {
strcpy (buffer_ + (STUB_LENGTH), "_binder"); \ strcpy (buffer_ + (STUB_LENGTH), "_binder");
} \ }
} while (0) } while (0)@)
#define GEN_SYMBOL_NAME_FOR_SYMBOL(BUF,SYMBOL,SYMBOL_LENGTH) \ #define GEN_SYMBOL_NAME_FOR_SYMBOL(BUF,SYMBOL,SYMBOL_LENGTH) @(
do { \ do {
const char *const symbol_ = (SYMBOL); \ const char *const symbol_ = (SYMBOL);
char *buffer_ = (BUF); \ char *buffer_ = (BUF);
if (name_needs_quotes (symbol_) && symbol_[0] != '"') \ if (name_needs_quotes (symbol_) && symbol_[0] != '"')
{ \ {
sprintf (buffer_, "\"%s\"", symbol_); \ sprintf (buffer_, "\"%s\"", symbol_);
} \ }
else \ else
{ \ {
strcpy (buffer_, symbol_); \ strcpy (buffer_, symbol_);
} \ }
} while (0) } while (0)@)
/* Given a symbol name string, create the lazy pointer version /* Given a symbol name string, create the lazy pointer version
of the symbol name. */ of the symbol name. */
#define GEN_LAZY_PTR_NAME_FOR_SYMBOL(BUF,SYMBOL,SYMBOL_LENGTH) \ #define GEN_LAZY_PTR_NAME_FOR_SYMBOL(BUF,SYMBOL,SYMBOL_LENGTH) @(
do { \ do {
const char *symbol_ = (SYMBOL); \ const char *symbol_ = (SYMBOL);
char *buffer_ = (BUF); \ char *buffer_ = (BUF);
if (symbol_[0] == '"') \ if (symbol_[0] == '"')
{ \ {
strcpy (buffer_, "\"L"); \ strcpy (buffer_, "\"L");
strcpy (buffer_ + 2, symbol_ + 1); \ strcpy (buffer_ + 2, symbol_ + 1);
strcpy (buffer_ + (SYMBOL_LENGTH), "$lazy_ptr\""); \ strcpy (buffer_ + (SYMBOL_LENGTH), "$lazy_ptr\"");
} \ }
else if (name_needs_quotes (symbol_)) \ else if (name_needs_quotes (symbol_))
{ \ {
strcpy (buffer_, "\"L"); \ strcpy (buffer_, "\"L");
strcpy (buffer_ + 2, symbol_); \ strcpy (buffer_ + 2, symbol_);
strcpy (buffer_ + (SYMBOL_LENGTH) + 2, "$lazy_ptr\""); \ strcpy (buffer_ + (SYMBOL_LENGTH) + 2, "$lazy_ptr\"");
} \ }
else \ else
{ \ {
strcpy (buffer_, "L"); \ strcpy (buffer_, "L");
strcpy (buffer_ + 1, symbol_); \ strcpy (buffer_ + 1, symbol_);
strcpy (buffer_ + (SYMBOL_LENGTH) + 1, "$lazy_ptr"); \ strcpy (buffer_ + (SYMBOL_LENGTH) + 1, "$lazy_ptr");
} \ }
} while (0) } while (0)@)
#define EH_FRAME_SECTION_NAME "__TEXT" #define EH_FRAME_SECTION_NAME "__TEXT"
#define EH_FRAME_SECTION_ATTR ",coalesced,no_toc+strip_static_syms+live_support" #define EH_FRAME_SECTION_ATTR ",coalesced,no_toc+strip_static_syms+live_support"
...@@ -833,22 +834,22 @@ enum machopic_addr_class { ...@@ -833,22 +834,22 @@ enum machopic_addr_class {
#define JCR_SECTION_NAME "__DATA,jcr,regular,no_dead_strip" #define JCR_SECTION_NAME "__DATA,jcr,regular,no_dead_strip"
#undef ASM_PREFERRED_EH_DATA_FORMAT #undef ASM_PREFERRED_EH_DATA_FORMAT
#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ #define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) @(
(((CODE) == 2 && (GLOBAL) == 1) \ (((CODE) == 2 && (GLOBAL) == 1)
? (DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4) : \ ? (DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4) :
((CODE) == 1 || (GLOBAL) == 0) ? DW_EH_PE_pcrel : DW_EH_PE_absptr) ((CODE) == 1 || (GLOBAL) == 0) ? DW_EH_PE_pcrel : DW_EH_PE_absptr)@)
#define ASM_OUTPUT_DWARF_DELTA(FILE,SIZE,LABEL1,LABEL2) \ #define ASM_OUTPUT_DWARF_DELTA(FILE,SIZE,LABEL1,LABEL2) @(
darwin_asm_output_dwarf_delta (FILE, SIZE, LABEL1, LABEL2) darwin_asm_output_dwarf_delta (FILE, SIZE, LABEL1, LABEL2)@)
#define ASM_OUTPUT_DWARF_OFFSET(FILE,SIZE,LABEL,BASE) \ #define ASM_OUTPUT_DWARF_OFFSET(FILE,SIZE,LABEL,BASE) @(
darwin_asm_output_dwarf_offset (FILE, SIZE, LABEL, BASE) darwin_asm_output_dwarf_offset (FILE, SIZE, LABEL, BASE)@)
#define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(ASM_OUT_FILE, ENCODING, SIZE, ADDR, DONE) \ #define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(ASM_OUT_FILE, ENCODING, SIZE, ADDR, DONE) @(
if (ENCODING == ASM_PREFERRED_EH_DATA_FORMAT (2, 1)) { \ if (ENCODING == ASM_PREFERRED_EH_DATA_FORMAT (2, 1)) {
darwin_non_lazy_pcrel (ASM_OUT_FILE, ADDR); \ darwin_non_lazy_pcrel (ASM_OUT_FILE, ADDR);
goto DONE; \ goto DONE;
} }@)
/* Experimentally, putting jump tables in text is faster on SPEC. /* Experimentally, putting jump tables in text is faster on SPEC.
Also this is needed for correctness for coalesced functions. */ Also this is needed for correctness for coalesced functions. */
...@@ -863,16 +864,16 @@ enum machopic_addr_class { ...@@ -863,16 +864,16 @@ enum machopic_addr_class {
#undef TARGET_ASM_NAMED_SECTION #undef TARGET_ASM_NAMED_SECTION
#define TARGET_ASM_NAMED_SECTION darwin_asm_named_section #define TARGET_ASM_NAMED_SECTION darwin_asm_named_section
#define DARWIN_REGISTER_TARGET_PRAGMAS() \ #define DARWIN_REGISTER_TARGET_PRAGMAS() @(
do { \ do {
if (!flag_preprocess_only) \ if (!flag_preprocess_only)
cpp_register_pragma (parse_in, NULL, "mark", \ cpp_register_pragma (parse_in, NULL, "mark",
darwin_pragma_ignore, false); \ darwin_pragma_ignore, false);
c_register_pragma (0, "options", darwin_pragma_options); \ c_register_pragma (0, "options", darwin_pragma_options);
c_register_pragma (0, "segment", darwin_pragma_ignore); \ c_register_pragma (0, "segment", darwin_pragma_ignore);
c_register_pragma (0, "unused", darwin_pragma_unused); \ c_register_pragma (0, "unused", darwin_pragma_unused);
c_register_pragma (0, "ms_struct", darwin_pragma_ms_struct); \ c_register_pragma (0, "ms_struct", darwin_pragma_ms_struct);
} while (0) } while (0)@)
#undef ASM_APP_ON #undef ASM_APP_ON
#define ASM_APP_ON "" #define ASM_APP_ON ""
...@@ -920,30 +921,31 @@ void add_framework_path (char *); ...@@ -920,30 +921,31 @@ void add_framework_path (char *);
considered dangerous for library calls to send messages to considered dangerous for library calls to send messages to
stdout/stderr. */ stdout/stderr. */
#define ENABLE_EXECUTE_STACK \ #define ENABLE_EXECUTE_STACK @(
extern void __enable_execute_stack (void *); \ extern void __enable_execute_stack (void *);
void \
__enable_execute_stack (void *addr) \ void
{ \ __enable_execute_stack (void *addr)
extern int mprotect (void *, size_t, int); \ {
extern int getpagesize (void); \ extern int mprotect (void *, size_t, int);
static int size; \ extern int getpagesize (void);
static long mask; \ static int size;
\ static long mask;
char *page, *end; \
\ char *page, *end;
if (size == 0) \
{ \ if (size == 0)
size = getpagesize(); \ {
mask = ~((long) size - 1); \ size = getpagesize();
} \ mask = ~((long) size - 1);
\ }
page = (char *) (((long) addr) & mask); \
end = (char *) ((((long) (addr + (TARGET_64BIT ? 48 : 40))) & mask) + size); \ page = (char *) (((long) addr) & mask);
\ end = (char *) ((((long) (addr + (TARGET_64BIT ? 48 : 40))) & mask) + size);
/* 7 == PROT_READ | PROT_WRITE | PROT_EXEC */ \
(void) mprotect (page, end - page, 7); \ /* 7 == PROT_READ | PROT_WRITE | PROT_EXEC */
} (void) mprotect (page, end - page, 7);
}@)
/* For Apple KEXTs, we make the constructors return this to match gcc /* For Apple KEXTs, we make the constructors return this to match gcc
2.95. */ 2.95. */
...@@ -953,24 +955,24 @@ __enable_execute_stack (void *addr) \ ...@@ -953,24 +955,24 @@ __enable_execute_stack (void *addr) \
/* We have target-specific builtins. */ /* We have target-specific builtins. */
#define TARGET_FOLD_BUILTIN darwin_fold_builtin #define TARGET_FOLD_BUILTIN darwin_fold_builtin
#define TARGET_OBJC_CONSTRUCT_STRING_OBJECT \ #define TARGET_OBJC_CONSTRUCT_STRING_OBJECT @(
darwin_objc_construct_string darwin_objc_construct_string@)
#define TARGET_STRING_OBJECT_REF_TYPE_P \ #define TARGET_STRING_OBJECT_REF_TYPE_P @(
darwin_cfstring_ref_p darwin_cfstring_ref_p@)
#define TARGET_N_FORMAT_TYPES 1 #define TARGET_N_FORMAT_TYPES 1
#define TARGET_FORMAT_TYPES darwin_additional_format_types #define TARGET_FORMAT_TYPES darwin_additional_format_types
#define TARGET_CHECK_STRING_OBJECT_FORMAT_ARG \ #define TARGET_CHECK_STRING_OBJECT_FORMAT_ARG @(
darwin_check_cfstring_format_arg darwin_check_cfstring_format_arg@)
#define TARGET_HAS_TARGETCM 1 #define TARGET_HAS_TARGETCM 1
#ifndef USED_FOR_TARGET #ifndef USED_FOR_TARGET
extern void darwin_driver_init (unsigned int *,struct cl_decoded_option **); extern void darwin_driver_init (unsigned int *,struct cl_decoded_option **);
#define GCC_DRIVER_HOST_INITIALIZATION \ #define GCC_DRIVER_HOST_INITIALIZATION @(
darwin_driver_init (&decoded_options_count, &decoded_options) darwin_driver_init (&decoded_options_count, &decoded_options)@)
#endif #endif
/* The Apple assembler and linker do not support constructor priorities. */ /* The Apple assembler and linker do not support constructor priorities. */
......
/* Generate a slashified version of the input
Copyright (C) 2011
Free Software Foundation, Inc.
Contributed by Mike Stump <mikestump@comcast.net>
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/>. */
/* This is a small utility to slashify a source file so that one never
needs to stare at backslashes. */
#include <stdio.h>
extern int main (int, char **);
int main (int argc, char **argv) {
int c,c1;
int saw_start = 0;
while ((c=getchar ()) != EOF) {
if (c != '@') {
if (saw_start && c == '\n') {
putchar ('\\');
}
putchar (c);
continue;
}
c1=getchar();
if (c1 == EOF) {
putchar (c);
return 0;
}
if (!saw_start && c1 == '(') {
saw_start = 1;
} else if (saw_start && c1 == ')') {
saw_start = 0;
} else {
putchar (c);
putchar (c1);
}
}
return 0;
}
...@@ -17,6 +17,20 @@ ...@@ -17,6 +17,20 @@
# along with GCC; see the file COPYING3. If not see # along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>. # <http://www.gnu.org/licenses/>.
build/slashify: $(srcdir)/config/slashify.c
$(COMPILER_FOR_BUILD) $< -o $@
$(srcdir)/config/darwin.h: config/darwin.h.rebuild
config/darwin.h.rebuild: build/slashify
@if [ ! -e $(srcdir)/config/darwin.h \
-o $(srcdir)/config/darwin.h -nt config/darwin.h ]; then \
{ test -d config || mkdir config; } && \
cp -p $(srcdir)/config/darwin-sections.def \
config/darwin-sections.def && \
build/slashify < $(srcdir)/config/darwin.h >config/darwin.h; \
fi
darwin.o: $(srcdir)/config/darwin.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ darwin.o: $(srcdir)/config/darwin.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(REAL_H) insn-config.h \ $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(REAL_H) insn-config.h \
conditions.h insn-flags.h output.h insn-attr.h flags.h $(TREE_H) expr.h \ conditions.h insn-flags.h output.h insn-attr.h flags.h $(TREE_H) expr.h \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment