NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

port-sparc/49074: undefined reference to `__atomic_compare_exchange_4' on sparc port



>Number:         49074
>Category:       port-sparc
>Synopsis:       lang/ruby21-base fails to link due to undefined reference to 
>`__atomic_compare_exchange_4'
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    port-sparc-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Aug 05 10:00:01 +0000 2014
>Originator:     Nobuyoshi SATO
>Release:        NetBSD 6.99.49, on July 30, 2014, pkgsrc 2014Q2 and 2014Q1
>Organization:
Faculty of Software and Information Sciences,
Iwate Prefectural University, Japan.
>Environment:
System: NetBSD balalaika.db.soft.iwate-pu.ac.jp 6.99.49 NetBSD 6.99.49 
(BALALAIKA) #0: Sun Aug  3 01:02:35 JST 2014  
nobu-s%balalaika.db.soft.iwate-pu.ac.jp@localhost:/import/leech/1/netbsd/7/obj-sparc/sys/arch/sparc/compile/BALALAIKA
 sparc
Architecture: sparc
Machine: sparc
>Description:
Building pkgsrc lang/ruby21-base fails to build as following error, 
for targetting sparc port. Targetting for amd64 works fine. 
Targetting other ports were not tested.

----in case of cross build on NetBSD/amd64, pkgsrc 2014Q2----
compiling main.c
linking static-library libruby212-static.a
verifying static-library libruby212-static.a
libruby212-static.a(gc.o): In function `objspace_malloc_increase.isra.54':
gc.c:(.text+0x9c9c): undefined reference to `__atomic_compare_exchange_4'
gc.c:(.text+0x9cdc): undefined reference to `__atomic_compare_exchange_4'
libruby212-static.a(io.o): In function `rb_update_max_fd':
io.c:(.text+0x29f0): undefined reference to `__atomic_compare_exchange_4'
libruby212-static.a(iseq.o): In function `rb_iseq_load':
iseq.c:(.text+0x3514): undefined reference to `__atomic_compare_exchange_4'
libruby212-static.a(vm_trace.o): In function `postponed_job_register':
vm_trace.c:(.text+0xf4c): undefined reference to `__atomic_compare_exchange_4'
libruby212-static.a(vm_trace.o):vm_trace.c:(.text+0x2934): more undefined 
references to `__atomic_compare_exchange_4' follow
collect2: error: ld returned 1 exit status
*** Error code 1
----end here----

----in case of straight build on NetBSD/sparc, pkgsrc 2014Q1----
compiling main.c
linking miniruby
gc.o: In function `objspace_malloc_increase.isra.54':
gc.c:(.text+0x9d60): undefined reference to `__atomic_compare_exchange_4'
gc.c:(.text+0x9da0): undefined reference to `__atomic_compare_exchange_4'
io.o: In function `rb_update_max_fd':
io.c:(.text+0x29f0): undefined reference to `__atomic_compare_exchange_4'
iseq.o: In function `rb_iseq_load':
iseq.c:(.text+0x3514): undefined reference to `__atomic_compare_exchange_4'
vm_trace.o: In function `postponed_job_register':
vm_trace.c:(.text+0xf4c): undefined reference to `__atomic_compare_exchange_4'
vm_trace.o:vm_trace.c:(.text+0x2934): more undefined references to 
`__atomic_compare_exchange_4' follow
*** Error code 1

Stop.
make: stopped in 
/import/leech/2/netbsd/7/pkgsrc/lang/ruby21-base/work/ruby-2.1.1
*** Error code 1
----end here----

lang/ruby21 could be built for sparc port in NetBSD 6.99.44.

>How-To-Repeat:
Just "make build" on lang/ruby21-base (and ruby200 too) for sparc port
in recent -current. This can be reproduced by both of cross building 
on NetBSD/amd64 and straight building on NetBSD/sparc.

Note that cross building lang/ruby21 for NetBSD/sparc on amd64 
requieres working ruby which is natively installed. So, point that
the error occurs differs from cross and straight building.

>Fix:
No idea since I have no knowledge on internal of gcc and libc.

This seem to be related to src/common/lib/libc/atomic/ and
src/common/lib/libc/arch/sparc/atomic/.



Home | Main Index | Thread Index | Old Index