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 19:46:55 +0000 (21:46 +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)

Configure

index 8e99f60b975500e190317b20ffda90decc2ef816..9f728b9242123e671d2374ffad842fc7e1a60d54 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -2722,16 +2722,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 #########################################