aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Ponomarenko <aponomarenko@rosalab.ru>2015-09-08 15:33:41 +0300
committerAndrey Ponomarenko <aponomarenko@rosalab.ru>2015-09-08 15:33:41 +0300
commit9b1ec76809c58e7c130de7de17ea467d6aa3888f (patch)
tree3f286fe9c80b54cd11f2d0cdf1c4ce02d8be9992
parent557b0896328617137bb830935843d098f5085fa8 (diff)
downloadabi-dumper-9b1ec76809c58e7c130de7de17ea467d6aa3888f.tar.gz
Fixed detection of access attribute of class methods. Support for Fedora Linux.
-rw-r--r--INSTALL2
-rw-r--r--README6
-rwxr-xr-xabi-dumper.pl20
3 files changed, 25 insertions, 3 deletions
diff --git a/INSTALL b/INSTALL
index 0641978..9ddb9fa 100644
--- a/INSTALL
+++ b/INSTALL
@@ -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
diff --git a/README b/README
index c890ed2..8900722 100644
--- a/README
+++ b/README
@@ -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"})
{