From 1b16ee8066edae7a1cd905e08b747fe797c3ec0e Mon Sep 17 00:00:00 2001 From: Andrey Ponomarenko Date: Sat, 20 Aug 2016 23:52:11 +0300 Subject: Support for Clang. --- abi-compliance-checker.pl | 69 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 11 deletions(-) (limited to 'abi-compliance-checker.pl') 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 .= " \n"; $TestInfo .= " ".$Descriptor{1}{"Version"}."\n"; $TestInfo .= " $Arch1\n"; - $TestInfo .= " $GccV1\n"; + if($GccV1) { + $TestInfo .= " $GccV1\n"; + } + elsif($ClangV1) { + $TestInfo .= " $ClangV1\n"; + } $TestInfo .= " \n"; $TestInfo .= " \n"; $TestInfo .= " ".$Descriptor{2}{"Version"}."\n"; $TestInfo .= " $Arch2\n"; - $TestInfo .= " $GccV2\n"; + if($GccV2) { + $TestInfo .= " $GccV2\n"; + } + elsif($ClangV2) { + $TestInfo .= " $ClangV2\n"; + } $TestInfo .= " \n"; $TestInfo = "\n".$TestInfo."\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 .= "GCC Version$GccV1\n"; + { + if($GccV1 ne "unknown" + and $GccV2 ne "unknown") + { # GCC version + if($GccV1 eq $GccV2) + { # go to the separate section + $AddTestInfo .= "GCC Version$GccV1\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 .= "Clang Version$ClangV1\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; -- cgit v1.2.3