Configure death handler: instead of printing directly, amend the message

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)
This commit is contained in:
Richard Levitte 2018-07-24 21:46:55 +02:00
parent 88accfe6dc
commit eb807d5383
1 changed files with 6 additions and 3 deletions

View File

@ -2722,16 +2722,19 @@ exit(0);
# Death handler, to print a helpful message in case of failure ####### # Death handler, to print a helpful message in case of failure #######
# #
sub death_handler { 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"; my $build_file = $target{build_file} // "build file";
print STDERR <<"_____"; my @message = ( <<"_____", @_ );
Failure! $build_file wasn't produced. Failure! $build_file wasn't produced.
Please read INSTALL and associated NOTES files. You may also have to look over Please read INSTALL and associated NOTES files. You may also have to look over
your available compiler tool chain or change your configuration. 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 ######################################### # Configuration file reading #########################################