Lines Matching refs:ABI
2 # Module for ABI Compliance Checker to create ABI dumps in XML format
7 # Copyright (C) 2012-2015 Andrey Ponomarenko's ABI Laboratory
31 my $ABI = $_[0];
34 $ABI_DUMP .= "<ABI_dump version=\"".$ABI->{"ABI_DUMP_VERSION"}."\"";
35 $ABI_DUMP .= " xml_format=\"".$ABI->{"XML_ABI_DUMP_VERSION"}."\"";
36 $ABI_DUMP .= " acc=\"".$ABI->{"ABI_COMPLIANCE_CHECKER_VERSION"}."\">\n";
38 $ABI_DUMP .= addTag("library", $ABI->{"LibraryName"});
39 $ABI_DUMP .= addTag("library_version", $ABI->{"LibraryVersion"});
40 $ABI_DUMP .= addTag("language", $ABI->{"Language"});
42 $ABI_DUMP .= addTag("gcc", $ABI->{"GccVersion"});
43 $ABI_DUMP .= addTag("architecture", $ABI->{"Arch"});
44 $ABI_DUMP .= addTag("target", $ABI->{"Target"});
45 $ABI_DUMP .= addTag("word_size", $ABI->{"WordSize"});
47 if($ABI->{"Mode"}) {
48 $ABI_DUMP .= addTag("mode", $ABI->{"Mode"});
50 if($ABI->{"SrcBin"}) {
53 elsif($ABI->{"BinOnly"}) {
57 if(my @Headers = keys(%{$ABI->{"Headers"}}))
59 @Headers = sort {$ABI->{"Headers"}{$a}<=>$ABI->{"Headers"}{$b}} @Headers;
67 if(my @NameSpaces = keys(%{$ABI->{"NameSpaces"}}))
76 if(my @TypeInfo = keys(%{$ABI->{"TypeInfo"}}))
81 my %TInfo = %{$ABI->{"TypeInfo"}{$ID}};
202 if(my @Constants = keys(%{$ABI->{"Constants"}}))
207 my %CInfo = %{$ABI->{"Constants"}{$Constant}};
217 if(my @SymbolInfo = keys(%{$ABI->{"SymbolInfo"}}))
226 my %SInfo = %{$ABI->{"SymbolInfo"}{$ID}};
323 if(my @Libs = keys(%{$ABI->{"Symbols"}}))
329 foreach my $Symbol (sort {lc($a) cmp lc($b)} keys(%{$ABI->{"Symbols"}{$Lib}}))
331 if((my $Size = $ABI->{"Symbols"}{$Lib}{$Symbol})<0)
345 if(my @DepLibs = keys(%{$ABI->{"DepSymbols"}}))
351 foreach my $Symbol (sort {lc($a) cmp lc($b)} keys(%{$ABI->{"DepSymbols"}{$Lib}}))
353 if((my $Size = $ABI->{"DepSymbols"}{$Lib}{$Symbol})<0)
367 if(my @VSymbols = keys(%{$ABI->{"SymbolVersion"}}))
374 $ABI_DUMP .= addTag("version", $ABI->{"SymbolVersion"}{$Symbol});
380 if(my @SkipTypes = keys(%{$ABI->{"SkipTypes"}}))
389 if(my @SkipSymbols = keys(%{$ABI->{"SkipSymbols"}}))
398 if(my @SkipNameSpaces = keys(%{$ABI->{"SkipNameSpaces"}}))
407 if(my @SkipHeaders = keys(%{$ABI->{"SkipHeaders"}}))
416 if(my @TargetHeaders = keys(%{$ABI->{"TargetHeaders"}}))
435 my %ABI = {};
437 $ABI{"LibraryName"} = parseTag(\$ABI_DUMP, "library");
438 $ABI{"LibraryVersion"} = parseTag(\$ABI_DUMP, "library_version");
439 $ABI{"Language"} = parseTag(\$ABI_DUMP, "language");
440 $ABI{"GccVersion"} = parseTag(\$ABI_DUMP, "gcc");
441 $ABI{"Arch"} = parseTag(\$ABI_DUMP, "architecture");
442 $ABI{"Target"} = parseTag(\$ABI_DUMP, "target");
443 $ABI{"WordSize"} = parseTag(\$ABI_DUMP, "word_size");
450 $ABI{"Headers"}{$Name} = $Pos++;
457 $ABI{"NameSpaces"}{$Name} = 1;
569 $ABI{"TypeInfo"}{$ID} = \%TInfo;
582 $ABI{"Constants"}{$Name} = \%CInfo;
674 $ABI{"SymbolInfo"}{$ID} = \%SInfo;
687 $ABI{"Symbols"}{$LInfo{"name"}}{$Symbol} = -$Size;
690 $ABI{"Symbols"}{$LInfo{"name"}}{$Symbol} = 1;
707 $ABI{"DepSymbols"}{$LInfo{"name"}}{$Symbol} = -$Size;
710 $ABI{"DepSymbols"}{$LInfo{"name"}}{$Symbol} = 1;
718 $ABI{"SymbolVersion"} = {};
723 $ABI{"SymbolVersion"}{parseTag(\$Symbol, "name")} = parseTag(\$Symbol, "version");
727 $ABI{"SkipTypes"} = {};
732 $ABI{"SkipTypes"}{$Name} = 1;
736 $ABI{"SkipSymbols"} = {};
741 $ABI{"SkipSymbols"}{$Name} = 1;
745 $ABI{"SkipNameSpaces"} = {};
750 $ABI{"SkipNameSpaces"}{$Name} = 1;
754 $ABI{"SkipHeaders"} = {};
759 $ABI{"SkipHeaders"}{$Name} = 1;
766 $ABI{"TargetHeaders"}{$Name} = 1;
771 $ABI{"Mode"} = $Mode;
776 $ABI{"BinOnly"} = 1;
779 $ABI{"SrcBin"} = 1;
786 $ABI{"ABI_DUMP_VERSION"} = $RInfo{"version"};
787 $ABI{"XML_ABI_DUMP_VERSION"} = $RInfo{"xml_format"};
788 $ABI{"ABI_COMPLIANCE_CHECKER_VERSION"} = $RInfo{"acc"};
790 return \%ABI;