From patchwork Mon Dec 17 22:26:18 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Schwab X-Patchwork-Id: 207005 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 3482E2C007E for ; Tue, 18 Dec 2012 09:26:35 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1356387996; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Received:Received:From:To:Subject:Date:Message-ID: User-Agent:MIME-Version:Content-Type:Mailing-List:Precedence: List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=bF2Bri5CSBRChQ6m1eeeMyIkbGE=; b=G9cY+Pbd2kvaf4f DyfGoi8OKSXdVYA+/T2mbIQstJrcrXB/pWKVNtBOt65j5xHRbvVVAJYtwNjURq0C EDWDRL5MUKsqPCYYlKDyURV8idLahwKLthv69spRgLX3yGM9knrrQfsNC2Ni/ZHd LG7/qlAkrnSgshiVEBOqmmc4AIcY= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Received:X-Auth-Info:Received:Received:From:To:Subject:X-Yow:Date:Message-ID:User-Agent:MIME-Version:Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=qjy+lhIRp8QJqkgScynUwg0GaQpq7oooIXxzsdIDuBvDRO1aVkMYQt3jYTACHl 4lGSfgzoNlv1/nBxvwc/VZ0MTcEbzci3a9rVPFdkQYlNzgJZ3cuhyXoTLWGtKnpt RAGWPt2L02K4erpuNdd7m7fZVl0S4i7c6+lVL1Yvw8JfI=; Received: (qmail 30135 invoked by alias); 17 Dec 2012 22:26:32 -0000 Received: (qmail 30124 invoked by uid 22791); 17 Dec 2012 22:26:30 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, TW_BF X-Spam-Check-By: sourceware.org Received: from mail-out.m-online.net (HELO mail-out.m-online.net) (212.18.0.9) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 17 Dec 2012 22:26:24 +0000 Received: from frontend1.mail.m-online.net (unknown [192.168.8.180]) by mail-out.m-online.net (Postfix) with ESMTP id 3YQH5T4r6cz4KK2H for ; Mon, 17 Dec 2012 23:26:20 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 3YQH5S5jjjzbbgc for ; Mon, 17 Dec 2012 23:26:20 +0100 (CET) Received: from mail.mnet-online.de ([192.168.8.180]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavisd-new, port 10024) with ESMTP id R735dEm9JTyl for ; Mon, 17 Dec 2012 23:26:19 +0100 (CET) X-Auth-Info: o4/xfkyjnaTB50voqN6/rA5+r9IbCbXnSS1sJwUB/lw= Received: from igel.home (ppp-93-104-139-188.dynamic.mnet-online.de [93.104.139.188]) by mail.mnet-online.de (Postfix) with ESMTPA for ; Mon, 17 Dec 2012 23:26:19 +0100 (CET) Received: by igel.home (Postfix, from userid 501) id 03887CA2B2; Mon, 17 Dec 2012 23:26:18 +0100 (CET) From: Andreas Schwab To: gcc-patches@gcc.gnu.org Subject: [PATCH] PR go/55201: Link libgo against libatomic X-Yow: Remember, in 2039, MOUSSE & PASTA will be available ONLY by prescription!! Date: Mon, 17 Dec 2012 23:26:18 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.91 (gnu/linux) MIME-Version: 1.0 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Since libgo uses 8-byte atomic operations it needs to link against libatomic. Tested on m68k-linux and powerpc-linux. Andreas. PR go/55201 * Makefile.def (all-target-libgo): Depend on all-target-libatomic. * Makefile.in: Regenerate. testsuite/: * lib/go.exp (go_link_flags): Add libatomic location to flags and ld_library_path. diff --git a/Makefile.def b/Makefile.def index 8d8af23..e25799a 100644 --- a/Makefile.def +++ b/Makefile.def @@ -497,6 +497,7 @@ dependencies = { module=configure-target-libgo; on=configure-target-libffi; }; dependencies = { module=configure-target-libgo; on=all-target-libstdc++-v3; }; dependencies = { module=all-target-libgo; on=all-target-libbacktrace; }; dependencies = { module=all-target-libgo; on=all-target-libffi; }; +dependencies = { module=all-target-libgo; on=all-target-libatomic; }; dependencies = { module=configure-target-libjava; on=configure-target-zlib; }; dependencies = { module=configure-target-libjava; on=configure-target-boehm-gc; }; dependencies = { module=configure-target-libjava; on=configure-target-libffi; }; diff --git a/Makefile.in b/Makefile.in index a9d2890..a0281e9 100644 --- a/Makefile.in +++ b/Makefile.in @@ -46154,6 +46154,7 @@ configure-target-libgo: maybe-configure-target-libffi configure-target-libgo: maybe-all-target-libstdc++-v3 all-target-libgo: maybe-all-target-libbacktrace all-target-libgo: maybe-all-target-libffi +all-target-libgo: maybe-all-target-libatomic configure-target-libjava: maybe-configure-target-zlib configure-target-libjava: maybe-configure-target-boehm-gc configure-target-libjava: maybe-configure-target-libffi diff --git a/gcc/go/gospec.c b/gcc/go/gospec.c index 20372f0..c22ad6c 100644 --- a/gcc/go/gospec.c +++ b/gcc/go/gospec.c @@ -45,6 +45,9 @@ along with GCC; see the file COPYING3. If not see #define THREAD_LIBRARY "pthread" #define THREAD_LIBRARY_PROFILE THREAD_LIBRARY +#define LIBATOMIC "atomic" +#define LIBATOMIC_PROFILE LIBATOMIC + #define LIBGO "go" #define LIBGO_PROFILE LIBGO #define LIBGOBEGIN "gobegin" @@ -336,6 +339,11 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options, added_libraries++; j++; + generate_option (OPT_l, saw_profile_flag ? LIBATOMIC_PROFILE : LIBATOMIC, + 1, CL_DRIVER, &new_decoded_options[j]); + added_libraries++; + j++; + #ifdef HAVE_LD_STATIC_DYNAMIC if (library > 1 && !static_link) { diff --git a/gcc/testsuite/lib/go.exp b/gcc/testsuite/lib/go.exp index 8c908a5..8eea9fa 100644 --- a/gcc/testsuite/lib/go.exp +++ b/gcc/testsuite/lib/go.exp @@ -111,6 +111,11 @@ proc go_link_flags { paths } { append flags "-L${gccpath}/libgo/.libs " append ld_library_path ":${gccpath}/libgo/.libs" } + if { [file exists "${gccpath}/libatomic/.libs/libatomic.a"] \ + || [file exists "${gccpath}/libatomic/.libs/libatomic.${shlib_ext}"] } { + append flags "-L${gccpath}/libatomic/.libs " + append ld_library_path ":${gccpath}/libatomic/.libs" + } if [file exists "${gccpath}/libiberty/libiberty.a"] { append flags "-L${gccpath}/libiberty " } diff --git a/libgo/Makefile.am b/libgo/Makefile.am index fe0f205..a7ac379 100644 --- a/libgo/Makefile.am +++ b/libgo/Makefile.am @@ -1909,6 +1909,7 @@ libgo_la_LDFLAGS = \ libgo_la_LIBADD = \ $(libgo_go_objs) ../libbacktrace/libbacktrace.la \ + ../libatomic/libatomic.la \ $(LIBFFI) $(PTHREAD_LIBS) $(MATH_LIBS) $(NET_LIBS) libgobegin_a_SOURCES = \ @@ -1948,7 +1949,7 @@ GOTESTFLAGS = # Check a package. CHECK = \ - GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \ + GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs -L `${PWD_COMMAND}`/../libatomic -L `${PWD_COMMAND}`/../libatomic/.libs"; \ export GC; \ GOLIBS="$(MATH_LIBS) $(NET_LIBS)"; \ export GOLIBS; \ @@ -1957,7 +1958,7 @@ CHECK = \ MAKE="$(MAKE)"; \ export MAKE; \ libgccdir=`${GOC} -print-libgcc-file-name | sed -e 's|/[^/]*$$||'`; \ - LD_LIBRARY_PATH="`${PWD_COMMAND}`/.libs:$${libgccdir}:${LD_LIBRARY_PATH}"; \ + LD_LIBRARY_PATH="`${PWD_COMMAND}`/.libs:`${PWD_COMMAND}`/../libatomic/.libs:$${libgccdir}:${LD_LIBRARY_PATH}"; \ LD_LIBRARY_PATH=`echo $${LD_LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \ export LD_LIBRARY_PATH; \ $(MKDIR_P) $(@D); \ diff --git a/libgo/Makefile.in b/libgo/Makefile.in index 9b8ea1a..31e38ba 100644 --- a/libgo/Makefile.in +++ b/libgo/Makefile.in @@ -175,9 +175,9 @@ am__DEPENDENCIES_2 = bufio.lo bytes.lo bytes/index.lo crypto.lo \ testing/iotest.lo testing/quick.lo unicode/utf16.lo \ unicode/utf8.lo libgo_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ - ../libbacktrace/libbacktrace.la $(am__DEPENDENCIES_1) \ + ../libbacktrace/libbacktrace.la ../libatomic/libatomic.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) @LIBGO_IS_LINUX_FALSE@am__objects_1 = lock_sema.lo thread-sema.lo @LIBGO_IS_LINUX_TRUE@am__objects_1 = lock_futex.lo thread-linux.lo @HAVE_SYS_MMAN_H_FALSE@am__objects_2 = mem_posix_memalign.lo @@ -2037,6 +2037,7 @@ libgo_la_LDFLAGS = \ libgo_la_LIBADD = \ $(libgo_go_objs) ../libbacktrace/libbacktrace.la \ + ../libatomic/libatomic.la \ $(LIBFFI) $(PTHREAD_LIBS) $(MATH_LIBS) $(NET_LIBS) libgobegin_a_SOURCES = \ @@ -2071,7 +2072,7 @@ GOTESTFLAGS = # Check a package. CHECK = \ - GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \ + GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs -L `${PWD_COMMAND}`/../libatomic -L `${PWD_COMMAND}`/../libatomic/.libs"; \ export GC; \ GOLIBS="$(MATH_LIBS) $(NET_LIBS)"; \ export GOLIBS; \ @@ -2080,7 +2081,7 @@ CHECK = \ MAKE="$(MAKE)"; \ export MAKE; \ libgccdir=`${GOC} -print-libgcc-file-name | sed -e 's|/[^/]*$$||'`; \ - LD_LIBRARY_PATH="`${PWD_COMMAND}`/.libs:$${libgccdir}:${LD_LIBRARY_PATH}"; \ + LD_LIBRARY_PATH="`${PWD_COMMAND}`/.libs:`${PWD_COMMAND}`/../libatomic/.libs:$${libgccdir}:${LD_LIBRARY_PATH}"; \ LD_LIBRARY_PATH=`echo $${LD_LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \ export LD_LIBRARY_PATH; \ $(MKDIR_P) $(@D); \