Home | History | Annotate | Download | only in abi-compliance-checker

Lines Matching refs:Level

297   source-level compatibility of a $SLIB_TYPE C/C++ library. The tool checks
300 and/or source-level compatibility: changes in calling stack, v-table changes,
771 -tolerance LEVEL
782 Enable highest tolerance level [1234].
9699 my ($Symbol, $SInfo, $Level, $LibVersion) = @_;
9701 if($Level eq "Dump")
9725 if($CheckHeadersOnly or $Level eq "Source")
9729 if($Level eq "Dump")
9741 elsif($Level eq "Source")
9745 elsif($Level eq "Binary")
9760 if($Level eq "Dump")
9778 elsif($Level eq "Source")
9788 elsif($Level eq "Binary")
10638 my $Level = $_[0];
10652 my @Affected = (keys(%{$ClassMethods{$Level}{1}{$ClassName}}));
10655 %{$CompatProblems{$Level}{$Symbol}{"Virtual_Table_Changed_Unknown"}{$ClassName}}=(
10665 my $Level = $_[0];
10687 $AddedInt_Virt{$Level}{$ClassName}{$Symbol} = 1;
10703 $RemovedInt_Virt{$Level}{$ClassName}{$Symbol} = 1;
10707 if($Level eq "Binary")
10708 { # Binary-level
10710 foreach my $AddedVFunc (keys(%{$AddedInt_Virt{$Level}{$ClassName}}))
10713 foreach my $RemovedVFunc (keys(%{$RemovedInt_Virt{$Level}{$ClassName}}))
10733 if(not isUsedClass($ClassId, 1, $Level))
10740 @Affected = (keys(%{$ClassMethods{$Level}{1}{$ClassName}}));
10750 if(not symbolFilter($AffectedInt, 1, "Affected", $Level)) {
10753 %{$CompatProblems{$Level}{$AffectedInt}{$ProblemType}{$tr_name{$AddedVFunc}}}=(
10794 if($Level eq "Binary") {
10797 if($Level eq "Source")
10840 if($Level eq "Binary")
10841 { # Binary-level
10858 my @Affected = keys(%{$ClassMethods{$Level}{1}{$ClassName}});
10863 push(@Affected, keys(%{$ClassMethods{$Level}{1}{$SubName}}));
10871 if(not symbolFilter($Interface, 1, "Affected", $Level)) {
10874 %{$CompatProblems{$Level}{$Interface}{$ProblemKind}{"this"}}=(
10896 if($Level eq "Binary")
10897 { # Binary-level
10914 my @Affected = keys(%{$ClassMethods{$Level}{1}{$ClassName}});
10919 push(@Affected, keys(%{$ClassMethods{$Level}{1}{$SubName}}));
10927 if(not symbolFilter($Interface, 1, "Affected", $Level)) {
10930 %{$CompatProblems{$Level}{$Interface}{$ProblemKind}{"this"}}=(
10940 if($Level eq "Binary")
10941 { # Binary-level
10954 foreach my $Interface (keys(%{$ClassMethods{$Level}{1}{$ClassName}}))
10956 if(not symbolFilter($Interface, 1, "Affected", $Level)) {
10959 %{$CompatProblems{$Level}{$Interface}{"Base_Class_Position"}{"this"}}=(
10969 foreach my $Interface (keys(%{$ClassMethods{$Level}{1}{$ClassName}}))
10971 if(not symbolFilter($Interface, 1, "Affected", $Level)) {
10974 %{$CompatProblems{$Level}{$Interface}{"Base_Class_Became_Non_Virtually_Inherited"}{"this->".$BaseName}}=(
10982 foreach my $Interface (keys(%{$ClassMethods{$Level}{1}{$ClassName}}))
10984 if(not symbolFilter($Interface, 1, "Affected", $Level)) {
10987 %{$CompatProblems{$Level}{$Interface}{"Base_Class_Became_Virtually_Inherited"}{"this->".$BaseName}}=(
11025 foreach my $Interface (keys(%{$ClassMethods{$Level}{1}{$ClassName}}))
11027 if(not symbolFilter($Interface, 1, "Affected", $Level)) {
11030 %{$CompatProblems{$Level}{$Interface}{$ProblemType}{"this->".$BaseType{"Name"}}}=(
11072 if(not symbolFilter($Symbol, 1, "Affected", $Level)) {
11077 foreach my $VirtFunc (keys(%{$AddedInt_Virt{$Level}{$BaseType{"Name"}}}))
11084 %{$CompatProblems{$Level}{$Symbol}{$ProblemType}{get_Signature($VirtFunc, 2)}}=(
11088 foreach my $VirtFunc (keys(%{$RemovedInt_Virt{$Level}{$BaseType{"Name"}}}))
11095 %{$CompatProblems{$Level}{$Symbol}{$ProblemType}{get_Signature($VirtFunc, 1)}}=(
11130 my ($ClassId, $LibVersion, $Level) = @_;
11136 if(keys(%{$ClassMethods{$Level}{$LibVersion}{$CName}}))
11145 my ($Interface, $Level) = @_;
11163 $CheckedTypes{$Level}{$CName} = 1;
11164 if($Level eq "Binary")
11165 { # Binary-level
11167 and not isUsedClass($Class_Id, 1, $Level))
11181 %{$CompatProblems{$Level}{$Interface}{"Virtual_Method_Became_Pure"}{$tr_name{$Func}}}=(
11189 %{$CompatProblems{$Level}{$Interface}{"Virtual_Method_Became_Non_Pure"}{$tr_name{$Func}}}=(
11196 if($Level eq "Binary")
11197 { # Binary-level
11199 foreach my $AddedVFunc (keys(%{$AddedInt_Virt{$Level}{$CName}}))
11206 %{$CompatProblems{$Level}{$Interface}{"Added_Pure_Virtual_Method"}{$tr_name{$AddedVFunc}}}=(
11216 %{$CompatProblems{$Level}{$Interface}{"Added_First_Virtual_Method"}{$tr_name{$AddedVFunc}}}=(
11232 %{$CompatProblems{$Level}{$Interface}{$ProblemType}{$tr_name{$AddedVFunc}}}=(
11243 %{$CompatProblems{$Level}{$Interface}{$ProblemType}{$tr_name{$AddedVFunc}}}=(
11266 if(not symbolFilter($ASymbol, 1, "Affected", $Level)) {
11270 $CheckedSymbols{$Level}{$ASymbol} = 1;
11271 %{$CompatProblems{$Level
11283 foreach my $RemovedVFunc (keys(%{$RemovedInt_Virt{$Level}{$CName}}))
11294 %{$CompatProblems{$Level}{$Interface}{"Removed_Last_Virtual_Method"}{$tr_name{$RemovedVFunc}}}=(
11327 if(not symbolFilter($ASymbol, 1, "Affected", $Level)) {
11335 $CheckedSymbols{$Level}{$ASymbol} = 1;
11336 %{$CompatProblems{$Level}{$ASymbol}{$ProblemType}{$tr_name{$RemovedVFunc}}}=(
11347 { # Source-level
11348 foreach my $AddedVFunc (keys(%{$AddedInt_Virt{$Level}{$CName}}))
11353 %{$CompatProblems{$Level}{$Interface}{"Added_Pure_Virtual_Method"}{$tr_name{$AddedVFunc}}}=(
11358 foreach my $RemovedVFunc (keys(%{$RemovedInt_Virt{$Level}{$CName}}))
11362 %{$CompatProblems{$Level}{$Interface}{"Removed_Pure_Virtual_Method"}{$tr_name{$RemovedVFunc}}}=(
11567 my ($Type1_Id, $Type2_Id, $Level) = @_;
11570 if(defined $Cache{"mergeTypes"}{$Level}{$Type1_Id}{$Type2_Id})
11572 return $Cache{"mergeTypes"}{$Level}{$Type1_Id}{$Type2_Id};
11589 return ($Cache{"mergeTypes"}{$Level}{$Type1_Id}{$Type2_Id} = {});
11597 $CheckedTypes{$Level}{$Type1{"Name"}} = 1;
11598 $CheckedTypes{$Level}{$Type1_Pure{"Name"}} = 1;
11617 return ($Cache{"mergeTypes"}{$Level}{$Type1_Id}{$Type2_Id} = \%SubProblems);
11701 if($Level eq "Binary"
11719 return ($Cache{"mergeTypes"}{$Level}{$Type1_Id}{$Type2_Id} = {});
11725 if(diffTypes($Base1_Pure{"Tid"}, $Base2_Pure{"Tid"}, $Level))
11767 return ($Cache{"mergeTypes"}{$Level}{$Type1_Id}{$Type2_Id} = \%SubProblems);
11776 if($Level eq "Binary"
11782 and keys(%{$ClassMethods{$Level}{1}{$Type1_Pure{"Name"}}}))
11809 my $Sub_SubProblems = mergeTypes($Type1_Pure{"BaseType"}, $Type2_Pure{"BaseType"}, $Level);
11944 if($Level eq "Source") {
11949 if($Level eq "Binary"
12022 if($Level eq "Source") {
12027 if($Level eq "Binary"
12051 if($Level eq "Binary"
12131 if($Level eq "Binary"
12204 my %Sub_SubChanges = detectTypeChange($MemberType1_Id, $MemberType2_Id, "Field", $Level);
12245 if($Level eq "Source")
12312 my $Sub_SubProblems = mergeTypes($MemberType1_Id, $MemberType2_Id, $Level);
12355 if($Level eq "Source") {
12360 if($Level eq "Binary"
12384 if($Level eq "Binary"
12423 my $FP_SubProblems = mergeTypes($PT1, $PT2, $Level);
12452 return ($Cache{"mergeTypes"}{$Level}{$Type1_Id}{$Type2_Id} = \%SubProblems);
12663 my ($Symbol, $LibVersion, $Type, $Level) = @_;
12784 if(not selectSymbol($Symbol, $CompleteSignature{$LibVersion}{$Symbol}, $Level, $LibVersion))
12788 if($Level eq "Binary")
12826 my $Level = $_[0];
12839 $AddedInt{$Level}{$Symbol} = 1;
12845 my $Level = $_[0];
12857 $RemovedInt{$Level}{$Symbol} = 1;
12863 my $Level = $_[0];
12864 foreach my $Symbol (sort keys(%{$AddedInt{$Level}}))
12868 next if(not symbolFilter($Symbol, 2, "Affected + InlineVirt", $Level));
12869 %{$CompatProblems{$Level}{$Symbol}{"Added_Symbol"}{""}}=();
12871 foreach my $Symbol (sort keys(%{$RemovedInt{$Level}}))
12880 if(not keys(%{$ClassMethods{$Level}{1}{$CName}}))
12893 next if(not symbolFilter($Symbol, 1, "Affected + InlineVirt", $Level));
12899 %{$CompatProblems{$Level}{$Symbol}{"Removed_Symbol"}{""}}=();
12914 my $Level = $_[0];
12917 if($Level eq "Source")
12964 $AddedInt{$Level}{$Symbol} = 1;
12971 my $Level = $_[0];
12976 if($Level eq "Source")
12994 and $Level eq "Source")
13078 $RemovedInt{$Level}{$Symbol} = 1;
13079 if($Level eq "Source")
13081 setAlternative($Symbol, $Level);
13089 my $Level = $_[0];
13090 foreach my $Symbol (sort keys(%{$AddedInt{$Level}}))
13094 next if(not symbolFilter($Symbol, 2, "Affected", $Level));
13095 if($Level eq "Binary")
13111 %{$CompatProblems{$Level}{$Symbol}{"Added_Symbol"}{""}}=();
13113 foreach my $Symbol (sort keys(%{$RemovedInt{$Level}}))
13117 next if(not symbolFilter($Symbol, 1, "Affected", $Level));
13118 if($Level eq "Binary")
13136 %{$CompatProblems{$Level}{$Symbol}{"Removed_Const_Overload"}{"this"}}=(
13146 %{$CompatProblems{$Level}{$Symbol}{"Removed_Symbol"}{""}}=();
13291 my $Level = $_[0];
13294 mergeBases($Level);
13297 foreach my $Symbol (sort keys(%{$AddedInt{$Level}}))
13307 if(not symbolFilter($Symbol, 2, "Affected", $Level)) {
13325 %{$CompatProblems{$Level}{$OverriddenMethod}{"Overridden_Virtual_Method"}{$tr_name{$Symbol}}}=(
13335 foreach my $Symbol (sort keys(%{$RemovedInt{$Level}}))
13349 if(not symbolFilter($Symbol, 1, "Affected", $Level)) {
13352 $CheckedSymbols{$Level}{$Symbol} = 1;
13364 %{$CompatProblems{$Level}{$Symbol}{"Overridden_Virtual_Method_B"}{$tr_name{$OverriddenMethod}}}=(
13373 if($Level eq "Binary"
13378 if($AddedInt{$Level}{$NewSym})
13384 %{$CompatProblems{$Level}{$Symbol}{"Symbol_Became_Static"}{$tr_name{$Symbol}}}=(
13391 %{$CompatProblems{$Level}{$Symbol}{"Symbol_Became_Non_Static"}{$tr_name{$Symbol}}}=(
13401 %{$CompatProblems{$Level}{$Symbol}{"Symbol_Became_Virtual"}{$tr_name{$Symbol}}}=(
13408 %{$CompatProblems{$Level}{$Symbol}{"Symbol_Became_Non_Virtual"}{$tr_name{$Symbol}}}=(
13424 %{$CompatProblems{$Level}{$Symbol}{$ProblemType}{$tr_name{$Symbol}}}=(
13464 %{$CompatProblems{$Level}{$Symbol}{"Method_Became_Non_Const"}{$tr_name{$Symbol}}}=(
13474 %{$CompatProblems{$Level}{$Symbol}{"Method_Became_Const"}{$tr_name{$Symbol}}}=(
13484 %{$CompatProblems{$Level}{$Symbol}{"Method_Became_Non_Volatile"}{$tr_name{$Symbol}}}=(
13493 %{$CompatProblems{$Level}{$Symbol}{"Method_Became_Volatile"}{$tr_name{$Symbol}}}=(
13501 %{$CompatProblems{$Level}{$Symbol}{"Symbol_Changed_Parameters"}{$tr_name{$Symbol}}}=(
13516 if($Level eq "Source")
13539 if($Level eq "Source"
13575 if(not symbolFilter($Symbol, 1, "Affected + InlineVirt", $Level))
13579 if(not symbolFilter($PSymbol, 2, "Affected + InlineVirt", $Level))
13599 %{$CompatProblems{$Level}{$Symbol}{"Global_Data_Value_Changed"}{""}}=(
13611 %{$CompatProblems{$Level}{$Symbol}{getSymKind($Symbol, 1)."_Became_Private"}{""}}=(
13617 %{$CompatProblems{$Level}{$Symbol}{getSymKind($Symbol, 1)."_Became_Protected"}{""}}=(
13623 %{$CompatProblems{$Level}{$Symbol}{getSymKind($Symbol, 1)."_Became_Public"}{""}}=(
13628 mergeVirtualTables($Symbol, $Level);
13649 %{$CompatProblems{$Level}{$Symbol}{"Method_Became_Static"}{""}}=(
13656 %{$CompatProblems{$Level}{$Symbol}{"Method_Became_Non_Static"}{""}}=(
13663 if($Level eq "Binary")
13667 { # top-level virtual methods only
13678 if(isUsedClass($Class_Id, 1, $Level))
13683 if(not symbolFilter($ASymbol, 1, "Affected", $Level)) {
13686 %{$CompatProblems{$Level}{$ASymbol}{$ProblemType}{$tr_name{$MnglName}}}=(
13703 $CheckedSymbols{$Level}{$Symbol} = 1;
13709 mergeParameters($Symbol, $PSymbol, $ParamPos, $ParamPos, $Level, 1);
13741 %{$CompatProblems{$Level}{$Symbol}{$ProblemType}{showPos($ParamPos)." Parameter"}}=(
13757 %{$CompatProblems{$Level}{$Symbol}{"Renamed_Parameter"}{showPos($ParamPos)." Parameter"}}=(
13772 %{$CompatProblems{$Level}{$Symbol}{$ProblemType}{showPos($ParamPos)." Parameter"}}=(
13792 mergeParameters($Symbol, $PSymbol, $ParamPos, $ParamPos, $Level, 0);
13823 %{$CompatProblems{$Level}{$Symbol}{$ProblemType}{showPos($ParamPos)." Parameter"}}=(
13839 %{$CompatProblems{$Level}{$Symbol}{"Renamed_Parameter"}{showPos($ParamPos)." Parameter"}}=(
13854 %{$CompatProblems{$Level}{$Symbol}{$ProblemType}{showPos($ParamPos)." Parameter"}}=(
13867 my %RC_SubProblems = detectTypeChange($ReturnType1_Id, $ReturnType2_Id, "Return", $Level);
13926 if($Level ne "Source"
13940 if($Level ne "Source"
13947 if($Level eq "Binary"
14034 $CompatProblems{$Level}{$Symbol}{$ProblemType}{"retval"} = $RC_SubProblems{$SubProblemType};
14040 my $Sub_SubProblems = mergeTypes($ReturnType1_Id, $ReturnType2_Id, $Level);
14046 if($Level eq "Binary")
14092 $CompatProblems{$Level}{$Symbol}{$SubProblemType}{$NewLocation} = $AddProblems->{$SubProblemType}{$SubLocation};
14104 $CompatProblems{$Level}{$Symbol}{$SubProblemType}{$NewLocation} = $Sub_SubProblems->{$SubProblemType}{$SubLocation};
14120 my $Sub_SubProblems = mergeTypes($ThisPtr1_Id, $ThisPtr2_Id, $Level);
14126 $CompatProblems{$Level}{$Symbol}{$SubProblemType}{$NewLocation} = $Sub_SubProblems->{$SubProblemType}{$SubLocation};
14132 if($Level eq "Binary") {
14133 mergeVTables($Level);
14135 foreach my $Symbol (keys(%{$CompatProblems{$Level}})) {
14136 $CheckedSymbols{$Level}{$Symbol} = 1;
14318 my ($Symbol, $PSymbol, $ParamPos1, $ParamPos2, $Level, $ChkRnmd) = @_;
14348 if($Level eq "Binary")
14355 %{$CompatProblems{$Level}{$Symbol}{"Parameter_Became_Non_Register"}{$Parameter_Location}}=(
14362 %{$CompatProblems{$Level}{$Symbol}{"Parameter_Became_Register"}{$Parameter_Location}}=(
14383 %{$CompatProblems{$Level}{$Symbol}{"Parameter_Changed_Register"}{$Parameter_Location}}=(
14392 %{$CompatProblems{$Level}{$Symbol}{"Parameter_From_Register"}{$Parameter_Location}}=(
14399 %{$CompatProblems{$Level}{$Symbol}{"Parameter_To_Register"}{$Parameter_Location}}=(
14419 %{$CompatProblems{$Level}{$Symbol}{"Parameter_Changed_Offset"}{$Parameter_Location}}=(
14466 %{$CompatProblems{$Level}{$Symbol}{"Parameter_Default_Value_Changed"}{$Parameter_Location}}=(
14475 %{$CompatProblems{$Level}{$Symbol}{"Parameter_Default_Value_Removed"}{$Parameter_Location}}=(
14484 %{$CompatProblems{$Level}{$Symbol}{"Parameter_Default_Value_Added"}{$Parameter_Location}}=(
14497 %{$CompatProblems{$Level}{$Symbol}{"Renamed_Parameter"}{showPos($ParamPos1)." Parameter"}}=(
14508 my %SubProblems = detectTypeChange($PType1_Id, $PType2_Id, "Parameter", $Level);
14557 if($Level eq "Source")
14597 elsif($Level eq "Binary" and ($SubProblemType eq "Parameter_Type_And_Size"
14646 %{$CompatProblems{$Level}{$Symbol}{$NewProblemType}{$Parameter_Location}}=(
14650 @{$CompatProblems{$Level}{$Symbol}{$NewProblemType}{$Parameter_Location}}{keys(%{$SubProblems{$SubProblemType}})} = values %{$SubProblems{$SubProblemType}};
14656 my $Sub_SubProblems = mergeTypes($PType1_Id, $PType2_Id, $Level);
14670 $CompatProblems{$Level}{$Symbol}{$NewProblemType}{$NewLocation} = $Sub_SubProblems->{$SubProblemType}{$SubLocation};
14731 my ($Type1_Id, $Type2_Id, $Level) = @_;
14801 if($Level eq "Source")
14838 if($Level eq "Source")
14856 { # different pointer level
14864 if(diffTypes($BT1{"Tid"}, $BT2{"Tid"}, $Level))
14882 my ($Type1_Id, $Type2_Id, $Prefix, $Level) = @_;
14945 if($Level eq "Binary"
14957 if(diffTypes($Type1_Base{"Tid"}, $Type2_Base{"Tid"}, $Level))
14996 if($Level eq "Binary"
15008 if(diffTypes($Type1_Id, $Type2_Id, $Level))
15033 if($Level eq "Source")
15060 my %SubProblems = detectTypeChange($Type1_Base{"Tid"}, $Type2_Base{"Tid"}, $Prefix, $Level);
15667 my $Level = $_[0];
15672 or $Level eq "Source")
15677 if($Level eq "Source") {
15680 elsif($Level eq "Binary") {
15830 my ($TargetSeverity, $Level) = @_;
15833 foreach my $Type_Name (sort keys(%{$TypeChanges{$Level}}))
15836 foreach my $Kind (keys(%{$TypeChanges{$Level}{$Type_Name}}))
15838 foreach my $Location (keys(%{$TypeChanges{$Level}{$Type_Name}{$Kind}}))
15840 my $Target = $TypeChanges{$Level}{$Type_Name}{$Kind}{$Location}{"Target"};
15841 my $Severity = $CompatRules{$Level}{$Kind}{"Severity"};
15861 my $Level = $_[0];
15864 %{$RESULT{$Level}} = (
15869 foreach my $Interface (sort keys(%{$CompatProblems{$Level}}))
15871 foreach my $Kind (keys(%{$CompatProblems{$Level}{$Interface}}))
15873 if(not defined $CompatRules{$Level}{$Kind})
15875 if(not $UnknownRules{$Level}{$Kind})
15877 printMsg("WARNING", "unknown rule \"$Kind\" (\"$Level\")");
15878 $UnknownRules{$Level}{$Kind}=1;
15880 delete($CompatProblems{$Level}{$Interface}{$Kind});
15884 foreach my $Constant (sort keys(%{$CompatProblems_Constants{$Level}}))
15886 foreach my $Kind (keys(%{$CompatProblems_Constants{$Level}{$Constant}}))
15888 if(not defined $CompatRules{$Level}{$Kind})
15890 if(not $UnknownRules{$Level}{$Kind})
15892 printMsg("WARNING", "unknown rule \"$Kind\" (\"$Level\")");
15893 $UnknownRules{$Level}{$Kind}=1;
15895 delete($CompatProblems_Constants{$Level}{$Constant}{$Kind});
15899 foreach my $Interface (sort keys(%{$CompatProblems{$Level}}))
15901 foreach my $Kind (sort keys(%{$CompatProblems{$Level}{$Interface}}))
15903 if($CompatRules{$Level}{$Kind}{"Kind"} eq "Symbols")
15905 foreach my $Location (sort keys(%{$CompatProblems{$Level}{$Interface}{$Kind}}))
15907 my $Severity = $CompatRules{$Level}{$Kind}{"Severity"};
15914 $TotalAffected{$Level}{$Interface} = $Severity;
15932 $TotalAffected{$Level}{$Interface} = $Severity;
15942 foreach my $Interface (sort keys(%{$CompatProblems{$Level}}))
15944 my @Kinds = sort keys(%{$CompatProblems{$Level}{$Interface}});
15947 if($CompatRules{$Level}{$Kind}{"Kind"} eq "Types")
15949 my @Locs = sort {cmpLocations($b, $a)} sort keys(%{$CompatProblems{$Level}{$Interface}{$Kind}});
15952 my $Type_Name = $CompatProblems{$Level}{$Interface}{$Kind}{$Location}{"Type_Name"};
15953 my $Target = $CompatProblems{$Level}{$Interface}{$Kind}{$Location}{"Target"};
15960 $TypeChanges{$Level}{$Type_Name}{$Kind}{$Location} = $CompatProblems{$Level}{$Interface}{$Kind}{$Location};
15962 my $Severity = $CompatRules{$Level}{$Kind}{"Severity"};
15967 if(my $Sev = $TotalAffected{$Level}{$Interface})
15970 $TotalAffected{$Level}{$Interface} = $Severity;
15974 $TotalAffected{$Level}{$Interface} = $Severity;
15982 $T_Problems_High = get_TypeProblems_Count("High", $Level);
15983 $T_Problems_Medium = get_TypeProblems_Count("Medium", $Level);
15984 $T_Problems_Low = get_TypeProblems_Count("Low", $Level);
15985 $T_Other = get_TypeProblems_Count("Safe", $Level);
15988 my $SCount = keys(%{$CheckedSymbols{$Level}});
16000 foreach (keys(%{$TotalAffected{$Level}})) {
16001 $RESULT{$Level}{"Affected"}+=$Weight{$TotalAffected{$Level}{$_}};
16003 $RESULT{$Level}{"Affected"} = $RESULT{$Level}{"Affected"}/$SCount;
16006 $RESULT{$Level}{"Affected"} = 0;
16009 $RESULT{$Level}{"Affected"} = show_number($RESULT{$Level}{"Affected"});
16010 if($RESULT{$Level}{"Affected"}>=100) {
16011 $RESULT{$Level}{"Affected"} = 100;
16014 $RESULT{$Level}{"Problems"} += $Removed;
16015 $RESULT{$Level}{"Problems"} += $T_Problems_High + $I_Problems_High;
16016 $RESULT{$Level}{"Problems"} += $T_Problems_Medium + $I_Problems_Medium;
16018 $RESULT{$Level}{"Problems"} += $T_Problems_Low + $I_Problems_Low;
16021 $RESULT{$Level}{"Warnings"} += $T_Problems_Low + $I_Problems_Low;
16024 foreach my $Constant (keys(%{$CompatProblems_Constants{$Level}}))
16026 foreach my $Kind (keys(%{$CompatProblems_Constants{$Level}{$Constant}}))
16028 my $Severity = $CompatRules{$Level}{$Kind}{"Severity"};
16043 $RESULT{$Level}{"Problems"} += $C_Problems_Low;
16046 $RESULT{$Level}{"Warnings"} += $C_Problems_Low;
16049 if($RESULT{$Level}{"Problems"}
16050 and $RESULT{$Level}{"Affected"}) {
16051 $RESULT{$Level}{"Verdict"} = "incompatible";
16054 $RESULT{$Level}{"Verdict"} = "compatible";
16057 my $TotalTypes = keys(%{$CheckedTypes{$Level}});
16129 $TestResults .= " <symbols>".(keys(%{$CheckedSymbols{$Level}}) - keys(%ExtendedSymbols))."</symbols>\n";
16132 $TestResults .= " <verdict>".$RESULT{$Level}{"Verdict"}."</verdict>\n";
16133 $TestResults .= " <affected>".$RESULT{$Level}{"Affected"}."</affected>\n";
16189 if($Level eq "Binary"
16241 if($Level eq "Binary") {
16244 elsif($Level eq "Source") {
16273 $TestResults .= "<tr><th>Total Symbols / Types</th><td>".(keys(%{$CheckedSymbols{$Level}}) - keys(%ExtendedSymbols))." / ".$TotalTypes."</td></tr>\n";
16275 my $META_DATA = "verdict:".$RESULT{$Level}{"Verdict"}.";";
16277 $META_DATA = "kind:".lc($Level).";".$META_DATA;
16280 my $BC_Rate = show_number(100 - $RESULT{$Level}{"Affected"});
16283 if($RESULT{$Level}{"Verdict"} eq "incompatible")
16301 $META_DATA .= "affected:".$RESULT{$Level}{"Affected"}.";";# in percents
16311 $Added_Link = "<a href='#".$Level."_Added' style='color:Blue;'>$Added</a>";
16324 $Removed_Link = "<a href='#".$Level."_Removed' style='color:Blue;'>$Removed</a>"
16335 $TH_Link = "<a href='#".get_Anchor("Type", $Level, "High")."' style='color:Blue;'>$T_Problems_High</a>" if($T_Problems_High>0);
16341 $TM_Link = "<a href='#".get_Anchor("Type", $Level, "Medium")."' style='color:Blue;'>$T_Problems_Medium</a>" if($T_Problems_Medium>0);
16346 $TL_Link = "<a href='#".get_Anchor("Type", $Level, "Low")."' style='color:Blue;'>$T_Problems_Low</a>" if($T_Problems_Low>0);
16351 $IH_Link = "<a href='#".get_Anchor("Symbol", $Level, "High")."' style='color:Blue;'>$I_Problems_High</a>" if($I_Problems_High>0);
16357 $IM_Link = "<a href='#".get_Anchor("Symbol", $Level, "Medium")."' style='color:Blue;'>$I_Problems_Medium</a>" if($I_Problems_Medium>0);
16362 $IL_Link = "<a href='#".get_Anchor("Symbol", $Level, "Low")."' style='color:Blue;'>$I_Problems_Low</a>" if($I_Problems_Low>0);
16367 if(keys(%{$CheckedSymbols{$Level}}) and $C_Problems_Low) {
16368 $ChangedConstants_Link = "<a href='#".get_Anchor("Constant", $Level, "Low")."' style='color:Blue;'>$C_Problems_Low</a>";
16376 my $TS_Link = "<a href='#".get_Anchor("Type", $Level, "Safe")."' style='color:Blue;'>$T_Other</a>";
16383 my $IS_Link = "<a href='#".get_Anchor("Symbol", $Level, "Safe")."' style='color:Blue;'>$I_Other</a>";
16390 my $CS_Link = "<a href='#".get_Anchor("Constant", $Level, "Safe")."' style='color:Blue;'>$C_Other</a>";
16472 my ($TargetSeverity, $Level) = @_;
16476 foreach my $Constant (keys(%{$CompatProblems_Constants{$Level}}))
16484 foreach my $Kind (sort {lc($a) cmp lc($b)} keys(%{$CompatProblems_Constants{$Level}{$Constant}}))
16486 if(not defined $CompatRules{$Level}{$Kind}) {
16489 if($TargetSeverity ne $CompatRules{$Level}{$Kind}{"Severity"}) {
16506 my $Change = $CompatRules{$Level}{$Kind}{"Change"};
16507 Level}{$Kind}{"Effect"};
16508 my $Overcome = $CompatRules{$Level}{$Kind}{"Overcome"};
16511 $CHANGED_CONSTANTS .= " <change".getXmlParams($Change, $CompatProblems_Constants{$Level}{$Constant}{$Kind}).">$Change</change>\n";
16512 $CHANGED_CONSTANTS .= " <effect".getXmlParams($Effect, $CompatProblems_Constants{$Level}{$Constant}{$Kind}).">$Effect</effect>\n";
16514 $CHANGED_CONSTANTS .= " <overcome".getXmlParams($Overcome, $CompatProblems_Constants{$Level}{$Constant}{$Kind}).">$Overcome</overcome>\n";
16536 my $Change = applyMacroses($Level, $Kind, $CompatRules{$Level}{$Kind}{"Change"}, $CompatProblems_Constants{$Level}{$Constant}{$Kind});
16537 my $Effect = $CompatRules{$Level}{$Kind}{"Effect"};
16564 $CHANGED_CONSTANTS = "<a name='".get_Anchor("Constant", $Level, $TargetSeverity)."'></a>\n".$CHANGED_CONSTANTS.$TOP_REF."<br/>\n";
16600 my $Level = $_[0];
16603 foreach my $Interface (sort keys(%{$CompatProblems{$Level}}))
16605 foreach my $Kind (sort keys(%{$CompatProblems{$Level}{$Interface}}))
16611 if($Level eq "Source" and $ReportFormat eq "html")
16685 $Anchor = "<a name='".$Level."_Added'></a>";
16701 my $Level = $_[0];
16704 foreach my $Symbol (sort keys(%{$CompatProblems{$Level}}))
16706 foreach my $Kind (sort keys(%{$CompatProblems{$Level}{$Symbol}}))
16712 if($Level eq "Source" and $ReportFormat eq "html")
16787 $Anchor = "<a name='".$Level."_Removed'></a><a name='".$Level."_Withdrawn'></a>";
16866 my ($Level, $Kind, $Content, $Problem) = @_;
16927 if(not $IncompleteRules{$Level}{$Kind})
16929 printMsg("WARNING", "incomplete rule \"$Kind\" (\"$Level\")");
16930 $IncompleteRules{$Level}{$Kind} = 1;
16938 my ($TargetSeverity, $Level) = @_;
16942 foreach my $Symbol (sort keys(%{$CompatProblems{$Level}}))
16945 if($SV and defined $CompatProblems{$Level}{$SN}) {
16958 if($Level eq "Source" and $ReportFormat eq "html")
16963 foreach my $Kind (sort keys(%{$CompatProblems{$Level}{$Symbol}}))
16965 if($CompatRules{$Level}{$Kind}{"Kind"} eq "Symbols"
16968 my $Severity = $CompatRules{$Level}{$Kind}{"Severity"};
16969 foreach my $Location (sort keys(%{$CompatProblems{$Level}{$Symbol}{$Kind}}))
16973 $SymbolChanges{$Symbol}{$Kind} = $CompatProblems{$Level}{$Symbol}{$Kind};
17001 my $Change = $CompatRules{$Level}{$Kind}{"Change"};
17003 my $Effect = $CompatRules{$Level}{$Kind}{"Effect"};
17005 if(my $Overcome = $CompatRules{$Level}{$Kind}{"Overcome"}) {
17048 if(my $Change = applyMacroses($Level, $Kind, $CompatRules{$Level}{$Kind}{"Change"}, \%Problem))
17050 my $Effect = applyMacroses($Level, $Kind, $CompatRules{$Level}{$Kind}{"Effect"}, \%Problem);
17116 $INTERFACE_PROBLEMS = "<a name=\'".get_Anchor("Symbol", $Level, $TargetSeverity)."\'></a><a name=\'".get_Anchor("Interface", $Level, $TargetSeverity)."\'></a>\n".$INTERFACE_PROBLEMS.$TOP_REF."<br/>\n";
17131 my ($TargetSeverity, $Level) = @_;
17137 foreach my $TypeName (keys(%{$TypeChanges{$Level}}))
17141 foreach my $Kind (keys(%{$TypeChanges{$Level}{$TypeName}}))
17143 foreach my $Location (keys(%{$TypeChanges{$Level}{$TypeName}{$Kind}}))
17145 my $Target = $TypeChanges{$Level}{$TypeName}{$Kind}{$Location}{"Target"};
17146 my $Severity = $CompatRules{$Level}{$Kind}{"Severity"};
17151 $TypeChanges_Sev{$TypeName}{$Kind}{$Location} = $TypeChanges{$Level}{$TypeName}{$Kind}{$Location};
17180 my $Change = $CompatRules{$Level}{$Kind}{"Change"};
17182 my $Effect = $CompatRules{$Level}{$Kind}{"Effect"};
17184 if(my $Overcome = $CompatRules{$Level}{$Kind}{"Overcome"}) {
17190 $TYPE_PROBLEMS .= getAffectedSymbols($Level, $TypeName, \%Kinds_Locations);
17191 if($Level eq "Binary" and grep {$_=~/Virtual|Base_Class/} keys(%Kinds_Locations)) {
17232 if(my $Change = applyMacroses($Level, $Kind, $CompatRules{$Level}{$Kind}{"Change"}, \%Problem))
17234 my $Effect = applyMacroses($Level, $Kind, $CompatRules{$Level}{$Kind}{"Effect"}, \%Problem);
17244 my $Affected = getAffectedSymbols($Level, $TypeName, \%Kinds_Locations);
17246 if($Level
17292 $TYPE_PROBLEMS = "<a name=\'".get_Anchor("Type", $Level, $TargetSeverity)."\'></a>\n".$TYPE_PROBLEMS.$TOP_REF."<br/>\n";
17317 my ($Kind, $Level, $Severity) = @_;
17321 return "Other_".$Level."_Changes_In_".$Kind."s";
17324 return $Kind."_".$Level."_Problems_".$Severity;
17480 my ($Level, $Target_TypeName, $Kinds_Locations) = @_;
17496 foreach my $Symbol (sort keys(%{$TypeProblemsIndex{$Level}{$Target_TypeName}}))
17508 if(not defined $CompatProblems{$Level}{$Symbol}{$Kind}{$Loc}) {
17517 if($Level eq "Source")
17522 if($SV and defined $CompatProblems{$Level}{$SN}
17523 and defined $CompatProblems{$Level}{$SN}{$Kind}{$Loc})
17529 my $Type_Name = $CompatProblems{$Level}{$Symbol}{$Kind}{$Loc}{"Type_Name"};
17575 my $Desc = getAffectDesc($Level, $Symbol, $Kind, $Loc);
17607 my $Desc = getAffectDesc($Level, $Symbol, $Kind, $Loc);
17624 my $Per = show_number($Num*100/keys(%{$CheckedSymbols{$Level}}));
17651 my ($Level, $Symbol, $Kind, $Location) = @_;
17653 my %Problem = %{$CompatProblems{$Level}{$Symbol}{$Kind}{$Location}};
17664 elsif($CompatRules{$Level}{$Kind}{"Kind"} eq "Types")
17832 my $Level = $_[0];
17834 foreach my $Symbol (sort keys(%{$CompatProblems{$Level}}))
17837 if($SV and defined $CompatProblems{$Level}{$SN}) {
17842 if(not $AddedInt{$Level}{$Symbol})
17854 if(not $RemovedInt{$Level}{$Symbol})
17886 my ($Level, $Report) = @_;
17896 my $RPath = getReportPath($Level);
17907 my $Level = $_[0];
17910 if($Level eq "Join")
17920 my $Report = "<report kind=\"".lc($Level)."\" version=\"$XML_REPORT_VERSION\">\n\n";
17921 my ($Summary, $MetaData) = get_Summary($Level);
17923 $Report .= get_Report_Added($Level).get_Report_Removed($Level);
17924 $Report .= get_Report_Problems("High", $Level).get_Report_Problems("Medium", $Level).get_Report_Problems("Low", $Level).get_Report_Problems("Safe", $Level);
17927 # $Report .= get_Report_SymbolsInfo($Level);
17937 if($Level eq "Join")
17961 my ($Summary, $MetaData) = get_Summary($Level);
17962 my $Title = $TargetTitle.": ".$Descriptor{1}{"Version"}." to ".$Descriptor{2}{"Version"}." ".lc($Level)." compatibility report";
17963 my $Keywords = $TargetTitle.", ".lc($Level)." compatibility, API, report";
17964 my $Description = "$Level compatibility report for the ".$TargetTitle." ".$TargetComponent." between ".$Descriptor{1}{"Version"}." and ".$Descriptor{2}{"Version"}." versions";
17965 if($Level eq "Binary")
17973 $Report .= get_Report_Title($Level)."\n".$Summary."\n";
17974 $Report .= get_Report_Added($Level).get_Report_Removed($Level);
17975 $Report .= get_Report_Problems("High", $Level).get_Report_Problems("Medium", $Level).get_Report_Problems("Low", $Level).get_Report_Problems("Safe", $Level);
18021 my ($Severity, $Level) = @_;
18023 my $Report = get_Report_TypeProblems($Severity, $Level);
18024 if(my $SProblems = get_Report_SymbolProblems($Severity, $Level)) {
18029 $Report .= get_Report_ChangedConstants($Severity, $Level);
18039 $Report = "<a name=\'Other_".$Level."_Changes\'></a>".$Report;
18042 $Report = "<a name=\'".$Severity."_Risk_".$Level."_Problems\'></a>".$Report;
18319 my ($Name, $Value, $Level) = @_;
18321 if($Level eq "Binary")
18378 my $Level = $_[0];
18400 if(constantFilter($Constant, $Old_Value, $Level))
18409 %{$CompatProblems_Constants{$Level}{$Constant}{"Removed_Constant"}} = (
18456 %{$CompatProblems_Constants{$Level}{$Constant}{"Changed_Constant"}} = (
18493 if(constantFilter($Constant, $New_Value, $Level))
18498 %{$CompatProblems_Constants{$Level}{$Constant}{"Added_Constant"}} = (
21611 # at binary-level
21891 my $Level = $_[0];
21893 if($Level eq "Binary")
21908 elsif($Level eq "Source")
21938 my $Level = $_[0];
21939 printMsg("INFO", "total \"$Level\" compatibility problems: ".$RESULT{$Level}{"Problems"}.", warnings: ".$RESULT{$Level}{"Warnings"});
21944 my $Level = $_[0];
21946 foreach (keys(%{$TotalAffected{$Level}}))
21948 if($StrictCompat and $TotalAffected{$Level}{$_} eq "Low")
21954 my $Dir = get_dirname(getReportPath($Level));
21955 if($Level eq "Binary") {
21958 elsif($Level eq "Source") {
22858 my $Level = $_[0];
22860 readRules($Level);
22863 if($Level eq "Binary") {
22871 or $Level eq "Source")
22873 detectAdded_H($Level);
22874 detectRemoved_H($Level);
22878 detectAdded($Level);
22879 detectRemoved($Level);
22882 mergeSymbols($Level);
22886 if(keys(%{$CheckedSymbols{$Level}})) {
22887 mergeConstants($Level);
22894 or $Level eq "Source")
22896 mergeHeaders($Level);
22900 mergeLibs($Level);
22903 foreach my $S (keys(%{$CompatProblems{$Level}}))
22905 foreach my $K (keys(%{$CompatProblems{$Level}{$S}}))
22907 foreach my $L (keys(%{$CompatProblems{$Level}{$S}{$K}}))
22909 if(my $T = $CompatProblems{$Level}{$S}{$K}{$L}{"Type_Name"}) {
22910 $TypeProblemsIndex{$Level}{$T}{$S} = 1;