Configure death handler: instead of printing directly, amend the message
authorRichard Levitte <levitte@openssl.org>
Tue, 24 Jul 2018 19:46:55 +0000 (21:46 +0200)
committerRichard Levitte <levitte@openssl.org>
Tue, 24 Jul 2018 20:15:29 +0000 (22:15 +0200)
This is done by calling die again, just make sure to reset the __DIE__
handler first.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6776)

(cherry picked from commit eb807d5383fd228a5c4cf9afc2fec487e0d22cee)

Configure

index c4896b949d080a23fceb39f052f599ccbc0bdd45..7e482f77701a171188d3c7a595c503a3e9c93a77 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -2163,16 +2163,19 @@ exit(0);
 # Death handler, to print a helpful message in case of failure #######
 #
 sub death_handler {
-    die @_ if $^S;
+    die @_ if $^S;              # To prevent the added message in eval blocks
     my $build_file = $target{build_file} // "build file";
-    print STDERR <<"_____";
+    my @message = ( <<"_____", @_ );
 
 Failure!  $build_file wasn't produced.
 Please read INSTALL and associated NOTES files.  You may also have to look over
 your available compiler tool chain or change your configuration.
 
 _____
-    $orig_death_handler->(@_) if defined $orig_death_handler;
+
+    # Dying is terminal, so it's ok to reset the signal handler here.
+    $SIG{__DIE__} = $orig_death_handler;
+    die @message;
 }
 
 # Configuration file reading #########################################