aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Ponomarenko <aponomarenko@rosalab.ru>2015-11-01 21:20:50 +0300
committerAndrey Ponomarenko <aponomarenko@rosalab.ru>2015-11-01 21:20:50 +0300
commit99640d301c76bbdcf86803858ed9190d3f249133 (patch)
tree7b5109534a963351e5ea56569e47636397a5bab6
parentd20d2b88e7d886fc3a411ba80c27e4fc7ab65619 (diff)
downloadabi-compliance-checker-99640d301c76bbdcf86803858ed9190d3f249133.tar.gz
Added -skip-types option. Fixed formatting of symbol signatures. Fixed checks of template types.
-rw-r--r--INSTALL4
-rw-r--r--abi-compliance-checker.pl51
-rw-r--r--doc/Changelog.html18
-rw-r--r--doc/index.html2
4 files changed, 64 insertions, 11 deletions
diff --git a/INSTALL b/INSTALL
index 450fff8..58f5d49 100644
--- a/INSTALL
+++ b/INSTALL
@@ -9,8 +9,8 @@ All rights reserved.
RELEASE INFORMATION
Project: ABI Compliance Checker (ACC)
-Version: 1.99.13
-Date: 2015-10-18
+Version: 1.99.14
+Date: 2015-11-01
This file explains how to install and setup environment
diff --git a/abi-compliance-checker.pl b/abi-compliance-checker.pl
index 11ae1de..708cdd8 100644
--- a/abi-compliance-checker.pl
+++ b/abi-compliance-checker.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl
###########################################################################
-# ABI Compliance Checker (ABICC) 1.99.13
+# ABI Compliance Checker (ABICC) 1.99.14
# A tool for checking backward compatibility of a C/C++ library API
#
# Copyright (C) 2009-2011 Institute for System Programming, RAS
@@ -38,7 +38,7 @@
#
# COMPATIBILITY
# =============
-# ABI Dumper >= 0.99.9
+# ABI Dumper >= 0.99.12
#
#
# This program is free software: you can redistribute it and/or modify
@@ -64,7 +64,7 @@ use Storable qw(dclone);
use Data::Dumper;
use Config;
-my $TOOL_VERSION = "1.99.13";
+my $TOOL_VERSION = "1.99.14";
my $ABI_DUMP_VERSION = "3.2";
my $XML_REPORT_VERSION = "1.2";
my $XML_ABI_DUMP_VERSION = "1.2";
@@ -95,7 +95,7 @@ $SourceReportPath, $UseXML, $SortDump, $DumpFormat,
$ExtraInfo, $ExtraDump, $Force, $Tolerance, $Tolerant, $SkipSymbolsListPath,
$CheckInfo, $Quick, $AffectLimit, $AllAffected, $CppIncompat,
$SkipInternalSymbols, $SkipInternalTypes, $TargetArch, $GccOptions,
-$TypesListPath);
+$TypesListPath, $SkipTypesListPath);
my $CmdName = get_filename($0);
my %OS_LibExt = (
@@ -202,6 +202,7 @@ GetOptions("h|help!" => \$Help,
"symbols-list=s" => \$SymbolsListPath,
"types-list=s" => \$TypesListPath,
"skip-symbols=s" => \$SkipSymbolsListPath,
+ "skip-types=s" => \$SkipTypesListPath,
"headers-list=s" => \$TargetHeadersPath,
"skip-headers=s" => \$SkipHeadersPath,
"header=s" => \$TargetHeader,
@@ -461,7 +462,10 @@ EXTRA OPTIONS:
be checked. Other types will not be checked.
-skip-symbols PATH
- The list of symbols that should NOT be checked.
+ The list of symbols that should not be checked.
+
+ -skip-types PATH
+ The list of types that should not be checked.
-headers-list PATH
The file with a list of headers, that should be checked/dumped.
@@ -7605,6 +7609,8 @@ sub formatName($$)
$N=~s/[ ]*(\W)[ ]*/$1/g; # std::basic_string<char> const
+ $N=~s/\b(const|volatile) ([\w\:]+)([\*&,>]|\Z)/$2 $1$3/g; # "const void" to "void const"
+
$N=~s/\bvolatile const\b/const volatile/g;
$N=~s/\b(long long|short|long) unsigned\b/unsigned $1/g;
@@ -7621,6 +7627,8 @@ sub formatName($$)
}
}
+ $N=~s/,/, /g;
+
return ($Cache{"formatName"}{$_[1]}{$_[0]} = $N);
}
@@ -19849,6 +19857,10 @@ sub read_ABI_Dump($$)
$UsedDump{$LibVersion}{"V"} = $DVersion;
$UsedDump{$LibVersion}{"M"} = $ABI->{"LibraryName"};
+ if($ABI->{"PublicABI"}) {
+ $UsedDump{$LibVersion}{"Public"} = 1;
+ }
+
if($ABI->{"ABI_DUMP_VERSION"})
{
if(cmpVersions($DVersion, $ABI_DUMP_VERSION)>0)
@@ -20017,10 +20029,22 @@ sub read_ABI_Dump($$)
$Descriptor{$LibVersion}{"Version"} = $ABI->{"LibraryVersion"};
}
- $SkipTypes{$LibVersion} = $ABI->{"SkipTypes"};
if(not $SkipTypes{$LibVersion})
- { # support for old dumps
- $SkipTypes{$LibVersion} = $ABI->{"OpaqueTypes"};
+ { # if not defined by -skip-types option
+ if(defined $ABI->{"SkipTypes"})
+ {
+ foreach my $TName (keys(%{$ABI->{"SkipTypes"}}))
+ {
+ $SkipTypes{$LibVersion}{$TName} = 1;
+ }
+ }
+ if(defined $ABI->{"OpaqueTypes"})
+ { # support for old dumps
+ foreach my $TName (keys(%{$ABI->{"OpaqueTypes"}}))
+ {
+ $SkipTypes{$LibVersion}{$TName} = 1;
+ }
+ }
}
if(not $SkipSymbols{$LibVersion})
@@ -22645,6 +22669,17 @@ sub scenario()
$SkipSymbols{2}{$Interface} = 1;
}
}
+ if($SkipTypesListPath)
+ {
+ if(not -f $SkipTypesListPath) {
+ exitStatus("Access_Error", "can't access file \'$SkipTypesListPath\'");
+ }
+ foreach my $Type (split(/\s*\n\s*/, readFile($SkipTypesListPath)))
+ {
+ $SkipTypes{1}{$Type} = 1;
+ $SkipTypes{2}{$Type} = 1;
+ }
+ }
if($SkipHeadersPath)
{
if(not -f $SkipHeadersPath) {
diff --git a/doc/Changelog.html b/doc/Changelog.html
index 2ddade7..3921131 100644
--- a/doc/Changelog.html
+++ b/doc/Changelog.html
@@ -44,6 +44,24 @@
<p/>
<br/>
+<b>Version 1.99.14 (November 01, 2015)</b><br/>
+<b>New Options</b>
+<ul>
+ <li>
+ -skip-types: set list of types that should not be checked
+ </li>
+</ul>
+<b>Bug Fixes</b>
+<ul>
+ <li>
+ Fixed formatting of symbol signatures
+ </li>
+ <li>
+ Fixed checks of template types
+ </li>
+</ul>
+<br/>
+
<b>Version 1.99.13 (October 18, 2015)</b><br/>
<b>Improvements</b>
<ul>
diff --git a/doc/index.html b/doc/index.html
index 6592e9b..227650c 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -94,7 +94,7 @@
<h2>Downloads</h2>
<p>All releases can be downloaded from <a href="https://github.com/lvc/abi-compliance-checker/">this page</a>.</p>
-<p>Latest release: <a href="https://github.com/lvc/abi-compliance-checker/archive/1.99.13.tar.gz">abi-compliance-checker-1.99.13.tar.gz</a></p>
+<p>Latest release: <a href="https://github.com/lvc/abi-compliance-checker/archive/1.99.14.tar.gz">abi-compliance-checker-1.99.14.tar.gz</a></p>
<p>Read-only access to the latest development version:</p>