diff options
-rw-r--r-- | include/clang/Basic/DiagnosticDriverKinds.td | 2 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/include/clang/Basic/DiagnosticDriverKinds.td b/include/clang/Basic/DiagnosticDriverKinds.td index 469c822584..fdd3ff5881 100644 --- a/include/clang/Basic/DiagnosticDriverKinds.td +++ b/include/clang/Basic/DiagnosticDriverKinds.td @@ -97,6 +97,8 @@ def err_arc_unsupported : Error< "-fobjc-arc is not supported on current deployment target">; def err_drv_mg_requires_m_or_mm : Error< "option '-MG' requires '-M' or '-MM'">; +def err_drv_asan_android_requires_pie : Error< + "AddressSanitizer on Android requires '-pie'">; def warn_c_kext : Warning< "ignoring -fapple-kext which is valid for c++ and objective-c++ only">; diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 31626b3976..9a157efce7 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -1290,6 +1290,8 @@ static void addAsanRTLinux(const ToolChain &TC, const ArgList &Args, return; if(TC.getTriple().getEnvironment() == llvm::Triple::ANDROIDEABI) { if (!Args.hasArg(options::OPT_shared)) { + if (!Args.hasArg(options::OPT_pie)) + TC.getDriver().Diag(diag::err_drv_asan_android_requires_pie); // For an executable, we add a .preinit_array stub. CmdArgs.push_back("-u"); CmdArgs.push_back("__asan_preinit"); |