#!/usr/bin/perl
#
# Add libafs modules to the SymTable
#
# Created by:	Derek Atkins <warlord@MIT.EDU>

# The default SymTable:
$table="/usr/vice/etc/modload/SymTable.local";

sub makeTableEntry {
    my ($mod,$symtable) = @_;
    my ($sym,$symbol,$version,$f);

    $sym=`nm $mod | grep iget | sed -e 's/^[ 	]*U //'`;

    if ($sym =~ /^(.*)_R((?:smp)?(?:2gig)?_?[0-9a-f]{8})$/) {
      ($sym, $version) = ($1, $2);
    } else { $version = '--none--' }

    $mod =~ s#^.*libafs-(.*).o$#$1#;

    if ( "$version" eq "--none--" ) {
	print "No Symbol Version found: $sym\n";
    } else {
	open (ST, ">>$symtable") || die "Cannot write to $symtable";
	print ST "$sym\t$version\t-\t$mod\n";
	close (ST);
    fi
    }
}

sub usage {
    print "Usage: $0 [-f filename] module ...\n";
    exit 1;
}

while ($_=shift @ARGV) {
    if (m/^-/) {
	if (m/^-f/) {
	    $table=shift @ARGV;
	    next;
	}
	usage;
    }
    makeTableEntry ($_, $table);
}
