http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47563
Summary: m32r does not have synchronization primitives Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: j...@gcc.gnu.org When trying to build Go for m32r-*-rtems*, over 1/3 of the tests fail with a link error. I think the synchronization primitives can be implemented with the LOCK/UNLOCK instruction pair but don't know how to do this. The errors look like this. Executing on host: /users/joel/test-gcc/b-gccgo1-m32r/gcc/testsuite/go/../../gccgo -B/users/joel/test-gcc/b-gccgo1-m32r/gcc/testsuite/go/../../ -I/users/joel/test-gcc/b-gccgo1-m32r/m32r-rtems4.11/./libgo -O -w -pedantic-errors -c -B/users/joel/test-gcc/install-svn/m32r-rtems4.11/m32rsim/lib/ -specs bsp_specs -qrtems -o bug270.o /users/joel/test-gcc/gcc-svn/gcc/testsuite/go.test/test/fixedbugs/bug270.go (timeout = 300) PASS: go.test/test/fixedbugs/bug270.go -O (test for excess errors) Executing on host: /users/joel/test-gcc/b-gccgo1-m32r/gcc/testsuite/go/../../gccgo -B/users/joel/test-gcc/b-gccgo1-m32r/gcc/testsuite/go/../../ /users/joel/test-gcc/gcc-svn/gcc/testsuite/go.test/test/fixedbugs/bug271.go go_tg.o -I/users/joel/test-gcc/b-gccgo1-m32r/m32r-rtems4.11/./libgo -w -O2 -g -B/users/joel/test-gcc/install-svn/m32r-rtems4.11/m32rsim/lib/ -specs bsp_specs -qrtems /users/joel/test-gcc/b-gccgo1-m32r/gcc/rtems_gccgo_init.o -L/users/joel/test-gcc/b-gccgo1-m32r/m32r-rtems4.11/./libgo -L/users/joel/test-gcc/b-gccgo1-m32r/m32r-rtems4.11/./libgo/.libs -Wl,-wrap,exit -Wl,-wrap,_exit -Wl,-wrap,main -Wl,-wrap,abort -lm -o /users/joel/test-gcc/b-gccgo1-m32r/gcc/testsuite/go/bug271.x (timeout = 300) /users/joel/test-gcc/b-gccgo1-m32r/m32r-rtems4.11/./libgo/.libs/libgo.a(go-go.o): In function `gc_stop_handler':^M /users/joel/test-gcc/gcc-svn/libgo/runtime/go-go.c:307: undefined reference to `__sync_bool_compare_and_swap_4'^M /users/joel/test-gcc/gcc-svn/libgo/runtime/go-go.c:316: undefined reference to `__sync_bool_compare_and_swap_4'^M /users/joel/test-gcc/gcc-svn/libgo/runtime/go-go.c:325: undefined reference to `__sync_bool_compare_and_swap_4'^M /users/joel/test-gcc/gcc-svn/libgo/runtime/go-go.c:330: undefined reference to `__sync_bool_compare_and_swap_4'^M /users/joel/test-gcc/b-gccgo1-m32r/m32r-rtems4.11/./libgo/.libs/libgo.a(go-signal.o): In function `sighandler':^M /users/joel/test-gcc/gcc-svn/libgo/runtime/go-signal.c:136: undefined reference to `__sync_bool_compare_and_swap_4'^M /users/joel/test-gcc/b-gccgo1-m32r/m32r-rtems4.11/./libgo/.libs/libgo.a(thread.o):/users/joel/test-gcc/gcc-svn/libgo/runtime/thread.c:23: more undefined references to `__sync_bool_compare_and_swap_4' follow^M /users/joel/test-gcc/b-gccgo1-m32r/m32r-rtems4.11/./libgo/.libs/libgo.a(go-semacquire.o): In function `libgo_runtime.runtime.Semrelease':^M /users/joel/test-gcc/gcc-svn/libgo/runtime/go-semacquire.c:93: undefined reference to `__sync_fetch_and_add_4'^M /users/joel/test-gcc/b-gccgo1-m32r/m32r-rtems4.11/./libgo/.libs/libgo.a(go-unwind.o): In function `__go_check_defer':^M /users/joel/test-gcc/gcc-svn/libgo/runtime/go-unwind.c:135: undefined reference to `_Unwind_Resume_or_Rethrow'^M /users/joel/test-gcc/b-gccgo1-m32r/m32r-rtems4.11/./libgo/.libs/libgo.a(mfinal.o): In function `runtime_addfinalizer':^M /users/joel/test-gcc/gcc-svn/libgo/runtime/mfinal.c:109: undefined reference to `__sync_bool_compare_and_swap_4'^M /users/joel/test-gcc/gcc-svn/libgo/runtime/mfinal.c:115: undefined reference to `__sync_bool_compare_and_swap_4'^M /users/joel/test-gcc/gcc-svn/libgo/runtime/mfinal.c:128: undefined reference to `__sync_bool_compare_and_swap_4'^M /users/joel/test-gcc/gcc-svn/libgo/runtime/mfinal.c:166: undefined reference to `__sync_bool_compare_and_swap_4'^M /users/joel/test-gcc/gcc-svn/libgo/runtime/mfinal.c:168: undefined reference to `__sync_bool_compare_and_swap_4'^M /users/joel/test-gcc/b-gccgo1-m32r/m32r-rtems4.11/./libgo/.libs/libgo.a(mfinal.o):/users/joel/test-gcc/gcc-svn/libgo/runtime/mfinal.c:180: more undefined references to `__sync_bool_compare_and_swap_4' follow^M collect2: ld returned 1 exit status^M compiler exited with status 1