summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2016-08-29 23:42:34 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2016-08-29 23:42:34 +0000
commit8dbbf56aa104173e7defd9bce10603e6aa678810 (patch)
tree38ce60bd502d6e113fa7f06debc23990db8cce6e /clang/lib
parent89876673cd45cc9da6aa971be1a947c3e6e67f28 (diff)
downloadbcm5719-llvm-8dbbf56aa104173e7defd9bce10603e6aa678810.tar.gz
bcm5719-llvm-8dbbf56aa104173e7defd9bce10603e6aa678810.zip
[cfi] Export __cfi_check when linking with -fsanitize-cfi-cross-dso.
Multi-DSO CFI model requires every DSO to export a __cfi_check function. llvm-svn: 280031
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/Tools.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 5852ac1b2e2..464c4242acb 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -3194,6 +3194,11 @@ static bool addSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
// to be dynamic to be sure we export sanitizer interface functions.
if (AddExportDynamic)
CmdArgs.push_back("-export-dynamic");
+
+ const SanitizerArgs &SanArgs = TC.getSanitizerArgs();
+ if (SanArgs.hasCrossDsoCfi() && !AddExportDynamic)
+ CmdArgs.push_back("-export-dynamic-symbol=__cfi_check");
+
return !StaticRuntimes.empty();
}
OpenPOWER on IntegriCloud