diff options
author | Richard Levitte <levitte@openssl.org> | 2016-09-07 20:56:20 +0200 |
---|---|---|
committer | Richard Levitte <richard@levitte.org> | 2016-09-07 21:54:08 +0200 |
commit | c3cfc9962b883a1da7082735f77a9c4b4e4ffdd8 (patch) | |
tree | 5ec80f7bb59f95b478a50e49436ed22e61ea8739 /Configure | |
parent | 92ed7fa575a80955f3bb6efefca9bf576a953586 (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-x | Configure | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -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/); |