From: Evgeniy Stepanov Date: Mon, 4 Jun 2012 11:15:05 +0000 (+0000) Subject: Require -pie when linking with ASan on Android. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=837386287f1527c3a1e7ac2ea330c714519ae33a;p=clang Require -pie when linking with ASan on Android. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157923 91177308-0d34-0410-b5e6-96231b3b80d8 --- 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");