From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.hosts.co.uk (smtp.hosts.co.uk [85.233.160.19]) by sourceware.org (Postfix) with ESMTPS id 2C19538485A3 for ; Sat, 11 Jun 2022 19:23:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2C19538485A3 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=pushface.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=pushface.org Received: from host-92-3-189-184.as13285.net ([92.3.189.184] helo=smtpclient.apple) by smtp.hosts.co.uk with esmtpsa (TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim) (envelope-from ) id 1o06iB-0003B2-Ea; Sat, 11 Jun 2022 20:23:56 +0100 From: Simon Wright Message-Id: Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Subject: Re: [PATCH] Fix PR target/104871 (macosx-version-min wrong for macOS >= Big Sur (darwin20)) Date: Sat, 11 Jun 2022 20:23:54 +0100 In-Reply-To: <4DDF0FC0-A5C2-42F0-B0A8-7C8D2DC06784@sandoe.co.uk> Cc: GCC Patches To: Iain Sandoe References: <4DDF0FC0-A5C2-42F0-B0A8-7C8D2DC06784@sandoe.co.uk> X-Mailer: Apple Mail (2.3696.100.31) X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00, HTML_MESSAGE, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jun 2022 19:23:59 -0000 On 11 Jun 2022, at 11:37, Iain Sandoe wrote: >=20 > Hi Simon, >=20 > thanks for the patch. >=20 >> On 11 Jun 2022, at 10:17, Simon Wright wrote: >>=20 >> (resent with correct address for Iain) >>=20 >> This is the same sort of problem as in PR80204: at present, GCC 11 & = 12 assume that if the=20 >> OS version is >=3D 20, the compiler should see = --mmacosx-version-min=3D{major - 9}.{minor -1}.0,=20 >> e.g. for OS version 21.3.0 that would be 12.2.0 (the linker sees = -macosx-version-min, same=20 >> arguments). >>=20 >> However, the native compiler clang treats 21.3.0 as 12.0.0: the = compiler sees >> -triple x86_64-apple-macosx12.0.0 >> and the linker sees >> -platform_version macos 12.0.0=20 >> the result of which is that linking an object file built with clang = and one built with gcc gives e.g. >>=20 >> ld: warning: object file (null.o) was built for newer macOS version = (12.2) than being linked (12.0) >>=20 >> I propose the following patch, which works fine for me (darwin = 21.3.0). >=20 > this LGTM - just need to sort out a couple of nits and an admin point. >=20 > FWIW; the following are honoured in preserving the minor version (so = we still have scope for > mismatches if some objects are built this way and others picking up = the kernel version) .. >=20 > clang -target x86_64-apple-macosx11.3 =E2=80=A6 > clang -mmacosx-version-min=3D11.3 =E2=80=A6 > MACOSX_DEPLOYMENT_TARGET=3D11.3 clang =E2=80=A6 (although this seems = on at least one version > of xcodem to pass 12.3 to the linker.. hmmm). Something on the lines of "the native compiler clang treats 21.3.0 as = 12.0.0 (unless overridden by e.g.=20 MACOSX_DEPLOYMENT_TARGET=3D11.3 )"? I did see in the otool -l report on a gcc 12.1.0 executable generated as = above (Darwin 21.5.0) cmd LC_BUILD_VERSION cmdsize 32 platform 1 minos 11.3 sdk 10.17 =E2=80=94 don=E2=80=99t know where the 10.17 comes from, still there = even without MACOSX_DEPLOYMENT_TARGET. The SDK was Xcode 13.4.1. I also have CLT 13.4.0.0.1.1651278267. clang = tells ld=20 "-platform_version macos 11.3.0 12.3", gcc just says = "-macosx_version_min 11.3". > I guess you do not have commit access?=20 > if you do not have an FSF assignment for copyright, are you OK to sign = this off using the DCO? >=20 > https://gcc.gnu.org/dco.html No commit access, but FSF assignment RT:1016382. Do I need to say this = in the patch email somewhere? > for furture reference, please check that patches conform to GCC coding = style (this one has some > whitespace glitches) I don=E2=80=99t see the whitespace glitches? (I have missed a period = after ld in the second comment) >=20 > thanks, > Iain >=20 >=20 >> gcc/ChangeLog: >> =09 >> 2022-06-02 Simon Wright > >> =09 >> PR target/104871 >> * config/darwin-driver.cc = (darwin_find_version_from_kernel): If the OS version is >> 20 (macOS 11) or greater, report the minor version and the patch = level as 0 >> to match Apple clang=E2=80=99s behaviour. >>=20 >>