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;


Reply via email to