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