Re: Problems with our libgcc_s.so in base [FYI: armv6 C++/g++6 example under stable/11 -r304029]

2016-08-22 Thread David Chisnall
On 21 Aug 2016, at 22:23, Mark Millard  wrote:
> 
> On armv6 (an rpi2) C++ by itself can have /lib/libgcc_s.so.1 not being 
> sufficient, for example with g++6 being used: 
> 
>> # g++6 -std=c++14 -O2 cpp_clocks_investigation.cpp
>> # ldd a.out
>> a.out:
>>libstdc++.so.6 => /usr/local/lib/gcc6/libstdc++.so.6 (0x2010)
>>libm.so.5 => /lib/libm.so.5 (0x20053000)
>>libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x20076000)
>>libc.so.7 => /lib/libc.so.7 (0x2030)
>> # ./a.out
>> /usr/local/lib/gcc6/libstdc++.so.6: Undefined symbol "__aeabi_uldivmod"
> 

The problem appears to be that we’ve not imported (all of?) the ARM-specific 
bits of compiler-rt.  For example, this function is provided upstream:

http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/aeabi_uldivmod.S?revision=273500=markup

David



smime.p7s
Description: S/MIME cryptographic signature


Re: Problems with our libgcc_s.so in base [FYI: armv6 C++/g++6 example under stable/11 -r304029]

2016-08-21 Thread Mark Millard
"problems come when we try to us archtiectures not fully supported by out 
libgcc_s.so" ( from https://people.freebsd.org/~db/libgcc.txt ). . .

On armv6 (an rpi2) C++ by itself can have /lib/libgcc_s.so.1 not being 
sufficient, for example with g++6 being used: 

> # g++6 -std=c++14 -O2 cpp_clocks_investigation.cpp
> # ldd a.out
> a.out:
> libstdc++.so.6 => /usr/local/lib/gcc6/libstdc++.so.6 (0x2010)
> libm.so.5 => /lib/libm.so.5 (0x20053000)
> libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x20076000)
> libc.so.7 => /lib/libc.so.7 (0x2030)
> # ./a.out
> /usr/local/lib/gcc6/libstdc++.so.6: Undefined symbol "__aeabi_uldivmod"

By contrast:

> # g++6 -Wl,-rpath=/usr/local/lib/gcc6 -std=c++14 -O2 
> cpp_clocks_investigation.cpp
> # ldd a.out
> a.out:
> libstdc++.so.6 => /usr/local/lib/gcc6/libstdc++.so.6 (0x2010)
> libm.so.5 => /lib/libm.so.5 (0x20053000)
> libgcc_s.so.1 => /usr/local/lib/gcc6/libgcc_s.so.1 (0x20076000)
> libc.so.7 => /lib/libc.so.7 (0x2030)
> # ./a.out
> std::numeric_limits::max(): 9'223'372'036'854'775'807
. . . (works fine) . . .


Context details:

> # svnlite info /usr/src/ | grep "Re[vl][ia:]"
> Relative URL: ^/stable/11
> Revision: 304029
> Last Changed Rev: 304029

> # uname -apKU
> FreeBSD rpi2 11.0-PRERELEASE FreeBSD 11.0-PRERELEASE #4 r304029M: Sat Aug 13 
> 01:10:34 PDT 2016 
> markmi@FreeBSDx64:/usr/obj/clang/arm.armv6/usr/src/sys/RPI2-N
> ODBG  arm armv6 1100500 1100500


===
Mark Millard
markmi at dsl-only.net

___
freebsd-stable@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"