NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
toolchain/54431: Missing 64-bit atomics on 32-bit platforms
>Number: 54431
>Category: toolchain
>Synopsis: Missing 64-bit atomics on 32-bit platforms
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: toolchain-manager
>State: open
>Class: support
>Submitter-Id: net
>Arrival-Date: Fri Aug 02 11:35:00 +0000 2019
>Originator: he%NetBSD.org@localhost
>Release: NetBSD 8.0
>Organization:
I try...
>Environment:
System: NetBSD ambrosia.urc.uninett.no 8.0 NetBSD 8.0 (AMBROSIA) #4: Tue Apr 10 09:30:29 CEST 2018 he%ambrosia.urc.uninett.no@localhost:/usr/obj/sys/arch/macppc/compile/AMBROSIA macppc
Architecture: powerpc
Machine: macppc
>Description:
This is vaguely related to PR#54428.
It appears that at least our powerpc and i386 ports do not
support any sort of 64-bit atomic operations.
This has already caused us to carry around patches to llvm and
rust to not insist on the presence of 64-bit atomic
operations.
The latest thing I stumbled across was in an attempt to update
wip/quickjs to the new 2019-07-28 snapshot, and building that
on NetBSD/macppc 8.0 fails with
/usr/pkgsrc/wip/quickjs/work/quickjs-2019-07-28/quickjs.c:48182: undefined reference to `__atomic_compare_exchange_8'
/usr/pkgsrc/wip/quickjs/work/quickjs-2019-07-28/quickjs.c:48138: undefined reference to `__atomic_fetch_xor_8'
/usr/pkgsrc/wip/quickjs/work/quickjs-2019-07-28/quickjs.c:48139: undefined reference to `__atomic_exchange_8'
/usr/pkgsrc/wip/quickjs/work/quickjs-2019-07-28/quickjs.c:48153: undefined reference to `__atomic_load_8'
/usr/pkgsrc/wip/quickjs/work/quickjs-2019-07-28/quickjs.c:48134: undefined reference to `__atomic_fetch_add_8'
/usr/pkgsrc/wip/quickjs/work/quickjs-2019-07-28/quickjs.c:48135: undefined reference to `__atomic_fetch_and_8'
/usr/pkgsrc/wip/quickjs/work/quickjs-2019-07-28/quickjs.c:48136: undefined reference to `__atomic_fetch_or_8'
/usr/pkgsrc/wip/quickjs/work/quickjs-2019-07-28/quickjs.c:48137: undefined reference to `__atomic_fetch_sub_8'
.obj/quickjs.bn.o: In function `js_atomics_store':
/usr/pkgsrc/wip/quickjs/work/quickjs-2019-07-28/quickjs.c:48246: undefined reference to `__atomic_store_8'
gmake: *** [Makefile:180: qjsbnc] Error 1
(Not yet mentioned to the author, I'll try to do that...)
However, I'm quite certain these are not the only ones which
more or less assume the presence of 64-bit atomics.
Other systems appears to solve this problem somehow (provide
primitives for 64-bit atomics even though the native CPU
doesn't provide the instruction-level primitives to do so
directly), but NetBSD does not.
The question is whether it's wise for NetBSD to stick to this
position, and depending on the outcome of that question, what
we need to do about this.
>How-To-Repeat:
Try to update wip/quickjs to the 2019-07-28 version, and build
on either NetBSD/i386 8.0 or NetBSD/macppc 8.0, and watch it
fail as above.
>Fix:
Don't know, sorry.
Home |
Main Index |
Thread Index |
Old Index