From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 120920 invoked by alias); 12 Aug 2016 11:20:24 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 120910 invoked by uid 89); 12 Aug 2016 11:20:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.1 required=5.0 tests=BAYES_50,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 spammy=Writing, UD:match.sh, matchsh, match.sh X-HELO: mx0a-001b2d01.pphosted.com Received: from mx0b-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com) (148.163.158.5) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 12 Aug 2016 11:20:13 +0000 Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.11/8.16.0.11) with SMTP id u7CBK9GL084076 for ; Fri, 12 Aug 2016 07:20:11 -0400 Received: from e06smtp05.uk.ibm.com (e06smtp05.uk.ibm.com [195.75.94.101]) by mx0b-001b2d01.pphosted.com with ESMTP id 24scsha22u-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Fri, 12 Aug 2016 07:20:10 -0400 Received: from localhost by e06smtp05.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 12 Aug 2016 12:19:52 +0100 Received: from d06dlp01.portsmouth.uk.ibm.com (9.149.20.13) by e06smtp05.uk.ibm.com (192.168.101.135) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 12 Aug 2016 12:19:51 +0100 X-IBM-Helo: d06dlp01.portsmouth.uk.ibm.com X-IBM-MailFrom: krebbel@linux.vnet.ibm.com X-IBM-RcptTo: gcc-patches@gcc.gnu.org Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by d06dlp01.portsmouth.uk.ibm.com (Postfix) with ESMTP id 3AD3D17D8056 for ; Fri, 12 Aug 2016 12:21:31 +0100 (BST) Received: from d06av05.portsmouth.uk.ibm.com (d06av05.portsmouth.uk.ibm.com [9.149.37.229]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id u7CBJoUg62128350 for ; Fri, 12 Aug 2016 11:19:50 GMT Received: from d06av05.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av05.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id u7CBJoL1022917 for ; Fri, 12 Aug 2016 05:19:50 -0600 Received: from [9.145.6.244] (sig-9-145-6-244.uk.ibm.com [9.145.6.244]) by d06av05.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id u7CBJoRU022883; Fri, 12 Aug 2016 05:19:50 -0600 Subject: Re: libgo patch committed: Change build procedure to use build tags To: Ian Lance Taylor , gcc-patches@gcc.gnu.org References: From: Andreas Krebbel Date: Fri, 12 Aug 2016 11:20:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16081211-0020-0000-0000-000001E73104 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16081211-0021-0000-0000-00001D16B60B Message-Id: <6e128c9e-8f4d-8222-f3cc-2425b88275e3@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-08-12_04:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1604210000 definitions=main-1608120123 X-IsSubscribed: yes X-SW-Source: 2016-08/txt/msg01012.txt.bz2 On 08/06/2016 02:36 AM, Ian Lance Taylor wrote: > Go packages use build tags (see the section on Build Constraints at > https://golang.org/pkg/go/build/) to select which files to build on > specific systems. > > Previously the libgo Makefile explicitly listed the set of files to > compile for each package. For packages that use build tags, this > required a lot of awkward automake conditionals in the Makefile. > > This patch changes the build to look at the build tags in the files. > The new shell script libgo/match.sh does the matching. This required > adjusting a lot of build tags, and removing some files that are never > used. I verified that the exact same sets of files are compiled on > x86_64-pc-linux-gnu. I also tested the build on i386-sun-solaris > (building for both 32-bit and 64-bit). > > Writing match.sh revealed some bugs in the build tag handling that > already exists, in a slightly different form, in the gotest shell > script. This patch fixes those problems as well. > > The old code used automake conditionals to handle systems that were > missing strerror_r and wait4. Rather than deal with those in Go, > those functions are now implemented in runtime/go-nosys.c when > necessary, so the Go code can simply assume that they exist. > > The os testsuite looked for dir_unix.go, which was never built for > gccgo and has now been removed. I changed the testsuite to look for > dir.go instead. > > Note that if you have an existing build directory, you will have to > remove all the .dep files in TARGET/libgo after updating to this > patch. There isn't anything that will force them to update > automatically. > > Bootstrapped on x86_64-pc-linux-gnu and i386-sun-solaris. Ran Go > testsuite on x86_64-pc-linux-gnu. Committed to mainline. > > Ian This appears to break libgo build on s390x: libtool: compile: /home3/andreas/clean/gcc-7.0.0-64-clean-build/./gcc/gccgo -B/home3/andreas/clean/gcc-7.0.0-64-clean-build/./gcc/ -B/home3/andreas/clean/gcc-7.0.0-64-clean-install/s390x-ibm-linux-gnu/bin/ -B/h ome3/andreas/clean/gcc-7.0.0-64-clean-install/s390x-ibm-linux-gnu/lib/ -isystem /home3/andreas/clean/gcc-7.0.0-64-clean-install/s390x-ibm-linux-gnu/include -isystem /home3/andreas/clean/gcc-7.0.0-64-clean-instal l/s390x-ibm-linux-gnu/sys-include -O2 -g -I . -c -fgo-pkgpath=hash/crc32 /home3/andreas/clean/../gcc/libgo/go/hash/crc32/crc32.go /home3/andreas/clean/../gcc/libgo/go/hash/crc32/crc32_generic.go /home3/andreas/c lean/../gcc/libgo/go/hash/crc32/crc32_s390x.go -fPIC -o hash/.libs/crc32.o /home3/andreas/clean/../gcc/libgo/go/hash/crc32/crc32_s390x.go:56:1: error: redefinition of ‘updateCastagnoli’ func updateCastagnoli(crc uint32, p []byte) uint32 { ^ /home3/andreas/clean/../gcc/libgo/go/hash/crc32/crc32_generic.go:12:1: note: previous definition of ‘updateCastagnoli’ was here func updateCastagnoli(crc uint32, p []byte) uint32 { ^ /home3/andreas/clean/../gcc/libgo/go/hash/crc32/crc32_s390x.go:81:1: error: redefinition of ‘updateIEEE’ func updateIEEE(crc uint32, p []byte) uint32 { ^ /home3/andreas/clean/../gcc/libgo/go/hash/crc32/crc32_generic.go:20:1: note: previous definition of ‘updateIEEE’ was here func updateIEEE(crc uint32, p []byte) uint32 { ^ make[4]: *** [hash/crc32.lo] Error 1 make[4]: *** Waiting for unfinished jobs.... Adding more "build ignore"s does fix the build for me. However, I'm wondering why we have to disable the asm tuned files for gccgo? For s390 I really would like to enable them since they make a huge difference. The same is probably also required in ./hash/crc32/crc32_amd64p32.go I could add this as well. Ok to apply? diff --git a/libgo/go/crypto/aes/cbc_s390x.go b/libgo/go/crypto/aes/cbc_s390x.go index 427b30b..8346b5e 100644 --- a/libgo/go/crypto/aes/cbc_s390x.go +++ b/libgo/go/crypto/aes/cbc_s390x.go @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + package aes import ( diff --git a/libgo/go/crypto/aes/ctr_s390x.go b/libgo/go/crypto/aes/ctr_s390x.go index 94dea5c..ae09dba 100644 --- a/libgo/go/crypto/aes/ctr_s390x.go +++ b/libgo/go/crypto/aes/ctr_s390x.go @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + package aes import ( diff --git a/libgo/go/hash/crc32/crc32_s390x.go b/libgo/go/hash/crc32/crc32_s390x.go index 2f20690..b8a5808 100644 --- a/libgo/go/hash/crc32/crc32_s390x.go +++ b/libgo/go/hash/crc32/crc32_s390x.go @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + package crc32 import (