diff options
author | Andrey Ponomarenko <aponomarenko@rosalab.ru> | 2013-09-27 15:31:42 +0400 |
---|---|---|
committer | Andrey Ponomarenko <aponomarenko@rosalab.ru> | 2013-09-27 15:31:42 +0400 |
commit | 2b029aa551351dd379a6259e4700c225a80e5a98 (patch) | |
tree | 6bc22c77fc2b2f3820e88fa810cc5db44f6ff3ba | |
parent | 8a5b3493ab562b71870ad8c367f61ce9b699b204 (diff) | |
download | abi-compliance-checker-2b029aa551351dd379a6259e4700c225a80e5a98.tar.gz |
Fixed identification of header files in the include_preamble
-rw-r--r-- | INSTALL | 4 | ||||
-rwxr-xr-x | abi-compliance-checker.pl | 49 | ||||
-rw-r--r-- | doc/Changes.html | 13 | ||||
-rw-r--r-- | doc/Descriptor.html | 2 | ||||
-rw-r--r-- | doc/Options.html | 9 | ||||
-rw-r--r-- | doc/Readme.html | 6 | ||||
-rw-r--r-- | doc/SysCheck/Descriptor.html | 2 | ||||
-rw-r--r-- | doc/SysCheck/Examples.html | 2 | ||||
-rw-r--r-- | doc/SysCheck/Usage.html | 2 |
9 files changed, 64 insertions, 25 deletions
@@ -9,8 +9,8 @@ All rights reserved. RELEASE INFORMATION Project: ABI Compliance Checker (ACC) -Version: 1.99.8.3 -Date: 2013-09-16 +Version: 1.99.8.4 +Date: 2013-09-27 This file explains how to install and setup environment diff --git a/abi-compliance-checker.pl b/abi-compliance-checker.pl index ca13e6e..cd279c7 100755 --- a/abi-compliance-checker.pl +++ b/abi-compliance-checker.pl @@ -1,6 +1,6 @@ #!/usr/bin/perl ########################################################################### -# ABI Compliance Checker (ACC) 1.99.8.3 +# ABI Compliance Checker (ACC) 1.99.8.4 # A tool for checking backward compatibility of a C/C++ library API # # Copyright (C) 2009-2010 The Linux Foundation @@ -64,7 +64,7 @@ use Storable qw(dclone); use Data::Dumper; use Config; -my $TOOL_VERSION = "1.99.8.3"; +my $TOOL_VERSION = "1.99.8.4"; my $ABI_DUMP_VERSION = "3.2"; my $OLDEST_SUPPORTED_VERSION = "1.18"; my $XML_REPORT_VERSION = "1.1"; @@ -93,7 +93,7 @@ $SkipHeadersPath, $CppCompat, $LogMode, $StdOut, $ListAffected, $ReportFormat, $UserLang, $TargetHeadersPath, $BinaryOnly, $SourceOnly, $BinaryReportPath, $SourceReportPath, $UseXML, $Browse, $OpenReport, $SortDump, $DumpFormat, $ExtraInfo, $ExtraDump, $Force, $Tolerance, $Tolerant, $SkipSymbolsListPath, -$CheckInfo, $Quick, $AffectLimit, $AllAffected); +$CheckInfo, $Quick, $AffectLimit, $AllAffected, $CppIncompat); my $CmdName = get_filename($0); my %OS_LibExt = ( @@ -252,6 +252,7 @@ GetOptions("h|help!" => \$Help, "test-dump!" => \$TestDump, "debug!" => \$Debug, "cpp-compatible!" => \$CppCompat, + "cpp-incompatible!" => \$CppIncompat, "p|params=s" => \$ParamNamesPath, "relpath1|relpath=s" => \$RelativeDirectory{1}, "relpath2=s" => \$RelativeDirectory{2}, @@ -664,6 +665,9 @@ OTHER OPTIONS: If your header files are written in C language and can be compiled by the G++ compiler (i.e. don't use C++ keywords), then you can tell the tool about this and speedup the analysis. + + -cpp-incompatible + Set this option if input C header files use C++ keywords. -p|-params PATH Path to file with the function parameter names. It can be used @@ -8686,9 +8690,16 @@ sub getDump() { # try to recompile # FIXME: handle other errors and try to recompile if($CppMode{$Version}==1 - and index($Errors, "c99_")!=-1) + and index($Errors, "c99_")!=-1 + and not defined $CppIncompat) { # disable c99 mode and try again $CppMode{$Version}=-1; + + if($Debug) + { + # printMsg("INFO", $Errors); + } + printMsg("INFO", "Disabling C++ compatibility mode"); resetLogging($Version); $TMP_DIR = tempdir(CLEANUP=>1); @@ -14961,6 +14972,9 @@ sub tNameLock($$) my $TN1 = $TypeInfo{1}{$Tid1}{"Name"}; my $TN2 = $TypeInfo{2}{$Tid2}{"Name"}; + my $TT1 = $TypeInfo{1}{$Tid1}{"Type"}; + my $TT2 = $TypeInfo{2}{$Tid2}{"Type"}; + if($Changed) { # different formats if($UseOldDumps) @@ -14968,9 +14982,6 @@ sub tNameLock($$) return 0; } - my $TT1 = $TypeInfo{1}{$Tid1}{"Type"}; - my $TT2 = $TypeInfo{2}{$Tid2}{"Type"}; - my %Base1 = get_Type($Tid1, 1); while(defined $Base1{"Type"} and $Base1{"Type"} eq "Typedef") { %Base1 = get_OneStep_BaseType($Base1{"Tid"}, $TypeInfo{1}); @@ -15029,6 +15040,20 @@ sub tNameLock($$) return 0; } } + + if($TT1 eq "FuncPtr" + and $TT2 eq "FuncPtr") + { + my $TN1_C = $TN1; + my $TN2_C = $TN2; + + $TN1_C=~s/\b(struct|union) //g; + $TN2_C=~s/\b(struct|union) //g; + + if($TN1_C eq $TN2_C) { + return 0; + } + } } return 1; } @@ -19446,7 +19471,13 @@ sub checkSystemFiles() { next if(not -d $DevelPath); - my @Files = cmd_find($DevelPath); + my @Files = cmd_find($DevelPath,"f"); + foreach my $Link (cmd_find($DevelPath,"l")) + { # add symbolic links + if(-f $Link) { + push(@Files, $Link); + } + } if(not $CheckObjectsOnly) { @@ -20867,6 +20898,8 @@ sub detect_default_paths($) # check GCC version if($GCC_Ver=~/\A4\.8(|\.0|\.1)\Z/) { # bug http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57850 + # introduced in 4.8 + # fixed in 4.9 printMsg("WARNING", "Not working properly with GCC $GCC_Ver. Please update or downgrade GCC or use a local installation by --gcc-path=PATH option."); $EMERGENCY_MODE_48 = 1; } diff --git a/doc/Changes.html b/doc/Changes.html index 84b7016..bc75dd8 100644 --- a/doc/Changes.html +++ b/doc/Changes.html @@ -21,7 +21,7 @@ </style> <script src="/load.php?debug=false&lang=en&modules=startup&only=scripts&skin=monobook&*"></script> <script>if(window.mw){ - mw.config.set({"wgCanonicalNamespace": "", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 0, "wgPageName": "ABI_compliance_checker_Downloads", "wgTitle": "ABI Compliance Checker Downloads", "wgCurRevisionId": 8321, "wgArticleId": 2293, "wgIsArticle": true, "wgAction": "view", "wgUserName": null, "wgUserGroups": ["*"], "wgCategories": ["ABI Compliance Checker"], "wgBreakFrames": false, "wgRestrictionEdit": [], "wgRestrictionMove": []}); + mw.config.set({"wgCanonicalNamespace": "", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 0, "wgPageName": "ABI_compliance_checker_Downloads", "wgTitle": "ABI Compliance Checker Downloads", "wgCurRevisionId": 8326, "wgArticleId": 2293, "wgIsArticle": true, "wgAction": "view", "wgUserName": null, "wgUserGroups": ["*"], "wgCategories": ["ABI Compliance Checker"], "wgBreakFrames": false, "wgRestrictionEdit": [], "wgRestrictionMove": []}); } </script><script>if(window.mw){ mw.loader.load(["mediawiki.page.startup"]); @@ -43,7 +43,7 @@ </p> <table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div> <ul> -<li class="toclevel-1 tocsection-1"><a href="#Version_1.99.8.3_.28September_16.2C_2013.29"><span class="tocnumber">1</span> <span class="toctext">Version 1.99.8.3 (September 16, 2013)</span></a></li> +<li class="toclevel-1 tocsection-1"><a href="#Version_1.99.8.4_.28September_27.2C_2013.29"><span class="tocnumber">1</span> <span class="toctext">Version 1.99.8.4 (September 27, 2013)</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#Version_1.99.7_.28July_01.2C_2013.29"><span class="tocnumber">2</span> <span class="toctext">Version 1.99.7 (July 01, 2013)</span></a></li> <li class="toclevel-1 tocsection-3"><a href="#Version_1.99.1_.28June_07.2C_2013.29"><span class="tocnumber">3</span> <span class="toctext">Version 1.99.1 (June 07, 2013)</span></a></li> <li class="toclevel-1 tocsection-4"><a href="#Version_1.99_.28May_24.2C_2013.29"><span class="tocnumber">4</span> <span class="toctext">Version 1.99 (May 24, 2013)</span></a></li> @@ -92,8 +92,8 @@ <li class="toclevel-1 tocsection-47"><a href="#Version_1.0_.28July_31.2C_2009.29"><span class="tocnumber">47</span> <span class="toctext">Version 1.0 (July 31, 2009)</span></a></li> </ul> </td></tr></table> -<h2> <span class="mw-headline" id="Version_1.99.8.3_.28September_16.2C_2013.29"> Version 1.99.8.3 (September 16, 2013) </span></h2> -<p><a rel="nofollow" class="external text" href="https://github.com/lvc/abi-compliance-checker/archive/1.99.8.3.tar.gz">abi-compliance-checker-1.99.8.3.tar.gz</a><br /> +<h2> <span class="mw-headline" id="Version_1.99.8.4_.28September_27.2C_2013.29"> Version 1.99.8.4 (September 27, 2013) </span></h2> +<p><a rel="nofollow" class="external text" href="https://github.com/lvc/abi-compliance-checker/archive/1.99.8.4.tar.gz">abi-compliance-checker-1.99.8.4.tar.gz</a><br /> </p><p><b>ACC 2.0</b> pre-release. </p><p>This is a bug-fix release with a few new features. </p> @@ -105,6 +105,7 @@ </li></ul> <ul><li> <b>New Options</b> <ul><li> <a href="Options.html" title="ABI Compliance Checker Options">-affected-limit</a> +</li><li> <a href="Options.html" title="ABI Compliance Checker Options">-cpp-incompatible</a> </li></ul> </li></ul> <ul><li> <b>Bug Fixes</b> @@ -113,6 +114,8 @@ </li><li> Corrected descriptions of affected symbols in the report </li><li> Fixed false alarms on changed offset of parameters </li><li> Do not hang on class A<N>:public A<N-1> +</li><li> Corrected identification of header files in the include_preamble +</li><li> Corrected comparison of function pointer types </li></ul> </li></ul> <ul><li> <b>Other</b> @@ -1065,5 +1068,5 @@ Template argument size: 0/2097152 bytes Expensive parser function count: 0/100 --> -<!-- Saved in parser cache with key rasispdb:pcache:idhash:2293-0!*!0!!en!*!* and timestamp 20130916142009 --> +<!-- Saved in parser cache with key rasispdb:pcache:idhash:2293-0!*!0!!en!*!* and timestamp 20130927112837 --> </div></div></div></div></div></body></html>
\ No newline at end of file diff --git a/doc/Descriptor.html b/doc/Descriptor.html index e365b57..e99b7e2 100644 --- a/doc/Descriptor.html +++ b/doc/Descriptor.html @@ -510,5 +510,5 @@ Template argument size: 0/2097152 bytes Expensive parser function count: 0/100 --> -<!-- Saved in parser cache with key rasispdb:pcache:idhash:2415-0!*!*!!en!*!* and timestamp 20130916085931 --> +<!-- Saved in parser cache with key rasispdb:pcache:idhash:2415-0!*!*!!en!*!* and timestamp 20130927113009 --> </div></div></div></div></div></body></html>
\ No newline at end of file diff --git a/doc/Options.html b/doc/Options.html index 85943fd..b8c71bc 100644 --- a/doc/Options.html +++ b/doc/Options.html @@ -21,7 +21,7 @@ </style> <script src="/load.php?debug=false&lang=en&modules=startup&only=scripts&skin=monobook&*"></script> <script>if(window.mw){ - mw.config.set({"wgCanonicalNamespace": "", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 0, "wgPageName": "ABI_compliance_checker_Options", "wgTitle": "ABI Compliance Checker Options", "wgCurRevisionId": 8307, "wgArticleId": 2442, "wgIsArticle": true, "wgAction": "view", "wgUserName": null, "wgUserGroups": ["*"], "wgCategories": ["ABI Compliance Checker"], "wgBreakFrames": false, "wgRestrictionEdit": [], "wgRestrictionMove": []}); + mw.config.set({"wgCanonicalNamespace": "", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 0, "wgPageName": "ABI_compliance_checker_Options", "wgTitle": "ABI Compliance Checker Options", "wgCurRevisionId": 8327, "wgArticleId": 2442, "wgIsArticle": true, "wgAction": "view", "wgUserName": null, "wgUserGroups": ["*"], "wgCategories": ["ABI Compliance Checker"], "wgBreakFrames": false, "wgRestrictionEdit": [], "wgRestrictionMove": []}); } </script><script>if(window.mw){ mw.loader.load(["mediawiki.page.startup"]); @@ -195,6 +195,9 @@ <ul><li><b>-cpp-compatible</b> </li></ul> <div style="padding-left:40px;">If your header file is written in C language and can be compiled by the C++ compiler (i.e. doesn't contain C++-keywords), then you can tell ACC about this and speedup the analysis.</div><br /> +<ul><li><b>-cpp-incompatible</b> +</li></ul> +<div style="padding-left:40px;">Set this option if input C header files use C++ keywords.</div><br /> <ul><li><b>-p|-params PATH</b> </li></ul> <div style="padding-left:40px;">Path to file with the function parameter names. It can be used for improving report view if the library header files don't contain parameter names. File format:</div><br /> @@ -277,11 +280,11 @@ <!-- NewPP limit report -Preprocessor node count: 88/1000000 +Preprocessor node count: 89/1000000 Post-expand include size: 0/2097152 bytes Template argument size: 0/2097152 bytes Expensive parser function count: 0/100 --> -<!-- Saved in parser cache with key rasispdb:pcache:idhash:2442-0!*!0!!en!*!* and timestamp 20130916092155 --> +<!-- Saved in parser cache with key rasispdb:pcache:idhash:2442-0!*!0!!en!*!* and timestamp 20130927112916 --> </div></div></div></div></div></body></html>
\ No newline at end of file diff --git a/doc/Readme.html b/doc/Readme.html index 0e9d7f5..1a3ba98 100644 --- a/doc/Readme.html +++ b/doc/Readme.html @@ -21,7 +21,7 @@ </style> <script src="/load.php?debug=false&lang=en&modules=startup&only=scripts&skin=monobook&*"></script> <script>if(window.mw){ - mw.config.set({"wgCanonicalNamespace": "", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 0, "wgPageName": "ABI_compliance_checker", "wgTitle": "ABI Compliance Checker", "wgCurRevisionId": 8322, "wgArticleId": 2292, "wgIsArticle": true, "wgAction": "view", "wgUserName": null, "wgUserGroups": ["*"], "wgCategories": ["ABI Compliance Checker"], "wgBreakFrames": false, "wgRestrictionEdit": [], "wgRestrictionMove": []}); + mw.config.set({"wgCanonicalNamespace": "", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 0, "wgPageName": "ABI_compliance_checker", "wgTitle": "ABI Compliance Checker", "wgCurRevisionId": 8328, "wgArticleId": 2292, "wgIsArticle": true, "wgAction": "view", "wgUserName": null, "wgUserGroups": ["*"], "wgCategories": ["ABI Compliance Checker"], "wgBreakFrames": false, "wgRestrictionEdit": [], "wgRestrictionMove": []}); } </script><script>if(window.mw){ mw.loader.load(["mediawiki.page.startup"]); @@ -93,7 +93,7 @@ <h2> <span class="mw-headline" id="Downloads"> Downloads </span></h2> <h3> <span class="mw-headline" id="Releases"> Releases </span></h3> <p>All releases can be downloaded from <b><a href="Changes.html" title="ABI Compliance Checker Downloads">this page</a></b> or <b><a rel="nofollow" class="external text" href="https://github.com/lvc/abi-compliance-checker/">github.com</a></b>. -</p><p>Latest release: <a rel="nofollow" class="external text" href="https://github.com/lvc/abi-compliance-checker/archive/1.99.8.3.tar.gz">1.99.8.3</a> +</p><p>Latest release: <a rel="nofollow" class="external text" href="https://github.com/lvc/abi-compliance-checker/archive/1.99.8.4.tar.gz">1.99.8.4</a> </p> <h3> <span class="mw-headline" id="Git"> Git </span></h3> <p>Read-only access to the latest development version:<br /> @@ -499,5 +499,5 @@ Template argument size: 0/2097152 bytes Expensive parser function count: 0/100 --> -<!-- Saved in parser cache with key rasispdb:pcache:idhash:2292-0!*!0!!en!*!* and timestamp 20130916142030 --> +<!-- Saved in parser cache with key rasispdb:pcache:idhash:2292-0!*!0!!en!*!* and timestamp 20130927112946 --> </div></div></div></div></div></body></html>
\ No newline at end of file diff --git a/doc/SysCheck/Descriptor.html b/doc/SysCheck/Descriptor.html index d3609c2..dbf9b21 100644 --- a/doc/SysCheck/Descriptor.html +++ b/doc/SysCheck/Descriptor.html @@ -233,5 +233,5 @@ Template argument size: 0/2097152 bytes Expensive parser function count: 0/100 --> -<!-- Saved in parser cache with key rasispdb:pcache:idhash:2657-0!*!*!!*!*!* and timestamp 20130916085929 --> +<!-- Saved in parser cache with key rasispdb:pcache:idhash:2657-0!*!*!!*!*!* and timestamp 20130926122940 --> </div></div></div></div></div></body></html>
\ No newline at end of file diff --git a/doc/SysCheck/Examples.html b/doc/SysCheck/Examples.html index 90d21ca..62e2a44 100644 --- a/doc/SysCheck/Examples.html +++ b/doc/SysCheck/Examples.html @@ -239,5 +239,5 @@ Template argument size: 0/2097152 bytes Expensive parser function count: 0/100 --> -<!-- Saved in parser cache with key rasispdb:pcache:idhash:2656-0!*!*!!en!*!* and timestamp 20130916010442 --> +<!-- Saved in parser cache with key rasispdb:pcache:idhash:2656-0!*!*!!en!*!* and timestamp 20130927113014 --> </div></div></div></div></div></body></html>
\ No newline at end of file diff --git a/doc/SysCheck/Usage.html b/doc/SysCheck/Usage.html index a519816..b187d6c 100644 --- a/doc/SysCheck/Usage.html +++ b/doc/SysCheck/Usage.html @@ -116,5 +116,5 @@ Template argument size: 0/2097152 bytes Expensive parser function count: 0/100 --> -<!-- Saved in parser cache with key rasispdb:pcache:idhash:2655-0!*!0!!en!*!* and timestamp 20130916042438 --> +<!-- Saved in parser cache with key rasispdb:pcache:idhash:2655-0!*!0!!en!*!* and timestamp 20130927063354 --> </div></div></div></div></div></body></html>
\ No newline at end of file |