Re: FYI: amd64 built with WITH_LLD_IS_LD= vs. devel/libunwind : cannot preempt symbol (for various symbols)

2017-04-16 Thread Mark Millard
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-toolchain@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"


Re: FYI: amd64 built with WITH_LLD_IS_LD= vs. devel/libunwind : cannot preempt symbol (for various symbols)

2017-04-16 Thread Ed Maste
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-toolchain@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"


Re: FYI: amd64 built with WITH_LLD_IS_LD= vs. devel/libunwind : cannot preempt symbol (for various symbols)

2017-04-16 Thread Mark Millard

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
> 

FYI: amd64 built with WITH_LLD_IS_LD= vs. devel/libunwind : cannot preempt symbol (for various symbols)

2017-04-16 Thread Mark Millard
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'