On Wed, Feb 01, 2017 at 05:03:13PM +0100, Jens Reyer wrote:
>On 02/01/2017 04:34 PM, Steve McIntyre wrote:
>> 
>> 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

*wince* Not sure how valid the sonames2elf hackery is here, but it's
the output of that script that's causing issues. It looks like there's
a hole in the gcc pipeline around the ABI flag-handling code here, and
it's outputting *both* ABI flags, which is (IIRC) strictly invalid:

  Flags:                             0x5000600, Version5 EABI, soft-float ABI, 
hard-float ABI

I'll look into that (again!), but that's going to take some time.

Dropping the -nostdlib argument to the gcc call inside sonames2elf
makes a difference - it'll add libc6 to the mix and force the output
to match the system you're building for. You may then need to filter
out the libc6 entry afterwards, but that's easily done.

-- 
Steve McIntyre, Cambridge, UK.                                st...@einval.com
Can't keep my eyes from the circling sky,
Tongue-tied & twisted, Just an earth-bound misfit, I...

Reply via email to