#!/usr/bin/perl | |
# | |
# Copyright Statement: | |
# -------------------- | |
# This software is protected by Copyright and the information contained | |
# herein is confidential. The software may not be copied and the information | |
# contained herein may not be used or disclosed except with the written | |
# permission of MediaTek Inc. (C) 2006 | |
# | |
# BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES | |
# THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") | |
# RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON | |
# AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, | |
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF | |
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. | |
# NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE | |
# SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR | |
# SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH | |
# THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO | |
# NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S | |
# SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. | |
# | |
# BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE | |
# LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, | |
# AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, | |
# OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO | |
# MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. | |
# | |
# THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE | |
# WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF | |
# LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND | |
# RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER | |
# THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). | |
# | |
#***************************************************************************** | |
#* | |
#* Filename: | |
#* --------- | |
#* QueryDiscardedSym.pl | |
#* | |
#* Project: | |
#* -------- | |
#* | |
#* | |
#* Description: | |
#* ------------ | |
#* | |
#* | |
#* | |
#* Author: | |
#* ------- | |
#* Carl Kao (mtk08237) | |
#* | |
#*------------------------------------------------------------------------------ | |
#* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! | |
#*============================================================================ | |
#****************************************************************************/ | |
use strict; | |
BEGIN { push @INC, "./" , '../', './tools/', './tools/MemoryUtility/' } | |
use MapFileParser; | |
my ($option, $file1, $file2) = @ARGV; | |
if(($option eq "-Q") || ($option eq "-q")) | |
{ | |
MapFileParser::ParseMAP($file1); | |
my %discard; | |
MapFileParser::GetDiscardSymbol(\%discard); | |
ListDiscardedSymbols(\%discard); | |
} | |
elsif(($option eq "-C") || ($option eq "-c")) | |
{ | |
MapFileParser::ParseMAP($file1); | |
my %discard1; | |
MapFileParser::GetDiscardSymbol(\%discard1); | |
MapFileParser::ParseMAP($file2); | |
my %discard2; | |
MapFileParser::GetDiscardSymbol(\%discard2); | |
DiffDiscardedSymbols(\%discard1, \%discard2); | |
} | |
sub ListDiscardedSymbols | |
{ | |
my ($DiscardSym_href) = @_; | |
print "SymbolName Size \n"; | |
print "*********************************************************************************************************************\n"; | |
foreach my $key (sort keys %$DiscardSym_href) | |
{ | |
$~ = "AAA"; | |
format AAA = | |
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< | |
$key,$DiscardSym_href->{$key} | |
. | |
write; | |
} | |
} | |
sub DiffDiscardedSymbols | |
{ | |
my ($DiscardSym1_href, $DiscardSym2_href) = @_; | |
my %CompareDiscard; | |
foreach my $key1 (sort keys %$DiscardSym1_href) | |
{ | |
$CompareDiscard{$key1} = [$DiscardSym1_href->{$key1}, ""]; | |
} | |
foreach my $key2 (keys %$DiscardSym2_href) | |
{ | |
if(!exists $CompareDiscard{$key2}) | |
{ | |
$CompareDiscard{$key2} = ["", $DiscardSym2_href->{$key2}]; | |
} | |
else | |
{ | |
$CompareDiscard{$key2}->[1] = $DiscardSym2_href->{$key2}; | |
} | |
} | |
print " $file1 \nvs. $file2\n"; | |
print "Size1 Size2 SymbolName \n"; | |
print "*********************************************************************************************************************\n"; | |
my ($nTotalSize1, $nTotalSize2) = (0,0); | |
foreach my $key (sort keys %CompareDiscard) | |
{ | |
# print $key, $CompareDiscard{$key}->[0] , $CompareDiscard{$key}->[1] ."\n"; | |
next if($CompareDiscard{$key}[0] eq $CompareDiscard{$key}[1]); | |
$nTotalSize1 += $CompareDiscard{$key}[0]; | |
$nTotalSize2 += $CompareDiscard{$key}[1]; | |
$~ = "SYMBOLS"; | |
format SYMBOLS = | |
@<<<<<<<<<<<<@<<<<<<<<<<<<@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< | |
$CompareDiscard{$key}[0],$CompareDiscard{$key}[1],$key | |
. | |
write; | |
} | |
print "*********************************************************************************************************************\nTotal\n"; | |
$~ = "TOTALDIFF"; | |
format TOTALDIFF = | |
@<<<<<<<<<<<<@<<<<<<<<<<<< | |
$nTotalSize1,$nTotalSize2 | |
. | |
write; | |
} |