From nobody Sat Dec 25 11:56:29 2021 X-Original-To: dev-commits-src-all@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 421B018F41B4; Sat, 25 Dec 2021 11:56:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (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 "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4JLj7y6Nyfz4lfL; Sat, 25 Dec 2021 11:56:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B6E3A16E36; Sat, 25 Dec 2021 11:56:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 1BPBuTcC007577; Sat, 25 Dec 2021 11:56:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1BPBuTPh007576; Sat, 25 Dec 2021 11:56:29 GMT (envelope-from git) Date: Sat, 25 Dec 2021 11:56:29 GMT Message-Id: <202112251156.1BPBuTPh007576@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dimitry Andric Subject: git: 367dea5f853f - stable/12 - Apply fix for clang crashing on invalid -Wa,-march= values List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 367dea5f853f1193fd1cc722f85e132f323c22db Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1640433392; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sooVxmmunlL682cltEXvuzT4H21oBJ4AweYzwA/jk8U=; b=DL7MBWHBZOeQ/2f2Z30gUJDmhjVrjdNEaLMA97e76x1GQ4sAPP3ahZ6MBLUrYQNfyHDY0N 0P+g7t/nPujsUYUgUB3+OOpurXZNTpxk6Kddm+A3JomWdmTOhjqD8a0jwsjbn6C3rwAxgL NLofrvdbUSF4GZVsJ/z87o1/qu4QgyHjr7TRFIBlWYELWI4PGo0zkBiybWuKHA9a7Z4GR4 fhLYOEJoImJshXBuEGz2nxAITKhgtW5HvFdImuB/2+IxqO7pmCehy2qmZI6f0pe408KkPo 2UAJLcizOmJVqFyvUkJcsWQY9KDBhZdmo6sJbGJ9czlIWDeQbtIrEm1tlVJPyw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1640433392; a=rsa-sha256; cv=none; b=byMqEu4Hpm96vO3/5VFwg8lh+hvhfpW39EOt2A+FXyvGRvQwjFuEGVgsOBCdm6ALcoqe94 5wkWNPIXtWd+Pp+q/pHazrFqnipOa9OAMTNRSMgoDL19/NoIbfm8/gyqnKmfVCc5Eqmlpg DWj49LxJOVDgWUKW2S95boUZvXNlFcwr1ien4h7lY2fFLnGdIJwVCEu10+Hui9Zb3BzQ2s fkcoDVV/cjzqHLItNSaeaCuHcw6ckF1paaZNRuMDd82dhZWJMBucJKaRGpFckUtBchXpmt WSia8zJb8wsNgr92/ua2l0foAK/axibVyAjcLpFwL4s11Zc+esjbnDz8KHHOjA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=367dea5f853f1193fd1cc722f85e132f323c22db commit 367dea5f853f1193fd1cc722f85e132f323c22db Author: Dimitry Andric AuthorDate: 2021-12-05 17:54:13 +0000 Commit: Dimitry Andric CommitDate: 2021-12-25 11:51:42 +0000 Apply fix for clang crashing on invalid -Wa,-march= values Merge commit df08b2fe8b35 from llvm git (by Dimitry Andric): [AArch64] Avoid crashing on invalid -Wa,-march= values As reported in https://bugs.freebsd.org/260078, the gnutls Makefiles pass -Wa,-march=all to compile a number of assembly files. Clang does not support this -march value, but because of a mistake in handling the arguments, an unitialized Arg pointer is dereferenced, which can cause a segfault. Work around this by adding a check if the local WaMArch variable is initialized, and if so, using its value in the diagnostic message. Reviewed By: tschuett Differential Revision: https://reviews.llvm.org/D114677 PR: 260078 Reported by: bz MFC after: 3 days (cherry picked from commit a9cd5c30d64e213c537c76c2a261f7a222f348bf) --- .../clang/lib/Driver/ToolChains/Arch/AArch64.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/AArch64.cpp index ed8c7e94b013..0e354a49b59a 100644 --- a/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/AArch64.cpp +++ b/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/AArch64.cpp @@ -191,7 +191,7 @@ void aarch64::getAArch64TargetFeatures(const Driver &D, bool success = true; // Enable NEON by default. Features.push_back("+neon"); - llvm::StringRef WaMArch = ""; + llvm::StringRef WaMArch; if (ForAS) for (const auto *A : Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler)) @@ -201,7 +201,7 @@ void aarch64::getAArch64TargetFeatures(const Driver &D, // Call getAArch64ArchFeaturesFromMarch only if "-Wa,-march=" or // "-Xassembler -march" is detected. Otherwise it may return false // and causes Clang to error out. - if (WaMArch.size()) + if (!WaMArch.empty()) success = getAArch64ArchFeaturesFromMarch(D, WaMArch, Args, Features); else if ((A = Args.getLastArg(options::OPT_march_EQ))) success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, Features); @@ -222,8 +222,15 @@ void aarch64::getAArch64TargetFeatures(const Driver &D, success = getAArch64MicroArchFeaturesFromMcpu( D, getAArch64TargetCPU(Args, Triple, A), Args, Features); - if (!success) - D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args); + if (!success) { + auto Diag = D.Diag(diag::err_drv_clang_unsupported); + // If "-Wa,-march=" is used, 'WaMArch' will contain the argument's value, + // while 'A' is uninitialized. Only dereference 'A' in the other case. + if (!WaMArch.empty()) + Diag << "-march=" + WaMArch.str(); + else + Diag << A->getAsString(Args); + } if (Args.getLastArg(options::OPT_mgeneral_regs_only)) { Features.push_back("-fp-armv8");