From nobody Tue Sep 16 09:00:39 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 14C50C54EBE for ; Thu, 5 Jan 2023 09:03:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232009AbjAEJDM (ORCPT ); Thu, 5 Jan 2023 04:03:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52734 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231910AbjAEJCd (ORCPT ); Thu, 5 Jan 2023 04:02:33 -0500 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9593250066 for ; Thu, 5 Jan 2023 01:02:32 -0800 (PST) Received: by mail-yb1-xb49.google.com with SMTP id 195-20020a2505cc000000b0071163981d18so36469508ybf.13 for ; Thu, 05 Jan 2023 01:02:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=gVMnA3Yba2vBCG/rrA8tRkVdPMnJ5tlbhWykIgv9gDY=; b=cyUVgkg2LrWNWl0sdLVkr39/f4zMFUDi5twbEV0MjD8DMoZTIXLIJeh+o8WC/FcLfM OOF3VoiMBL/u+++aQU870Rb1fy+avLKjOnXakh+mWWaoJUWJN+ghT2bv+O3nNk4q5gEw HB2mSh8dMXbqWTL9plMEWe+z/gyL4dKQR406hAPac7K2Btu67B2qCP0HPja5AUjx/pPi dzF/2urVtfo/CQxRUrG7NTETNCka/FED1iOA2erccE5ljW7qgbi+sGSFzrFCm5m1cXui UvVhE58brTFs4adT5qGngtBGxG7zX7c+rG04jkGbZqrN1UaYAE7CFcb2KjT+oxMuwM7t 4ngA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=gVMnA3Yba2vBCG/rrA8tRkVdPMnJ5tlbhWykIgv9gDY=; b=cbGirZtkR81aM8KuEWlUqKAw6wGI/LLJTGLgD5Hwh8UrnLxX1w2PNQX9SQkIdj3al9 tGZPAxlTUnGhBkoyIuwlvJU1oNOyCoZxLMoAih2MIaYuiXScQ3S/Loj9mxEYue2baJ6X B4vy0X7F1DEpObAt/XszgzHSxWbHuwiWTOpMZk8xbvC+z+M1wh5P7oKW6mH+iQF0PHrL QEtKaSmOCioTQFPU0AoDlQ8zBrCVoDBKmaPOJ3vjWe0hM2DagBc1j5B0OeZN8KSARb2N P59cQD4I5fIncDShZtzJVofULUTwnibjgvLE/IbqcaLV+wP/gFy6VDJzoGz7pZkDZT/h 2NUg== X-Gm-Message-State: AFqh2kpw3pAc8fwrU/sHsZB1r5O7ZF/aHNdcgsJvmA7zY9CgYdVjiHO/ juBsFIXhQH5xYY2fCThAht+cTaEBxeFd X-Google-Smtp-Source: AMrXdXu8hlr+rsXN67i0o8MgiT5jGdKE+g5eF7FEHXVVm0+3ulRvnaeBhKsam+0eLeUJMnomrNrPo/rz2FVv X-Received: from irogers.svl.corp.google.com ([2620:15c:2d4:203:8775:c864:37e:2f9b]) (user=irogers job=sendgmr) by 2002:a81:6954:0:b0:4b2:fa7c:8836 with SMTP id e81-20020a816954000000b004b2fa7c8836mr910044ywc.195.1672909351913; Thu, 05 Jan 2023 01:02:31 -0800 (PST) Date: Thu, 5 Jan 2023 01:01:55 -0800 In-Reply-To: <20230105090155.357604-1-irogers@google.com> Message-Id: <20230105090155.357604-4-irogers@google.com> Mime-Version: 1.0 References: <20230105090155.357604-1-irogers@google.com> X-Mailer: git-send-email 2.39.0.314.g84b9a713c41-goog Subject: [PATCH v3 3/3] objtool: Alter how HOSTCC is forced From: Ian Rogers To: Josh Poimboeuf , Peter Zijlstra , Nathan Chancellor , Nick Desaulniers , Tom Rix , Masahiro Yamada , Nicolas Schier , linux-kernel@vger.kernel.org, llvm@lists.linux.dev Cc: Stephane Eranian , Andrii Nakryiko , Jiri Olsa , Arnaldo Carvalho de Melo , Namhyung Kim , Ian Rogers Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" HOSTCC is always wanted when building objtool. Setting CC to HOSTCC happens after tools/scripts/Makefile.include is included, meaning flags are set assuming say CC is gcc, but then it can be later set to HOSTCC which may be clang. tools/scripts/Makefile.include is needed for host set up and common macros in objtool's Makefile. Rather than override CC to HOSTCC, just pass CC as HOSTCC to Makefile.build, the libsubcmd builds and the linkage step. This means the Makefiles don't see things like CC changing and tool flag determination, and similar, work properly. To avoid mixing CFLAGS from different compilers just the objtool CFLAGS are determined with the exception of EXTRA_WARNINGS. HOSTCFLAGS is added to these so that command line flags can add to the CFLAGS. Signed-off-by: Ian Rogers Reviewed-by: Nick Desaulniers Reviewed-by: Nicolas Schier Tested-by: Nick Desaulniers --- tools/objtool/Makefile | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile index 61a00b7acae9..49956f4f58b9 100644 --- a/tools/objtool/Makefile +++ b/tools/objtool/Makefile @@ -2,16 +2,12 @@ include ../scripts/Makefile.include include ../scripts/Makefile.arch =20 -# always use the host compiler -AR =3D $(HOSTAR) -CC =3D $(HOSTCC) -LD =3D $(HOSTLD) - ifeq ($(srctree),) srctree :=3D $(patsubst %/,%,$(dir $(CURDIR))) srctree :=3D $(patsubst %/,%,$(dir $(srctree))) endif =20 +MAKE =3D make -S LIBSUBCMD_DIR =3D $(srctree)/tools/lib/subcmd/ ifneq ($(OUTPUT),) LIBSUBCMD_OUTPUT =3D $(abspath $(OUTPUT))/libsubcmd @@ -37,12 +33,19 @@ INCLUDES :=3D -I$(srctree)/tools/include \ -I$(srctree)/tools/objtool/arch/$(SRCARCH)/include \ -I$(LIBSUBCMD_OUTPUT)/include WARNINGS :=3D $(EXTRA_WARNINGS) -Wno-switch-default -Wno-switch-enum -Wno-= packed -Wno-nested-externs -CFLAGS :=3D -Werror $(WARNINGS) $(KBUILD_HOSTCFLAGS) -g $(INCLUDES) $(LI= BELF_FLAGS) -LDFLAGS +=3D $(LIBELF_LIBS) $(LIBSUBCMD) $(KBUILD_HOSTLDFLAGS) +OBJTOOL_CFLAGS :=3D -Werror $(WARNINGS) -g $(INCLUDES) $(LIBELF_FLAGS) $(H= OSTCFLAGS) +OBJTOOL_LDFLAGS :=3D $(LIBELF_LIBS) $(LIBSUBCMD) =20 # Allow old libelf to be used: elfshdr :=3D $(shell echo '$(pound)include ' | $(CC) $(CFLAGS) -= x c -E - | grep elf_getshdr) -CFLAGS +=3D $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED) +OBJTOOL_CFLAGS +=3D $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED) + +# Always want host compilation. +HOST_OVERRIDES :=3D CC=3D"$(HOSTCC)" EXTRA_CFLAGS=3D"$(OBJTOOL_CFLAGS)" \ + LD=3D"$(HOSTLD)" AR=3D"$(HOSTAR)" +BUILD_HOST_OVERRIDES :=3D CC=3D"$(HOSTCC)" CFLAGS=3D"$(OBJTOOL_CFLAGS)" \ + LD=3D"$(HOSTLD)" LDFLAGS=3D"$(OBJTOOL_LDFLAGS)" \ + AR=3D"$(HOSTAR)" =20 AWK =3D awk MKDIR =3D mkdir @@ -65,10 +68,11 @@ include $(srctree)/tools/build/Makefile.include =20 $(OBJTOOL_IN): fixdep FORCE $(Q)$(CONFIG_SHELL) ./sync-check.sh - $(Q)$(MAKE) $(build)=3Dobjtool + $(Q)$(MAKE) $(build)=3Dobjtool $(BUILD_HOST_OVERRIDES) + =20 $(OBJTOOL): $(LIBSUBCMD) $(OBJTOOL_IN) - $(QUIET_LINK)$(CC) $(OBJTOOL_IN) $(LDFLAGS) -o $@ + $(QUIET_LINK)$(HOSTCC) $(OBJTOOL_IN) $(KBUILD_HOSTLDFLAGS) $(OBJTOOL_LDFL= AGS) -o $@ =20 =20 $(LIBSUBCMD_OUTPUT): @@ -77,6 +81,7 @@ $(LIBSUBCMD_OUTPUT): $(LIBSUBCMD): fixdep FORCE $(LIBSUBCMD_OUTPUT) $(Q)$(MAKE) -C $(LIBSUBCMD_DIR) O=3D$(LIBSUBCMD_OUTPUT) \ DESTDIR=3D$(LIBSUBCMD_DESTDIR) prefix=3D subdir=3D \ + $(HOST_OVERRIDES) \ $@ install_headers =20 $(LIBSUBCMD)-clean: --=20 2.39.0.314.g84b9a713c41-goog