--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/buildrom/tools/Dep_Lister.pm Tue Oct 27 16:36:35 2009 +0000
@@ -0,0 +1,86 @@
+#
+# Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+# This package contains routines to find the static and dynamic dependencies of a binary.
+package Dep_Lister;
+
+use cdfparser;
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+ StaticDeps
+);
+
+use strict;
+
+# This subroutine evaluates the static dependencies of an E32 executable and returns the list of
+# binary names that this binary is dependent on (as found in its import table). If the input file
+# is not a valid E32 executable, this routine returns an 'undef'.
+sub StaticDeps()
+{
+ my ($file) = @_;
+ my @statdeps;
+
+ open PIPE, "elf2e32 --dump i --e32input=$file 2>&1 | ";
+ my $executable;
+ my $ver;
+ my $ext;
+ my $binary;
+ my $binaryInfoRef;
+ my $fileName;
+
+ if($file =~ /.*\\(\S+)/)
+ {
+ $fileName = $1;
+ }
+ while(<PIPE>)
+ {
+ if($_ =~ /(\d+) imports from (.*)\{(.*)\}\[?(.*)\]?\.(.*)/i)
+ {
+ my $skipLines = $1;
+ $executable = $2;
+ $ver = $3;
+ $ext = $5;
+
+ $binary = $executable . "." . $ext;
+
+ push @statdeps,$binary;
+
+# Each imported symbol's ordinal number is printed in these lines...
+# Skip them
+ if($skipLines > 0)
+ {
+ while(<PIPE>)
+ {
+ $skipLines--;
+ if($skipLines == 0 )
+ {
+ last;
+ }
+ }
+ }
+ }
+ elsif($_ =~ /elf2e32 : Error: .* is not a valid E32Image file/)
+ {
+# not an e32 image...mark the file as a data file
+ return undef;
+ }
+ }
+ close PIPE;
+ return (@statdeps);
+}
+
+1;