[Bug 1187722] Re: dpkg-shlibdeps fails on armhf ELF binaries that do not define architecture specific information

Robie Basak 1187722 at bugs.launchpad.net
Mon Oct 14 13:38:51 UTC 2013


Rebuilt golang 2:1.1.2-2ubuntu1 in a Precise schroot.

On amd64, it works with dpkg 1.16.1.2ubuntu7.2 and the produced go binary works.
On armhf, the build fails with dpkg 1.16.1.2ubuntu7.1 as expected.
On armhf, the build works with dpkg 1.16.1.2ubuntu7.2 and the produced go binary works.

** Tags removed: verification-needed
** Tags added: verification-done

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to dpkg in Ubuntu.
https://bugs.launchpad.net/bugs/1187722

Title:
  dpkg-shlibdeps fails on armhf ELF binaries that do not define
  architecture specific information

Status in “dpkg” package in Ubuntu:
  Fix Released
Status in “golang” package in Ubuntu:
  Fix Released
Status in “dpkg” source package in Precise:
  Fix Committed

Bug description:
  [Impact]

  This causes a build failure on armhf for any package that uses a
  toolchain that does not provide the optional ELF architecture specific
  tags like the gcc toolchain does. Example: golang. This stops us
  building armhf golang packages on Precise, such as the juju-core
  precise backport.

  [Stable Fix]

  Before reading any architecture specific tags, consider the ELF header
  flags field first for a match against the new "hard-float ABI" flag,
  and use this information over architecture specific tags if available.

  [Development Fix]

  Exactly the same patch as the stable fix.

  [Test Case]

  Attempt to build the unmodified golang source package from Saucy on
  Precise armhf.

  Expected results: successful build.

  Failure results:

  Errors of the form: dpkg-shlibdeps: error: couldn't find library
  libpthread.so.0 needed by debian/golang-go/usr/bin/go (ELF format:
  'elf32-littlearm-sfabi'; RPATH: '').

  [Regression Potential]

  The change is limited to dpkg-shlibdeps on ARM ELF binaries only, so
  should only affect rebuilds or backports.

  [Original Description]

  This causes an FTBFS in golang. See:
  https://launchpad.net/ubuntu/+source/golang/2:1.1-1/+build/4578681

  Affected: dpkg 1.16.10ubuntu1
  Not affected: dpkg 1.16.10

  I believe the difference is caused by Steve McIntyre's armhf detection patch
  applied in the Ubuntu dpkg delta.

  For convenience, I attach a golang armhf binary which dpkg-shlibdeps
  doesn't work with. The error is:

  dpkg-shlibdeps: error: couldn't find library libpthread.so.0 needed by /tmp/go (ELF format: 'elf32-littlearm-sfabi'; RPATH: '')
  dpkg-shlibdeps: error: couldn't find library libc.so.6 needed by /tmp/go (ELF format: 'elf32-littlearm-sfabi'; RPATH: '')
  dpkg-shlibdeps: error: couldn't find library ld-linux-armhf.so.3 needed by /tmp/go (ELF format: 'elf32-littlearm-sfabi'; RPATH: '')
  dpkg-shlibdeps: warning: binaries to analyze should already be installed in their package's directory
  dpkg-shlibdeps: error: cannot continue due to the errors listed above
  Note: libraries are not searched in other binary packages that do not have any shlibs or symbols file.
  To help dpkg-shlibdeps find private libraries, you might need to set LD_LIBRARY_PATH.

  The cause is that "readelf -A -- /tmp/go" doesn't produce any output. The
  arm-specific handling in Dpkg::Shlibs::Objdump then errnoneously decides that
  this means that the binary is "elf32-littlearm-sfabi", which mismatches its
  dependencies.  This causes it to fail, when in fact there is no problem with
  the binary's linkage or execution.

  Is it a requirement for armhf binaries to have Tag_ABI_VFP_args? I'm not sure
  whether the ABI spec actually requires this in order for a binary to be
  expected to dynamically link against a libc that does declare the tag. Even if
  so, does it make sense for dpkg to handle this condition more gracefully?

  Is there a spec which defines a requirement to have Tag_ABI_VFP_args set, so
  that we may refer golang upstream to it for a fix? Or is golang producing valid
  binaries and dpkg-shlibdeps is buggy?

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/dpkg/+bug/1187722/+subscriptions



More information about the foundations-bugs mailing list