/usr/src/blcr-0.8.5/contrib/cr_depmod is in blcr-dkms 0.8.5-2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #!/usr/bin/perl
# Berkeley Lab Checkpoint/Restart (BLCR) for Linux is Copyright (c)
# 2007, The Regents of the University of California, through Lawrence
# Berkeley National Laboratory (subject to receipt of any required
# approvals from the U.S. Dept. of Energy). All rights reserved.
#
# Portions may be copyrighted by others, as may be noted in specific
# copyright notices within specific files.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# This script is a depmod replacement
# It expects the System.map file on STDIN and the modules to check as args
use strict vars;
my $result = 0;
my %exports = ();
my %imports = ();
my $file;
my $nm = $ENV{'NM'} || 'nm -B';
# Get exported symbols from System.map (or nm vmlinux).
$exports{__this_module} = 1;
while (<STDIN>) {
if (/ksymtab_(.*)$/) { $exports{$1} = 1; }
# The following is a HACK to deal with SPARC linker entries for global registers
elsif (/sparc_cpu_type/) { $exports{'current_thread_info_reg'} = 1; }
}
# Scan module files for both exports and imports, striping modversions
for $file (@ARGV) {
(my $shortname = $file) =~ s,^.*/,,;
open NM, "$nm $file |" || die "failed to 'nm $file'";
while (<NM>) {
if (/ksymtab_(.*)$/) {
$exports{$1} = 1;
} elsif (/\sU\s+\.?(.+?)(_R(smp_)?[[:xdigit:]]{8})?$/) {
$imports{$1} = $shortname;
}
}
}
# Output any unresolved imports
foreach (keys (%imports)) {
next if (exists $exports{$_});
print "cr_depmod: $_\tunresolved in $imports{$_}\n";
$result = 1;
}
exit $result;
|