diff options
-rw-r--r-- | lib/Driver/ToolChains.cpp | 7 | ||||
-rw-r--r-- | test/Driver/darwin-sdkroot.c | 12 |
2 files changed, 15 insertions, 4 deletions
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 53a620a87e..b4a3980dcc 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -404,9 +404,10 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const { getDriver().Diag(clang::diag::warn_missing_sysroot) << A->getValue(); } else { if (char *env = ::getenv("SDKROOT")) { - // We only use this value as the default if it is an absolute path and - // exists. - if (llvm::sys::path::is_absolute(env) && llvm::sys::fs::exists(env)) { + // We only use this value as the default if it is an absolute path, + // exists, and it is not the root path. + if (llvm::sys::path::is_absolute(env) && llvm::sys::fs::exists(env) && + StringRef(env) != "/") { Args.append(Args.MakeSeparateArg( 0, Opts.getOption(options::OPT_isysroot), env)); } diff --git a/test/Driver/darwin-sdkroot.c b/test/Driver/darwin-sdkroot.c index 5abf081563..f463f4a279 100644 --- a/test/Driver/darwin-sdkroot.c +++ b/test/Driver/darwin-sdkroot.c @@ -11,7 +11,7 @@ // CHECK-BASIC: "-isysroot" "{{.*tmpdir}}" // Check that we don't use SDKROOT as the default if it is not a valid path. - +// // RUN: rm -rf %t.nonpath // RUN: env SDKROOT=%t.nonpath %clang -target x86_64-apple-darwin10 \ // RUN: -c %s -### 2> %t.log @@ -20,3 +20,13 @@ // CHECK-NONPATH: clang // CHECK-NONPATH: "-cc1" // CHECK-NONPATH-NOT: "-isysroot" + +// Check that we don't use SDKROOT as the default if it is just "/" +// +// RUN: env SDKROOT=/ %clang -target x86_64-apple-darwin10 \ +// RUN: -c %s -### 2> %t.log +// RUN: FileCheck --check-prefix=CHECK-NONROOT < %t.log %s +// +// CHECK-NONROOT: clang +// CHECK-NONROOT: "-cc1" +// CHECK-NONROOT-NOT: "-isysroot" |