--- a/imgtools/romtools/maksym/hpsym.pl Wed Jun 16 16:51:40 2010 +0300
+++ b/imgtools/romtools/maksym/hpsym.pl Wed Jun 23 16:56:47 2010 +0800
@@ -1,196 +1,189 @@
-#
-# Copyright (c) 1999-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:
-# munge maksym.log into form suitable for an HP logic analyser
-# History
-# 0.1 08/06/99 First release.
-# 0.2 09/06/99 Always include symbols from E32 and device drivers.
-# 0.3 15/06/99 Added rombase flag & argument.
-# 0.4 11/11/99 Remove c++filt step. Ensure symbols don't contain spaces.
-#
-
-# Globals
-my $rombase = 0x50000000;
-my @executables = ( 'euser' );
-
-my $maksym = 'maksym.log';
-my $gpa = 'symbols.gpa';
-my $arg;
-my $skip;
-
-# Standard e32toolp path scanning
-use FindBin; # for FindBin::Bin
-
-my $PerlLibPath; # fully qualified pathname of the directory containing our Perl modules
-
-BEGIN {
-# check user has a version of perl that will cope
- require 5.005_03;
-# establish the path to the Perl libraries: currently the same directory as this script
- $PerlLibPath = $FindBin::Bin; # X:/epoc32/tools
- $PerlLibPath =~ s/\//\\/g; # X:\epoc32\tools
- $PerlLibPath .= "\\";
-}
-
-use lib $PerlLibPath;
-use Modload;
-Load_SetModulePath($PerlLibPath);
-
-if (@ARGV)
- {
- $maksym = shift;
- if ($maksym =~ /^-[h\?]$/i)
- {
- &help;
- }
- elsif ($maksym =~ /^(-r)/i)
- {
- if (@ARGV)
- {
- $rombase=hex(shift);
- if (@ARGV)
- {
- $maksym = shift;
- }
- else
- {
- print "\nError: missing <infile> argument.\n";
- &usage;
- exit 1;
- }
- }
- else
- {
- print "\nError: rombase flag '-r' requires an argument.\n";
- &usage;
- exit 1;
- }
- }
- elsif ($maksym =~ /^(-.*)/)
- {
- print "\nError: invalid flag '$1'\n.";
- &usage;
- exit 1;
- }
-
- if (@ARGV)
- {
- my $file;
-
- $gpa = shift;
-
- foreach $file (@ARGV)
- {
- push @executables, quotemeta($file);
- }
- }
- }
-else
- {
- &help;
- }
-
-open (GPA, ">$gpa") or die "Can't write to '$gpa'";
-open (LOG, "$maksym") or die "Can't read '$maksym'";
-
-while (<LOG>)
- {
- if (/^From\s+\S+\\(.+)\\.+\\(.+)$/)
- {
- # Found a new file
- $abi = $1;
- $file = $2;
-
- # Decode this file if it's kernel-side or matches the supplied regexp
- if ($abi =~ /^(M|S)/i)
- {
- $skip = 0;
- }
- else
- {
- $skip = 1;
- foreach $re (@executables)
- {
- $skip = 0 if ($file =~ /$re/i);
- }
- }
- print "$file\n" if not $skip;
- }
- elsif (!/^$/ && !$skip)
- {
- /^(\S*)\s*(\S*)\s*(.*)$/;
- $addr=hex($1) - $rombase;
- $len=(hex($2)<0) ? 4 : hex($2);
- $name = $3;
- $name =~ s/\(.*//; # remove arguments and any const qualifier
-
- # remove spaces from symbol names
- if ($name =~ 'global constructors keyed to (.*)')
- {
- $name = $1.'_CTOR';
- }
- elsif ($name =~ 'global destructors keyed to (.*)')
- {
- $name = $1.'_DTOR';
- }
- elsif ($name =~ '(.*) virtual table')
- {
- $name = $1.'_VTBL';
- }
- else
- {
- $name =~ s/ /_/g;
- }
- print GPA "$name\t", sprintf('%08x', $addr), '..',
- sprintf('%08x', $addr+$len-1), "\n";
- }
- }
-
-close LOG;
-close GPA;
-exit 0;
-
-
-sub help ()
- {
- my $build;
-
- &Load_ModuleL('E32TPVER');
- print "\nhpsym - Produce symbolic info in \"HP GPA Symbol File Format\"" .
- " suitable for use\n with a HP logic analyser (Build ",
- &E32tpver, ")\n";
- &usage;
- exit 0;
- }
-
-sub usage ()
- {
- print <<EOF
-
-Usage:
- hpsym [-r <rombase>] <logfile> [<outfile> [<executables>]]
-
-Where:
- <rombase> Offset in hex of logical address from physical address of ROM.
- Defaults to 50000000. Use 0 for single-process builds.
- <logfile> Log from maksym tool.
- <outfile> Output filename. Default is 'symbols.gpa'. Use - for stdout.
- <executables> Names of additional executables to list the symbols of.
- ASSP-specific executables and EUSER are always included.
-
-Example:
- hpsym maksym.log symbols.gpa efile efsrv .fsy
-
-EOF
- }
+#
+# Copyright (c) 1999-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:
+# munge maksym.log into form suitable for an HP logic analyser
+# History
+# 0.1 08/06/99 First release.
+# 0.2 09/06/99 Always include symbols from E32 and device drivers.
+# 0.3 15/06/99 Added rombase flag & argument.
+# 0.4 11/11/99 Remove c++filt step. Ensure symbols don't contain spaces.
+#
+
+# Globals
+my $rombase = 0x50000000;
+my @executables = ( 'euser' );
+
+my $maksym = 'maksym.log';
+my $gpa = 'symbols.gpa';
+my $arg;
+my $skip;
+
+# Standard e32toolp path scanning
+use FindBin; # for FindBin::Bin
+
+BEGIN {
+# check user has a version of perl that will cope
+ require 5.005_03;
+}
+
+# Version
+my $MajorVersion = 1;
+my $MinorVersion = 1;
+my $PatchVersion = 0;
+
+if (@ARGV)
+ {
+ $maksym = shift;
+ if ($maksym =~ /^-[h\?]$/i)
+ {
+ &help;
+ }
+ elsif ($maksym =~ /^(-r)/i)
+ {
+ if (@ARGV)
+ {
+ $rombase=hex(shift);
+ if (@ARGV)
+ {
+ $maksym = shift;
+ }
+ else
+ {
+ print "\nError: missing <infile> argument.\n";
+ &usage;
+ exit 1;
+ }
+ }
+ else
+ {
+ print "\nError: rombase flag '-r' requires an argument.\n";
+ &usage;
+ exit 1;
+ }
+ }
+ elsif ($maksym =~ /^(-.*)/)
+ {
+ print "\nError: invalid flag '$1'\n.";
+ &usage;
+ exit 1;
+ }
+
+ if (@ARGV)
+ {
+ my $file;
+
+ $gpa = shift;
+
+ foreach $file (@ARGV)
+ {
+ push @executables, quotemeta($file);
+ }
+ }
+ }
+else
+ {
+ &help;
+ }
+
+open (GPA, ">$gpa") or die "Can't write to '$gpa'";
+open (LOG, "$maksym") or die "Can't read '$maksym'";
+
+while (<LOG>)
+ {
+ if (/^From\s+\S+\\(.+)\\.+\\(.+)$/)
+ {
+ # Found a new file
+ $abi = $1;
+ $file = $2;
+
+ # Decode this file if it's kernel-side or matches the supplied regexp
+ if ($abi =~ /^(M|S)/i)
+ {
+ $skip = 0;
+ }
+ else
+ {
+ $skip = 1;
+ foreach $re (@executables)
+ {
+ $skip = 0 if ($file =~ /$re/i);
+ }
+ }
+ print "$file\n" if not $skip;
+ }
+ elsif (!/^$/ && !$skip)
+ {
+ /^(\S*)\s*(\S*)\s*(.*)$/;
+ $addr=hex($1) - $rombase;
+ $len=(hex($2)<0) ? 4 : hex($2);
+ $name = $3;
+ $name =~ s/\(.*//; # remove arguments and any const qualifier
+
+ # remove spaces from symbol names
+ if ($name =~ 'global constructors keyed to (.*)')
+ {
+ $name = $1.'_CTOR';
+ }
+ elsif ($name =~ 'global destructors keyed to (.*)')
+ {
+ $name = $1.'_DTOR';
+ }
+ elsif ($name =~ '(.*) virtual table')
+ {
+ $name = $1.'_VTBL';
+ }
+ else
+ {
+ $name =~ s/ /_/g;
+ }
+ print GPA "$name\t", sprintf('%08x', $addr), '..',
+ sprintf('%08x', $addr+$len-1), "\n";
+ }
+ }
+
+close LOG;
+close GPA;
+exit 0;
+
+
+sub help ()
+ {
+ my $build;
+
+ print "\nhpsym - Produce symbolic info in \"HP GPA Symbol File Format\"" .
+ " suitable for use\n with a HP logic analyser V${MajorVersion}.${MinorVersion}.${PatchVersion}\n";
+ &usage;
+ exit 0;
+ }
+
+sub usage ()
+ {
+ print <<EOF
+
+Usage:
+ hpsym [-r <rombase>] <logfile> [<outfile> [<executables>]]
+
+Where:
+ <rombase> Offset in hex of logical address from physical address of ROM.
+ Defaults to 50000000. Use 0 for single-process builds.
+ <logfile> Log from maksym tool.
+ <outfile> Output filename. Default is 'symbols.gpa'. Use - for stdout.
+ <executables> Names of additional executables to list the symbols of.
+ ASSP-specific executables and EUSER are always included.
+
+Example:
+ hpsym maksym.log symbols.gpa efile efsrv .fsy
+
+EOF
+ }