1 %************************************************************************
3 \section[Driver-consistency-chk]{@chk_consistency_info@: Check an executable for consistency}
5 %************************************************************************
8 sub chk_consistency_info {
9 local($executable) = @_;
11 local($major_version, $minor_version);
12 local($phase, $infile, $opts);
14 $executable = "${executable}.exe" if $TargetPlatform eq 'i386-unknown-cygwin32';
16 print STDERR "Checking consistency of: $executable\n" if $Verbose;
18 &tidy_up_and_die(1, "Panic: no such executable: $executable\n")
21 # by this point, consistency strings (with commas) have become
22 # local symbols (with .'s)
23 $HsC_consist_options =~ s/,/./g;
24 $Cc_consist_options =~ s/,/./g;
26 # now run `nm' and check all the version info
27 open(CONSIST, "$Nm -p $executable |") || &tidy_up_and_die(1,"$Pgm: can't run: $Nm\n");
30 next if ! /^[\da-fA-F]+\s+[tn]\s+(hsc|cc)\./;
32 if (/^[\da-fA-F]+\s+[tn]\s+(hsc|cc)\.(\S+)\.(\d+)\.(\d+)\.(.*)/) {
33 $phase = $1; $infile = $2;
34 $major_version = $3; $minor_version = $4;
36 if ($phase eq 'hsc') {
38 print STDERR "$Pgm: consistency error: major version not $HsC_major_version:\n$_\n"
39 if $major_version != $HsC_major_version;
40 print STDERR "$Pgm: consistency warning: minor version not $HsC_minor_version:\n$_\n"
41 if $minor_version != $HsC_minor_version;
43 print STDERR "$Pgm: consistency error: not options $opts -- $HsC_consist_options:\n$_\n"
44 if $opts ne $HsC_consist_options;
46 } else { # phase is cc ...
48 print STDERR "$Pgm: consistency error: major version not $Cc_major_version:\n$_\n"
49 if $major_version != $Cc_major_version;
50 print STDERR "$Pgm: consistency warning: minor version not $Cc_minor_version:\n$_\n"
51 if $minor_version != $Cc_minor_version;
54 print STDERR "$Pgm: consistency error: not options $Cc_consist_options:\n$_\n"
55 if $opts ne $Cc_consist_options;
58 print STDERR "$Pgm: consistency-checking: unrecognised `what' line:\n$_\n";
61 close(CONSIST) || &tidy_up_and_die(1,"Failed in running $Nm (consistency checking)\n");
64 # make "require"r happy...