Index: gcc/gcc/config/darwin.h |
diff --git a/gcc/gcc/config/darwin.h b/gcc/gcc/config/darwin.h |
index 050773fb130202817234a49df361df14720edd75..a0a4974c38a3c6eadf4caa8a7a01dc7c4b2bf550 100644 |
--- a/gcc/gcc/config/darwin.h |
+++ b/gcc/gcc/config/darwin.h |
@@ -1,6 +1,6 @@ |
/* Target definitions for Darwin (Mac OS X) systems. |
Copyright (C) 1989, 1990, 1991, 1992, 1993, 2000, 2001, 2002, 2003, 2004, |
- 2005, 2006, 2007, 2008, 2009 |
+ 2005, 2006, 2007, 2008, 2009, 2010 |
Free Software Foundation, Inc. |
Contributed by Apple Computer Inc. |
@@ -76,6 +76,38 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see |
#undef WCHAR_TYPE_SIZE |
#define WCHAR_TYPE_SIZE 32 |
+#define INT8_TYPE "signed char" |
+#define INT16_TYPE "short int" |
+#define INT32_TYPE "int" |
+#define INT64_TYPE "long long int" |
+#define UINT8_TYPE "unsigned char" |
+#define UINT16_TYPE "short unsigned int" |
+#define UINT32_TYPE "unsigned int" |
+#define UINT64_TYPE "long long unsigned int" |
+ |
+#define INT_LEAST8_TYPE "signed char" |
+#define INT_LEAST16_TYPE "short int" |
+#define INT_LEAST32_TYPE "int" |
+#define INT_LEAST64_TYPE "long long int" |
+#define UINT_LEAST8_TYPE "unsigned char" |
+#define UINT_LEAST16_TYPE "short unsigned int" |
+#define UINT_LEAST32_TYPE "unsigned int" |
+#define UINT_LEAST64_TYPE "long long unsigned int" |
+ |
+#define INT_FAST8_TYPE "signed char" |
+#define INT_FAST16_TYPE "short int" |
+#define INT_FAST32_TYPE "int" |
+#define INT_FAST64_TYPE "long long int" |
+#define UINT_FAST8_TYPE "unsigned char" |
+#define UINT_FAST16_TYPE "short unsigned int" |
+#define UINT_FAST32_TYPE "unsigned int" |
+#define UINT_FAST64_TYPE "long long unsigned int" |
+ |
+#define INTPTR_TYPE "long int" |
+#define UINTPTR_TYPE "long unsigned int" |
+ |
+#define SIG_ATOMIC_TYPE "int" |
+ |
/* Default to using the NeXT-style runtime, since that's what is |
pre-installed on Darwin systems. */ |
@@ -240,9 +272,11 @@ extern GTY(()) int darwin_ms_struct; |
%{A} %{e*} %{m} %{r} %{x} \ |
%{o*}%{!o:-o a.out} \ |
%{!A:%{!nostdlib:%{!nostartfiles:%S}}} \ |
- %{L*} %{fopenmp:%:include(libgomp.spec)%(link_gomp)} \ |
- %(link_libgcc) %o %{fprofile-arcs|fprofile-generate|coverage:-lgcov} \ |
- %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %G %L}} \ |
+ %{L*} %(link_libgcc) %o %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \ |
+ %{flto} %{fwhopr} \ |
+ %{fopenmp|ftree-parallelize-loops=*: \ |
+ %{static|static-libgcc|static-libstdc++|static-libgfortran: libgomp.a%s; : -lgomp } } \ |
+ %{!nostdlib:%{!nodefaultlibs: %(link_ssp) %G %L }} \ |
%{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} %{F*} }}}}}}}\n\ |
%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ |
%{.c|.cc|.C|.cpp|.cp|.c++|.cxx|.CPP|.m|.mm: \ |
@@ -261,8 +295,12 @@ extern GTY(()) int darwin_ms_struct; |
so put a * after their names so all of them get passed. */ |
#define LINK_SPEC \ |
"%{static}%{!static:-dynamic} \ |
- %{fgnu-runtime:%:replace-outfile(-lobjc -lobjc-gnu)}\ |
- %{static|static-libgfortran:%:replace-outfile(-lgfortran libgfortran.a%s)}\ |
+ %{fgnu-runtime: %{static|static-libgcc: \ |
+ %:replace-outfile(-lobjc libobjc-gnu.a%s); \ |
+ :%: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)} \ |
@@ -361,9 +399,13 @@ extern GTY(()) int darwin_ms_struct; |
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.5) \ |
+ %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ |
+ %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ |
-lgcc; \ |
:%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \ |
%:version-compare(>= 10.5 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.5) \ |
-lgcc}" |
/* We specify crt0.o as -lcrt0.o so that ld will search the library path. |
@@ -414,7 +456,7 @@ extern GTY(()) int darwin_ms_struct; |
#define DBX_DEBUGGING_INFO 1 |
-#define DWARF2_DEBUGGING_INFO |
+#define DWARF2_DEBUGGING_INFO 1 |
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG |
#define DEBUG_FRAME_SECTION "__DWARF,__debug_frame,regular,debug" |
@@ -461,8 +503,7 @@ extern GTY(()) int darwin_ms_struct; |
targetm.asm_out.globalize_label (FILE, NAME); \ |
if (DECL_EXTERNAL (DECL)) \ |
fputs ("\t.weak_reference ", FILE); \ |
- else if (! lookup_attribute ("weak", DECL_ATTRIBUTES (DECL)) \ |
- && lookup_attribute ("weak_import", DECL_ATTRIBUTES (DECL))) \ |
+ else if (lookup_attribute ("weak_import", DECL_ATTRIBUTES (DECL))) \ |
break; \ |
else if (TREE_PUBLIC (DECL)) \ |
fputs ("\t.weak_definition ", FILE); \ |
@@ -541,6 +582,16 @@ extern GTY(()) int darwin_ms_struct; |
#undef TARGET_ASM_FILE_END |
#define TARGET_ASM_FILE_END darwin_file_end |
+/* Because Mach-O relocations have a counter from 1 to 255 for the |
+ section number they apply to, it is necessary to output all |
+ normal sections before the LTO sections, to make sure that the |
+ sections that may have relocations always have a section number |
+ smaller than 255. */ |
+#undef TARGET_ASM_LTO_START |
+#define TARGET_ASM_LTO_START darwin_asm_lto_start |
+#undef TARGET_ASM_LTO_END |
+#define TARGET_ASM_LTO_END darwin_asm_lto_end |
+ |
#define ASM_OUTPUT_SKIP(FILE,SIZE) \ |
fprintf (FILE, "\t.space "HOST_WIDE_INT_PRINT_UNSIGNED"\n", SIZE) |
@@ -611,7 +662,11 @@ extern GTY(()) int darwin_ms_struct; |
} while (0) |
/* Wrap new method names in quotes so the assembler doesn't gag. |
- Make Objective-C internal symbols local. */ |
+ Make Objective-C internal symbols local and in doing this, we need |
+ to accommodate the name mangling done by c++ on file scope locals. */ |
+ |
+ |
+int darwin_label_is_anonymous_local_objc_name (const char *name); |
#undef ASM_OUTPUT_LABELREF |
#define ASM_OUTPUT_LABELREF(FILE,NAME) \ |
@@ -637,7 +692,7 @@ extern GTY(()) int darwin_ms_struct; |
} \ |
else if (xname[0] == '+' || xname[0] == '-') \ |
fprintf (FILE, "\"%s\"", xname); \ |
- else if (!strncmp (xname, "_OBJC_", 6)) \ |
+ else if (darwin_label_is_anonymous_local_objc_name (xname)) \ |
fprintf (FILE, "L%s", xname); \ |
else if (!strncmp (xname, ".objc_class_name_", 17)) \ |
fprintf (FILE, "%s", xname); \ |
@@ -950,7 +1005,7 @@ void add_framework_path (char *); |
#endif |
/* Attempt to turn on execute permission for the stack. This may be |
- used by INITIALIZE_TRAMPOLINE of the target needs it (that is, |
+ used by TARGET_TRAMPOLINE_INIT if the target needs it (that is, |
if the target machine can change execute permissions on a page). |
There is no way to query the execute permission of the stack, so |