+3271. [port] darwin: mksymtbl is not always stable, loop several
+ times before giving up. mksymtbl was using non
+ portable perl to covert 64 bit hex strings. [RT #27653]
+
--- 9.9.0rc2 released ---
3270. [bug] "rndc reload" didn't reuse existing zones correctly
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-# $Id: rules.in,v 1.72 2011/12/20 05:24:18 marka Exp $
+# $Id: rules.in,v 1.72.22.1 2012/01/31 04:10:45 marka Exp $
###
### Common Makefile rules for BIND 9.
-o $@tmp2 $${BASEOBJS} $@-symtbl.@O@ $${LIBS0} ${NOSYMLIBS}; \
${MKSYMTBL_PROGRAM} ${top_srcdir}/util/mksymtbl.pl \
-o $@-symtbl2.c $@tmp2; \
- diff $@-symtbl.c $@-symtbl2.c || exit 1;\
+ count=0; \
+ until diff $@-symtbl.c $@-symtbl2.c > /dev/null ; \
+ do \
+ count=`expr $$count + 1` ; \
+ test $$count = 42 && exit 1 ; \
+ rm -f $@-symtbl.c $@-symtbl.@O@; \
+ ${MKSYMTBL_PROGRAM} ${top_srcdir}/util/mksymtbl.pl \
+ -o $@-symtbl.c $@tmp2 || exit 1; \
+ $(MAKE) $@-symtbl.@O@ || exit 1; \
+ ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
+ ${LDFLAGS} -o $@tmp2 $${BASEOBJS} $@-symtbl.@O@ \
+ $${LIBS0} ${NOSYMLIBS}; \
+ ${MKSYMTBL_PROGRAM} ${top_srcdir}/util/mksymtbl.pl \
+ -o $@-symtbl2.c $@tmp2; \
+ done ; \
mv $@tmp2 $@; \
rm -f $@tmp0 $@tmp1 $@tmp2 $@-symtbl2.c; \
fi
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-# $Id: mksymtbl.pl,v 1.4 2009/10/05 22:39:09 jinmei Exp $
+# $Id: mksymtbl.pl,v 1.4.688.1 2012/01/31 04:10:45 marka Exp $
use strict;
use diagnostics;
$^W = 1;
-my $rev = '$Id: mksymtbl.pl,v 1.4 2009/10/05 22:39:09 jinmei Exp $';
+my $rev = '$Id: mksymtbl.pl,v 1.4.688.1 2012/01/31 04:10:45 marka Exp $';
$rev =~ s/\$//g;
$rev =~ s/,v//g;
$rev =~ s/Id: //;
}
}
+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 {hex($a) <=> hex($b)} keys(%symmap)) {
+foreach (sort lhex keys(%symmap)) {
my ($addr, $symbol) = ($_, $symmap{$_});
if ($need_uscorefix && $symbol =~ /^_(.*)/) {
$symbol = $1;