summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorGuillem Jover <guillem@debian.org>2014-12-29 12:34:42 +0100
committerGuillem Jover <guillem@debian.org>2015-01-28 20:50:30 +0100
commit08ce938d42f01ebe939f8a527f7b02ec017d3cc7 (patch)
treef4cfa0a94e6a9bef269a6dbeeb2338ad51e7a981 /scripts
parent2edb74f777af3dbab2a7bdfc75ab60b8d70fa2a7 (diff)
downloaddpkg-08ce938d42f01ebe939f8a527f7b02ec017d3cc7.tar.gz
dpkg-gensymbols: Add support for arch-bits and arch-endian tags
These allow to tag symbols as being only relevant on architectures with specific bits or endianness. The current supported values are 32 and 64 for arch-bits, and little and big for arch-endian. They can also be combined by using multiple tags on the same symbol. Closes: #630342
Diffstat (limited to 'scripts')
-rw-r--r--scripts/Dpkg/Shlibs/Symbol.pm17
-rw-r--r--scripts/Makefile.am10
-rw-r--r--scripts/t/Dpkg_Shlibs.t55
-rw-r--r--scripts/t/Dpkg_Shlibs/basictags.c42
-rw-r--r--scripts/t/Dpkg_Shlibs/basictags.symbols9
-rw-r--r--scripts/t/Dpkg_Shlibs/objdump.basictags-amd6485
-rw-r--r--scripts/t/Dpkg_Shlibs/objdump.basictags-i38690
-rw-r--r--scripts/t/Dpkg_Shlibs/objdump.basictags-mips84
8 files changed, 299 insertions, 93 deletions
diff --git a/scripts/Dpkg/Shlibs/Symbol.pm b/scripts/Dpkg/Shlibs/Symbol.pm
index 5d602d27e..ad1ee69b2 100644
--- a/scripts/Dpkg/Shlibs/Symbol.pm
+++ b/scripts/Dpkg/Shlibs/Symbol.pm
@@ -24,7 +24,7 @@ our $VERSION = '0.01';
use Dpkg::Gettext;
use Dpkg::ErrorHandling;
use Dpkg::Util qw(:list);
-use Dpkg::Arch qw(debarch_is_concerned);
+use Dpkg::Arch qw(debarch_is_concerned debarch_to_cpuattrs);
use Dpkg::Version;
use Storable ();
use Dpkg::Shlibs::Cppfilt;
@@ -294,9 +294,14 @@ sub arch_is_concerned {
my ($self, $arch) = @_;
my $arches = $self->{tags}{arch};
- if (defined $arch && defined $arches) {
- return debarch_is_concerned($arch, split /[\s,]+/, $arches);
- }
+ return 0 if defined $arch && defined $arches &&
+ !debarch_is_concerned($arch, split /[\s,]+/, $arches);
+
+ my ($bits, $endian) = debarch_to_cpuattrs($arch);
+ return 0 if defined $bits && defined $self->{tags}{'arch-bits'} &&
+ $bits ne $self->{tags}{'arch-bits'};
+ return 0 if defined $endian && defined $self->{tags}{'arch-endian'} &&
+ $endian ne $self->{tags}{'arch-endian'};
return 1;
}
@@ -447,8 +452,10 @@ sub mark_found_in_library {
# Never remove arch tags from patterns
if (not $self->is_pattern()) {
if (not $self->arch_is_concerned($arch)) {
- # Remove arch tag because it is incorrect.
+ # Remove arch tags because they are incorrect.
$self->delete_tag('arch');
+ $self->delete_tag('arch-bits');
+ $self->delete_tag('arch-endian');
}
}
}
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 8ffae3ac5..863889cd7 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -251,6 +251,7 @@ test_data = \
t/Dpkg_Shlibs/objdump.space \
t/Dpkg_Shlibs/objdump.basictags-amd64 \
t/Dpkg_Shlibs/objdump.basictags-i386 \
+ t/Dpkg_Shlibs/objdump.basictags-mips \
t/Dpkg_Shlibs/objdump.blacklisted \
t/Dpkg_Shlibs/objdump.patterns \
t/Dpkg_Shlibs/objdump.glib-ia64 \
@@ -299,15 +300,20 @@ test_data = \
test_data_objects = \
t/Dpkg_Shlibs/libobjdump.basictags-amd64.so \
t/Dpkg_Shlibs/libobjdump.basictags-i386.so \
+ t/Dpkg_Shlibs/libobjdump.basictags-mips.so \
t/Dpkg_Shlibs/libobjdump.patterns.so
$(srcdir)/t/Dpkg_Shlibs/libobjdump.basictags-amd64.so: $(srcdir)/t/Dpkg_Shlibs/basictags.c
$(CC) $(CFLAGS) -shared -fPIC -Wl,-soname -Wl,libbasictags.so.1 $< \
-DAMD64 -o $@
+$(srcdir)/t/Dpkg_Shlibs/libobjdump.basictags-mips.so: $(srcdir)/t/Dpkg_Shlibs/basictags.c
+ $(CC) $(CFLAGS) -shared -fPIC -Wl,-soname -Wl,libbasictags.so.1 $< \
+ -DMIPS -o $@
+
$(srcdir)/t/Dpkg_Shlibs/libobjdump.basictags-i386.so: $(srcdir)/t/Dpkg_Shlibs/basictags.c
$(CC) $(CFLAGS) -shared -fPIC -Wl,-soname -Wl,libbasictags.so.1 $< \
- -o $@
+ -DI386 -o $@
$(srcdir)/t/Dpkg_Shlibs/libobjdump.patterns.so: $(srcdir)/t/Dpkg_Shlibs/patterns.cpp $(srcdir)/t/Dpkg_Shlibs/patterns.map
$(CXX) $(CXXFLAGS) -shared -fPIC -Wl,-soname -Wl,libpatterns.so.1 \
@@ -323,6 +329,8 @@ refresh-test-data: $(test_data_objects)
>$(srcdir)/t/Dpkg_Shlibs/objdump.basictags-amd64
$(OBJDUMP) $(srcdir)/t/Dpkg_Shlibs/libobjdump.basictags-i386.so \
>$(srcdir)/t/Dpkg_Shlibs/objdump.basictags-i386
+ $(OBJDUMP) $(srcdir)/t/Dpkg_Shlibs/libobjdump.basictags-mips.so \
+ >$(srcdir)/t/Dpkg_Shlibs/objdump.basictags-mips
$(OBJDUMP) $(srcdir)/t/Dpkg_Shlibs/libobjdump.patterns.so \
>$(srcdir)/t/Dpkg_Shlibs/objdump.patterns
$(OBJDUMP) `which ls` >$(srcdir)/t/Dpkg_Shlibs/objdump.ls
diff --git a/scripts/t/Dpkg_Shlibs.t b/scripts/t/Dpkg_Shlibs.t
index 5937e5941..cde647c7a 100644
--- a/scripts/t/Dpkg_Shlibs.t
+++ b/scripts/t/Dpkg_Shlibs.t
@@ -16,7 +16,7 @@
use strict;
use warnings;
-use Test::More tests => 118;
+use Test::More tests => 122;
use Cwd;
use IO::String;
@@ -355,10 +355,28 @@ is(${$io->string_ref()},
| libbasictags1 (>= 1.1)
symbol11_optional@Base 1.1 1
symbol21_amd64@Base 2.1
+ symbol25_64@Base 2.5
+ symbol26_little@Base 2.6
symbol31_randomtag@Base 3.1
symbol51_untagged@Base 5.1
', 'template vs. non-template on amd64');
+# Dumping in non-template mode (mips) (test for arch tags)
+$io = IO::String->new();
+$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/basictags.symbols", arch => 'mips');
+$sym_file->output($io);
+is(${$io->string_ref()},
+'libbasictags.so.1 libbasictags1 #MINVER#
+| libbasictags1 (>= 1.1)
+ symbol11_optional@Base 1.1 1
+ symbol23_mips@Base 2.3
+ symbol24_32@Base 2.4
+ symbol27_big@Base 2.7
+ symbol31_randomtag@Base 3.1
+ symbol42_mips_and_optional@Base 4.2
+ symbol51_untagged@Base 5.1
+', 'template vs. non-template on mips');
+
# Dumping in non-template mode (i386) (test for arch tags)
$io = IO::String->new();
$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/basictags.symbols", arch => 'i386');
@@ -369,6 +387,9 @@ is(${$io->string_ref()},
| libbasictags1 (>= 1.1)
symbol11_optional@Base 1.1 1
symbol22_i386@Base 2.2
+ symbol24_32@Base 2.4
+ symbol26_little@Base 2.6
+ symbol28_little_32@Base 2.8
symbol31_randomtag@Base 3.1
symbol41_i386_and_optional@Base 4.1
symbol51_untagged@Base 5.1
@@ -443,6 +464,9 @@ is( $sym->get_symbolspec(1), ' symbol21_amd64@Base 2.1', 'no tags => no quotes i
# - arch specific symbol disappears
delete $tags_obj_i386->{dynsyms}{'symbol22_i386@Base'};
+delete $tags_obj_i386->{dynsyms}{'symbol24_32@Base'};
+delete $tags_obj_i386->{dynsyms}{'symbol26_little@Base'};
+delete $tags_obj_i386->{dynsyms}{'symbol28_little_32@Base'};
delete $tags_obj_i386->{dynsyms}{'symbol41_i386_and_optional@Base'};
$sym_file->merge_symbols($tags_obj_i386, '100.MISSING');
@@ -450,9 +474,30 @@ $sym = $sym_file->lookup_symbol('symbol22_i386@Base', ['libbasictags.so.1'], 1);
is_deeply($sym, Dpkg::Shlibs::Symbol->new(symbol => 'symbol22_i386@Base',
symbol_templ => 'symbol22_i386@Base',
minver => '2.2', dep_id => 0, deprecated => '100.MISSING',
- tags => { arch => '!amd64 !ia64 !alpha' },
+ tags => { arch => '!amd64 !ia64 !mips' },
tagorder => [ 'arch' ]),
'disappeared arch specific symbol gets deprecated');
+$sym = $sym_file->lookup_symbol('symbol24_32@Base', ['libbasictags.so.1'], 1);
+is_deeply($sym, Dpkg::Shlibs::Symbol->new(symbol => 'symbol24_32@Base',
+ symbol_templ => 'symbol24_32@Base',
+ minver => '2.4', dep_id => 0, deprecated => '100.MISSING',
+ tags => { 'arch-bits' => '32' },
+ tagorder => [ 'arch-bits' ]),
+ 'disappeared arch bits specific symbol gets deprecated');
+$sym = $sym_file->lookup_symbol('symbol26_little@Base', ['libbasictags.so.1'], 1);
+is_deeply($sym, Dpkg::Shlibs::Symbol->new(symbol => 'symbol26_little@Base',
+ symbol_templ => 'symbol26_little@Base',
+ minver => '2.6', dep_id => 0, deprecated => '100.MISSING',
+ tags => { 'arch-endian' => 'little' },
+ tagorder => [ 'arch-endian' ]),
+ 'disappeared arch endian specific symbol gets deprecated');
+$sym = $sym_file->lookup_symbol('symbol28_little_32@Base', ['libbasictags.so.1'], 1);
+is_deeply($sym, Dpkg::Shlibs::Symbol->new(symbol => 'symbol28_little_32@Base',
+ symbol_templ => 'symbol28_little_32@Base',
+ minver => '2.8', dep_id => 0, deprecated => '100.MISSING',
+ tags => { 'arch-bits' => '32', 'arch-endian' => 'little' },
+ tagorder => [ 'arch-bits', 'arch-endian' ]),
+ 'disappeared arch bits and endian specific symbol gets deprecated');
$sym = $sym_file->lookup_symbol('symbol41_i386_and_optional@Base', ['libbasictags.so.1'], 1);
is_deeply($sym, Dpkg::Shlibs::Symbol->new(symbol => 'symbol41_i386_and_optional@Base',
symbol_templ => 'symbol41_i386_and_optional@Base',
@@ -461,8 +506,10 @@ is_deeply($sym, Dpkg::Shlibs::Symbol->new(symbol => 'symbol41_i386_and_optional@
tags => { arch => 'i386', optional => 'reason' },
tagorder => [ 'arch', 'optional' ]),
'disappeared optional arch specific symbol gets deprecated');
-@tmp = map { $_->{symbol}->get_symbolname() } $sym_file->get_lost_symbols($sym_file_dup);
-is_deeply( \@tmp, [ 'symbol22_i386@Base' ], "missing arch specific is LOST, but optional arch specific isn't");
+@tmp = sort map { $_->{symbol}->get_symbolname() } $sym_file->get_lost_symbols($sym_file_dup);
+is_deeply(\@tmp, [ 'symbol22_i386@Base', 'symbol24_32@Base',
+ 'symbol26_little@Base', 'symbol28_little_32@Base' ],
+ "missing arch specific is LOST, but optional arch specific isn't");
# Tests for tagged #includes
$sym_file = Dpkg::Shlibs::SymbolFile->new(file => "$datadir/symbols.include-3", arch => 'i386');
diff --git a/scripts/t/Dpkg_Shlibs/basictags.c b/scripts/t/Dpkg_Shlibs/basictags.c
index f0a834975..4f1d337a6 100644
--- a/scripts/t/Dpkg_Shlibs/basictags.c
+++ b/scripts/t/Dpkg_Shlibs/basictags.c
@@ -3,31 +3,61 @@
* -o libbasictags.so.1 -DAMD64 basictags.c
* $ objdump -wfpTR libbasictags.so.1 > objdump.basictags-amd64
* $ gcc -shared -fPIC -Wl,-soname -Wl,libbasictags.so.1 \
- * -o libbasictags.so.1 basictags.c
+ * -o libbasictags.so.1 -DI386 basictags.c
* $ objdump -wfpTR libbasictags.so.1 > objdump.basictags-i386
+ * $ gcc -shared -fPIC -Wl,-soname -Wl,libbasictags.so.1 \
+ * -o libbasictags.so.1 -DMIPS basictags.c
+ * $ objdump -wfpTR libbasictags.so.1 > objdump.basictags-mips
*/
void symbol11_optional(void);
void symbol11_optional(void) {}
-#ifdef AMD64
+#if defined(AMD64)
void symbol21_amd64(void);
void symbol21_amd64(void) {}
-#endif
-
-#ifndef AMD64
+#elif defined(I386)
void symbol22_i386(void);
void symbol22_i386(void) {}
+#elif defined(MIPS)
+void symbol23_mips(void);
+void symbol23_mips(void) {}
+#endif
+
+#if defined(AMD64)
+void symbol25_64(void);
+void symbol25_64(void) {}
+#else
+void symbol24_32(void);
+void symbol24_32(void) {}
+#endif
+
+#if defined(MIPS)
+void symbol27_big(void);
+void symbol27_big(void) {}
+#else
+void symbol26_little(void);
+void symbol26_little(void) {}
+#endif
+
+#if defined(I386)
+void symbol28_little_32(void);
+void symbol28_little_32(void) {}
#endif
void symbol31_randomtag(void);
void symbol31_randomtag(void) {}
/* (arch=i386|optional)symbol41_i386_and_optional@Base */
-#ifndef AMD64
+#if defined(I386)
void symbol41_i386_and_optional(void);
void symbol41_i386_and_optional(void) {}
#endif
+/* (arch=mips|optional)symbol42_i386_and_optional@Base */
+#if defined(MIPS)
+void symbol42_mips_and_optional(void);
+void symbol42_mips_and_optional(void) {}
+#endif
void symbol51_untagged(void);
void symbol51_untagged(void) {}
diff --git a/scripts/t/Dpkg_Shlibs/basictags.symbols b/scripts/t/Dpkg_Shlibs/basictags.symbols
index 6d23413fd..af1dfc62e 100644
--- a/scripts/t/Dpkg_Shlibs/basictags.symbols
+++ b/scripts/t/Dpkg_Shlibs/basictags.symbols
@@ -2,7 +2,14 @@ libbasictags.so.1 libbasictags1 #MINVER#
| libbasictags1 (>= 1.1)
(optional)symbol11_optional@Base 1.1 1
(arch=amd64 ia64 alpha)'symbol21_amd64@Base' 2.1
- (arch=!amd64 !ia64 !alpha)symbol22_i386@Base 2.2
+ (arch=!amd64 !ia64 !mips)symbol22_i386@Base 2.2
+ (arch=!amd64 !ia64 !i386)symbol23_mips@Base 2.3
+ (arch-bits=32)symbol24_32@Base 2.4
+ (arch-bits=64)symbol25_64@Base 2.5
+ (arch-endian=little)symbol26_little@Base 2.6
+ (arch-endian=big)symbol27_big@Base 2.7
+ (arch-bits=32|arch-endian=little)symbol28_little_32@Base 2.8
(randomtagname=randomtagvalue)symbol31_randomtag@Base 3.1
(arch=i386|optional=reason)"symbol41_i386_and_optional@Base" 4.1
+ (arch=mips|optional=reason)"symbol42_mips_and_optional@Base" 4.2
symbol51_untagged@Base 5.1
diff --git a/scripts/t/Dpkg_Shlibs/objdump.basictags-amd64 b/scripts/t/Dpkg_Shlibs/objdump.basictags-amd64
index c56854479..93d7ea467 100644
--- a/scripts/t/Dpkg_Shlibs/objdump.basictags-amd64
+++ b/scripts/t/Dpkg_Shlibs/objdump.basictags-amd64
@@ -2,71 +2,82 @@
./t/Dpkg_Shlibs/libobjdump.basictags-amd64.so: file format elf32-i386
architecture: i386, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
-start address 0x00000410
+start address 0x00000480
Program Header:
LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12
- filesz 0x00000628 memsz 0x00000628 flags r-x
- LOAD off 0x00000628 vaddr 0x00001628 paddr 0x00001628 align 2**12
- filesz 0x00000108 memsz 0x00000110 flags rw-
- DYNAMIC off 0x0000063c vaddr 0x0000163c paddr 0x0000163c align 2**2
- filesz 0x000000d0 memsz 0x000000d0 flags rw-
+ filesz 0x00000724 memsz 0x00000724 flags r-x
+ LOAD off 0x00000724 vaddr 0x00001724 paddr 0x00001724 align 2**12
+ filesz 0x00000120 memsz 0x00000124 flags rw-
+ DYNAMIC off 0x00000730 vaddr 0x00001730 paddr 0x00001730 align 2**2
+ filesz 0x000000e8 memsz 0x000000e8 flags rw-
NOTE off 0x000000f4 vaddr 0x000000f4 paddr 0x000000f4 align 2**2
filesz 0x00000024 memsz 0x00000024 flags r--
-EH_FRAME off 0x00000564 vaddr 0x00000564 paddr 0x00000564 align 2**2
- filesz 0x00000034 memsz 0x00000034 flags r--
- STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2
+EH_FRAME off 0x00000628 vaddr 0x00000628 paddr 0x00000628 align 2**2
+ filesz 0x00000044 memsz 0x00000044 flags r--
+ STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**4
filesz 0x00000000 memsz 0x00000000 flags rw-
Dynamic Section:
NEEDED libc.so.6
SONAME libbasictags.so.1
- INIT 0x000003a8
- FINI 0x00000548
- HASH 0x00000118
- GNU_HASH 0x00000160
+ INIT 0x00000424
+ FINI 0x00000614
+ INIT_ARRAY 0x00001724
+ INIT_ARRAYSZ 0x00000004
+ FINI_ARRAY 0x00001728
+ FINI_ARRAYSZ 0x00000004
+ GNU_HASH 0x00000118
STRTAB 0x00000278
- SYMTAB 0x000001a8
- STRSZ 0x000000c5
+ SYMTAB 0x00000168
+ STRSZ 0x00000117
SYMENT 0x00000010
- PLTGOT 0x00001718
+ PLTGOT 0x0000182c
PLTRELSZ 0x00000010
PLTREL 0x00000011
- JMPREL 0x00000398
- REL 0x00000378
- RELSZ 0x00000020
+ JMPREL 0x00000414
+ REL 0x000003d4
+ RELSZ 0x00000040
RELENT 0x00000008
- VERNEED 0x00000358
+ VERNEED 0x000003b4
VERNEEDNUM 0x00000001
- VERSYM 0x0000033e
- RELCOUNT 0x00000001
+ VERSYM 0x00000390
+ RELCOUNT 0x00000003
Version References:
required from libc.so.6:
0x09691f73 0x00 02 GLIBC_2.1.3
DYNAMIC SYMBOL TABLE:
+00000000 w D *UND* 00000000 _ITM_deregisterTMCloneTable
00000000 w DF *UND* 00000000 GLIBC_2.1.3 __cxa_finalize
00000000 w D *UND* 00000000 __gmon_start__
00000000 w D *UND* 00000000 _Jv_RegisterClasses
-00001730 g D *ABS* 00000000 Base _edata
-00001738 g D *ABS* 00000000 Base _end
-000004e0 g DF .text 00000002 Base symbol21_amd64
-00001730 g D *ABS* 00000000 Base __bss_start
-000003a8 g DF .init 00000000 Base _init
-000004f0 g DF .text 00000002 Base symbol31_randomtag
-00000548 g DF .fini 00000000 Base _fini
-00000500 g DF .text 00000002 Base symbol51_untagged
-000004d0 g DF .text 00000002 Base symbol11_optional
+00000000 w D *UND* 00000000 _ITM_registerTMCloneTable
+00001844 g D .data 00000000 Base _edata
+000005f0 g DF .text 00000002 Base symbol26_little
+00001848 g D .bss 00000000 Base _end
+000005d0 g DF .text 00000002 Base symbol21_amd64
+00001844 g D .bss 00000000 Base __bss_start
+000005e0 g DF .text 00000002 Base symbol25_64
+00000424 g DF .init 00000000 Base _init
+00000600 g DF .text 00000002 Base symbol31_randomtag
+00000614 g DF .fini 00000000 Base _fini
+00000610 g DF .text 00000002 Base symbol51_untagged
+000005c0 g DF .text 00000002 Base symbol11_optional
DYNAMIC RELOCATION RECORDS
OFFSET TYPE VALUE
-0000172c R_386_RELATIVE *ABS*
-0000170c R_386_GLOB_DAT __cxa_finalize
-00001710 R_386_GLOB_DAT __gmon_start__
-00001714 R_386_GLOB_DAT _Jv_RegisterClasses
-00001724 R_386_JUMP_SLOT __cxa_finalize
-00001728 R_386_JUMP_SLOT __gmon_start__
+00001724 R_386_RELATIVE *ABS*
+00001728 R_386_RELATIVE *ABS*
+00001840 R_386_RELATIVE *ABS*
+00001818 R_386_GLOB_DAT _ITM_deregisterTMCloneTable
+0000181c R_386_GLOB_DAT __cxa_finalize
+00001820 R_386_GLOB_DAT __gmon_start__
+00001824 R_386_GLOB_DAT _Jv_RegisterClasses
+00001828 R_386_GLOB_DAT _ITM_registerTMCloneTable
+00001838 R_386_JUMP_SLOT __cxa_finalize
+0000183c R_386_JUMP_SLOT __gmon_start__
diff --git a/scripts/t/Dpkg_Shlibs/objdump.basictags-i386 b/scripts/t/Dpkg_Shlibs/objdump.basictags-i386
index 15d2842a5..4138a8945 100644
--- a/scripts/t/Dpkg_Shlibs/objdump.basictags-i386
+++ b/scripts/t/Dpkg_Shlibs/objdump.basictags-i386
@@ -2,72 +2,84 @@
./t/Dpkg_Shlibs/libobjdump.basictags-i386.so: file format elf32-i386
architecture: i386, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
-start address 0x00000440
+start address 0x000004e0
Program Header:
LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12
- filesz 0x00000684 memsz 0x00000684 flags r-x
- LOAD off 0x00000684 vaddr 0x00001684 paddr 0x00001684 align 2**12
- filesz 0x00000108 memsz 0x00000110 flags rw-
- DYNAMIC off 0x00000698 vaddr 0x00001698 paddr 0x00001698 align 2**2
- filesz 0x000000d0 memsz 0x000000d0 flags rw-
+ filesz 0x000007dc memsz 0x000007dc flags r-x
+ LOAD off 0x000007dc vaddr 0x000017dc paddr 0x000017dc align 2**12
+ filesz 0x00000120 memsz 0x00000124 flags rw-
+ DYNAMIC off 0x000007e8 vaddr 0x000017e8 paddr 0x000017e8 align 2**2
+ filesz 0x000000e8 memsz 0x000000e8 flags rw-
NOTE off 0x000000f4 vaddr 0x000000f4 paddr 0x000000f4 align 2**2
filesz 0x00000024 memsz 0x00000024 flags r--
-EH_FRAME off 0x000005a4 vaddr 0x000005a4 paddr 0x000005a4 align 2**2
- filesz 0x0000003c memsz 0x0000003c flags r--
- STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2
+EH_FRAME off 0x000006a8 vaddr 0x000006a8 paddr 0x000006a8 align 2**2
+ filesz 0x00000054 memsz 0x00000054 flags r--
+ STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**4
filesz 0x00000000 memsz 0x00000000 flags rw-
Dynamic Section:
NEEDED libc.so.6
SONAME libbasictags.so.1
- INIT 0x000003dc
- FINI 0x00000588
- HASH 0x00000118
- GNU_HASH 0x00000164
- STRTAB 0x00000290
- SYMTAB 0x000001b0
- STRSZ 0x000000df
+ INIT 0x00000484
+ FINI 0x00000694
+ INIT_ARRAY 0x000017dc
+ INIT_ARRAYSZ 0x00000004
+ FINI_ARRAY 0x000017e0
+ FINI_ARRAYSZ 0x00000004
+ GNU_HASH 0x00000118
+ STRTAB 0x000002a8
+ SYMTAB 0x00000178
+ STRSZ 0x00000144
SYMENT 0x00000010
- PLTGOT 0x00001774
+ PLTGOT 0x000018e4
PLTRELSZ 0x00000010
PLTREL 0x00000011
- JMPREL 0x000003cc
- REL 0x000003ac
- RELSZ 0x00000020
+ JMPREL 0x00000474
+ REL 0x00000434
+ RELSZ 0x00000040
RELENT 0x00000008
- VERNEED 0x0000038c
+ VERNEED 0x00000414
VERNEEDNUM 0x00000001
- VERSYM 0x00000370
- RELCOUNT 0x00000001
+ VERSYM 0x000003ec
+ RELCOUNT 0x00000003
Version References:
required from libc.so.6:
0x09691f73 0x00 02 GLIBC_2.1.3
DYNAMIC SYMBOL TABLE:
+00000000 w D *UND* 00000000 _ITM_deregisterTMCloneTable
00000000 w DF *UND* 00000000 GLIBC_2.1.3 __cxa_finalize
00000000 w D *UND* 00000000 __gmon_start__
00000000 w D *UND* 00000000 _Jv_RegisterClasses
-0000178c g D *ABS* 00000000 Base _edata
-00001794 g D *ABS* 00000000 Base _end
-00000530 g DF .text 00000002 Base symbol41_i386_and_optional
-00000510 g DF .text 00000002 Base symbol22_i386
-0000178c g D *ABS* 00000000 Base __bss_start
-000003dc g DF .init 00000000 Base _init
-00000520 g DF .text 00000002 Base symbol31_randomtag
-00000588 g DF .fini 00000000 Base _fini
-00000540 g DF .text 00000002 Base symbol51_untagged
-00000500 g DF .text 00000002 Base symbol11_optional
+00000000 w D *UND* 00000000 _ITM_registerTMCloneTable
+000018fc g D .data 00000000 Base _edata
+00000650 g DF .text 00000002 Base symbol26_little
+00001900 g D .bss 00000000 Base _end
+00000680 g DF .text 00000002 Base symbol41_i386_and_optional
+00000630 g DF .text 00000002 Base symbol22_i386
+00000660 g DF .text 00000002 Base symbol28_little_32
+000018fc g D .bss 00000000 Base __bss_start
+00000484 g DF .init 00000000 Base _init
+00000670 g DF .text 00000002 Base symbol31_randomtag
+00000640 g DF .text 00000002 Base symbol24_32
+00000694 g DF .fini 00000000 Base _fini
+00000690 g DF .text 00000002 Base symbol51_untagged
+00000620 g DF .text 00000002 Base symbol11_optional
DYNAMIC RELOCATION RECORDS
OFFSET TYPE VALUE
-00001788 R_386_RELATIVE *ABS*
-00001768 R_386_GLOB_DAT __cxa_finalize
-0000176c R_386_GLOB_DAT __gmon_start__
-00001770 R_386_GLOB_DAT _Jv_RegisterClasses
-00001780 R_386_JUMP_SLOT __cxa_finalize
-00001784 R_386_JUMP_SLOT __gmon_start__
+000017dc R_386_RELATIVE *ABS*
+000017e0 R_386_RELATIVE *ABS*
+000018f8 R_386_RELATIVE *ABS*
+000018d0 R_386_GLOB_DAT _ITM_deregisterTMCloneTable
+000018d4 R_386_GLOB_DAT __cxa_finalize
+000018d8 R_386_GLOB_DAT __gmon_start__
+000018dc R_386_GLOB_DAT _Jv_RegisterClasses
+000018e0 R_386_GLOB_DAT _ITM_registerTMCloneTable
+000018f0 R_386_JUMP_SLOT __cxa_finalize
+000018f4 R_386_JUMP_SLOT __gmon_start__
diff --git a/scripts/t/Dpkg_Shlibs/objdump.basictags-mips b/scripts/t/Dpkg_Shlibs/objdump.basictags-mips
new file mode 100644
index 000000000..620b821cc
--- /dev/null
+++ b/scripts/t/Dpkg_Shlibs/objdump.basictags-mips
@@ -0,0 +1,84 @@
+
+./t/Dpkg_Shlibs/libobjdump.basictags-mips.so: file format elf32-i386
+architecture: i386, flags 0x00000150:
+HAS_SYMS, DYNAMIC, D_PAGED
+start address 0x000004b0
+
+Program Header:
+ LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12
+ filesz 0x00000780 memsz 0x00000780 flags r-x
+ LOAD off 0x00000780 vaddr 0x00001780 paddr 0x00001780 align 2**12
+ filesz 0x00000120 memsz 0x00000124 flags rw-
+ DYNAMIC off 0x0000078c vaddr 0x0000178c paddr 0x0000178c align 2**2
+ filesz 0x000000e8 memsz 0x000000e8 flags rw-
+ NOTE off 0x000000f4 vaddr 0x000000f4 paddr 0x000000f4 align 2**2
+ filesz 0x00000024 memsz 0x00000024 flags r--
+EH_FRAME off 0x00000668 vaddr 0x00000668 paddr 0x00000668 align 2**2
+ filesz 0x0000004c memsz 0x0000004c flags r--
+ STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**4
+ filesz 0x00000000 memsz 0x00000000 flags rw-
+
+Dynamic Section:
+ NEEDED libc.so.6
+ SONAME libbasictags.so.1
+ INIT 0x00000458
+ FINI 0x00000654
+ INIT_ARRAY 0x00001780
+ INIT_ARRAYSZ 0x00000004
+ FINI_ARRAY 0x00001784
+ FINI_ARRAYSZ 0x00000004
+ GNU_HASH 0x00000118
+ STRTAB 0x00000294
+ SYMTAB 0x00000174
+ STRSZ 0x0000012e
+ SYMENT 0x00000010
+ PLTGOT 0x00001888
+ PLTRELSZ 0x00000010
+ PLTREL 0x00000011
+ JMPREL 0x00000448
+ REL 0x00000408
+ RELSZ 0x00000040
+ RELENT 0x00000008
+ VERNEED 0x000003e8
+ VERNEEDNUM 0x00000001
+ VERSYM 0x000003c2
+ RELCOUNT 0x00000003
+
+Version References:
+ required from libc.so.6:
+ 0x09691f73 0x00 02 GLIBC_2.1.3
+
+DYNAMIC SYMBOL TABLE:
+00000000 w D *UND* 00000000 _ITM_deregisterTMCloneTable
+00000000 w DF *UND* 00000000 GLIBC_2.1.3 __cxa_finalize
+00000000 w D *UND* 00000000 __gmon_start__
+00000000 w D *UND* 00000000 _Jv_RegisterClasses
+00000000 w D *UND* 00000000 _ITM_registerTMCloneTable
+000018a0 g D .data 00000000 Base _edata
+000018a4 g D .bss 00000000 Base _end
+00000640 g DF .text 00000002 Base symbol42_mips_and_optional
+000018a0 g D .bss 00000000 Base __bss_start
+00000458 g DF .init 00000000 Base _init
+00000630 g DF .text 00000002 Base symbol31_randomtag
+00000610 g DF .text 00000002 Base symbol24_32
+00000654 g DF .fini 00000000 Base _fini
+00000650 g DF .text 00000002 Base symbol51_untagged
+000005f0 g DF .text 00000002 Base symbol11_optional
+00000600 g DF .text 00000002 Base symbol23_mips
+00000620 g DF .text 00000002 Base symbol27_big
+
+
+DYNAMIC RELOCATION RECORDS
+OFFSET TYPE VALUE
+00001780 R_386_RELATIVE *ABS*
+00001784 R_386_RELATIVE *ABS*
+0000189c R_386_RELATIVE *ABS*
+00001874 R_386_GLOB_DAT _ITM_deregisterTMCloneTable
+00001878 R_386_GLOB_DAT __cxa_finalize
+0000187c R_386_GLOB_DAT __gmon_start__
+00001880 R_386_GLOB_DAT _Jv_RegisterClasses
+00001884 R_386_GLOB_DAT _ITM_registerTMCloneTable
+00001894 R_386_JUMP_SLOT __cxa_finalize
+00001898 R_386_JUMP_SLOT __gmon_start__
+
+