diff options
author | Andrey Ponomarenko <andrewponomarenko@yandex.ru> | 2016-08-20 23:52:11 +0300 |
---|---|---|
committer | Andrey Ponomarenko <andrewponomarenko@yandex.ru> | 2016-08-20 23:52:11 +0300 |
commit | 1b16ee8066edae7a1cd905e08b747fe797c3ec0e (patch) | |
tree | 70f52e63a659e12f04f61ce457c3b0a9340925e7 | |
parent | 8580e858c582b97ac65413cea1c6067385020720 (diff) | |
download | abi-compliance-checker-1b16ee8066edae7a1cd905e08b747fe797c3ec0e.tar.gz |
Support for Clang.
-rw-r--r-- | abi-compliance-checker.pl | 69 |
1 files changed, 58 insertions, 11 deletions
diff --git a/abi-compliance-checker.pl b/abi-compliance-checker.pl index 602cb56..d100399 100644 --- a/abi-compliance-checker.pl +++ b/abi-compliance-checker.pl @@ -1248,7 +1248,7 @@ my $MAX_COMMAND_LINE_ARGUMENTS = 4096; my $MAX_CPPFILT_FILE_SIZE = 50000; my $CPPFILT_SUPPORT_FILE; -my (%WORD_SIZE, %CPU_ARCH, %GCC_VERSION); +my (%WORD_SIZE, %CPU_ARCH, %GCC_VERSION, %CLANG_VERSION); my $STDCXX_TESTING = 0; my $GLIBC_TESTING = 0; @@ -15963,6 +15963,7 @@ sub get_Summary($) my ($Arch1, $Arch2) = (getArch(1), getArch(2)); my ($GccV1, $GccV2) = (getGccVersion(1), getGccVersion(2)); + my ($ClangV1, $ClangV2) = ($CLANG_VERSION{1}, $CLANG_VERSION{2}); my ($TestInfo, $TestResults, $Problem_Summary) = (); @@ -15973,13 +15974,23 @@ sub get_Summary($) $TestInfo .= " <version1>\n"; $TestInfo .= " <number>".$Descriptor{1}{"Version"}."</number>\n"; $TestInfo .= " <arch>$Arch1</arch>\n"; - $TestInfo .= " <gcc>$GccV1</gcc>\n"; + if($GccV1) { + $TestInfo .= " <gcc>$GccV1</gcc>\n"; + } + elsif($ClangV1) { + $TestInfo .= " <clang>$ClangV1</clang>\n"; + } $TestInfo .= " </version1>\n"; $TestInfo .= " <version2>\n"; $TestInfo .= " <number>".$Descriptor{2}{"Version"}."</number>\n"; $TestInfo .= " <arch>$Arch2</arch>\n"; - $TestInfo .= " <gcc>$GccV2</gcc>\n"; + if($GccV2) { + $TestInfo .= " <gcc>$GccV2</gcc>\n"; + } + elsif($ClangV2) { + $TestInfo .= " <clang>$ClangV2</clang>\n"; + } $TestInfo .= " </version2>\n"; $TestInfo = "<test_info>\n".$TestInfo."</test_info>\n\n"; @@ -16077,17 +16088,42 @@ sub get_Summary($) } } if($Level eq "Binary" - and $GccV1 ne "unknown" - and $GccV2 ne "unknown" and $OStarget ne "windows") - { # GCC version - if($GccV1 eq $GccV2) - { # go to the separate section - $AddTestInfo .= "<tr><th>GCC Version</th><td>$GccV1</td></tr>\n"; + { + if($GccV1 ne "unknown" + and $GccV2 ne "unknown") + { # GCC version + if($GccV1 eq $GccV2) + { # go to the separate section + $AddTestInfo .= "<tr><th>GCC Version</th><td>$GccV1</td></tr>\n"; + } + else + { # go to the version number + push(@VInf1, "gcc ".$GccV1); + push(@VInf2, "gcc ".$GccV2); + } } - else - { # go to the version number + elsif($ClangV1 + and $ClangV2) + { # Clang version + if($ClangV1 eq $ClangV2) + { # go to the separate section + $AddTestInfo .= "<tr><th>Clang Version</th><td>$ClangV1</td></tr>\n"; + } + else + { # go to the version number + push(@VInf1, "clang ".$ClangV1); + push(@VInf2, "clang ".$ClangV2); + } + } + elsif($GccV1 ne "unknown" and $ClangV2) + { push(@VInf1, "gcc ".$GccV1); + push(@VInf2, "clang ".$ClangV2); + } + elsif($ClangV1 and $GccV2 ne "unknown") + { + push(@VInf1, "clang ".$ClangV1); push(@VInf2, "gcc ".$GccV2); } } @@ -20756,6 +20792,9 @@ sub read_Machine_DumpInfo($$) if($ABI->{"GccVersion"}) { $GCC_VERSION{$LibVersion} = $ABI->{"GccVersion"}; } + elsif($ABI->{"ClangVersion"}) { + $CLANG_VERSION{$LibVersion} = $ABI->{"ClangVersion"}; + } } sub read_Libs_DumpInfo($$) @@ -22252,6 +22291,14 @@ sub quickEmptyReports() $Descriptor{1}{"Version"} = $TargetVersion{1}?$TargetVersion{1}:$ABIdump->{"LibraryVersion"}; $Descriptor{2}{"Version"} = $TargetVersion{2}?$TargetVersion{2}:$ABIdump->{"LibraryVersion"}; + if(not defined $Descriptor{1}{"Version"}) { + $Descriptor{1}{"Version"} = "X"; + } + + if(not defined $Descriptor{2}{"Version"}) { + $Descriptor{2}{"Version"} = "Y"; + } + if(defined $ABIdump->{"ABI_DUMPER_VERSION"}) { $UsedDump{1}{"DWARF"} = 1; |