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

Re: Bug#853793: dpkg: ABI mismatch detector is too strict on armel/armhf



On 02/01/2017 04:34 PM, Steve McIntyre wrote:
> Hey folks,
> 
> On Wed, Feb 01, 2017 at 05:08:50AM +0100, Guillem Jover wrote:
>> On Tue, 2017-01-31 at 22:44:36 +0000, James Cowgill wrote:
>>>
>>> Here libgsm.so has neither HARD or SOFT flags set. Also, asking gcc to
>>> generate a library which does not link against libc (this is used by
>>> sonames2elf in some packages) causes both flags to be set (maybe
>>> because it's compatible with both?).
>>
>> Even worse, I've found at least one instance of a package containing
>> binaries with EABIv4 (on armel, paris-traceroute). So I guess I'll have
>> to remove the flags matching on EM_ARM ELF binaries for now. At least
>> this will get us back to the previous behavior with objdump, no
>> regression in that sense.
>>
>> To be able to distinguish armel from armhf I'd probably need to check
>> the arm attributes section for Tag_ABI_VFP_args, which annoyingly
>> seems to be set even when the HARD flag is not set. :/ But this will
>> be for dpkg 1.19.x.
> 
> Please don't go down that route, the ABI flags are intended to save
> people from that. I'm curious what's going wrong with libgsm1 here
> such that we're not seeing consistent ABI flags.

It's not just libgsm1, on armhf the build fails because of more than 20
libraries:

https://buildd.debian.org/status/fetch.php?pkg=wine&arch=armhf&ver=1.8.6-4&stamp=1485847439&raw=0

Greets
jre


If it helps, this is the short form of the code that triggers this (we
compute a list of dependencies for libs that are dlopen'ed by Wine):

$ sonamesDepends="libfontconfig.so.1 libfreetype.so.6 libncurses.so.5"
$ sonamesRecommends="libcups.so.2 libdbus-1.so.3 libfontconfig.so.1
libfreetype.so.6 libGL.so.1 libgnutls.so.30 libgsm.so.1 libjpeg.so.62
libncurses.so.5 libodbc.so.2 libopenal.so.1 libOSMesa.so.8
libpng16.so.16 libtiff.so.5 libX11.so.6 libXcomposite.so.1
libXcursor.so.1 libXext.so.6 libXi.so.6 libXinerama.so.1 libXrandr.so.2
libXrender.so.1 libxslt.so.1 libXxf86vm.so.1"

$ printf 'INPUT(%s)\n' "$sonamesDepends" > libeverything.so
$ gcc -shared -nostdlib -Wl,--no-as-needed -L. -leverything -o elf.depends

$ printf 'INPUT(%s)\n' "$sonamesRecommends" > libeverything.so
$ gcc -shared -nostdlib -Wl,--no-as-needed -L. -leverything -o
elf.recommends

$ dpkg-shlibdeps --warnings=1 \
    -pdlopen \
    -dDepends -edebian/tmp/elf.depends \
    -dRecommends -edebian/tmp/elf.recommends \
    -Tdebian/libwine.substvars


Reply to: