|
@@ -27,7 +27,7 @@ my @save_paths = @Dpkg::Shlibs::librarypaths;
|
|
|
@Dpkg::Shlibs::librarypaths = ();
|
|
@Dpkg::Shlibs::librarypaths = ();
|
|
|
|
|
|
|
|
my $srcdir = $ENV{srcdir} || '.';
|
|
my $srcdir = $ENV{srcdir} || '.';
|
|
|
-$srcdir .= '/t/200_Dpkg_Shlibs';
|
|
|
|
|
|
|
+my $datadir = $srcdir . '/t/200_Dpkg_Shlibs';
|
|
|
|
|
|
|
|
Dpkg::Shlibs::parse_ldso_conf("t.tmp/ld.so.conf");
|
|
Dpkg::Shlibs::parse_ldso_conf("t.tmp/ld.so.conf");
|
|
|
|
|
|
|
@@ -40,15 +40,15 @@ use_ok('Dpkg::Shlibs::Objdump');
|
|
|
|
|
|
|
|
my $obj = Dpkg::Shlibs::Objdump::Object->new;
|
|
my $obj = Dpkg::Shlibs::Objdump::Object->new;
|
|
|
|
|
|
|
|
-open my $objdump, '<', "$srcdir/objdump.dbd-pg"
|
|
|
|
|
- or die "$srcdir/objdump.dbd-pg: $!";
|
|
|
|
|
|
|
+open my $objdump, '<', "$datadir/objdump.dbd-pg"
|
|
|
|
|
+ or die "$datadir/objdump.dbd-pg: $!";
|
|
|
$obj->_parse($objdump);
|
|
$obj->_parse($objdump);
|
|
|
close $objdump;
|
|
close $objdump;
|
|
|
ok(!$obj->is_public_library(), 'Pg.so is not a public library');
|
|
ok(!$obj->is_public_library(), 'Pg.so is not a public library');
|
|
|
ok(!$obj->is_executable(), 'Pg.so is not an executable');
|
|
ok(!$obj->is_executable(), 'Pg.so is not an executable');
|
|
|
|
|
|
|
|
-open $objdump, '<', "$srcdir/objdump.ls"
|
|
|
|
|
- or die "$srcdir/objdump.ls: $!";
|
|
|
|
|
|
|
+open $objdump, '<', "$datadir/objdump.ls"
|
|
|
|
|
+ or die "$datadir/objdump.ls: $!";
|
|
|
$obj->reset();
|
|
$obj->reset();
|
|
|
$obj->_parse($objdump);
|
|
$obj->_parse($objdump);
|
|
|
close $objdump;
|
|
close $objdump;
|
|
@@ -63,8 +63,8 @@ ok(!$sym->{'defined'}, 'R_*_COPY relocations are taken into account');
|
|
|
$sym = $obj->get_symbol('singlespace');
|
|
$sym = $obj->get_symbol('singlespace');
|
|
|
ok($sym, 'version less symbol separated by a single space are correctly parsed');
|
|
ok($sym, 'version less symbol separated by a single space are correctly parsed');
|
|
|
|
|
|
|
|
-open $objdump, '<', "$srcdir/objdump.libc6-2.6"
|
|
|
|
|
- or die "$srcdir/objdump.libc6-2.6: $!";
|
|
|
|
|
|
|
+open $objdump, '<', "$datadir/objdump.libc6-2.6"
|
|
|
|
|
+ or die "$datadir/objdump.libc6-2.6: $!";
|
|
|
$obj->reset();
|
|
$obj->reset();
|
|
|
$obj->_parse($objdump);
|
|
$obj->_parse($objdump);
|
|
|
close $objdump;
|
|
close $objdump;
|
|
@@ -103,8 +103,8 @@ is( scalar @syms, 9, 'undefined && dynamic' );
|
|
|
|
|
|
|
|
my $obj_old = Dpkg::Shlibs::Objdump::Object->new;
|
|
my $obj_old = Dpkg::Shlibs::Objdump::Object->new;
|
|
|
|
|
|
|
|
-open $objdump, '<', "$srcdir/objdump.libc6-2.3"
|
|
|
|
|
- or die "$srcdir/objdump.libc6-2.3: $!";
|
|
|
|
|
|
|
+open $objdump, '<', "$datadir/objdump.libc6-2.3"
|
|
|
|
|
+ or die "$datadir/objdump.libc6-2.3: $!";
|
|
|
$obj_old->_parse($objdump);
|
|
$obj_old->_parse($objdump);
|
|
|
close $objdump;
|
|
close $objdump;
|
|
|
|
|
|
|
@@ -112,9 +112,9 @@ close $objdump;
|
|
|
use_ok('Dpkg::Shlibs::SymbolFile');
|
|
use_ok('Dpkg::Shlibs::SymbolFile');
|
|
|
use_ok('Dpkg::Shlibs::Symbol');
|
|
use_ok('Dpkg::Shlibs::Symbol');
|
|
|
|
|
|
|
|
-my $sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$srcdir/symbol_file.tmp");
|
|
|
|
|
-my $sym_file_dup = Dpkg::Shlibs::SymbolFile->new(file => "$srcdir/symbol_file.tmp");
|
|
|
|
|
-my $sym_file_old = Dpkg::Shlibs::SymbolFile->new(file => "$srcdir/symbol_file.tmp");
|
|
|
|
|
|
|
+my $sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/symbol_file.tmp");
|
|
|
|
|
+my $sym_file_dup = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/symbol_file.tmp");
|
|
|
|
|
+my $sym_file_old = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/symbol_file.tmp");
|
|
|
|
|
|
|
|
$sym_file->merge_symbols($obj_old, "2.3.6.ds1-13");
|
|
$sym_file->merge_symbols($obj_old, "2.3.6.ds1-13");
|
|
|
$sym_file_old->merge_symbols($obj_old, "2.3.6.ds1-13");
|
|
$sym_file_old->merge_symbols($obj_old, "2.3.6.ds1-13");
|
|
@@ -154,12 +154,12 @@ my $save_file = new File::Temp;
|
|
|
$sym_file->save($save_file->filename);
|
|
$sym_file->save($save_file->filename);
|
|
|
|
|
|
|
|
$sym_file_dup->load($save_file->filename);
|
|
$sym_file_dup->load($save_file->filename);
|
|
|
-$sym_file_dup->{file} = "$srcdir/symbol_file.tmp";
|
|
|
|
|
|
|
+$sym_file_dup->{file} = "$datadir/symbol_file.tmp";
|
|
|
|
|
|
|
|
is_deeply($sym_file_dup, $sym_file, 'save -> load' );
|
|
is_deeply($sym_file_dup, $sym_file, 'save -> load' );
|
|
|
|
|
|
|
|
# Test include mechanism of SymbolFile
|
|
# Test include mechanism of SymbolFile
|
|
|
-$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$srcdir/symbols.include-1");
|
|
|
|
|
|
|
+$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/symbols.include-1");
|
|
|
|
|
|
|
|
$sym = $sym_file->lookup_symbol('symbol_before@Base', ['libfake.so.1']);
|
|
$sym = $sym_file->lookup_symbol('symbol_before@Base', ['libfake.so.1']);
|
|
|
is_deeply($sym, Dpkg::Shlibs::Symbol->new( 'symbol' => 'symbol_before@Base',
|
|
is_deeply($sym, Dpkg::Shlibs::Symbol->new( 'symbol' => 'symbol_before@Base',
|
|
@@ -194,7 +194,7 @@ is_deeply($sym, Dpkg::Shlibs::Symbol->new ( 'symbol' => 'symbol_in_libdivert@Bas
|
|
|
'depends' => 'libdivert1 #MINVER#', 'soname' => 'libdivert.so.1'),
|
|
'depends' => 'libdivert1 #MINVER#', 'soname' => 'libdivert.so.1'),
|
|
|
'#include can change current object');
|
|
'#include can change current object');
|
|
|
|
|
|
|
|
-$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$srcdir/symbols.include-2");
|
|
|
|
|
|
|
+$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/symbols.include-2");
|
|
|
|
|
|
|
|
$sym = $sym_file->lookup_symbol('symbol1_fake2@Base', ['libfake.so.1']);
|
|
$sym = $sym_file->lookup_symbol('symbol1_fake2@Base', ['libfake.so.1']);
|
|
|
is_deeply($sym, Dpkg::Shlibs::Symbol->new ( 'symbol' => 'symbol1_fake2@Base',
|
|
is_deeply($sym, Dpkg::Shlibs::Symbol->new ( 'symbol' => 'symbol1_fake2@Base',
|
|
@@ -215,15 +215,15 @@ is(${$io->string_ref()},
|
|
|
symbol1_fake2@Base 1.0 1
|
|
symbol1_fake2@Base 1.0 1
|
|
|
symbol2_fake2@Base 1.0
|
|
symbol2_fake2@Base 1.0
|
|
|
symbol3_fake2@Base 1.1
|
|
symbol3_fake2@Base 1.1
|
|
|
-', "Dump of $srcdir/symbols.include-2");
|
|
|
|
|
|
|
+', "Dump of $datadir/symbols.include-2");
|
|
|
|
|
|
|
|
|
|
|
|
|
# Check parsing of objdump output on ia64 (local symbols
|
|
# Check parsing of objdump output on ia64 (local symbols
|
|
|
# without versions and with visibility attribute)
|
|
# without versions and with visibility attribute)
|
|
|
$obj = Dpkg::Shlibs::Objdump::Object->new;
|
|
$obj = Dpkg::Shlibs::Objdump::Object->new;
|
|
|
|
|
|
|
|
-open $objdump, '<', "$srcdir/objdump.glib-ia64"
|
|
|
|
|
- or die "$srcdir/objdump.glib-ia64: $!";
|
|
|
|
|
|
|
+open $objdump, '<', "$datadir/objdump.glib-ia64"
|
|
|
|
|
+ or die "$datadir/objdump.glib-ia64: $!";
|
|
|
$obj->_parse($objdump);
|
|
$obj->_parse($objdump);
|
|
|
close $objdump;
|
|
close $objdump;
|
|
|
|
|
|
|
@@ -240,14 +240,14 @@ is_deeply( $sym, { name => 'IA__g_free', version => '',
|
|
|
|
|
|
|
|
# Parsing/dumping
|
|
# Parsing/dumping
|
|
|
# Template mode
|
|
# Template mode
|
|
|
-$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$srcdir/symbols.tags.in", arch => 'amd64');
|
|
|
|
|
|
|
+$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/symbols.tags.in", arch => 'amd64');
|
|
|
$sym_file->save($save_file->filename, template_mode => 1);
|
|
$sym_file->save($save_file->filename, template_mode => 1);
|
|
|
|
|
|
|
|
$sym_file_dup = Dpkg::Shlibs::SymbolFile->new(file => $save_file, arch => 'amd64');
|
|
$sym_file_dup = Dpkg::Shlibs::SymbolFile->new(file => $save_file, arch => 'amd64');
|
|
|
-$sym_file_dup->{file} = "$srcdir/symbols.tags.in";
|
|
|
|
|
|
|
+$sym_file_dup->{file} = "$datadir/symbols.tags.in";
|
|
|
|
|
|
|
|
is_deeply($sym_file_dup, $sym_file, 'template save -> load' );
|
|
is_deeply($sym_file_dup, $sym_file, 'template save -> load' );
|
|
|
-is( system("diff -u '$srcdir/symbols.tags.in' '" . $save_file->filename . "' >&2"), 0, "symbols.tags.in template dumped identical" );
|
|
|
|
|
|
|
+is( system("diff -u '$datadir/symbols.tags.in' '" . $save_file->filename . "' >&2"), 0, "symbols.tags.in template dumped identical" );
|
|
|
|
|
|
|
|
# Dumping in non-template mode (amd64) (test for arch, subst tags)
|
|
# Dumping in non-template mode (amd64) (test for arch, subst tags)
|
|
|
$io = IO::String->new();
|
|
$io = IO::String->new();
|
|
@@ -263,8 +263,8 @@ is(${$io->string_ref()},
|
|
|
|
|
|
|
|
# Dumping in non-template mode (i386) (test for arch, subst tags)
|
|
# Dumping in non-template mode (i386) (test for arch, subst tags)
|
|
|
$io = IO::String->new();
|
|
$io = IO::String->new();
|
|
|
-$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$srcdir/symbols.tags.in", arch => 'i386');
|
|
|
|
|
-$sym_file_dup = Dpkg::Shlibs::SymbolFile->new(file => "$srcdir/symbols.tags.in", arch => 'i386');
|
|
|
|
|
|
|
+$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/symbols.tags.in", arch => 'i386');
|
|
|
|
|
+$sym_file_dup = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/symbols.tags.in", arch => 'i386');
|
|
|
$sym_file->dump($io);
|
|
$sym_file->dump($io);
|
|
|
is(${$io->string_ref()},
|
|
is(${$io->string_ref()},
|
|
|
'libsymboltags.so.1 libsymboltags1 #MINVER#
|
|
'libsymboltags.so.1 libsymboltags1 #MINVER#
|
|
@@ -281,14 +281,14 @@ ok (defined $sym_file->{objects}{'libsymboltags.so.1'}{syms}{'symbol21_amd64@Bas
|
|
|
|
|
|
|
|
# Preload objdumps
|
|
# Preload objdumps
|
|
|
my $tags_obj_i386 = Dpkg::Shlibs::Objdump::Object->new();
|
|
my $tags_obj_i386 = Dpkg::Shlibs::Objdump::Object->new();
|
|
|
-open $objdump, '<', "$srcdir/objdump.tags-i386" or die "$srcdir/objdump.tags-i386: $!";
|
|
|
|
|
|
|
+open $objdump, '<', "$datadir/objdump.tags-i386" or die "$datadir/objdump.tags-i386: $!";
|
|
|
$tags_obj_i386->_parse($objdump);
|
|
$tags_obj_i386->_parse($objdump);
|
|
|
close $objdump;
|
|
close $objdump;
|
|
|
$sym_file->merge_symbols($tags_obj_i386, '100.MISSING');
|
|
$sym_file->merge_symbols($tags_obj_i386, '100.MISSING');
|
|
|
is_deeply($sym_file, $sym_file_dup, "is objdump.tags-i386 and symbols.tags.in in sync");
|
|
is_deeply($sym_file, $sym_file_dup, "is objdump.tags-i386 and symbols.tags.in in sync");
|
|
|
|
|
|
|
|
my $tags_obj_amd64 = Dpkg::Shlibs::Objdump::Object->new();
|
|
my $tags_obj_amd64 = Dpkg::Shlibs::Objdump::Object->new();
|
|
|
-open $objdump, '<', "$srcdir/objdump.tags-amd64" or die "$srcdir/objdump.tags-amd64: $!";
|
|
|
|
|
|
|
+open $objdump, '<', "$datadir/objdump.tags-amd64" or die "$datadir/objdump.tags-amd64: $!";
|
|
|
$tags_obj_amd64->_parse($objdump);
|
|
$tags_obj_amd64->_parse($objdump);
|
|
|
close $objdump;
|
|
close $objdump;
|
|
|
|
|
|
|
@@ -363,7 +363,7 @@ is_deeply($sym, Dpkg::Shlibs::Symbol->new( 'symbol' => 'symbol41_i386_and_option
|
|
|
is_deeply( \@tmp, [ 'symbol22_i386@Base' ], "missing arch specific is LOST, but optional arch specific isn't");
|
|
is_deeply( \@tmp, [ 'symbol22_i386@Base' ], "missing arch specific is LOST, but optional arch specific isn't");
|
|
|
|
|
|
|
|
# Tests for tagged #includes
|
|
# Tests for tagged #includes
|
|
|
-$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$srcdir/symbols.include-3", arch => 'i386');
|
|
|
|
|
|
|
+$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/symbols.include-3", arch => 'i386');
|
|
|
$sym = $sym_file->lookup_symbol('symbol2_fake1@Base', ['libsymboltags.so.2']);
|
|
$sym = $sym_file->lookup_symbol('symbol2_fake1@Base', ['libsymboltags.so.2']);
|
|
|
is_deeply($sym, Dpkg::Shlibs::Symbol->new( 'symbol' => 'symbol2_fake1@Base',
|
|
is_deeply($sym, Dpkg::Shlibs::Symbol->new( 'symbol' => 'symbol2_fake1@Base',
|
|
|
'minver' => '1.0', 'depends' => 'libsymboltags2', 'soname' => 'libsymboltags.so.2',
|
|
'minver' => '1.0', 'depends' => 'libsymboltags2', 'soname' => 'libsymboltags.so.2',
|