Piotr Kubaj
Piotr Kubaj
I removed ppc from this change and add it to https://github.com/ruby/ruby/pull/10595 as a general ppc* PR. Is it now acceptable?
While the current implementation with `/proc/cpuinfo` is wrong, parsing `/var/run/dmesg.boot` is also wrong even if it works. On FreeBSD you need to use `elf_aux_info()` to get CPU capabilities. It works...
This function is available without dynamic loading. You just need FreeBSD 12.0 or newer and include `sys/auxv.h`. An example of using it would be https://github.com/zlib-ng/zlib-ng/pull/1340/files
We (in FreeBSD) also started seeing similar simde-related errors, it's probably because simde wasn't used before for SSE translation. I will test whether reverting my patch fixes the build.
I was mistaken, the simde-related issue was about obs-waveform: ``` In file included from /wrkdirs/usr/ports/multimedia/obs-waveform/work/waveform-1.5.0/src/source.cpp:20: In file included from /wrkdirs/usr/ports/multimedia/obs-waveform/work/waveform-1.5.0/src/source.hpp:26: In file included from /wrkdirs/usr/ports/multimedia/obs-waveform/work/waveform-1.5.0/src/membuf.hpp:28: In file included from /wrkdirs/usr/ports/multimedia/obs-waveform/work/waveform-1.5.0/src/aligned_mem.hpp:20:...
I use version 1.20.5 on FreeBSD 14.0-CURRENT. FreeBSD obviously does not use NetworkManager and the same issue happens as well, with openfortivpn starting from the command line.
FreeBSD uses ELFv2 ABI on both powerpc64 and powerpc64le. On powerpc64 all the tests pass on both ucontext and ppc64le. On powerpc64le both ucontext and ppc64le fail at one ractor...
Also look at e.g. Chimera Linux, which also forces ppc64le coroutines on ppc64: https://github.com/chimera-linux/cports/blob/master/main/ruby/template.py#L47 They also use ELFv2.
32-bit ABI is not the same. We use SysV ABI. FreeBSD uses 64-bit long double.
I changed the previous version since now the FreeBSD variant is added, hence also the necessity for #ifdef.