summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2018-02-07 19:23:39 +0100
committerRichard Levitte <levitte@openssl.org>2018-02-07 22:16:44 +0100
commitcb7b7275683655537c63e42b5e3ef3d7045e4104 (patch)
tree13f06a736e7ad3da9cc2e935a61f77056300e3c6 /util
parent3a7141df8768e797f42ed14027e974ea845aa20f (diff)
mkerr.pl: When writing internal FOOerr.h, pay attention to disablable modules
If a module is disablable (i.e. can be configured with 'no-FOO'), the resulting header file needs to be guarded with a check of the corresponding OPENSSL_NO_FOO. While this seem fairly innocuous, it has an impact on the information in util/*.num, generated by mkdef.pl. Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Tim Hudson <tjh@openssl.org> (Merged from https://github.com/openssl/openssl/pull/5275)
Diffstat (limited to 'util')
-rwxr-xr-xutil/mkerr.pl33
1 files changed, 26 insertions, 7 deletions
diff --git a/util/mkerr.pl b/util/mkerr.pl
index 52a44c9ffb..1740e40427 100755
--- a/util/mkerr.pl
+++ b/util/mkerr.pl
@@ -9,6 +9,9 @@
use strict;
use warnings;
+use lib ".";
+use configdata;
+
my $config = "crypto/err/openssl.ec";
my $debug = 0;
my $internal = 0;
@@ -430,6 +433,9 @@ foreach my $lib ( keys %errorfile ) {
my @function = sort grep( /^${lib}_/, keys %fcodes );
my @reasons = sort grep( /^${lib}_/, keys %rcodes );
+ # indent level for innermost preprocessor lines
+ my $indent = " ";
+
# Rewrite the header file
my $hfile = $hinc{$lib};
@@ -453,14 +459,24 @@ EOF
if ( $internal ) {
# Declare the load function because the generate C file
# includes "fooerr.h" not "foo.h"
+ if ($lib ne "SSL" && $lib ne "ASYNC"
+ && grep { $lib eq uc $_ } @disablables) {
+ print OUT <<"EOF";
+# include <openssl/opensslconf.h>
+
+# ifndef OPENSSL_NO_${lib}
+
+EOF
+ $indent = " ";
+ }
print OUT <<"EOF";
-# ifdef __cplusplus
+#${indent}ifdef __cplusplus
extern \"C\" {
-# endif
+#${indent}endif
int ERR_load_${lib}_strings(void);
-# ifdef __cplusplus
+#${indent}ifdef __cplusplus
}
-# endif
+#${indent}endif
EOF
} else {
print OUT <<"EOF";
@@ -498,7 +514,7 @@ EOF
$fassigned{$lib} .= "$findcode:";
print STDERR "New Function code $i\n" if $debug;
}
- printf OUT "# define $i%s $fcodes{$i}\n", " " x $z;
+ printf OUT "#${indent}define $i%s $fcodes{$i}\n", " " x $z;
}
print OUT "\n/*\n * $lib reason codes.\n */\n";
@@ -516,11 +532,14 @@ EOF
$rassigned{$lib} .= "$findcode:";
print STDERR "New Reason code $i\n" if $debug;
}
- printf OUT "# define $i%s $rcodes{$i}\n", " " x $z;
+ printf OUT "#${indent}define $i%s $rcodes{$i}\n", " " x $z;
}
print OUT "\n";
- print OUT "#endif\n";
+ while (length($indent) > 0) {
+ $indent = substr $indent, 0, -1;
+ print OUT "#${indent}endif\n";
+ }
# Rewrite the C source file containing the error details.