diff options
Diffstat (limited to 'scripts/t/Dpkg_Shlibs.t')
-rw-r--r-- | scripts/t/Dpkg_Shlibs.t | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/scripts/t/Dpkg_Shlibs.t b/scripts/t/Dpkg_Shlibs.t index 4bcd848c5..cfe3c5db5 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 => 124; +use Test::More tests => 148; use Cwd; use IO::String; @@ -351,6 +351,42 @@ is_deeply( $sym, { name => 'IA__g_free', version => '', hidden => '', defined => 1 }, 'symbol with visibility without version' ); +# Check parsing of objdump output when symbol names contain spaces +$obj = Dpkg::Shlibs::Objdump::Object->new; + +open $objdump, '<', "$datadir/objdump.spacesyms" + or die "$datadir/objdump.spacesyms: $!"; +$obj->parse_objdump_output($objdump); +close $objdump; + +sub check_spacesym { + my ($name, $version, $visibility) = @_; + + $visibility //= ''; + $sym = $obj->get_symbol($name . "@" . $version); + is_deeply($sym, { name => $name, version => $version, + soname => 'libspacesyms.so.1', + objid => 'libspacesyms.so.1', + section => '.text', dynamic => 1, + debug => '', type => 'F', weak => '', + local => '', global => 1, visibility => $visibility, + hidden => '', defined => 1 }, $name); + ok(defined $obj->{dynrelocs}{$name}, "dynreloc found for $name"); +} + +check_spacesym('symdefaultvernospacedefault', 'Base'); +check_spacesym('symdefaultvernospaceprotected', 'Base', 'protected'); +check_spacesym('symlongvernospacedefault', 'VERY_LONG_VERSION_1'); +check_spacesym('symlongvernospaceprotected', 'VERY_LONG_VERSION_1', 'protected'); +check_spacesym('symshortvernospacedefault', 'V1'); +check_spacesym('symshortvernospaceprotected', 'V1', 'protected'); +check_spacesym('symdefaultverSPA CEdefault', 'Base'); +check_spacesym('symdefaultverSPA CEprotected', 'Base', 'protected'); +check_spacesym('symlongverSPA CEdefault', 'VERY_LONG_VERSION_1'); +check_spacesym('symlongverSPA CEprotected', 'VERY_LONG_VERSION_1', 'protected'); +check_spacesym('symshortverSPA CEdefault', 'V1'); +check_spacesym('symshortverSPA CEprotected', 'V1', 'protected'); + ####### Test symbol tagging support ###### # Parsing/dumping |