aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Ponomarenko <aponomarenko@rosalab.ru>2013-06-28 12:50:10 +0400
committerAndrey Ponomarenko <aponomarenko@rosalab.ru>2013-06-28 12:50:10 +0400
commite3a8d81ab0e2aeefe91205d96c2edeec14749ec7 (patch)
tree423d33d7fe031d6f4be35b62f333323e760787ac
parent96b86aef1d1dc6a223bc260aa1af55a0093d1136 (diff)
downloadabi-compliance-checker-e3a8d81ab0e2aeefe91205d96c2edeec14749ec7.tar.gz
Fixed infinite loop; Improved performance (5%).
-rw-r--r--INSTALL4
-rwxr-xr-xabi-compliance-checker.pl159
-rw-r--r--doc/Changes.html11
-rw-r--r--doc/Descriptor.html2
-rw-r--r--doc/Options.html2
-rw-r--r--doc/Readme.html6
-rw-r--r--doc/SysCheck/Descriptor.html2
-rw-r--r--doc/SysCheck/Examples.html2
-rw-r--r--doc/SysCheck/Usage.html2
9 files changed, 105 insertions, 85 deletions
diff --git a/INSTALL b/INSTALL
index 9357252..275e8e3 100644
--- a/INSTALL
+++ b/INSTALL
@@ -9,8 +9,8 @@ All rights reserved.
RELEASE INFORMATION
Project: ABI Compliance Checker (ACC)
-Version: 1.99.3
-Date: 2013-06-26
+Version: 1.99.4
+Date: 2013-06-29
This file explains how to install and setup environment
diff --git a/abi-compliance-checker.pl b/abi-compliance-checker.pl
index 9603b10..e2064c9 100755
--- a/abi-compliance-checker.pl
+++ b/abi-compliance-checker.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl
###########################################################################
-# ABI Compliance Checker (ACC) 1.99.3
+# ABI Compliance Checker (ACC) 1.99.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.3";
+my $TOOL_VERSION = "1.99.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);
+$CheckInfo, $Quick);
my $CmdName = get_filename($0);
my %OS_LibExt = (
@@ -273,7 +273,8 @@ GetOptions("h|help!" => \$Help,
"force!" => \$Force,
"tolerance=s" => \$Tolerance,
"tolerant!" => \$Tolerant,
- "check!" => \$CheckInfo
+ "check!" => \$CheckInfo,
+ "quick!" => \$Quick
) or ERR_MESSAGE();
sub ERR_MESSAGE()
@@ -771,6 +772,9 @@ OTHER OPTIONS:
-check
Check completeness of the ABI dump.
+
+ -quick
+ Quick analysis. Disable check of some template instances.
REPORT:
Compatibility report will be generated to:
@@ -2550,7 +2554,7 @@ sub createType($$)
my $NewId = ++$MAX_ID;
$TypeInfo{$Version}{$NewId} = $Attr;
- $TName_Tid{$Version}{$Attr->{"Name"}} = $NewId;
+ $TName_Tid{$Version}{formatName($Attr->{"Name"}, "T")} = $NewId;
return "$NewId";
}
@@ -2577,8 +2581,7 @@ sub instType($$$)
{ # remove absent
# _Traits, etc.
$Attr->{"Name"}=~s/,\s*\b$Key(,|>)/$1/g;
- if(defined $Attr->{"NameSpace"})
- {
+ if(defined $Attr->{"NameSpace"}) {
$Attr->{"NameSpace"}=~s/,\s*\b$Key(,|>)/$1/g;
}
foreach (keys(%{$Attr->{"TParam"}}))
@@ -2586,8 +2589,7 @@ sub instType($$$)
if($Attr->{"TParam"}{$_}{"name"} eq $Key) {
delete($Attr->{"TParam"}{$_});
}
- else
- {
+ else {
$Attr->{"TParam"}{$_}{"name"}=~s/,\s*\b$Key(,|>)/$1/g;
}
}
@@ -2625,6 +2627,8 @@ sub instType($$$)
delete($Attr->{"Template"});
}
+ my $New = createType($Attr, $LibVersion);
+
my %EMap = ();
if(defined $TemplateMap{$LibVersion}{$Tid}) {
%EMap = %{$TemplateMap{$LibVersion}{$Tid}};
@@ -2633,44 +2637,42 @@ sub instType($$$)
$EMap{$_} = $Map->{$_};
}
- if(defined $Attr->{"BaseType"}) {
- $Attr->{"BaseType"} = instType(\%EMap, $Attr->{"BaseType"}, $LibVersion);
+ if(defined $TypeInfo{$LibVersion}{$New}{"BaseType"}) {
+ $TypeInfo{$LibVersion}{$New}{"BaseType"} = instType(\%EMap, $TypeInfo{$LibVersion}{$New}{"BaseType"}, $LibVersion);
}
- if(defined $Attr->{"Base"})
+ if(defined $TypeInfo{$LibVersion}{$New}{"Base"})
{
- foreach my $Bid (keys(%{$Attr->{"Base"}}))
+ foreach my $Bid (keys(%{$TypeInfo{$LibVersion}{$New}{"Base"}}))
{
my $NBid = instType(\%EMap, $Bid, $LibVersion);
if($NBid ne $Bid)
{
- %{$Attr->{"Base"}{$NBid}} = %{$Attr->{"Base"}{$Bid}};
- delete($Attr->{"Base"}{$Bid});
+ %{$TypeInfo{$LibVersion}{$New}{"Base"}{$NBid}} = %{$TypeInfo{$LibVersion}{$New}{"Base"}{$Bid}};
+ delete($TypeInfo{$LibVersion}{$New}{"Base"}{$Bid});
}
}
}
- my $R = createType($Attr, $LibVersion);
-
- if(defined $Attr->{"Memb"})
+ if(defined $TypeInfo{$LibVersion}{$New}{"Memb"})
{
- foreach (sort {int($a)<=>int($b)} keys(%{$Attr->{"Memb"}})) {
- $Attr->{"Memb"}{$_}{"type"} = instType(\%EMap, $Attr->{"Memb"}{$_}{"type"}, $LibVersion);
+ foreach (sort {int($a)<=>int($b)} keys(%{$TypeInfo{$LibVersion}{$New}{"Memb"}})) {
+ $TypeInfo{$LibVersion}{$New}{"Memb"}{$_}{"type"} = instType(\%EMap, $TypeInfo{$LibVersion}{$New}{"Memb"}{$_}{"type"}, $LibVersion);
}
}
- if(defined $Attr->{"Param"})
+ if(defined $TypeInfo{$LibVersion}{$New}{"Param"})
{
- foreach (sort {int($a)<=>int($b)} keys(%{$Attr->{"Param"}})) {
- $Attr->{"Param"}{$_}{"type"} = instType(\%EMap, $Attr->{"Param"}{$_}{"type"}, $LibVersion);
+ foreach (sort {int($a)<=>int($b)} keys(%{$TypeInfo{$LibVersion}{$New}{"Param"}})) {
+ $TypeInfo{$LibVersion}{$New}{"Param"}{$_}{"type"} = instType(\%EMap, $TypeInfo{$LibVersion}{$New}{"Param"}{$_}{"type"}, $LibVersion);
}
}
- if(defined $Attr->{"Return"}) {
- $Attr->{"Return"} = instType(\%EMap, $Attr->{"Return"}, $LibVersion);
+ if(defined $TypeInfo{$LibVersion}{$New}{"Return"}) {
+ $TypeInfo{$LibVersion}{$New}{"Return"} = instType(\%EMap, $TypeInfo{$LibVersion}{$New}{"Return"}, $LibVersion);
}
- return $R;
+ return $New;
}
}
@@ -3593,11 +3595,15 @@ sub isTypedef($)
}
if(my $Info = $LibInfo{$Version}{"info"}{$_[0]})
{
- my $TDid = getTypeDeclId($_[0]);
- if(getNameByInfo($TDid)
- and $Info=~/unql[ ]*:[ ]*\@(\d+) /
- and getTypeId($TDid) eq $_[0]) {
- return $1;
+ if(my $TDid = getTypeDeclId($_[0]))
+ {
+ if(getTypeId($TDid) eq $_[0]
+ and getNameByInfo($TDid))
+ {
+ if($Info=~/unql[ ]*:[ ]*\@(\d+) /) {
+ return $1;
+ }
+ }
}
}
}
@@ -4023,15 +4029,18 @@ sub getTrivialTypeAttr($)
if($ADD_TMPL_INSTANCES)
{
- if(not getTreeAttr_Flds($TypeId))
+ if($Tmpl)
{
- if($Tmpl)
+ if(my $MainInst = getTreeAttr_Type($Tmpl))
{
- if(my $MainInst = getTreeAttr_Type($Tmpl))
+ if(not getTreeAttr_Flds($TypeId))
{
if(my $Flds = getTreeAttr_Flds($MainInst)) {
$LibInfo{$Version}{"info"}{$TypeId} .= " flds: \@$Flds ";
}
+ }
+ if(not getTreeAttr_Binf($TypeId))
+ {
if(my $Binf = getTreeAttr_Binf($MainInst)) {
$LibInfo{$Version}{"info"}{$TypeId} .= " binf: \@$Binf ";
}
@@ -5655,7 +5664,7 @@ sub setFuncArgs($$)
}
elsif(my $OldId = $SymbolInfo{$Version}{$InfoId}{"Param"}{$Pos}{"type"})
{
- if(getFuncType($InfoId) ne "Method" or $Pos>0)
+ if($Pos>0 or getFuncType($InfoId) ne "Method")
{ # params
if($OldId ne $ParamTypeId)
{
@@ -7158,9 +7167,9 @@ sub selectSystemHeader_I($$)
return join_P($Path,$Header);
}
}
- if(not keys(%SystemHeaders))
+ if(not defined $Cache{"checkSystemFiles"})
{ # register all headers in system include dirs
- detectSystemHeaders();
+ checkSystemFiles();
}
foreach my $Candidate (sort {get_depth($a)<=>get_depth($b)}
sort {cmp_paths($b, $a)} getSystemHeaders($Header, $LibVersion))
@@ -14529,8 +14538,8 @@ sub find_ParamPair_Pos_byTypeAndPos($$$$$)
sub getTypeIdByName($$)
{
- my ($TypeName, $Version) = @_;
- return $TName_Tid{$Version}{formatName($TypeName, "T")};
+ my ($TypeName, $LibVersion) = @_;
+ return $TName_Tid{$LibVersion}{formatName($TypeName, "T")};
}
sub diffTypes($$$)
@@ -18770,7 +18779,9 @@ sub get_LibPath_I($$)
return join_P($Dir,$Name);
}
}
- detectSystemObjects() if(not keys(%SystemObjects));
+ if(not defined $Cache{"checkSystemFiles"}) {
+ checkSystemFiles();
+ }
if(my @AllObjects = keys(%{$SystemObjects{$Name}})) {
return $AllObjects[0];
}
@@ -19203,46 +19214,51 @@ sub get_prefixes_I($$)
}
}
-sub detectSystemHeaders()
+sub checkSystemFiles()
{
+ $Cache{"checkSystemFiles"} = 1;
+
my @SysHeaders = ();
- foreach my $DevelPath (@{$SystemPaths{"include"}})
+
+ foreach my $DevelPath (@{$SystemPaths{"lib"}})
{
next if(not -d $DevelPath);
- # search for all header files in the /usr/include
- # with or without extension (ncurses.h, QtCore, ...)
- push(@SysHeaders, cmd_find($DevelPath,"f"));
- foreach my $Link (cmd_find($DevelPath,"l"))
- { # add symbolic links
- if(-f $Link) {
- push(@SysHeaders, $Link);
- }
+
+ my @Files = cmd_find($DevelPath);
+
+ if(not $CheckObjectsOnly)
+ {
+ # search for headers in /usr/lib
+ @SysHeaders = grep { /\.h(pp|xx)?\Z|\/include\// } @Files;
+ @SysHeaders = grep { not /\/(gcc|jvm|syslinux|kbd|parrot|xemacs|perl|llvm)/ } @SysHeaders;
}
- }
- foreach my $DevelPath (@{$SystemPaths{"lib"}})
- { # search for config headers in the /usr/lib
- next if(not -d $DevelPath);
- foreach (cmd_find($DevelPath,"f",'\.h(pp|xx)?\Z|\/include\/',"",1))
+
+ # search for libraries in /usr/lib (including symbolic links)
+ my @Libs = grep { /\.$LIB_EXT[0-9.]*\Z/ } @Files;
+ foreach my $Path (@Libs)
{
- if(/\/(gcc|jvm|syslinux|kbd|parrot|xemacs)/)
- { # skip useless headers
- next;
- }
- push(@SysHeaders, $_);
+ my $N = get_filename($Path);
+ $SystemObjects{$N}{$Path} = 1;
+ $SystemObjects{parse_libname($N, "name+ext", $OStarget)}{$Path} = 1;
}
}
- get_prefixes_I(\@SysHeaders, \%SystemHeaders);
-}
-
-sub detectSystemObjects()
-{
- foreach my $DevelPath (@{$SystemPaths{"lib"}})
+
+ if(not $CheckObjectsOnly)
{
- next if(not -d $DevelPath);
- foreach my $Path (find_libs($DevelPath,"",""))
- { # search for shared libraries in the /usr/lib (including symbolic links)
- $SystemObjects{parse_libname(get_filename($Path), "name+ext", $OStarget)}{$Path}=1;
+ foreach my $DevelPath (@{$SystemPaths{"include"}})
+ {
+ next if(not -d $DevelPath);
+ # search for all header files in the /usr/include
+ # with or without extension (ncurses.h, QtCore, ...)
+ push(@SysHeaders, cmd_find($DevelPath,"f"));
+ foreach my $Link (cmd_find($DevelPath,"l"))
+ { # add symbolic links
+ if(-f $Link) {
+ push(@SysHeaders, $Link);
+ }
+ }
}
+ get_prefixes_I(\@SysHeaders, \%SystemHeaders);
}
}
@@ -22305,6 +22321,9 @@ sub scenario()
$COMMON_LOG_PATH = $LoggingPath;
}
}
+ if($Quick) {
+ $ADD_TMPL_INSTANCES = 0;
+ }
if($OutputDumpPath)
{ # validate
if(not isDump($OutputDumpPath)) {
diff --git a/doc/Changes.html b/doc/Changes.html
index 325e388..b477ba4 100644
--- a/doc/Changes.html
+++ b/doc/Changes.html
@@ -21,7 +21,7 @@
</style>
<script src="/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=monobook&amp;*"></script>
<script>if(window.mw){
- mw.config.set({"wgCanonicalNamespace": "", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 0, "wgPageName": "ABI_compliance_checker_Downloads", "wgTitle": "ABI Compliance Checker Downloads", "wgCurRevisionId": 8293, "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": 8295, "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.3_.28June_26.2C_2013.29"><span class="tocnumber">1</span> <span class="toctext">Version 1.99.3 (June 26, 2013)</span></a></li>
+<li class="toclevel-1 tocsection-1"><a href="#Version_1.99.4_.28June_29.2C_2013.29"><span class="tocnumber">1</span> <span class="toctext">Version 1.99.4 (June 29, 2013)</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#Version_1.99.1_.28June_07.2C_2013.29"><span class="tocnumber">2</span> <span class="toctext">Version 1.99.1 (June 07, 2013)</span></a></li>
<li class="toclevel-1 tocsection-3"><a href="#Version_1.99_.28May_24.2C_2013.29"><span class="tocnumber">3</span> <span class="toctext">Version 1.99 (May 24, 2013)</span></a></li>
<li class="toclevel-1 tocsection-4"><a href="#Version_1.98.8_.28February_07.2C_2013.29"><span class="tocnumber">4</span> <span class="toctext">Version 1.98.8 (February 07, 2013)</span></a></li>
@@ -91,8 +91,8 @@
<li class="toclevel-1 tocsection-46"><a href="#Version_1.0_.28July_31.2C_2009.29"><span class="tocnumber">46</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.3_.28June_26.2C_2013.29"> Version 1.99.3 (June 26, 2013) </span></h2>
-<p><a rel="nofollow" class="external text" href="https://github.com/lvc/abi-compliance-checker/archive/1.99.3.tar.gz">abi-compliance-checker-1.99.3.tar.gz</a><br />
+<h2> <span class="mw-headline" id="Version_1.99.4_.28June_29.2C_2013.29"> Version 1.99.4 (June 29, 2013) </span></h2>
+<p><a rel="nofollow" class="external text" href="https://github.com/lvc/abi-compliance-checker/archive/1.99.4.tar.gz">abi-compliance-checker-1.99.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><li> Corrected visualization of v-table content in the report
</li><li> Corrected identification of target headers
</li><li> Corrected source-compatibility check
+</li><li> Performance optimization (5%)
</li></ul>
</li></ul>
<ul><li> <b>New Options</b>
@@ -1036,5 +1037,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 20130626113712 -->
+<!-- Saved in parser cache with key rasispdb:pcache:idhash:2293-0!*!0!!en!*!* and timestamp 20130628084630 -->
</div></div></div></div></div></body></html> \ No newline at end of file
diff --git a/doc/Descriptor.html b/doc/Descriptor.html
index 1bf31b4..488c9da 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 20130625115533 -->
+<!-- Saved in parser cache with key rasispdb:pcache:idhash:2415-0!*!*!!en!*!* and timestamp 20130627211302 -->
</div></div></div></div></div></body></html> \ No newline at end of file
diff --git a/doc/Options.html b/doc/Options.html
index 947d66f..e0bd05d 100644
--- a/doc/Options.html
+++ b/doc/Options.html
@@ -277,5 +277,5 @@ 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 20130625182409 -->
+<!-- Saved in parser cache with key rasispdb:pcache:idhash:2442-0!*!0!!en!*!* and timestamp 20130628084703 -->
</div></div></div></div></div></body></html> \ No newline at end of file
diff --git a/doc/Readme.html b/doc/Readme.html
index 79dc9b5..38c2e7d 100644
--- a/doc/Readme.html
+++ b/doc/Readme.html
@@ -21,7 +21,7 @@
</style>
<script src="/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=monobook&amp;*"></script>
<script>if(window.mw){
- mw.config.set({"wgCanonicalNamespace": "", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 0, "wgPageName": "ABI_compliance_checker", "wgTitle": "ABI Compliance Checker", "wgCurRevisionId": 8292, "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": 8294, "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.3.tar.gz">1.99.3</a>
+</p><p>Latest release: <a rel="nofollow" class="external text" href="https://github.com/lvc/abi-compliance-checker/archive/1.99.4.tar.gz">1.99.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 20130626113629 -->
+<!-- Saved in parser cache with key rasispdb:pcache:idhash:2292-0!*!0!!en!*!* and timestamp 20130628084448 -->
</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 9b01685..5b767ce 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 20130625220600 -->
+<!-- Saved in parser cache with key rasispdb:pcache:idhash:2657-0!*!*!!*!*!* and timestamp 20130628084706 -->
</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 0d45e0e..10acc6c 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 20130625145729 -->
+<!-- Saved in parser cache with key rasispdb:pcache:idhash:2656-0!*!*!!en!*!* and timestamp 20130628032307 -->
</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 8a34826..4ce5080 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 20130626113929 -->
+<!-- Saved in parser cache with key rasispdb:pcache:idhash:2655-0!*!0!!en!*!* and timestamp 20130627150848 -->
</div></div></div></div></div></body></html> \ No newline at end of file