[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#869750: lintian: fix for readelf parsing with binutils 2.29 on ppc64el



Package: lintian
Version: 2.5.52
Severity: important
Tags: patch
User: ubuntu-devel@lists.ubuntu.com
Usertags: origin-ubuntu artful ubuntu-patch

Dear maintainers,

In Ubuntu, lintian's autopkgtests now fail on ppc64el due to a test error,
which results from binutils 2.29 on ppc64el outputting symbols in a
different format; e.g. from the readelf -WltdVs output:

     3: 0000000000000000     0 FUNC    GLOBAL DEFAULT [<localentry>: 8]   UND exit@GLIBC_2.17 (2)

(This appears to be a difference in the behavior of binutils' binary output
rather than a change in the behavior of readelf in reading the binary.)

The attached patch adjusts the regexp used for matching symbols to account
for the optional [<localentry> ...] field.  With this change, the
autopkgtest passes again on ppc64el.

Please consider applying this patch in Debian.  I have not tested on
Debian/ppc64el, but if the issue exists there also with binutils 2.29-1,
then the severity of this bug should arguably be raised to serious.

Thanks,
-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
slangasek@ubuntu.com                                     vorlon@debian.org
diff -Nru lintian-2.5.52/helpers/coll/objdump-info-helper lintian-2.5.52ubuntu1/helpers/coll/objdump-info-helper
--- lintian-2.5.52/helpers/coll/objdump-info-helper	2017-06-17 08:38:58.000000000 -0700
+++ lintian-2.5.52ubuntu1/helpers/coll/objdump-info-helper	2017-07-25 22:02:58.000000000 -0700
@@ -200,7 +200,7 @@
             push @symbol_versions, $verstring;
         }
     } elsif ($line
-        =~ m/^\s*(\d+):\s*[0-9a-f]+\s+\d+\s+(?:(?:\S+\s+){3})(\S+)\s+(.*)\Z/
+        =~ m/^\s*(\d+):\s*[0-9a-f]+\s+\d+\s+(?:(?:\S+\s+){3})(?:\[.*\]\s+)(\S+)\s+(.*)\Z/
         and $section eq 'DS') {
         # We (sometimes) need to read the "Version symbols section" first to
         # use this data and readelf tends to print after this section, so

Reply to: