** Description changed:

+ [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?

** Also affects: dpkg (Ubuntu Precise)
   Importance: Undecided
       Status: New

** Also affects: golang (Ubuntu Precise)
   Importance: Undecided
       Status: New

** No longer affects: golang (Ubuntu Precise)

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

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

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

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to