From nobody Fri Feb 27 21:24:13 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fN1YC5SCXz6TJ1b; Fri, 27 Feb 2026 21:24:15 +0000 (UTC) (envelope-from jhb@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 "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fN1YC4tW5z3gQf; Fri, 27 Feb 2026 21:24:15 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772227455; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rT+dRurGsTQaonuV+2cdjMiUAKADmWy3AW0XQ5icPsw=; b=vFrduwWSjU6dxtjpgCdG5ITWGuWyEz3YngOrbhMbP+elbrQz9b8mwo8WmISJv4tXTEjOIX YY3nLPkARM2BfX9OvnCMWbcyCG/e8e9g5F8+dUo8gra2ZTZRNCVrwaORSzgxegljFaYwng PuY2PZsqmaB7e6rrx/vKbaCQbd+j/JegAIkzkKhR30YudtnnWIZljODXIJ0nPFnfno7mif Fr7AFDBJb5anje/LirRzsB9TmtnyFn5Gmzoq1xfGkCC57YQQDbpWL/NDwnSc/iLncTzW3n b9HIRc6j6DjZVWPhkHs2LupIQxdwe2NukSW0mpN8WyiWxfp58Z8AGsiPg/KsNA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1772227455; a=rsa-sha256; cv=none; b=i+R7ZGfQcy2ToZg8ELAxdwfnFzVpNAH8jB+Qc233syA+yrN/D4ni8uKPh6DvdR7E2nZBt9 5pzQtJp4DwC/V3fUzo3/65A7Z1vgq8SEtWtGhmPVQIoV4TLgjTfLewe7LG5lDY+7pfCirB f7sIwtwv6WlD2gSmzfiuPodkeEHJUN4v5IqFJBF5b8p8h3djRX8Zf3l0P1z+HVKK3bfQ0R bNRN0ADBCgjBYiw5PeTT+cJ+W6ks39xx4BI9hxmhMPo7nCPId6+tyGgb+IB7oktBDkD53i T2Ijdt/1jbgLHUps040Nn8FweuunwYCqvc5aB3Tab1uSLuQ8cmx0PP5fFiB6rg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1772227455; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rT+dRurGsTQaonuV+2cdjMiUAKADmWy3AW0XQ5icPsw=; b=TApskIc25K5eEh/J5i/khPZsZbrcPSbZCL2O0uyBVzcrxoZBLPDx02epcXYYDEYSr31/JB rPH4PYCQmROWDq21kEia349IjbptqN6lXycfY/8V7DWWTWvl3X9khlfeYaUOlSRpZ+qbad QIDGxHYCWReK7hx+sLzwCPHgvxFiNIhrgk977RGVfugGJ4F08kAXaTxvDkwb5XynUQ+vJ4 0gW9gMz2JHOz0Dggu9szhR8NEfcUuo8KFOo+z2ZGqGaKoeQ6fkqRK2cByuvlU6lttK9NCI OhnNlYbWlDAZe7goD2AsHKOZrw2/CaYjvWFlVcL/gENoLuYjIMRZtJewI4Hy0A== Received: from [IPV6:2601:5c0:4202:5670:f561:a422:8150:b740] (unknown [IPv6:2601:5c0:4202:5670:f561:a422:8150:b740]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 4fN1YC228jzLpZ; Fri, 27 Feb 2026 21:24:15 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: Date: Fri, 27 Feb 2026 16:24:13 -0500 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: ee73475119ff - main - llvm: Link private LLVM libraries against compiler_rt for aarch64 Content-Language: en-US To: Mark Millard , Jessica Clarke Cc: "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" , Andrew Turner References: <698a0b1e.1d294.40e36519@gitrepo.freebsd.org> <23acebb1-f71c-46e6-9eea-3fa44316335d@FreeBSD.org> <720e4cb6-fd13-4686-93d9-ef095ad611c2@yahoo.com> From: John Baldwin In-Reply-To: <720e4cb6-fd13-4686-93d9-ef095ad611c2@yahoo.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2/27/26 15:55, Mark Millard wrote: > On 2/27/26 09:27, John Baldwin wrote: >> On 2/9/26 11:47, John Baldwin wrote: >>> On 2/9/26 11:40, Jessica Clarke wrote: >>>> On 9 Feb 2026, at 16:28, John Baldwin wrote: >>>>> >>>>> The branch main has been updated by jhb: >>>>> >>>>> URL: https://cgit.FreeBSD.org/src/commit/? >>>>> id=ee73475119ff7aa98bd11828625d524f6ab87f06 >>>>> >>>>> commit ee73475119ff7aa98bd11828625d524f6ab87f06 >>>>> Author:     John Baldwin >>>>> AuthorDate: 2026-02-09 16:26:52 +0000 >>>>> Commit:     John Baldwin >>>>> CommitDate: 2026-02-09 16:26:52 +0000 >>>>> >>>>>      llvm: Link private LLVM libraries against compiler_rt for aarch64 >>>>> >>>>>      This is required for GCC which uses libcalls for outlined atomics. >>>> >>>> This doesn’t seem right, they’re provided by libgcc.a, so why aren’t >>>> they being pulled in? libcompiler_rt.a doesn’t even have the symbols. >>> >>> My guess is that we don't link libraries against libgcc by default, only >>> binaries (maybe this is a GCC feature/bug vs clang)?  I have another >>> review >>> open for a couple of google test libraries which similarly fail to link. >> >> So after some more digging (along with Jessica), it seems that GCC only >> uses -lgcc_s (and not -lgcc) for C++ (but not C) on both Linux and FreeBSD. >> clang's FreeBSD toolchain driver is supposed to mimic GCC but doesn't, it >> applies the C rules even for C++ linking, so clang is implicitly adding >> both -lgcc and -lgcc_s for C++. >> >> On Linux, libgcc.so is a linker script that includes both the dynamic >> library and -lgcc which is how the static libgcc (including outline atomics >> for aarch64) is effectively linked into C++ shared libraries on Linux. >> (Note: libgcc.so is a linker script on seemingly all arches on Linux, not >> just aarch64) >> >> So I think we have a couple of choices here.  I can patch the devel/ >> freebsd-gccN >> ports to stop passing -shared-libgcc to cc1plus which will cause GCC to >> follow >> the same rules as clang on FreeBSD (passing -lgcc -as-needed -lgcc_s - >> no-as-needed >> instead of -lgcc_s), or we could change libgcc.so to be a linker script >> to match >> Linux (and then eventually fix the FreeBSD driver in clang to only pass >> -lgcc_s for C++ linking) (I think Andrew already has a review to make >> libgcc.so >> a linker script). >> >> I can see arguments both ways.  Using a linker script seems kind of dumb >> given >> all the hoops GCC goes to internally to decide whether or not to link only >> shared or static or both.  (Esp given libgcc is in theory part of the >> compiler, >> so the compiler should know that libgcc_s should depend on libgcc and be >> able >> to encode that in the default drivers.)  OTOH, the linker script >> approach would >> mean we would more closely align with Linux.  I think Jess favors >> patching GCC. >> Does anyone else have any strong opinions? >> > > Is the question limited to devel/freebsd-gcc* ? Or does it span > lang/gcc* use as well? We don't really support building the base system with lang/gcc* (it's why devel/freebsd-gcc* exist) as the base system builds require various changes like kernel printf support, defaulting to libc++, etc. -- John Baldwin