Open DonRomanos opened 7 years ago
Sorry to step into someone else's bug report. Regarding the math functions, see Jonathan Wakely's Why <cstdlib>
is more complicated than you might think from the Red Hat blogs. Wakely is one of GCC's C++ standard library maintainers.
I know GCC changed some things recently with respect to <cstdlib>
and <cmath>
. See Macports Issue 53226, gcc5 @5.4: error: 'std::log2' has not been declared and GCC Issue 79017, Old PowerMac G5, MacPorts GCC 5.4, C++11 and "std::log2 has not been declared". Jonathan was kind enough to backport the changes to a bunch of different versions of GCC.
I realize Windows and Linux are different, but sometimes things cross-pollinate; and other times one project follows another's lead.
Hello,
I'm using the ABI-Compliance-Checker under Windows, to check some static libs compiled with Visual Studio 2008. The tool works fine, except it finds lots of removed Symbols in the Source report, which are in fact there. This includes Symbols from std-headers, or boost, which clearly have not changed, see the screenshot for an example.
I traced the issue and found out that the selectSymbol method returns false, because the header is not in
$In::Desc{$V}{"TargetHeader"}
.So I checked where it is set in the Module
SysFiles
, MethodaddTargetHeaders
there is the line 2317:if( familiarDirs($RegDir, $Dir) or $RecursiveIncludes{$LVer}{$RegHeader}{$RecInc}!=1) { # in the same directory or included by #include "..." $In::Desc{$LVer}{"TargetHeader"}{getFilename($RecInc)} = 1; }
This returns false for headers containing the symbols which cause the errors. So I wondered if the "!=1" part in
$RecursiveIncludes{$LVer}{$RegHeader}{$RecInc}!=1
might be a mistake, since when I remove it, the program seems to run fine and the false removed symbol errors disappear.Except in one case which I'm currently investigating.
If you need more info, I can provide you with more details.
Thank you for the awesome tool!
Edit: Okay, it only fixed most of the errors not all, I still have some issues with standard headers: I'm looking into this now.
Edit2: I checked the extended mode, then the issues also appear in the binary report. The issues now only concern standard headers like strings.h, cwchar, direct.h, io.h, process.h, stat.h, string.h, and a few others, but only std-headers.