Further ABI-related issues for ldc2 snap on 14.04 ... ?
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Thu Feb 23 20:18:43 UTC 2017
Hello all,
I've encountered a couple of further issues with the ldc2 compiler snap when
it's installed on a 14.04 system. I'm sharing here to confirm if these are
indeed ABI issues which might be fixable in terms of how snapcraft constructs
the package.
The first [1] relates to zlib, which is included as part of the D standard
library. This is built from a copy of the zlib C source and linked in to the
rest of the library.
However, if I try to build a program that makes use of the zlib library modules,
linking fails with the following error:
/usr/bin/gcc zlibtest.o -o zlibtest -L/snap/ldc2/x1/bin/../lib -lphobos2-ldc
-ldruntime-ldc -Wl,--gc-sections -lrt -ldl -lpthread -lm -m64
/usr/bin/ld: /snap/ldc2/x1/bin/../lib/libphobos2-ldc.a(zutil.c.o): unrecognized
relocation (0x2a) in section `.text'
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
Error: /usr/bin/gcc failed with status: 1
This matches the error message observed in a past Ubuntu issue related to
binutils: https://bugs.launchpad.net/ubuntu/+source/binutils/+bug/1545653
which would suggest that there's a problematic mismatch between the binutils
used to build snap packages versus the one available on 14.04.
The second issue [2] relates to a plugin for the gold linker that is built for
LDC to enable it to use link-time optimization. This works fine on 16.04, 16.10
and 17.04, but requesting LTO on 14.04 results in linking failing:
/usr/bin/gcc hello.o -o hello -Xlinker -plugin -Xlinker
/snap/ldc2/x1/lib/LLVMgold-ldc.so -Xlinker -plugin-opt=O0
-L/snap/ldc2/x1/bin/../lib -lphobos2-ldc -ldruntime-ldc -Wl,--gc-sections -lrt
-ldl -lpthread -lm -m64
/usr/bin/ld: /snap/ldc2/x1/lib/LLVMgold-ldc.so: error loading plugin:
/snap/core/current/lib/x86_64-linux-gnu/libpthread.so.0: symbol __libc_vfork,
version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference
collect2: error: ld returned 1 exit status
Error: /usr/bin/gcc failed with status: 1
... which looks to me like it is probably a mismatch between the libc used to
build the plugin, versus the libc of either the host system or the core snap?
I would presume that both the above would need a fix either snapcraft-side or
core snap side ... ? Can anyone advise/assist?
Thanks & best wishes,
-- Joe
[1] https://github.com/ldc-developers/ldc2.snap/issues/17
[2] https://github.com/ldc-developers/ldc2.snap/issues/18
More information about the Snapcraft
mailing list