[openssl-commits] [openssl] master update

Richard Levitte levitte at openssl.org
Wed Sep 7 19:53:48 UTC 2016


The branch master has been updated
       via  342a1a23793cb99921abeabe882adf8652ba715d (commit)
      from  978ecbb08be69864c2a85524eafbdb70487becb0 (commit)


- Log -----------------------------------------------------------------
commit 342a1a23793cb99921abeabe882adf8652ba715d
Author: Richard Levitte <levitte at openssl.org>
Date:   Wed Sep 7 20:56:20 2016 +0200

    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 at openssl.org>

-----------------------------------------------------------------------

Summary of changes:
 Configurations/unix-Makefile.tmpl        | 8 ++------
 Configure                                | 9 ++++++++-
 util/build.info                          | 2 ++
 util/{shlib_wrap.sh => shlib_wrap.sh.in} | 2 ++
 4 files changed, 14 insertions(+), 7 deletions(-)
 create mode 100644 util/build.info
 rename util/{shlib_wrap.sh => shlib_wrap.sh.in} (96%)

diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
index 1392295..d486d9e 100644
--- a/Configurations/unix-Makefile.tmpl
+++ b/Configurations/unix-Makefile.tmpl
@@ -775,18 +775,14 @@ dist:
 
 # Helper targets #####################################################
 
-link-utils: $(BLDDIR)/util/opensslwrap.sh $(BLDDIR)/util/shlib_wrap.sh
+link-utils: $(BLDDIR)/util/opensslwrap.sh
 
 $(BLDDIR)/util/opensslwrap.sh: configdata.pm
 	@if [ "$(SRCDIR)" != "$(BLDDIR)" ]; then \
 	    mkdir -p "$(BLDDIR)/util"; \
 	    ln -sf "../$(SRCDIR)/util/opensslwrap.sh" "$(BLDDIR)/util"; \
 	fi
-$(BLDDIR)/util/shlib_wrap.sh: configdata.pm
-	@if [ "$(SRCDIR)" != "$(BLDDIR)" ]; then \
-	    mkdir -p "$(BLDDIR)/util"; \
-	    ln -sf "../$(SRCDIR)/util/shlib_wrap.sh" "$(BLDDIR)/util"; \
-	fi
+
 FORCE:
 
 # Building targets ###################################################
diff --git a/Configure b/Configure
index 71700ec..96b6590 100755
--- a/Configure
+++ b/Configure
@@ -300,7 +300,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",
@@ -780,6 +780,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/);
diff --git a/util/build.info b/util/build.info
new file mode 100644
index 0000000..616fbd7
--- /dev/null
+++ b/util/build.info
@@ -0,0 +1,2 @@
+SCRIPTS_NO_INST=shlib_wrap.sh
+SOURCE[shlib_wrap.sh]=shlib_wrap.sh.in
diff --git a/util/shlib_wrap.sh b/util/shlib_wrap.sh.in
similarity index 96%
rename from util/shlib_wrap.sh
rename to util/shlib_wrap.sh.in
index ce463f1..eff1141 100755
--- a/util/shlib_wrap.sh
+++ b/util/shlib_wrap.sh.in
@@ -81,6 +81,7 @@ SunOS|IRIX*)
 	;;
 esac
 
+{- output_off() if $config{ex_libs} !~ /(^|\s)-Wl,-rpath,/; ""; -}
 if [ -f "$LIBCRYPTOSO" -a -z "$preload_var" ]; then
 	# Following three lines are major excuse for isolating them into
 	# this wrapper script. Original reason for setting LD_PRELOAD
@@ -96,6 +97,7 @@ if [ -f "$LIBCRYPTOSO" -a -z "$preload_var" ]; then
 	DYLD_INSERT_LIBRARIES="$LIBCRYPTOSO:$LIBSSLSO"	# MacOS X
 	export LD_PRELOAD _RLD_LIST DYLD_INSERT_LIBRARIES
 fi
+{- output_on() if $config{ex_libs} !~ /(^|\s)-Wl,-rpath,/; ""; -}
 
 cmd="$1"; [ -x "$cmd" ] || cmd="$cmd${EXE_EXT}"
 shift


More information about the openssl-commits mailing list