Re: FYI: amd64 built with WITH_LLD_IS_LD= vs. devel/libunwind : cannot preempt symbol (for various symbols)
On 2017-Apr-16, at 7:01 PM, Ed Maste wrote: > On 16 April 2017 at 04:10, Mark Millard wrote: >> Context: amd64 FreeBSD -r316952 as a VirtualBox guest >> that was built using WITH_LLD_IS_LD= . ports -r438577. >> >> x11/xorg-minimal indirectly gets to devel/libunwind and >> devel/libunwind fails to build from source: >> >> >> --- Lperf-simple --- >> libtool: link: cc -O2 -pipe -g -fstack-protector -fno-strict-aliasing >> -fexceptions -Wall -Wsign-compare -fstack-protector -o .libs/Lperf-simple >> Lperf-simple.o ../src/.libs/libunwind.so -lgcc -llzma -Wl,-rpath >> -Wl,/usr/local/lib >> /usr/bin/ld: error: ./Gperf-simple.c:195: cannot preempt symbol >> '_ULx86_64_init_local' defined in ../src/.libs/libunwind.so > > The LLD ports exp-run identified the "cannot preempt symbol" issue as > being responsible for the largest number of failed or skipped ports. > You can find a description of the issue in LLVM PR 30960 > (https://bugs.llvm.org//show_bug.cgi?id=30960). This is a tricky > issue, and one for which there's not a clear right answer, but is > arguably a problem that needs to be addressed in the individual pieces > of software (libunwind, openal-soft, etc.) Good to know. > As a temporary workaround you can add CFLAGS+= -fPIC to the port's > Makefile, as in > https://github.com/emaste/freebsd-ports/commit/4857444b31ca546e29e221dce2a41092765e6062 I've set this up for the next time I try using WITH_LLD_IS_LD= on amd64. Thanks. When I reverted earlier to binutils based ld a later qt5-widgets vs. libQt5Core.so ended up with: "multiple definition of" for __bss_start@Qt_5 _edata@Qt_5 _end@Qt_5 and this stoped the build that I was attempting. (I did not make to to the x11/lumina that I explicitly specified as to be built.) So my -fPIC experiment using WITH_LLD_IS_LD= on amd64 will not likely happen until Qt5 can build what is involved in its supporting x11/lumina . (Having at least x11/xorg-minimal also helps with using x11/lumina . But until I can have x11/lumina I've no intended use for x11/xorg-minimal .) === Mark Millard markmi at dsl-only.net ___ freebsd-current@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: FYI: amd64 built with WITH_LLD_IS_LD= vs. devel/libunwind : cannot preempt symbol (for various symbols)
On 16 April 2017 at 04:10, Mark Millard wrote: > Context: amd64 FreeBSD -r316952 as a VirtualBox guest > that was built using WITH_LLD_IS_LD= . ports -r438577. > > x11/xorg-minimal indirectly gets to devel/libunwind and > devel/libunwind fails to build from source: > > > --- Lperf-simple --- > libtool: link: cc -O2 -pipe -g -fstack-protector -fno-strict-aliasing > -fexceptions -Wall -Wsign-compare -fstack-protector -o .libs/Lperf-simple > Lperf-simple.o ../src/.libs/libunwind.so -lgcc -llzma -Wl,-rpath > -Wl,/usr/local/lib > /usr/bin/ld: error: ./Gperf-simple.c:195: cannot preempt symbol > '_ULx86_64_init_local' defined in ../src/.libs/libunwind.so The LLD ports exp-run identified the "cannot preempt symbol" issue as being responsible for the largest number of failed or skipped ports. You can find a description of the issue in LLVM PR 30960 (https://bugs.llvm.org//show_bug.cgi?id=30960). This is a tricky issue, and one for which there's not a clear right answer, but is arguably a problem that needs to be addressed in the individual pieces of software (libunwind, openal-soft, etc.) As a temporary workaround you can add CFLAGS+= -fPIC to the port's Makefile, as in https://github.com/emaste/freebsd-ports/commit/4857444b31ca546e29e221dce2a41092765e6062 ___ freebsd-current@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: FYI: amd64 built with WITH_LLD_IS_LD= vs. devel/libunwind : cannot preempt symbol (for various symbols)
On 2017-Apr-16, at 1:10 AM, Mark Millard wrote: > Context: amd64 FreeBSD -r316952 as a VirtualBox guest > that was built using WITH_LLD_IS_LD= . ports -r438577. > > x11/xorg-minimal indirectly gets to devel/libunwind and > devel/libunwind fails to build from source: > > > --- Lperf-simple --- > libtool: link: cc -O2 -pipe -g -fstack-protector -fno-strict-aliasing > -fexceptions -Wall -Wsign-compare -fstack-protector -o .libs/Lperf-simple > Lperf-simple.o ../src/.libs/libunwind.so -lgcc -llzma -Wl,-rpath > -Wl,/usr/local/lib > /usr/bin/ld: error: ./Gperf-simple.c:195: cannot preempt symbol > '_ULx86_64_init_local' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-simple.c:219: cannot preempt symbol > '_ULx86_64_init_local' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-simple.c:252: cannot preempt symbol > '_ULx86_64_local_addr_space' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-simple.c:252: cannot preempt symbol > '_ULx86_64_set_caching_policy' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-simple.c:255: cannot preempt symbol > '_ULx86_64_local_addr_space' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-simple.c:255: cannot preempt symbol > '_ULx86_64_set_caching_policy' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-simple.c:258: cannot preempt symbol > '_ULx86_64_local_addr_space' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-simple.c:258: cannot preempt symbol > '_ULx86_64_set_caching_policy' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-simple.c:66: cannot preempt symbol > '_ULx86_64_init_local' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-simple.c:73: cannot preempt symbol > '_ULx86_64_step' defined in ../src/.libs/libunwind.so > cc: error: linker command failed with exit code 1 (use -v to see invocation) > *** [Lperf-simple] Error code 1 > > make[2]: stopped in > /usr/obj/portswork/usr/ports/devel/libunwind/work/libunwind-1.1/tests > --- Lperf-trace --- > libtool: link: cc -O2 -pipe -g -fstack-protector -fno-strict-aliasing > -fexceptions -Wall -Wsign-compare -fstack-protector -o .libs/Lperf-trace > Lperf-trace.o ../src/.libs/libunwind.so -lgcc -llzma -Wl,-rpath > -Wl,/usr/local/lib > --- Gperf-simple --- > libtool: link: cc -O2 -pipe -g -fstack-protector -fno-strict-aliasing > -fexceptions -Wall -Wsign-compare -fstack-protector -o .libs/Gperf-simple > Gperf-simple.o ../src/.libs/libunwind-x86_64.so > /usr/obj/portswork/usr/ports/devel/libunwind/work/libunwind-1.1/src/.libs/libunwind.so > ../src/.libs/libunwind.so -lgcc -llzma -Wl,-rpath -Wl,/usr/local/lib > --- Lperf-trace --- > /usr/bin/ld: error: ./Gperf-trace.c:181: cannot preempt symbol > '_ULx86_64_init_local' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-trace.c:205: cannot preempt symbol > '_ULx86_64_init_local' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-trace.c:238: cannot preempt symbol > '_ULx86_64_local_addr_space' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-trace.c:238: cannot preempt symbol > '_ULx86_64_set_caching_policy' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-trace.c:241: cannot preempt symbol > '_ULx86_64_local_addr_space' defined in ../src/.libs/libunwind.so > --- Gperf-trace --- > libtool: link: cc -O2 -pipe -g -fstack-protector -fno-strict-aliasing > -fexceptions -Wall -Wsign-compare -fstack-protector -o .libs/Gperf-trace > Gperf-trace.o ../src/.libs/libunwind-x86_64.so > /usr/obj/portswork/usr/ports/devel/libunwind/work/libunwind-1.1/src/.libs/libunwind.so > ../src/.libs/libunwind.so -lgcc -llzma -Wl,-rpath -Wl,/usr/local/lib > --- Lperf-trace --- > /usr/bin/ld: error: ./Gperf-trace.c:241: cannot preempt symbol > '_ULx86_64_set_caching_policy' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-trace.c:244: cannot preempt symbol > '_ULx86_64_local_addr_space' defined in ../src/.libs/libunwind.so > /usr/bin/ld: error: ./Gperf-trace.c:244: cannot preempt symbol > '_ULx86_64_set_caching_policy' defined in ../src/.libs/libunwind.so > cc: error: linker command failed with exit code 1 (use -v to see invocation) > *** [Lperf-trace] Error code 1 > > make[2]: stopped in > /usr/obj/portswork/usr/ports/devel/libunwind/work/libunwind-1.1/tests > --- Gperf-simple --- > /usr/bin/ld: error: Gperf-simple.c:195: cannot preempt symbol > '_Ux86_64_init_local' defined in ../src/.libs/libunwind-x86_64.so > /usr/bin/ld: error: Gperf-simple.c:219: cannot preempt symbol > '_Ux86_64_init_local' defined in ../src/.libs/libunwind-x86_64.so > /usr/bin/ld: error: Gperf-simple.c:252: cannot preempt symbol > '_Ux86_64_local_addr_space' defined in ../src/.libs/libunwind-x86_64.so > /usr/bin/ld: error: Gperf-simple.c:252: cannot preempt symbol > '_Ux86_64_set_caching_policy' defined in ../src/.libs/libunwind-x86_64.so > /usr
FYI: amd64 built with WITH_LLD_IS_LD= vs. devel/libunwind : cannot preempt symbol (for various symbols)
Context: amd64 FreeBSD -r316952 as a VirtualBox guest that was built using WITH_LLD_IS_LD= . ports -r438577. x11/xorg-minimal indirectly gets to devel/libunwind and devel/libunwind fails to build from source: --- Lperf-simple --- libtool: link: cc -O2 -pipe -g -fstack-protector -fno-strict-aliasing -fexceptions -Wall -Wsign-compare -fstack-protector -o .libs/Lperf-simple Lperf-simple.o ../src/.libs/libunwind.so -lgcc -llzma -Wl,-rpath -Wl,/usr/local/lib /usr/bin/ld: error: ./Gperf-simple.c:195: cannot preempt symbol '_ULx86_64_init_local' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-simple.c:219: cannot preempt symbol '_ULx86_64_init_local' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-simple.c:252: cannot preempt symbol '_ULx86_64_local_addr_space' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-simple.c:252: cannot preempt symbol '_ULx86_64_set_caching_policy' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-simple.c:255: cannot preempt symbol '_ULx86_64_local_addr_space' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-simple.c:255: cannot preempt symbol '_ULx86_64_set_caching_policy' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-simple.c:258: cannot preempt symbol '_ULx86_64_local_addr_space' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-simple.c:258: cannot preempt symbol '_ULx86_64_set_caching_policy' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-simple.c:66: cannot preempt symbol '_ULx86_64_init_local' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-simple.c:73: cannot preempt symbol '_ULx86_64_step' defined in ../src/.libs/libunwind.so cc: error: linker command failed with exit code 1 (use -v to see invocation) *** [Lperf-simple] Error code 1 make[2]: stopped in /usr/obj/portswork/usr/ports/devel/libunwind/work/libunwind-1.1/tests --- Lperf-trace --- libtool: link: cc -O2 -pipe -g -fstack-protector -fno-strict-aliasing -fexceptions -Wall -Wsign-compare -fstack-protector -o .libs/Lperf-trace Lperf-trace.o ../src/.libs/libunwind.so -lgcc -llzma -Wl,-rpath -Wl,/usr/local/lib --- Gperf-simple --- libtool: link: cc -O2 -pipe -g -fstack-protector -fno-strict-aliasing -fexceptions -Wall -Wsign-compare -fstack-protector -o .libs/Gperf-simple Gperf-simple.o ../src/.libs/libunwind-x86_64.so /usr/obj/portswork/usr/ports/devel/libunwind/work/libunwind-1.1/src/.libs/libunwind.so ../src/.libs/libunwind.so -lgcc -llzma -Wl,-rpath -Wl,/usr/local/lib --- Lperf-trace --- /usr/bin/ld: error: ./Gperf-trace.c:181: cannot preempt symbol '_ULx86_64_init_local' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-trace.c:205: cannot preempt symbol '_ULx86_64_init_local' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-trace.c:238: cannot preempt symbol '_ULx86_64_local_addr_space' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-trace.c:238: cannot preempt symbol '_ULx86_64_set_caching_policy' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-trace.c:241: cannot preempt symbol '_ULx86_64_local_addr_space' defined in ../src/.libs/libunwind.so --- Gperf-trace --- libtool: link: cc -O2 -pipe -g -fstack-protector -fno-strict-aliasing -fexceptions -Wall -Wsign-compare -fstack-protector -o .libs/Gperf-trace Gperf-trace.o ../src/.libs/libunwind-x86_64.so /usr/obj/portswork/usr/ports/devel/libunwind/work/libunwind-1.1/src/.libs/libunwind.so ../src/.libs/libunwind.so -lgcc -llzma -Wl,-rpath -Wl,/usr/local/lib --- Lperf-trace --- /usr/bin/ld: error: ./Gperf-trace.c:241: cannot preempt symbol '_ULx86_64_set_caching_policy' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-trace.c:244: cannot preempt symbol '_ULx86_64_local_addr_space' defined in ../src/.libs/libunwind.so /usr/bin/ld: error: ./Gperf-trace.c:244: cannot preempt symbol '_ULx86_64_set_caching_policy' defined in ../src/.libs/libunwind.so cc: error: linker command failed with exit code 1 (use -v to see invocation) *** [Lperf-trace] Error code 1 make[2]: stopped in /usr/obj/portswork/usr/ports/devel/libunwind/work/libunwind-1.1/tests --- Gperf-simple --- /usr/bin/ld: error: Gperf-simple.c:195: cannot preempt symbol '_Ux86_64_init_local' defined in ../src/.libs/libunwind-x86_64.so /usr/bin/ld: error: Gperf-simple.c:219: cannot preempt symbol '_Ux86_64_init_local' defined in ../src/.libs/libunwind-x86_64.so /usr/bin/ld: error: Gperf-simple.c:252: cannot preempt symbol '_Ux86_64_local_addr_space' defined in ../src/.libs/libunwind-x86_64.so /usr/bin/ld: error: Gperf-simple.c:252: cannot preempt symbol '_Ux86_64_set_caching_policy' defined in ../src/.libs/libunwind-x86_64.so /usr/bin/ld: error: Gperf-simple.c:255: cannot preempt symbol '_Ux86_64_local_addr_space' defined in ../src/.libs/libunwind-x86_64.so /usr/bin/ld: error: Gperf-simple.c:255: cannot preempt symbol '_Ux86_64_set_caching_policy' d