make update
[openssl.git] / util / mkerr.pl
index 96c705e16bf3a8ec41ca1bc810c4d273bf4bf0c2..79c8cfc31c4365afc38de6c7b21c0ce55e1502e7 100644 (file)
@@ -1,14 +1,22 @@
-#!/usr/local/bin/perl -w
+#! /usr/bin/env perl
+# Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the OpenSSL license (the "License").  You may not use
+# this file except in compliance with the License.  You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
 
 my $config = "crypto/err/openssl.ec";
 
 my $config = "crypto/err/openssl.ec";
-my $hprefix = "openssl/";
 my $debug = 0;
 my $debug = 0;
+my $unref = 0;
 my $rebuild = 0;
 my $static = 1;
 my $recurse = 0;
 my $reindex = 0;
 my $dowrite = 0;
 my $staticloader = "";
 my $rebuild = 0;
 my $static = 1;
 my $recurse = 0;
 my $reindex = 0;
 my $dowrite = 0;
 my $staticloader = "";
+my @t = localtime();
+my $YEAR = @t[5] + 1900;
 
 my $pack_errcode;
 my $load_errcode;
 
 my $pack_errcode;
 my $load_errcode;
@@ -26,6 +34,7 @@ while (@ARGV) {
                $hprefix = shift @ARGV;
        } elsif($arg eq "-debug") {
                $debug = 1;
                $hprefix = shift @ARGV;
        } elsif($arg eq "-debug") {
                $debug = 1;
+               $unref = 1;
                shift @ARGV;
        } elsif($arg eq "-rebuild") {
                $rebuild = 1;
                shift @ARGV;
        } elsif($arg eq "-rebuild") {
                $rebuild = 1;
@@ -42,6 +51,9 @@ while (@ARGV) {
        } elsif($arg eq "-staticloader") {
                $staticloader = "static ";
                shift @ARGV;
        } elsif($arg eq "-staticloader") {
                $staticloader = "static ";
                shift @ARGV;
+       } elsif($arg eq "-unref") {
+               $unref = 1;
+               shift @ARGV;
        } elsif($arg eq "-write") {
                $dowrite = 1;
                shift @ARGV;
        } elsif($arg eq "-write") {
                $dowrite = 1;
                shift @ARGV;
@@ -57,6 +69,8 @@ Options:
   -hprefix P    Prepend the filenames in generated #include <header>
                 statements with prefix P. Default: 'openssl/' (without
                 the quotes, naturally)
   -hprefix P    Prepend the filenames in generated #include <header>
                 statements with prefix P. Default: 'openssl/' (without
                 the quotes, naturally)
+                NOTE: not used any more because our include directory
+                structure has changed.
 
   -debug        Turn on debugging verbose output on stderr.
 
 
   -debug        Turn on debugging verbose output on stderr.
 
@@ -89,7 +103,7 @@ Options:
                   void ERR_load_<LIB>_strings(void);
                   void ERR_unload_<LIB>_strings(void);
                   void ERR_<LIB>_error(int f, int r, char *fn, int ln);
                   void ERR_load_<LIB>_strings(void);
                   void ERR_unload_<LIB>_strings(void);
                   void ERR_<LIB>_error(int f, int r, char *fn, int ln);
-                  #define <LIB>err(f,r) ERR_<LIB>_error(f,r,__FILE__,__LINE__)
+                  #define <LIB>err(f,r) ERR_<LIB>_error(f,r,OPENSSL_FILE,OPENSSL_LINE)
                 while the code facilitates the use of these in an environment
                 where the error support routines are dynamically loaded at 
                 runtime.
                 while the code facilitates the use of these in an environment
                 where the error support routines are dynamically loaded at 
                 runtime.
@@ -98,6 +112,8 @@ Options:
   -staticloader Prefix generated functions with the 'static' scope modifier.
                 Default: don't write any scope modifier prefix.
 
   -staticloader Prefix generated functions with the 'static' scope modifier.
                 Default: don't write any scope modifier prefix.
 
+  -unref        Print out unreferenced function and reason codes.
+
   -write        Actually (over)write the generated code to the header and C 
                 source files as assigned to each library through the config 
                 file.
   -write        Actually (over)write the generated code to the header and C 
                 source files as assigned to each library through the config 
                 file.
@@ -116,7 +132,7 @@ EOF
 }
 
 if($recurse) {
 }
 
 if($recurse) {
-       @source = ( <crypto/*.c>, <crypto/*/*.c>, <ssl/*.c> )
+       @source = ( <crypto/*.c>, <crypto/*/*.c>, <ssl/*.c>, <ssl/*/*.c> )
 } else {
        @source = @ARGV;
 }
 } else {
        @source = @ARGV;
 }
@@ -158,8 +174,8 @@ close IN;
 while (($hdr, $lib) = each %libinc)
 {
        next if($hdr eq "NONE");
 while (($hdr, $lib) = each %libinc)
 {
        next if($hdr eq "NONE");
-       print STDERR "Scanning header file $hdr\n" if $debug; 
-       my $line = "", $def= "", $linenr = 0, $gotfile = 0;
+       print STDERR "Scanning header file $hdr\n" if $debug;
+       my $line = "", $def= "", $linenr = 0, $gotfile = 0, $cpp = 0;
        if (open(IN, "<$hdr")) {
            $gotfile = 1;
            while(<IN>) {
        if (open(IN, "<$hdr")) {
            $gotfile = 1;
            while(<IN>) {
@@ -328,9 +344,18 @@ foreach $file (@source) {
        next if exists $cskip{$file};
        print STDERR "File loaded: ".$file."\r" if $debug;
        open(IN, "<$file") || die "Can't open source file $file\n";
        next if exists $cskip{$file};
        print STDERR "File loaded: ".$file."\r" if $debug;
        open(IN, "<$file") || die "Can't open source file $file\n";
+       my $func;
+       my $linenr = 0;
        while(<IN>) {
                # skip obsoleted source files entirely!
                last if(/^#error\s+obsolete/);
        while(<IN>) {
                # skip obsoleted source files entirely!
                last if(/^#error\s+obsolete/);
+               $linenr++;
+               if (!/;$/ && /^\**([a-zA-Z_].*[\s*])?([A-Za-z_0-9]+)\(.*([),]|$)/)
+                       {
+                       /^([^()]*(\([^()]*\)[^()]*)*)\(/;
+                       $1 =~ /([A-Za-z_0-9]*)$/;
+                       $func = $1;
+                       }
 
                if(/(([A-Z0-9]+)_F_([A-Z0-9_]+))/) {
                        next unless exists $csrc{$2};
 
                if(/(([A-Z0-9]+)_F_([A-Z0-9_]+))/) {
                        next unless exists $csrc{$2};
@@ -340,7 +365,11 @@ foreach $file (@source) {
                                $fcodes{$1} = "X";
                                $fnew{$2}++;
                        }
                                $fcodes{$1} = "X";
                                $fnew{$2}++;
                        }
-                       $notrans{$1} = 1 unless exists $ftrans{$3};
+                       $ftrans{$3} = $func unless exists $ftrans{$3};
+            if (uc $func ne $3) {
+                print STDERR "ERROR: mismatch $file:$linenr $func:$3\n";
+                $errcount++;
+            }
                        print STDERR "Function: $1\t= $fcodes{$1} (lib: $2, name: $3)\n" if $debug; 
                }
                if(/(([A-Z0-9]+)_R_[A-Z0-9_]+)/) {
                        print STDERR "Function: $1\t= $fcodes{$1} (lib: $2, name: $3)\n" if $debug; 
                }
                if(/(([A-Z0-9]+)_R_[A-Z0-9_]+)/) {
@@ -364,7 +393,6 @@ foreach $lib (keys %csrc)
        my $hfile = $hinc{$lib};
        my $cfile = $csrc{$lib};
        if(!$fnew{$lib} && !$rnew{$lib}) {
        my $hfile = $hinc{$lib};
        my $cfile = $csrc{$lib};
        if(!$fnew{$lib} && !$rnew{$lib}) {
-               print STDERR "$lib:\t\tNo new error codes\n";
                next unless $rebuild;
        } else {
                print STDERR "$lib:\t\t$fnew{$lib} New Functions,";
                next unless $rebuild;
        } else {
                print STDERR "$lib:\t\t$fnew{$lib} New Functions,";
@@ -382,75 +410,37 @@ foreach $lib (keys %csrc)
 
        # Rewrite the header file
 
 
        # Rewrite the header file
 
+       $cpp = 0;
+       $cplusplus = 0;
        if (open(IN, "<$hfile")) {
            # Copy across the old file
            while(<IN>) {
        if (open(IN, "<$hfile")) {
            # Copy across the old file
            while(<IN>) {
+               $cplusplus = $cpp if /^#.*ifdef.*cplusplus/;
+               $cpp++ if /^#\s*if/;
+               $cpp-- if /^#\s*endif/;
                push @out, $_;
                last if (/BEGIN ERROR CODES/);
            }
            close IN;
        } else {
                push @out, $_;
                last if (/BEGIN ERROR CODES/);
            }
            close IN;
        } else {
+           $cpp = 1;
+           $cplusplus = 1;
            push @out,
            push @out,
-"/* ====================================================================\n",
-" * Copyright (c) 2001-$year The OpenSSL Project.  All rights reserved.\n",
-" *\n",
-" * Redistribution and use in source and binary forms, with or without\n",
-" * modification, are permitted provided that the following conditions\n",
-" * are met:\n",
-" *\n",
-" * 1. Redistributions of source code must retain the above copyright\n",
-" *    notice, this list of conditions and the following disclaimer. \n",
-" *\n",
-" * 2. Redistributions in binary form must reproduce the above copyright\n",
-" *    notice, this list of conditions and the following disclaimer in\n",
-" *    the documentation and/or other materials provided with the\n",
-" *    distribution.\n",
-" *\n",
-" * 3. All advertising materials mentioning features or use of this\n",
-" *    software must display the following acknowledgment:\n",
-" *    \"This product includes software developed by the OpenSSL Project\n",
-" *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)\"\n",
-" *\n",
-" * 4. The names \"OpenSSL Toolkit\" and \"OpenSSL Project\" must not be used to\n",
-" *    endorse or promote products derived from this software without\n",
-" *    prior written permission. For written permission, please contact\n",
-" *    openssl-core\@openssl.org.\n",
-" *\n",
-" * 5. Products derived from this software may not be called \"OpenSSL\"\n",
-" *    nor may \"OpenSSL\" appear in their names without prior written\n",
-" *    permission of the OpenSSL Project.\n",
-" *\n",
-" * 6. Redistributions of any form whatsoever must retain the following\n",
-" *    acknowledgment:\n",
-" *    \"This product includes software developed by the OpenSSL Project\n",
-" *    for use in the OpenSSL Toolkit (http://www.openssl.org/)\"\n",
-" *\n",
-" * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY\n",
-" * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n",
-" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n",
-" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR\n",
-" * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n",
-" * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n",
-" * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n",
-" * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n",
-" * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n",
-" * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n",
-" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n",
-" * OF THE POSSIBILITY OF SUCH DAMAGE.\n",
-" * ====================================================================\n",
-" *\n",
-" * This product includes cryptographic software written by Eric Young\n",
-" * (eay\@cryptsoft.com).  This product includes software written by Tim\n",
-" * Hudson (tjh\@cryptsoft.com).\n",
+"/*\n",
+" * Copyright 1995-$YEAR The OpenSSL Project Authors. All Rights Reserved.\n",
 " *\n",
 " *\n",
+" * Licensed under the OpenSSL license (the \"License\").  You may not use\n",
+" * this file except in compliance with the License.  You can obtain a copy\n",
+" * in the file LICENSE in the source distribution or at\n",
+" * https://www.openssl.org/source/license.html\n",
 " */\n",
 "\n",
 "#ifndef HEADER_${lib}_ERR_H\n",
 " */\n",
 "\n",
 "#ifndef HEADER_${lib}_ERR_H\n",
-"#define HEADER_${lib}_ERR_H\n",
+"# define HEADER_${lib}_ERR_H\n",
 "\n",
 "\n",
-"#ifdef  __cplusplus\n",
+"# ifdef  __cplusplus\n",
 "extern \"C\" {\n",
 "extern \"C\" {\n",
-"#endif\n",
+"# endif\n",
 "\n",
 "/* BEGIN ERROR CODES */\n";
        }
 "\n",
 "/* BEGIN ERROR CODES */\n";
        }
@@ -463,18 +453,19 @@ foreach $lib (keys %csrc)
  * The following lines are auto generated by the script mkerr.pl. Any changes
  * made after this point may be overwritten when the script is next run.
  */
  * The following lines are auto generated by the script mkerr.pl. Any changes
  * made after this point may be overwritten when the script is next run.
  */
+
 EOF
        if($static) {
                print OUT <<"EOF";
 EOF
        if($static) {
                print OUT <<"EOF";
-${staticloader}void ERR_load_${lib}_strings(void);
+${staticloader}int ERR_load_${lib}_strings(void);
 
 EOF
        } else {
                print OUT <<"EOF";
 
 EOF
        } else {
                print OUT <<"EOF";
-${staticloader}void ERR_load_${lib}_strings(void);
+${staticloader}int ERR_load_${lib}_strings(void);
 ${staticloader}void ERR_unload_${lib}_strings(void);
 ${staticloader}void ERR_${lib}_error(int function, int reason, char *file, int line);
 ${staticloader}void ERR_unload_${lib}_strings(void);
 ${staticloader}void ERR_${lib}_error(int function, int reason, char *file, int line);
-# define ${lib}err(f,r) ERR_${lib}_error((f),(r),__FILE__,__LINE__)
+# define ${lib}err(f,r) ERR_${lib}_error((f),(r),OPENSSL_FILE,OPENSSL_LINE)
 
 EOF
        }
 
 EOF
        }
@@ -523,11 +514,17 @@ EOF
        }
        print OUT <<"EOF";
 
        }
        print OUT <<"EOF";
 
-#ifdef  __cplusplus
-}
-#endif
-#endif
 EOF
 EOF
+       do {
+           if ($cplusplus == $cpp) {
+               print OUT "#", " "x$cpp, "ifdef  __cplusplus\n";
+               print OUT "}\n";
+               print OUT "#", " "x$cpp, "endif\n";
+           }
+           if ($cpp-- > 0) {
+               print OUT "#", " "x$cpp, "endif\n";
+           }
+       } while ($cpp);
        close OUT;
 
        # Rewrite the C source file containing the error details.
        close OUT;
 
        # Rewrite the C source file containing the error details.
@@ -535,14 +532,21 @@ EOF
        # First, read any existing reason string definitions:
        my %err_reason_strings;
        if (open(IN,"<$cfile")) {
        # First, read any existing reason string definitions:
        my %err_reason_strings;
        if (open(IN,"<$cfile")) {
+               my $line = "";
                while (<IN>) {
                while (<IN>) {
-                       if (/\b(${lib}_R_\w*)\b.*\"(.*)\"/) {
-                               $err_reason_strings{$1} = $2;
-                       }
-                       if (/\b${lib}_F_(\w*)\b.*\"(.*)\"/) {
-                               if (!exists $ftrans{$1} && ($1 ne $2)) {
-                                       print STDERR "WARNING: Mismatched function string $2\n";
-                                       $ftrans{$1} = $2;
+                       s|\R$||; # Better chomp
+                       $_ = $line . $_;
+                       $line = "";
+                       if (/{ERR_(FUNC|REASON)\(/) {
+                               if (/\b(${lib}_R_\w*)\b.*\"(.*)\"/) {
+                                       $err_reason_strings{$1} = $2;
+                               } elsif (/\b${lib}_F_(\w*)\b.*\"(.*)\"/) {
+                                       if (!exists $ftrans{$1} && ($1 ne $2)) {
+                                               print STDERR "WARNING: Mismatched function string $2\n";
+                                               $ftrans{$1} = $2;
+                                       }
+                               } else {
+                                       $line = $_;
                                }
                        }
                }
                                }
                        }
                }
@@ -552,8 +556,13 @@ EOF
 
        my $hincf;
        if($static) {
 
        my $hincf;
        if($static) {
-               $hfile =~ /([^\/]+)$/;
-               $hincf = "<${hprefix}$1>";
+               $hincf = $hfile;
+               $hincf =~ s|.*include/||;
+               if ($hincf =~ m|^openssl/|) {
+                       $hincf = "<${hincf}>";
+               } else {
+                       $hincf = "\"${hincf}\"";
+               }
        } else {
                $hincf = "\"$hfile\"";
        }
        } else {
                $hincf = "\"$hfile\"";
        }
@@ -576,65 +585,14 @@ EOF
        open (OUT,">$cfile") || die "Can't open $cfile for writing";
 
        print OUT <<"EOF";
        open (OUT,">$cfile") || die "Can't open $cfile for writing";
 
        print OUT <<"EOF";
-/* $cfile */
-/* ====================================================================
- * Copyright (c) 1999-$year The OpenSSL Project.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. All advertising materials mentioning features or use of this
- *    software must display the following acknowledgment:
- *    "This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
- *
- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
- *    endorse or promote products derived from this software without
- *    prior written permission. For written permission, please contact
- *    openssl-core\@OpenSSL.org.
- *
- * 5. Products derived from this software may not be called "OpenSSL"
- *    nor may "OpenSSL" appear in their names without prior written
- *    permission of the OpenSSL Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- *    acknowledgment:
- *    "This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * ====================================================================
- *
- * This product includes cryptographic software written by Eric Young
- * (eay\@cryptsoft.com).  This product includes software written by Tim
- * Hudson (tjh\@cryptsoft.com).
- *
- */
-
 /*
 /*
- * NOTE: this file was auto generated by the mkerr.pl script: any changes
- * made to it will be overwritten when the script next updates this file,
- * only reason strings will be preserved.
+ * Generated by util/mkerr.pl DO NOT EDIT
+ * Copyright 1995-$YEAR The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the OpenSSL license (the "License").  You may not use
+ * this file except in compliance with the License.  You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
  */
 
 #include <stdio.h>
  */
 
 #include <stdio.h>
@@ -658,7 +616,7 @@ EOF
                        $fn = $ftrans{$fn};
                }
 #              print OUT "{ERR_PACK($pack_errcode,$i,0),\t\"$fn\"},\n";
                        $fn = $ftrans{$fn};
                }
 #              print OUT "{ERR_PACK($pack_errcode,$i,0),\t\"$fn\"},\n";
-               if(length($i) + length($fn) > 58) {
+               if(length($i) + length($fn) > 57) {
                        print OUT "    {ERR_FUNC($i),\n     \"$fn\"},\n";
                } else {
                        print OUT "    {ERR_FUNC($i), \"$fn\"},\n";
                        print OUT "    {ERR_FUNC($i),\n     \"$fn\"},\n";
                } else {
                        print OUT "    {ERR_FUNC($i), \"$fn\"},\n";
@@ -681,7 +639,7 @@ EOF
                        $rn = $1;
                        $rn =~ tr/_[A-Z]/ [a-z]/;
                }
                        $rn = $1;
                        $rn =~ tr/_[A-Z]/ [a-z]/;
                }
-               if(length($i) + length($rn) > 56) {
+               if(length($i) + length($rn) > 55) {
                        print OUT "    {${rstr},\n     \"$rn\"},\n";
                } else {
                        print OUT "    {${rstr}, \"$rn\"},\n";
                        print OUT "    {${rstr},\n     \"$rn\"},\n";
                } else {
                        print OUT "    {${rstr}, \"$rn\"},\n";
@@ -694,7 +652,7 @@ if($static) {
 
 #endif
 
 
 #endif
 
-${staticloader}void ERR_load_${lib}_strings(void)
+${staticloader}int ERR_load_${lib}_strings(void)
 {
 #ifndef OPENSSL_NO_ERR
 
 {
 #ifndef OPENSSL_NO_ERR
 
@@ -703,6 +661,7 @@ ${staticloader}void ERR_load_${lib}_strings(void)
         ERR_load_strings($load_errcode, ${lib}_str_reasons);
     }
 #endif
         ERR_load_strings($load_errcode, ${lib}_str_reasons);
     }
 #endif
+    return 1;
 }
 EOF
 } else {
 }
 EOF
 } else {
@@ -722,7 +681,7 @@ static ERR_STRING_DATA ${lib}_lib_name[] = {
 static int ${lib}_lib_error_code = 0;
 static int ${lib}_error_init = 1;
 
 static int ${lib}_lib_error_code = 0;
 static int ${lib}_error_init = 1;
 
-${staticloader}void ERR_load_${lib}_strings(void)
+${staticloader}int ERR_load_${lib}_strings(void)
 {
     if (${lib}_lib_error_code == 0)
         ${lib}_lib_error_code = ERR_get_next_error_library();
 {
     if (${lib}_lib_error_code == 0)
         ${lib}_lib_error_code = ERR_get_next_error_library();
@@ -739,6 +698,7 @@ ${staticloader}void ERR_load_${lib}_strings(void)
         ERR_load_strings(0, ${lib}_lib_name);
 #endif
     }
         ERR_load_strings(0, ${lib}_lib_name);
 #endif
     }
+    return 1;
 }
 
 ${staticloader}void ERR_unload_${lib}_strings(void)
 }
 
 ${staticloader}void ERR_unload_${lib}_strings(void)
@@ -788,7 +748,7 @@ foreach (keys %rcodes) {
        push (@runref, $_) unless exists $urcodes{$_};
 }
 
        push (@runref, $_) unless exists $urcodes{$_};
 }
 
-if($debug && @funref) {
+if($unref && @funref) {
        print STDERR "The following function codes were not referenced:\n";
        foreach(sort @funref)
        {
        print STDERR "The following function codes were not referenced:\n";
        foreach(sort @funref)
        {
@@ -796,7 +756,7 @@ if($debug && @funref) {
        }
 }
 
        }
 }
 
-if($debug && @runref) {
+if($unref && @runref) {
        print STDERR "The following reason codes were not referenced:\n";
        foreach(sort @runref)
        {
        print STDERR "The following reason codes were not referenced:\n";
        foreach(sort @runref)
        {