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

Re: binutils: s390x: fails to link systemd binaries using LTO



On 2017-06-19 23:50, Michael Biebl wrote:
> On Tue, 30 May 2017 22:21:04 +0200 Michael Biebl <biebl@debian.org> wrote:
> > Package: binutils
> > Version: 2.28-5
> > Severity: normal
> > User: debian-s390@lists.debian.org
> > Usertags: s390x
> > 
> > Hi,
> > 
> > we run into a strange issue when trying to compile systemd git master
> > using meson. The build/link failure is s390x specific so I've CCed the
> > s390x porters mailing list. The problem is easily reproducible on the
> > zelenka porterbox. with the following commands:
> > 
> > sessionid=$(schroot -b -c sid)
> > dd-schroot-cmd -c $sessionid apt-get update
> > dd-schroot-cmd -c $sessionid apt-get upgrade -y
> > dd-schroot-cmd -c $sessionid apt-get build-dep systemd -y
> > dd-schroot-cmd -c $sessionid apt-get install meson git -y
> > schroot -r -c $sessionid
> > git clone https://github.com/systemd/systemd
> > cd systemd
> > export LANG=C.UTF-8
> > meson -Db_lto=true -Dlink-udev-shared=false build
> > ninja -C build
> > 
> > This will lead to a failure to link the systemd-networkd,
> > test-network-tables and test-network binaries. I've attached the
> > relevant excerpt from the build log.
> > 
> > Since this issue seems to be arch specific, this appears to be a problem
> > in the s390x toolchain and not systemd itself.
> > 
> > We would appreciate if the s390(x) porters could have a look.

Could you please Cc the s390x porters next time? That would make us
notice the issue faster.

> Any feedback fro the s390 porters?

The problem is related to the fact that gold is not available on s390x.
It seems gold is less strict than ld in having to link with each used
library. The problem can be fully reproduced on amd64 by using ld instead
of gold:

--- a/meson.build
+++ b/meson.build
@@ -312,7 +312,7 @@ link_test_c = files('tools/meson-link-test.c')
 foreach arg : ['-Wl,-z,relro',
                '-Wl,-z,now',
                '-pie',
-               '-Wl,-fuse-ld=gold',
+               '-Wl,-fuse-ld=ld',
               ]
 
         have = run_command(check_compilation_sh,


Now to come back to the problem, the test is linked against
src/libsystemd/libsystemd.a which uses pthread_sigmask. It looks
therefore normal to add -lpthread to link it.

Regards,
Aurelien

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurelien@aurel32.net                 http://www.aurel32.net

Attachment: signature.asc
Description: PGP signature


Reply to: