Hello community,
here is the log from the commit of package abi-compliance-checker for
openSUSE:Factory checked in at 2017-09-05 15:15:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/abi-compliance-checker (Old)
and /work/SRC/openSUSE:Factory/.abi-compliance-checker.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "abi-compliance-checker"
Tue Sep 5 15:15:57 2017 rev:8 rq:520531 version:2.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/abi-compliance-checker/abi-compliance-checker.changes
2017-07-08 12:34:54.686120929 +0200
+++
/work/SRC/openSUSE:Factory/.abi-compliance-checker.new/abi-compliance-checker.changes
2017-09-05 15:16:00.970523972 +0200
@@ -1,0 +2,12 @@
+Sun Sep 3 19:03:36 UTC 2017 - [email protected]
+
+- update to 2.2:
+ * Improve support for Fortran
+ * Fix analysis of inline functions
+ * Fix analysis of calling conventions
+ * Fix handling of C++ keywords in C code
+ * Fix -lang option
+ * Fix handling of errors when compressing ABI dumps
+ * Fix style of the report
+
+-------------------------------------------------------------------
Old:
----
abi-compliance-checker-2.1.tar.gz
New:
----
abi-compliance-checker-2.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ abi-compliance-checker.spec ++++++
--- /var/tmp/diff_new_pack.xeeglQ/_old 2017-09-05 15:16:02.298337330 +0200
+++ /var/tmp/diff_new_pack.xeeglQ/_new 2017-09-05 15:16:02.302336768 +0200
@@ -17,7 +17,7 @@
Name: abi-compliance-checker
-Version: 2.1
+Version: 2.2
Release: 0
Summary: A Compliance Checker For library ABIs
License: GPL-2.0+ or LGPL-2.0+
@@ -26,6 +26,7 @@
Source0:
https://github.com/lvc/abi-compliance-checker/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
BuildRequires: fdupes
BuildRequires: help2man
+Requires: abi-dumper >= 1.1
Requires: binutils
Requires: coreutils
Requires: cpio
++++++ abi-compliance-checker-2.1.tar.gz -> abi-compliance-checker-2.2.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/abi-compliance-checker-2.1/INSTALL
new/abi-compliance-checker-2.2/INSTALL
--- old/abi-compliance-checker-2.1/INSTALL 2017-06-17 06:59:27.000000000
+0200
+++ new/abi-compliance-checker-2.2/INSTALL 2017-08-30 07:12:26.000000000
+0200
@@ -8,8 +8,8 @@
RELEASE INFORMATION
Project: ABI Compliance Checker (ABICC)
-Version: 2.1
-Date: June 17, 2017
+Version: 2.2
+Date: August 30, 2017
This file explains how to install and setup environment
@@ -33,7 +33,7 @@
2. GNU Binutils (c++filt, readelf, objdump)
3. Perl 5
4. Ctags
- 5. ABI Dumper (0.99.15 or newer)
+ 5. ABI Dumper (1.1 or newer)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/abi-compliance-checker-2.1/README
new/abi-compliance-checker-2.2/README
--- old/abi-compliance-checker-2.1/README 2017-06-17 06:59:27.000000000
+0200
+++ new/abi-compliance-checker-2.2/README 2017-08-30 07:12:26.000000000
+0200
@@ -1,4 +1,4 @@
-ABICC 2.0
+ABICC 2.2
=========
NAME:
@@ -22,7 +22,7 @@
GCC C++
GNU Binutils
Ctags
- ABI Dumper (0.99.15 or newer)
+ ABI Dumper (1.1 or newer)
PLATFORMS:
Linux
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/abi-compliance-checker-2.1/abi-compliance-checker.pl
new/abi-compliance-checker-2.2/abi-compliance-checker.pl
--- old/abi-compliance-checker-2.1/abi-compliance-checker.pl 2017-06-17
06:59:27.000000000 +0200
+++ new/abi-compliance-checker-2.2/abi-compliance-checker.pl 2017-08-30
07:12:26.000000000 +0200
@@ -1,6 +1,6 @@
#!/usr/bin/perl
###########################################################################
-# ABI Compliance Checker (ABICC) 2.1
+# ABI Compliance Checker (ABICC) 2.2
# A tool for checking backward compatibility of a C/C++ library API
#
# Copyright (C) 2009-2011 Institute for System Programming, RAS
@@ -20,7 +20,7 @@
# - GNU Binutils (readelf, c++filt, objdump)
# - Perl 5
# - Ctags
-# - ABI Dumper >= 0.99.15
+# - ABI Dumper >= 1.1
#
# Mac OS X
# - Xcode (g++, c++filt, otool, nm)
@@ -58,10 +58,11 @@
use Cwd qw(abs_path cwd);
use Data::Dumper;
-my $TOOL_VERSION = "2.1";
+my $TOOL_VERSION = "2.2";
+my $ABI_DUMP_VERSION = "3.5";
+my $ABI_DUMP_VERSION_MIN = "3.5";
+
my $XML_REPORT_VERSION = "1.2";
-my $ABI_DUMP_VERSION = "3.4";
-my $ABI_DUMP_VERSION_MIN = "3.2";
my $XML_ABI_DUMP_VERSION = "1.2";
# Internal modules
@@ -1214,6 +1215,8 @@
}
}
+ $PTName=~s/\(kind=\d+\)//g;
+
if($Html) {
$PTName = specChars($PTName);
}
@@ -4000,6 +4003,13 @@
next;
}
+ if(not $CompSign{2}{$Symbol}{"Virt"}
+ and not $CompSign{2}{$Symbol}{"PureVirt"}
+ and $CompSign{2}{$Symbol}{"InLine"})
+ { # sunch symbols are not properly detected
+ next;
+ }
+
if(not defined $CompSign{1}{$Symbol}
or not $CompSign{1}{$Symbol}{"MnglName"})
{
@@ -4061,6 +4071,13 @@
next;
}
+ if(not $CompSign{1}{$Symbol}{"Virt"}
+ and not $CompSign{1}{$Symbol}{"PureVirt"}
+ and $CompSign{1}{$Symbol}{"InLine"})
+ { # sunch symbols are not properly detected
+ next;
+ }
+
if(not defined $CompSign{2}{$Symbol}
or not $CompSign{2}{$Symbol}{"MnglName"})
{
@@ -5700,11 +5717,14 @@
%Conv1 = callingConvention_P_Model($CompSign{1}{$Symbol},
$ParamPos1, 1);
%Conv2 = callingConvention_P_Model($CompSign{2}{$PSymbol},
$ParamPos2, 2);
}
+
+ my $ArrayType = ($Type1{"Type"} eq "Array" and $Type2{"Type"} eq
"Array"); # Fortran
+
if($Conv1{"Method"} eq $Conv2{"Method"})
{
if($Conv1{"Method"} eq "stack")
{
- if($Old_Size ne $New_Size) { # FIXME: isMemPadded,
getOffset
+ if($Old_Size ne $New_Size and not $ArrayType) { # FIXME:
isMemPadded, getOffset
$NewProblemType = "Parameter_Type_And_Stack";
}
}
@@ -6073,6 +6093,8 @@
{ # type change
if($Type1{"Name"}!~/anon\-/ and $Type2{"Name"}!~/anon\-/)
{
+ my $ArrayType = ($Type1{"Type"} eq "Array" and $Type2{"Type"} eq
"Array"); # Fortran
+
if($Prefix eq "Return"
and $Type1_Pure{"Name"} eq "void")
{
@@ -6091,7 +6113,8 @@
{
if($Level eq "Binary"
and $Type1{"Size"} and $Type2{"Size"}
- and $Type1{"Size"} ne $Type2{"Size"})
+ and $Type1{"Size"} ne $Type2{"Size"}
+ and not $ArrayType)
{
%{$LocalProblems{$Prefix."_Type_And_Size"}}=(
"Old_Value"=>$Type1{"Name"},
@@ -9344,7 +9367,7 @@
system("$ZipCmd -j \"$Name.zip\" \"$Path\"
>\"".$In::Opt{"Tmp"}."/null\"");
if($?)
{ # cannot allocate memory (or other problems with "zip")
- unlink($Path);
+ chdir($In::Opt{"OrigDir"});
exitStatus("Error", "can't pack the ABI dump: ".$!);
}
chdir($In::Opt{"OrigDir"});
@@ -9362,15 +9385,14 @@
exitStatus("Not_Found", "can't find \"gzip\"");
}
my $Pkg = abs_path($To)."/".$Name.".tar.gz";
- unlink($Pkg);
- chdir($From);
- system($TarCmd, "-czf", $Pkg, $Name);
+ if(-e $Pkg) {
+ unlink($Pkg);
+ }
+ system($TarCmd, "-C", $From, "-czf", $Pkg, $Name);
if($?)
{ # cannot allocate memory (or other problems with "tar")
- unlink($Path);
exitStatus("Error", "can't pack the ABI dump: ".$!);
}
- chdir($In::Opt{"OrigDir"});
unlink($Path);
return $To."/".$Name.".tar.gz";
}
@@ -10597,8 +10619,13 @@
if($CompSign{1}{$Symbol}{"PureVirt"}) {
next;
}
- if(not $CompSign{1}{$Symbol}{"Header"}) {
- next;
+
+ if(not $CompSign{1}{$Symbol}{"Header"})
+ {
+ if(index($CompSign{1}{$Symbol}{"Source"}, ".f")==-1)
+ { # Fortran
+ next;
+ }
}
$Count += symbolFilter($Symbol, $CompSign{1}{$Symbol}, "Affected +
InlineVirt", "Binary", 1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/abi-compliance-checker-2.1/doc/Changelog.html
new/abi-compliance-checker-2.2/doc/Changelog.html
--- old/abi-compliance-checker-2.1/doc/Changelog.html 2017-06-17
06:59:27.000000000 +0200
+++ new/abi-compliance-checker-2.2/doc/Changelog.html 2017-08-30
07:12:26.000000000 +0200
@@ -44,6 +44,36 @@
<p/>
<br/>
+<b>Version 2.2 (August 30, 2017)</b><br/>
+<b>Improvements</b>
+<ul>
+ <li>
+ Improved support for Fortran
+ </li>
+</ul>
+<b>Bug Fixes</b>
+<ul>
+ <li>
+ Fixed analysis of inline functions
+ </li>
+ <li>
+ Fixed analysis of calling conventions
+ </li>
+ <li>
+ Fixed handling of C++ keywords in C code
+ </li>
+ <li>
+ Fixed -lang option
+ </li>
+ <li>
+ Fixed handling of errors when compressing ABI dumps
+ </li>
+ <li>
+ Fixed style of the report
+ </li>
+</ul>
+<br/>
+
<b>Version 2.1 (June 17, 2017)</b><br/>
<b>Improvements</b>
<ul>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/abi-compliance-checker-2.1/modules/Internals/ABIDump.pm
new/abi-compliance-checker-2.2/modules/Internals/ABIDump.pm
--- old/abi-compliance-checker-2.1/modules/Internals/ABIDump.pm 2017-06-17
06:59:27.000000000 +0200
+++ new/abi-compliance-checker-2.2/modules/Internals/ABIDump.pm 2017-08-30
07:12:26.000000000 +0200
@@ -63,14 +63,12 @@
$In::ABI{$LVer}{"LibraryVersion"} = $In::Desc{$LVer}{"Version"};
$In::ABI{$LVer}{"LibraryName"} = $In::Opt{"TargetLib"};
- if(not $In::ABI{$LVer}{"Language"})
- {
- if($In::Opt{"UserLang"}) {
- $In::ABI{$LVer}{"Language"} = $In::Opt{"UserLang"};
- }
- else {
- $In::ABI{$LVer}{"Language"} = "C";
- }
+ if(not $In::ABI{$LVer}{"Language"}) {
+ $In::ABI{$LVer}{"Language"} = "C";
+ }
+
+ if($In::Opt{"UserLang"}) {
+ $In::ABI{$LVer}{"Language"} = $In::Opt{"UserLang"};
}
$In::ABI{$LVer}{"GccVersion"} = $In::Opt{"GccVer"};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/abi-compliance-checker-2.1/modules/Internals/CallConv.pm
new/abi-compliance-checker-2.2/modules/Internals/CallConv.pm
--- old/abi-compliance-checker-2.1/modules/Internals/CallConv.pm
2017-06-17 06:59:27.000000000 +0200
+++ new/abi-compliance-checker-2.2/modules/Internals/CallConv.pm
2017-08-30 07:12:26.000000000 +0200
@@ -1337,9 +1337,9 @@
$Conv{"Method"} = "stack";
if(defined $SInfo->{"Param"}
- and defined $SInfo->{"Param"}{0})
+ and defined $SInfo->{"Param"}{$Pos})
{
- if(not defined $SInfo->{"Param"}{0}{"offset"})
+ if(not defined $SInfo->{"Param"}{$Pos}{"offset"})
{
$Conv{"Method"} = "unknown";
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/abi-compliance-checker-2.1/modules/Internals/RegTests.pm
new/abi-compliance-checker-2.2/modules/Internals/RegTests.pm
--- old/abi-compliance-checker-2.1/modules/Internals/RegTests.pm
2017-06-17 06:59:27.000000000 +0200
+++ new/abi-compliance-checker-2.2/modules/Internals/RegTests.pm
2017-08-30 07:12:26.000000000 +0200
@@ -3104,6 +3104,17 @@
$EXTERN = "extern "; # add "extern" for CL compiler
}
+ # Array size
+ $HEADER1 .= "
+ $DECL_SPEC int arraySize(int p[10]);";
+ $SOURCE1 .= "
+ int arraySize(int p[10]) { return 0; }";
+
+ $HEADER2 .= "
+ $DECL_SPEC int arraySize(int p[15]);";
+ $SOURCE2 .= "
+ int arraySize(int p[15]) { return 0; }";
+
# Struct to union
$HEADER1 .= "
typedef struct StructToUnion {
@@ -4774,6 +4785,7 @@
$DECL_SPEC int testCppKeywords3(int operator);
$DECL_SPEC int operator(int class, int this);
$DECL_SPEC int delete(int virtual, int* this);
+ $DECL_SPEC int testCppKeywords4(int* param, int export);
struct CppKeywords {
int bool: 8;
//int*this;
@@ -4789,7 +4801,12 @@
};
#endif";
$SOURCE2 .= "
- $DECL_SPEC int testCppKeywords1(int class, int virtual) { return 0; }";
+ $DECL_SPEC int testCppKeywords1(int class, int virtual) { return 0; }
+ $DECL_SPEC int testCppKeywords2(int operator, int other) { return 0; }
+ $DECL_SPEC int testCppKeywords3(int operator) { return 0; }
+ $DECL_SPEC int operator(int class, int this) { return 0; }
+ $DECL_SPEC int delete(int virtual, int* this) { return 0; }
+ $DECL_SPEC int testCppKeywords4(int* param, int export) { return 0; }";
# Regression
$HEADER1 .= "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/abi-compliance-checker-2.1/modules/Internals/Styles/Report.css
new/abi-compliance-checker-2.2/modules/Internals/Styles/Report.css
--- old/abi-compliance-checker-2.1/modules/Internals/Styles/Report.css
2017-06-17 06:59:27.000000000 +0200
+++ new/abi-compliance-checker-2.2/modules/Internals/Styles/Report.css
2017-08-30 07:12:26.000000000 +0200
@@ -53,7 +53,7 @@
color:Black;
}
span.ext {
- font-weight:100;
+ font-weight:normal;
}
span.h_name {
color:#cc3300;
@@ -162,7 +162,7 @@
}
table.summary th {
background-color:#eeeeee;
- font-weight:100;
+ font-weight:normal;
text-align:left;
font-size:0.94em;
white-space:nowrap;
@@ -192,7 +192,7 @@
}
span.attr {
color:#333333;
- font-weight:100;
+ font-weight:normal;
}
span.color_p {
font-style:italic;
@@ -206,7 +206,7 @@
background-color:#DCDCDC;
}
span.ttype {
- font-weight:100;
+ font-weight:normal;
}
span.nowrap {
white-space:nowrap;
@@ -216,35 +216,35 @@
}
.passed {
background-color:#CCFFCC;
- font-weight:100;
+ font-weight:normal;
}
.warning {
background-color:#F4F4AF;
- font-weight:100;
+ font-weight:normal;
}
.failed {
background-color:#FFCCCC;
- font-weight:100;
+ font-weight:normal;
}
.new {
background-color:#C6DEFF;
- font-weight:100;
+ font-weight:normal;
}
.compatible {
background-color:#CCFFCC;
- font-weight:100;
+ font-weight:normal;
}
.almost_compatible {
background-color:#FFDAA3;
- font-weight:100;
+ font-weight:normal;
}
.incompatible {
background-color:#FFCCCC;
- font-weight:100;
+ font-weight:normal;
}
.gray {
background-color:#DCDCDC;
- font-weight:100;
+ font-weight:normal;
}
.top_ref {
font-size:0.69em;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/abi-compliance-checker-2.1/modules/Internals/SysFiles.pm
new/abi-compliance-checker-2.2/modules/Internals/SysFiles.pm
--- old/abi-compliance-checker-2.1/modules/Internals/SysFiles.pm
2017-06-17 06:59:27.000000000 +0200
+++ new/abi-compliance-checker-2.2/modules/Internals/SysFiles.pm
2017-08-30 07:12:26.000000000 +0200
@@ -760,10 +760,11 @@
printMsg("INFO", "Using GCC $GccVer ($Target, target:
".getArch_GCC(1).")");
# check GCC version
- if($GccVer=~/\A4\.8(|\.[012])|6\.[12]\.0\Z/)
+ if($GccVer=~/\A4\.8(|\.[012])|6\..*|7\..*\Z/)
{ # GCC 4.8.[0-2]:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57850
# GCC 6.[1-2].0:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78040
- printMsg("WARNING", "May not work properly with GCC 4.8.[0-2],
6.[1-2].0. Please use other GCC version with the help of --gcc-path=PATH
option.");
+ # GCC 7.1: still the same issue ...
+ printMsg("WARNING", "May not work properly with GCC 4.8.[0-2],
6.* and higher due to bug #78040 in GCC. Please try other GCC versions with the
help of --gcc-path=PATH option or try creating ABI dumps by ABI Dumper tool
instead.");
$In::Opt{"GccMissedMangling"} = 1;
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/abi-compliance-checker-2.1/modules/Internals/TUDump.pm
new/abi-compliance-checker-2.2/modules/Internals/TUDump.pm
--- old/abi-compliance-checker-2.1/modules/Internals/TUDump.pm 2017-06-17
06:59:27.000000000 +0200
+++ new/abi-compliance-checker-2.2/modules/Internals/TUDump.pm 2017-08-30
07:12:26.000000000 +0200
@@ -661,8 +661,6 @@
my $RegExp_O = join("|", keys(%CppKeywords_O));
my $Detected = undef;
- my $Sentence_O = undef;
- my $Sentence_N = undef;
my $Regex = undef;
$Regex =
qr/(\A|\n[^\#\/\n][^\n]*?|\n)(\*\s*|\s+|\@|\,|\()($RegExp_C|$RegExp_F)(\s*([\,\)\;\.\[]|\-\>|\:\s*\d))/;
@@ -673,8 +671,7 @@
# unsigned private: 8;
# DO NOT MATCH:
# #pragma GCC visibility push(default)
- $Sentence_O = "$1$2$3$4";
- $Sentence_N = "$1$2c99_$3$4";
+ my $Sentence_O = "$1$2$3$4";
if($Sentence_O=~/\s+decltype\(/)
{ # C++
@@ -683,7 +680,7 @@
}
else
{
- $Content=~s/$Regex/$Sentence_N/g;
+ $Content=~s/$Regex/$1$2c99_$3$4/g;
$In::Desc{$LVer}{"CppMode"} = 1;
if(not defined $Detected) {
$Detected = $Sentence_O;