NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: toolchain/49074 (lang/ruby21-base fails to link due to undefined reference to `__atomic_compare_exchange_4')
The following reply was made to PR toolchain/49074; it has been noted by GNATS.
From: Nobuyoshi SATO <nobu-s%iwate-pu.ac.jp@localhost>
To: gnats-bugs%NetBSD.org@localhost, martin%NetBSD.org@localhost
Cc: toolchain-manager%netbsd.org@localhost,
port-sparc-maintainer%netbsd.org@localhost,
netbsd-bugs%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
nobu-s%iwate-pu.ac.jp@localhost
Subject: Re: toolchain/49074 (lang/ruby21-base fails to link due to
undefined reference to `__atomic_compare_exchange_4')
Date: Thu, 28 Aug 2014 18:19:36 +0900 (JST)
On Tue, 5 Aug 2014 12:09:15 +0000 (UTC),
martin%NetBSD.org@localhost wrote:
> Synopsis: lang/ruby21-base fails to link due to undefined reference to
> `__atomic_compare_exchange_4'
>
> Responsible-Changed-From-To: port-sparc-maintainer->toolchain-manager
> Responsible-Changed-By: martin%NetBSD.org@localhost
> Responsible-Changed-When: Tue, 05 Aug 2014 12:09:15 +0000
> Responsible-Changed-Why:
> This is a more broad issue, we need to add support for all the
> __sync* builtins for the C++ memory model
> listed in /usr/src/external/gpl3/gcc/dist/gcc/sync-builtins.def
> and treat them like we did with the __sync_* stuff (including a test
> case and fixing all build breakage)
> .
Based on infomation from @obache via twitter, I added checks
__atomic_compare_exchange_n into ruby's configure script as
following:
----8<--------8<--------8<--------8<--------8<----
--- configure.orig-pkgsrc-patched 2014-08-28 17:16:21.000000000 +0900
+++ configure 2014-08-28 17:28:28.000000000 +0900
@@ -13115,6 +13115,7 @@
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
unsigned char atomic_var;
+unsigned char atomic_var2;
int
main ()
{
@@ -13123,6 +13124,8 @@
__atomic_exchange_n(&atomic_var, 1, __ATOMIC_SEQ_CST);
__atomic_fetch_add(&atomic_var, 1, __ATOMIC_SEQ_CST);
__atomic_fetch_sub(&atomic_var, 1, __ATOMIC_SEQ_CST);
+ __atomic_compare_exchange_n(&atomic_var, &atomic_var2,
0, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
+ __atomic_compare_exchange_n(&atomic_var, &atomic_var2,
1, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
;
return 0;
----8<--------8<--------8<--------8<--------8<----
This let result of "checking for __atomic builtins..." be no,
and use of these builtin function is avoided. Tested on
netbsd-7 branch, synchronized end of last week.
Note: __atomic_exchange_n, __atomic_fetch_add and __atomic_fetch_sub
exist for sparc port, so the result of check for these builtin
functions is yes regularly.
This seem to be not a good way to solve the problem, however,
this evades the problem that lang/ruby212 cannot be built in
sparc port.
I cannot judge this problem is NetBSD's toolchain problem
or ruby's configfure script is irresponsible.
Anyway, I report the newest trying result.
Lecturer / Faculty of Software & Info. Sci., Iwate Prefectural Univ.
Nobuyoshi Sato, Ph.D / nobu-s%iwate-pu.ac.jp@localhost / +81-19-694-2612
Home |
Main Index |
Thread Index |
Old Index