summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rwxr-xr-xutil/bindkeys.pl49
-rw-r--r--util/check-make-install.in62
-rwxr-xr-xutil/mksymtbl.pl99
3 files changed, 210 insertions, 0 deletions
diff --git a/util/bindkeys.pl b/util/bindkeys.pl
new file mode 100755
index 0000000..085b6be
--- /dev/null
+++ b/util/bindkeys.pl
@@ -0,0 +1,49 @@
+#!/usr/bin/env perl
+
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+#
+# SPDX-License-Identifier: MPL-2.0
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, you can obtain one at https://mozilla.org/MPL/2.0/.
+#
+# See the COPYRIGHT file distributed with this work for additional
+# information regarding copyright ownership.
+
+use strict;
+use warnings;
+
+my $lines;
+while (<>) {
+ chomp;
+ if (/\/\* .Id:.* \*\//) {
+ next;
+ }
+ s/\"/\\\"/g;
+ s/$/\\n\\/;
+ $lines .= $_ . "\n";
+}
+
+my $mkey = "#define TRUST_ANCHORS \\\n\t\"\\\n" . $lines . "\"\n";
+
+print <<END;
+/*
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ *
+ * SPDX-License-Identifier: MPL-2.0
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, you can obtain one at https://mozilla.org/MPL/2.0/.
+ *
+ * See the COPYRIGHT file distributed with this work for additional
+ * information regarding copyright ownership.
+ */
+
+END
+
+print "#ifndef BIND_KEYS_H\n";
+print "#define BIND_KEYS_H 1\n";
+print $mkey;
+print "#endif /* BIND_KEYS_H */\n";
diff --git a/util/check-make-install.in b/util/check-make-install.in
new file mode 100644
index 0000000..94ab48c
--- /dev/null
+++ b/util/check-make-install.in
@@ -0,0 +1,62 @@
+#!/bin/sh
+#
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+#
+# SPDX-License-Identifier: MPL-2.0
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, you can obtain one at https://mozilla.org/MPL/2.0/.
+#
+# See the COPYRIGHT file distributed with this work for additional
+# information regarding copyright ownership.
+
+abs_top_srcdir=@abs_top_srcdir@
+abs_builddir=@abs_builddir@
+prefix=@prefix@
+includedir=@includedir@
+install_dir="${DESTDIR}@prefix@"
+
+headers_to_install() {
+ find "${abs_top_srcdir}/lib" -name "*.h" -or -name "*.h.in" |
+ grep -v -F /win32/ |
+ sed -n \
+ -e "s|\.h\.in$|\.h|" \
+ -e "s|.*include/|${DESTDIR}${includedir}/|p" |
+ sort -u
+}
+
+status=0
+
+for header in $(headers_to_install); do
+ if [ ! -f "${header}" ]; then
+ echo "Missing $header"
+ status=1
+ fi
+done
+
+named_binary_path="${install_dir}/sbin/named"
+if [ ! -x "${named_binary_path}" ]; then
+ echo "ERROR: ${named_binary_path} does not exist or is not executable"
+ status=1
+fi
+
+named_man_page_path="${install_dir}/share/man/man8/named.8"
+if [ ! -f "${named_man_page_path}" ]; then
+ echo "ERROR: ${named_man_page_path} does not exist"
+ status=1
+fi
+
+if [ -n "${DESTDIR}" ]; then
+ for expected_subdir in bin etc include lib sbin share; do
+ echo "${install_dir}/${expected_subdir}" >> "${abs_builddir}/expected_dirs"
+ done
+ find "${install_dir}" -maxdepth 1 -mindepth 1 -type d | sort > "${abs_builddir}/existing_dirs"
+ if ! diff -u "${abs_builddir}/expected_dirs" "${abs_builddir}/existing_dirs"; then
+ echo "ERROR: Contents of DESTDIR do not match expectations"
+ status=1
+ fi
+ rm -f "${abs_builddir}/expected_dirs" "${abs_builddir}/existing_dirs"
+fi
+
+exit $status
diff --git a/util/mksymtbl.pl b/util/mksymtbl.pl
new file mode 100755
index 0000000..8747a2f
--- /dev/null
+++ b/util/mksymtbl.pl
@@ -0,0 +1,99 @@
+#!/usr/bin/env perl
+
+# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+#
+# SPDX-License-Identifier: MPL-2.0
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, you can obtain one at https://mozilla.org/MPL/2.0/.
+#
+# See the COPYRIGHT file distributed with this work for additional
+# information regarding copyright ownership.
+
+use strict;
+use diagnostics;
+$^W = 1;
+
+my $rev = '$Id$';
+$rev =~ s/\$//g;
+$rev =~ s/,v//g;
+$rev =~ s/Id: //;
+
+use Getopt::Std;
+my %options;
+getopts('i:o:', \%options);
+
+my ($binname, $need_uscorefix, $outputfile, $nsyms, $ostype, $nm_prog);
+my %symmap;
+
+$binname = $ARGV[0];
+$need_uscorefix = 0;
+if ($options{'o'}) {
+ $outputfile = $options{'o'};
+} else {
+ $outputfile = "symtbl.c";
+}
+
+# OS-depending configuration
+$nm_prog = "nm";
+$ostype = `uname -s`;
+chop($ostype);
+
+if ($options{'i'}) {
+ open(SYMBOLS, $options{'i'}) || die "failed to open $options{'i'}";
+} else {
+ open(SYMBOLS, "$nm_prog $binname |") ||
+ die "failed to invoke utility to get symbols";
+}
+open(TBLFILE, ">$outputfile") || die "failed to open output file: $outputfile";
+
+$nsyms = 0;
+while (<SYMBOLS>) {
+ my ($addr, $symbol) = (0, "");
+ # *BSDs, Linux, etc.
+ if (/([0-9a-f]*)\s[tT]\s(.*)/) {
+ ($addr, $symbol) = ($1, $2);
+ # heuristics: some compilers add a "_" to all program
+ # defined symbols. Detect and fix it for a well known
+ # symbol of "main".
+ $need_uscorefix = 1 if ($symbol eq "_main");
+ }
+ if ($symbol ne "") {
+ next if ($symmap{$addr});
+
+ $symmap{$addr} = $symbol;
+ $nsyms++;
+ }
+}
+
+sub lhex {
+ my $la = substr($a, -8);
+ my $lb = substr($b, -8);
+ my $ha = substr($a, 0, length($a) - length($la));
+ my $hb = substr($b, 0, length($b) - length($lb));
+ $ha = "0" if ($ha eq "");
+ $ha = "0" if ($hb eq "");
+ if (hex($ha) != hex($hb)) {
+ $la = $ha;
+ $lb = $hb;
+ }
+ hex($la) <=> hex($lb)
+}
+
+print TBLFILE "/*\n * Generated by $rev \n */\n";
+print TBLFILE "#include <isc/backtrace.h>\n";
+print TBLFILE "const int isc__backtrace_nsymbols = $nsyms;\n";
+print TBLFILE "const isc_backtrace_symmap_t isc__backtrace_symtable[] = {\n";
+foreach (sort lhex keys(%symmap)) {
+ my ($addr, $symbol) = ($_, $symmap{$_});
+ if ($need_uscorefix && $symbol =~ /^_(.*)/) {
+ $symbol = $1;
+ }
+ print TBLFILE "\t{ (void *)0x$addr, \"$symbol\" },\n";
+}
+print TBLFILE "\t{ (void *)0x0, \"\" },\n";
+print TBLFILE "};\n";
+
+close(TBLFILE);
+close(SYMBOLS);