]> err.no Git - dpkg/commitdiff
Bugfix in Dpkg::Shlibs::Objdump parsing of flags returned by objdump -f
authorRaphael Hertzog <hertzog@debian.org>
Wed, 26 Sep 2007 22:00:20 +0000 (00:00 +0200)
committerRaphael Hertzog <hertzog@debian.org>
Wed, 26 Sep 2007 22:00:20 +0000 (00:00 +0200)
The parser was not working as expected due to a wrong regexp.
Added a non-regression test case to avoid this in the future.

scripts/Dpkg/Shlibs/Objdump.pm
scripts/t/200_Dpkg_Shlibs.t

index 97526bf9da0165924a053b4988a8f20d10d6f355..cbe8041d37a11140555ed7d32fa138d985035dd0 100644 (file)
@@ -190,12 +190,14 @@ sub _parse {
        } elsif ($section eq "none") {
            if (/^\s*\S+:\s*file\s+format\s+(\S+)\s*$/) {
                $self->{format} = $1;
-           } elsif (/^architecture:\s*\S+,\s*flags:\s*\S+\s*$/) {
+           } elsif (/^architecture:\s*\S+,\s*flags\s*\S+:\s*$/) {
                # Parse 2 lines of "-f"
                # architecture: i386, flags 0x00000112:
                # EXEC_P, HAS_SYMS, D_PAGED
                # start address 0x08049b50
-               $self->{flags}{$_} = 1 foreach (split(/,\s*/, <$fh>));
+               $_ = <$fh>;
+               chomp;
+               $self->{flags}{$_} = 1 foreach (split(/,\s*/));
            }
        }
     }
index b2e3fef78100952ae945830ab72cb82c1a1a5551..1163fdc3b92c34ff04bf421246a8d54112b99d5c 100644 (file)
@@ -1,6 +1,6 @@
 # -*- mode: cperl;-*-
 
-use Test::More tests => 26;
+use Test::More tests => 27;
 
 use strict;
 use warnings;
@@ -30,6 +30,7 @@ is($obj->{SONAME}, 'libc.so.6', 'SONAME');
 is($obj->{HASH}, '0x13d99c', 'HASH');
 is($obj->{GNU_HASH}, '0x194', 'GNU_HASH');
 is($obj->{format}, 'elf32-i386', 'format');
+is_deeply($obj->{flags}, { DYNAMIC => 1, HAS_SYMS => 1, D_PAGED => 1 }, 'flags');
 is_deeply($obj->{NEEDED}, [ 'ld-linux.so.2' ], 'NEEDED');
 is_deeply([ $obj->get_needed_libraries ], [ 'ld-linux.so.2' ], 'NEEDED');