aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIain Sandoe <iain@codesourcery.com>2015-10-18 18:33:05 +0000
committerIain Sandoe <iains@gcc.gnu.org>2015-10-18 18:33:05 +0000
commitd42becb9d876f54d0ee0b6c7a5ebfd30851b4e1d (patch)
tree7a73e28177897d9907ea52bdbac98f4ca57fd775 /gcc
parent49489608c05a33a41bd1f2b5d277819a70f45807 (diff)
downloadgcc-d42becb9d876f54d0ee0b6c7a5ebfd30851b4e1d.zip
gcc-d42becb9d876f54d0ee0b6c7a5ebfd30851b4e1d.tar.gz
gcc-d42becb9d876f54d0ee0b6c7a5ebfd30851b4e1d.tar.bz2
Revise Darwin's sysroot handling to be compatible with the clang toolchain.
gcc/ * config/darwin.h (TARGET_SYSTEM_ROOT): Remove this from here, (HAVE_LD_SYSROOT): New. (SYSROOT_SPEC): New. (LINK_SYSROOT_SPEC): Revise to remove the default for target sysroot. (STANDARD_STARTFILE_PREFIX_1): New. (STANDARD_STARTFILE_PREFIX_2): New. From-SVN: r228950
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/darwin.h19
2 files changed, 22 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dc21d7d..46cff7b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,13 @@
2015-10-18 Iain Sandoe <iain@codesourcery.com>
+ * config/darwin.h (TARGET_SYSTEM_ROOT): Remove this from here,
+ (HAVE_LD_SYSROOT): New. (SYSROOT_SPEC): New.
+ (LINK_SYSROOT_SPEC): Revise to remove the default for target sysroot.
+ (STANDARD_STARTFILE_PREFIX_1): New.
+ (STANDARD_STARTFILE_PREFIX_2): New.
+
+2015-10-18 Iain Sandoe <iain@codesourcery.com>
+
* config/darwin-driver.c (darwin_default_min_version): Refactor code.
(darwin_driver_init): Note a version-min when provided on the c/l.
* config/darwin.h (%darwin_minversion): Remove.
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index bb4451a..7d093c9 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -207,12 +207,21 @@ extern GTY(()) int darwin_ms_struct;
#undef LINK_GCC_C_SEQUENCE_SPEC
#define LINK_GCC_C_SEQUENCE_SPEC "%G %L"
-#ifdef TARGET_SYSTEM_ROOT
-#define LINK_SYSROOT_SPEC \
- "%{isysroot*:-syslibroot %*;:-syslibroot " TARGET_SYSTEM_ROOT "}"
-#else
+/* ld64 supports a sysroot, it just has a different name and there's no easy
+ way to check for it at config time. */
+#undef HAVE_LD_SYSROOT
+#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/ }"
+
+/* Do the same as clang, for now, and insert the sysroot for ld when an
+ isysroot is specified. */
#define LINK_SYSROOT_SPEC "%{isysroot*:-syslibroot %*}"
-#endif
+
+/* Suppress the addition of extra prefix paths when a sysroot is in use. */
+#define STANDARD_STARTFILE_PREFIX_1 ""
+#define STANDARD_STARTFILE_PREFIX_2 ""
#define DARWIN_PIE_SPEC "%{fpie|pie|fPIE:}"