| Server IP : 81.2.241.106 / Your IP : 216.73.216.165 Web Server : Apache/2.4.67 (Debian) System : Linux tranq-f.bakta.org 5.10.0-45-amd64 #1 SMP Debian 5.10.259-1 (2026-07-02) x86_64 User : lisky ( 1002) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/src/packages/openssl-1.0.1k/util/ |
Upload File : |
#!/usr/local/bin/perl
# we make up an array of
# $file{function_name}=filename;
# $unres{filename}="func1 func2 ...."
$debug=1;
#$nm_func="parse_linux";
$nm_func="parse_solaris";
foreach (@ARGV)
{
&$nm_func($_);
}
foreach $file (sort keys %unres)
{
@a=split(/\s+/,$unres{$file});
%ff=();
foreach $func (@a)
{
$f=$file{$func};
$ff{$f}=1 if $f ne "";
}
foreach $a (keys %ff)
{ $we_need{$file}.="$a "; }
}
foreach $file (sort keys %we_need)
{
# print " $file $we_need{$file}\n";
foreach $bit (split(/\s+/,$we_need{$file}))
{ push(@final,&walk($bit)); }
foreach (@final) { $fin{$_}=1; }
@final="";
foreach (sort keys %fin)
{ push(@final,$_); }
print "$file: @final\n";
}
sub walk
{
local($f)=@_;
local(@a,%seen,@ret,$r);
@ret="";
$f =~ s/^\s+//;
$f =~ s/\s+$//;
return "" if ($f =~ "^\s*$");
return(split(/\s/,$done{$f})) if defined ($done{$f});
return if $in{$f} > 0;
$in{$f}++;
push(@ret,$f);
foreach $r (split(/\s+/,$we_need{$f}))
{
push(@ret,&walk($r));
}
$in{$f}--;
$done{$f}=join(" ",@ret);
return(@ret);
}
sub parse_linux
{
local($name)=@_;
open(IN,"nm $name|") || die "unable to run 'nn $name':$!\n";
while (<IN>)
{
chop;
next if /^\s*$/;
if (/^[^[](.*):$/)
{
$file=$1;
$file="$1.c" if /\[(.*).o\]/;
print STDERR "$file\n";
$we_need{$file}=" ";
next;
}
@a=split(/\s*\|\s*/);
next unless $#a == 7;
next unless $a[4] eq "GLOB";
if ($a[6] eq "UNDEF")
{
$unres{$file}.=$a[7]." ";
}
else
{
if ($file{$a[7]} ne "")
{
print STDERR "duplicate definition of $a[7],\n$file{$a[7]} and $file \n";
}
else
{
$file{$a[7]}=$file;
}
}
}
close(IN);
}
sub parse_solaris
{
local($name)=@_;
open(IN,"nm $name|") || die "unable to run 'nn $name':$!\n";
while (<IN>)
{
chop;
next if /^\s*$/;
if (/^(\S+):$/)
{
$file=$1;
#$file="$1.c" if $file =~ /^(.*).o$/;
print STDERR "$file\n";
$we_need{$file}=" ";
next;
}
@a=split(/\s*\|\s*/);
next unless $#a == 7;
next unless $a[4] eq "GLOB";
if ($a[6] eq "UNDEF")
{
$unres{$file}.=$a[7]." ";
print STDERR "$file needs $a[7]\n" if $debug;
}
else
{
if ($file{$a[7]} ne "")
{
print STDERR "duplicate definition of $a[7],\n$file{$a[7]} and $file \n";
}
else
{
$file{$a[7]}=$file;
print STDERR "$file has $a[7]\n" if $debug;
}
}
}
close(IN);
}