my $obj = Dpkg::Shlibs::Objdump::Object->new($file);
my $section = "none";
while (defined($_ = <OBJDUMP>)) {
- chomp($_);
+ chomp;
next if (/^\s*$/);
- if ($_ =~ /^DYNAMIC SYMBOL TABLE:/) {
+ if (/^DYNAMIC SYMBOL TABLE:/) {
$section = "dynsym";
next;
- } elsif ($_ =~ /^Dynamic Section:/) {
+ } elsif (/^Dynamic Section:/) {
$section = "dyninfo";
next;
- } elsif ($_ =~ /^Program Header:/) {
+ } elsif (/^Program Header:/) {
$section = "header";
next;
- } elsif ($_ =~ /^Version definitions:/) {
+ } elsif (/^Version definitions:/) {
$section = "verdef";
next;
- } elsif ($_ =~ /^Version References:/) {
+ } elsif (/^Version References:/) {
$section = "verref";
next;
}
if ($section eq "dynsym") {
$self->parse_dynamic_symbol($_, $obj);
} elsif ($section eq "dyninfo") {
- if ($_ =~ /^\s*NEEDED\s+(\S+)/) {
+ if (/^\s*NEEDED\s+(\S+)/) {
push @{$obj->{NEEDED}}, $1;
- } elsif ($_ =~ /^\s*SONAME\s+(\S+)/) {
+ } elsif (/^\s*SONAME\s+(\S+)/) {
$obj->{SONAME} = $1;
- } elsif ($_ =~ /^\s*HASH\s+(\S+)/) {
+ } elsif (/^\s*HASH\s+(\S+)/) {
$obj->{HASH} = $1;
- } elsif ($_ =~ /^\s*GNU_HASH\s+(\S+)/) {
+ } elsif (/^\s*GNU_HASH\s+(\S+)/) {
$obj->{GNU_HASH} = $1;
- } elsif ($_ =~ /^\s*RPATH\s+(\S+)/) {
+ } elsif (/^\s*RPATH\s+(\S+)/) {
push @{$obj->{RPATH}}, split (/:/, $1);
}
} elsif ($section eq "none") {
- if ($_ =~ /^\s*\S+:\s*file\s+format\s+(\S+)\s*$/) {
+ if (/^\s*\S+:\s*file\s+format\s+(\S+)\s*$/) {
$obj->{format} = $1;
}
}
my ($flags, $sect, $ver, $name) = ($1, $2, $3, $4);
my $symbol = {
- 'name' => $name,
- 'version' => defined($ver) ? $ver : '',
- 'section' => $sect,
- 'dynamic' => substr($flags, 5, 1) eq "D",
- 'debug' => substr($flags, 5, 1) eq "d",
- 'type' => substr($flags, 6, 1),
- 'weak' => substr($flags, 1, 1) eq "w",
- 'hidden' => 0,
- 'defined' => $sect ne '*UND*'
+ name => $name,
+ version => defined($ver) ? $ver : '',
+ section => $sect,
+ dynamic => substr($flags, 5, 1) eq "D",
+ debug => substr($flags, 5, 1) eq "d",
+ type => substr($flags, 6, 1),
+ weak => substr($flags, 1, 1) eq "w",
+ hidden => 0,
+ defined => $sect ne '*UND*'
};
- # Handle hidden symbols
+ # Handle hidden symbols
if (defined($ver) and $ver =~ /^\((.*)\)$/) {
$ver = $1;
- $symbol->{'version'} = $1;
- $symbol->{'hidden'} = 1;
+ $symbol->{version} = $1;
+ $symbol->{hidden} = 1;
}
# Register symbol
my $file = shift || '';
my $class = ref($this) || $this;
my $self = {
- 'file' => $file,
- 'SONAME' => '',
- 'NEEDED' => [],
- 'RPATH' => [],
- 'dynsyms' => {}
+ file => $file,
+ SONAME => '',
+ NEEDED => [],
+ RPATH => [],
+ dynsyms => {}
};
bless $self, $class;
return $self;