summaryrefslogtreecommitdiffstats
path: root/Configure
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2016-09-07 20:56:20 +0200
committerRichard Levitte <richard@levitte.org>2016-09-07 21:54:08 +0200
commitc3cfc9962b883a1da7082735f77a9c4b4e4ffdd8 (patch)
tree5ec80f7bb59f95b478a50e49436ed22e61ea8739 /Configure
parent92ed7fa575a80955f3bb6efefca9bf576a953586 (diff)
Allow asan, msan and ubsan to be configured with shared libraries
The background story is that util/shlib_wrap.sh was setting LD_PRELOAD or similar platform dependent variables, just in case the shared libraries were built with -rpath. Unfortunately, this doesn't work too well with asan, msan or ubsan. So, the solution is to forbid the combination of shared libraries, -rpath and any of the sanity analyzers we can configure. This changes util/shlib_wrap.sh so it only contains the code that sets LD_PRELOAD when -rpath has been used when configuring. Reviewed-by: Rich Salz <rsalz@openssl.org> (cherry picked from commit 342a1a23793cb99921abeabe882adf8652ba715d)
Diffstat (limited to 'Configure')
-rwxr-xr-xConfigure9
1 files changed, 8 insertions, 1 deletions
diff --git a/Configure b/Configure
index f77177f25c..4be1f33e53 100755
--- a/Configure
+++ b/Configure
@@ -284,7 +284,7 @@ my $default_ranlib;
$config{fips}=0;
# Top level directories to build
-$config{dirs} = [ "crypto", "ssl", "engines", "apps", "test", "tools", "fuzz" ];
+$config{dirs} = [ "crypto", "ssl", "engines", "apps", "test", "util", "tools", "fuzz" ];
# crypto/ subdirectories to build
$config{sdirs} = [
"objects",
@@ -763,6 +763,13 @@ foreach (@argvcopy)
}
}
+if ($libs =~ /(^|\s)-Wl,-rpath,/
+ && !$disabled{shared}
+ && !($disabled{asan} && $disabled{msan} && $disabled{ubsan})) {
+ die "***** Cannot simultaneously use -rpath, shared libraries, and\n",
+ "***** any of asan, msan or ubsan\n";
+}
+
if ($config{fips})
{
delete $disabled{"shared"} if ($disabled{"shared"} =~ /^default/);