Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Nov 2020 11:57:45 +0100
From:      "Kristof Provost" <kp@FreeBSD.org>
To:        freebsd-riscv@freebsd.org, toolchain@freebsd.org
Subject:   devel/glib20 build issue
Message-ID:  <54177870-E411-4DF1-901E-94FE7E5F553F@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
Hi,

While trying to build assorted ports on RISC-V I found that devel/glib20 
doesn’t build.
It turns out to be due to a missing __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 
define. That define is implicitly set by the toolchain. Or, at least, it 
is on other platforms (ARM, MIPS, x86, …), but not on RISC-V.

That’s likely just been forgotten. The following toolchain patch fixes 
that for me:

	diff --git a/contrib/llvm-project/clang/lib/Basic/Targets/RISCV.cpp 
b/contrib/llvm-project/clang/lib/Basic/Targets/RISCV.cpp
	index 4ba703c8dd1..73f1b5bc446 100644
	--- a/contrib/llvm-project/clang/lib/Basic/Targets/RISCV.cpp
	+++ b/contrib/llvm-project/clang/lib/Basic/Targets/RISCV.cpp
	@@ -115,8 +115,14 @@ void RISCVTargetInfo::getTargetDefines(const 
LangOptions &Opts,
	     Builder.defineMacro("__riscv_muldiv");
	   }

	-  if (HasA)
	+  if (HasA) {
	     Builder.defineMacro("__riscv_atomic");
	+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1");
	+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");
	+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
	+    if (Is64Bit)
	+           Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
	+  }

	   if (HasF || HasD) {
	     Builder.defineMacro("__riscv_flen", HasD ? "64" : "32");

Best regards,
Kristof
From owner-freebsd-riscv@freebsd.org  Thu Nov 19 12:38:24 2020
Return-Path: <owner-freebsd-riscv@freebsd.org>
Delivered-To: freebsd-riscv@mailman.nyi.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.nyi.freebsd.org (Postfix) with ESMTP id 327B646AC43;
 Thu, 19 Nov 2020 12:38:24 +0000 (UTC) (envelope-from kp@FreeBSD.org)
Received: from smtp.freebsd.org (smtp.freebsd.org
 [IPv6:2610:1c1:1:606c::24b:4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256
 client-signature RSA-PSS (4096 bits) client-digest SHA256)
 (Client CN "smtp.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 4CcK3N13VPz4d97;
 Thu, 19 Nov 2020 12:38:24 +0000 (UTC) (envelope-from kp@FreeBSD.org)
Received: from venus.codepro.be (venus.codepro.be [5.9.86.228])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mx1.codepro.be", Issuer "Let's Encrypt Authority X3" (verified OK))
 (Authenticated sender: kp)
 by smtp.freebsd.org (Postfix) with ESMTPSA id DF1AD366E;
 Thu, 19 Nov 2020 12:38:23 +0000 (UTC) (envelope-from kp@FreeBSD.org)
Received: by venus.codepro.be (Postfix, authenticated sender kp) id AB5E247EFA;
 Thu, 19 Nov 2020 13:38:20 +0100 (CET)
From: "Kristof Provost" <kp@FreeBSD.org>
To: "Dimitry Andric" <dim@FreeBSD.org>
Cc: freebsd-riscv@freebsd.org, toolchain@freebsd.org
Subject: Re: devel/glib20 build issue
Date: Thu, 19 Nov 2020 13:38:20 +0100
X-Mailer: MailMate (1.13.2r5673)
Message-ID: <7A8DF954-E8B9-4623-85F1-AF49C1A7059D@FreeBSD.org>
In-Reply-To: <3BC510E6-F7FC-4341-B715-66472F3640BF@FreeBSD.org>
References: <54177870-E411-4DF1-901E-94FE7E5F553F@FreeBSD.org>
 <3BC510E6-F7FC-4341-B715-66472F3640BF@FreeBSD.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 8bit
X-BeenThere: freebsd-riscv@freebsd.org
X-Mailman-Version: 2.1.34
Precedence: list
List-Id: FreeBSD on the RISC-V instruction set architecture
 <freebsd-riscv.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/freebsd-riscv>,
 <mailto:freebsd-riscv-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/freebsd-riscv/>;
List-Post: <mailto:freebsd-riscv@freebsd.org>
List-Help: <mailto:freebsd-riscv-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/freebsd-riscv>,
 <mailto:freebsd-riscv-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 19 Nov 2020 12:38:24 -0000

On 19 Nov 2020, at 11:59, Dimitry Andric wrote:
> On 19 Nov 2020, at 11:57, Kristof Provost <kp@freebsd.org> wrote:
>>
>> While trying to build assorted ports on RISC-V I found that 
>> devel/glib20 doesn’t build.
>> It turns out to be due to a missing 
>> __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 define. That define is implicitly 
>> set by the toolchain. Or, at least, it is on other platforms (ARM, 
>> MIPS, x86, …), but not on RISC-V.
>>
>> That’s likely just been forgotten. The following toolchain patch 
>> fixes that for me:
>>
>> 	diff --git a/contrib/llvm-project/clang/lib/Basic/Targets/RISCV.cpp 
>> b/contrib/llvm-project/clang/lib/Basic/Targets/RISCV.cpp
>> 	index 4ba703c8dd1..73f1b5bc446 100644
>> 	--- a/contrib/llvm-project/clang/lib/Basic/Targets/RISCV.cpp
>> 	+++ b/contrib/llvm-project/clang/lib/Basic/Targets/RISCV.cpp
>> 	@@ -115,8 +115,14 @@ void RISCVTargetInfo::getTargetDefines(const 
>> LangOptions &Opts,
>> 	     Builder.defineMacro("__riscv_muldiv");
>> 	   }
>>
>> 	-  if (HasA)
>> 	+  if (HasA) {
>> 	     Builder.defineMacro("__riscv_atomic");
>> 	+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1");
>> 	+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");
>> 	+    Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
>> 	+    if (Is64Bit)
>> 	+           
>> Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
>> 	+  }
>>
>> 	   if (HasF || HasD) {
>> 	     Builder.defineMacro("__riscv_flen", HasD ? "64" : "32");
>
> Hi Kristof,
>
> Can you please submit this upstream? We already have way too many 
> gratuitous RISC-V differences that haven't been upstreamed.
>
https://reviews.llvm.org/D91784

Best regards,
Kristof



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?54177870-E411-4DF1-901E-94FE7E5F553F>