diff options
author | Andrey Ponomarenko <aponomarenko@rosalab.ru> | 2015-09-08 15:33:41 +0300 |
---|---|---|
committer | Andrey Ponomarenko <aponomarenko@rosalab.ru> | 2015-09-08 15:33:41 +0300 |
commit | 9b1ec76809c58e7c130de7de17ea467d6aa3888f (patch) | |
tree | 3f286fe9c80b54cd11f2d0cdf1c4ce02d8be9992 | |
parent | 557b0896328617137bb830935843d098f5085fa8 (diff) | |
download | abi-dumper-9b1ec76809c58e7c130de7de17ea467d6aa3888f.tar.gz |
Fixed detection of access attribute of class methods. Support for Fedora Linux.
-rw-r--r-- | INSTALL | 2 | ||||
-rw-r--r-- | README | 6 | ||||
-rwxr-xr-x | abi-dumper.pl | 20 |
3 files changed, 25 insertions, 3 deletions
@@ -7,7 +7,7 @@ RELEASE INFORMATION Project: ABI Dumper Version: 0.99.9 -Date: 2015-09-06 +Date: 2015-09-08 This file explains how to install and setup environment @@ -1,11 +1,13 @@ NAME: - ABI Dumper - a tool to dump ABI of an ELF object containing DWARF debug info + ABI Dumper - a tool to dump ABI of an ELF object containing DWARF debug info. The tool is intended to be used with ABI Compliance Checker tool for tracking ABI changes of a C/C++ library or kernel module. + + The tool is developed by Andrey Ponomarenko: http://abi-laboratory.pro/ INSTALL: - sudo perl Makefile.pl -install --prefix=/usr + sudo make install prefix=/usr REQUIRES: Perl 5 (5.8 or newer) diff --git a/abi-dumper.pl b/abi-dumper.pl index 9ecbd66..3aeb967 100755 --- a/abi-dumper.pl +++ b/abi-dumper.pl @@ -1086,6 +1086,11 @@ sub read_DWARF_Dump($$) my ($Attr, $Val) = ($1, $2); + if(index($Val, "flag_present")!=-1) + { # Fedora + $Val = "Yes"; + } + if($Kind eq "member" or $Kind eq "formal_parameter") { @@ -3511,6 +3516,10 @@ sub getSymbolInfo($) $SInfo{ucfirst($Access)} = 1; } } + else + { # NOTE: default access of class methods in the debug info is "private" + $SInfo{"Private"} = 1; + } # clean origin delete($SymbolInfo{$Spec}); @@ -3573,6 +3582,17 @@ sub getSymbolInfo($) $SInfo{ucfirst($Access)} = 1; } } + elsif(not $DWARF_Info{$ID}{"specification"} + and not $DWARF_Info{$ID}{"abstract_origin"}) + { + if(my $NS = $NameSpace{$ID}) + { + if(defined $TypeInfo{$NS}) + { # NOTE: default access of class methods in the debug info is "private" + $SInfo{"Private"} = 1; + } + } + } if(my $Class = $DWARF_Info{$ID}{"containing_type"}) { |