Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp2618448pxf; Sun, 4 Apr 2021 08:01:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzx1eQg2hIF8zp9KBYfvMjuXIiQjFjAorDcg4a6B4o2hZIT6ihMPb0nzieUHSSJjyfSNQb5 X-Received: by 2002:a92:ac0a:: with SMTP id r10mr1197946ilh.45.1617548465045; Sun, 04 Apr 2021 08:01:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617548465; cv=none; d=google.com; s=arc-20160816; b=iMTQZEk5GBjZ/xia5vHOtXJeG/Ijhv2UpB7O7d9zpHXdRlO8Mz0qFivVVuITYAMQbS Ep076Y7+n9Aom1LkLXnIfR6sTmpMrQXi0lmGRCTd1RnsInVPm6PC8uytHId6Cs+FAtVE UrgdLk3MkPOEoKcjCYdg6Aq1/G4+LjKmeLfA6pouo04nvEpP1iw6CaI9LRdYZgGSGagc kiqv7hL19NMTzNu8CDaPGFv/6MaeWT9SghqdN2JV5YOJ+gEhjGyRy3/tsuLDC93k/p2o 4rsvP9YVobNkNdiF9V7R3qLb8ByXXlRrRxrbGehRxeIIGy1HbFIWgpEz4yCIS2IMh4Pi qdMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:reply-to :in-reply-to:references:mime-version:dkim-signature; bh=9FrXMbErno7+UYPolFaJfl1BWKDlG9+WhG9WCIdSW3Y=; b=cniMIs9KNpP7YE5lt6B/pw7hPaGHVKJwp0jENCY4XRgpHJeywGU9ErKoWz5PiXIUdS rb0qDGHxLNW6EQ0Qt0Y3OiIAeq1hxQuo5LehwGMXW4oI+CjXW3iMPDm21mJo7QC6NF0L fBzMfOx7fcfjxz+r6PD4zsEIFhrM/YEUS14S97R/pQuMpYjhQ09nh6y5gyxag8gEpny+ SQaFOv9AMAS3c+d8ZToBDwpJyp+FncT7X7J2j2oFfbl7tQMj6gyjtWxbckFnIlNZ++E9 D5ojf59GnoFha9pmYe84MzbqilzVIJB5NuHrRwzkvl8uireAzfxn18yohVk+3E/dj+k2 RVVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=onvXjgrB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a6si10890321ilj.37.2021.04.04.08.00.35; Sun, 04 Apr 2021 08:01:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=onvXjgrB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230237AbhDDPAO (ORCPT + 99 others); Sun, 4 Apr 2021 11:00:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48230 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229788AbhDDPAN (ORCPT ); Sun, 4 Apr 2021 11:00:13 -0400 Received: from mail-il1-x135.google.com (mail-il1-x135.google.com [IPv6:2607:f8b0:4864:20::135]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D419C061756; Sun, 4 Apr 2021 08:00:09 -0700 (PDT) Received: by mail-il1-x135.google.com with SMTP id f5so4361342ilr.9; Sun, 04 Apr 2021 08:00:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:reply-to:from:date:message-id :subject:to:cc; bh=9FrXMbErno7+UYPolFaJfl1BWKDlG9+WhG9WCIdSW3Y=; b=onvXjgrBqg12q0WD25RWxGBE6z4XpdAN/W674nyzW+tqaZt03LW8VeZBpi9Fg6L+EC P/kadJcTybKoLavNo7fkP8w2fqke1pRvxPu9MQYAxESLZqtuwv2cZJwR6ZUGVI2HiuUW uKxuG7lJDzJ1RCWgTrXGGCk4jTBL1nXPyZ/X7mpsrJVLxsxd43RktbFouwmiN94OlbHQ L0rsl915ydoh1YO74xQR45FlIJoz7rOKgKV1KL1v75iLRayADwmdgNXTQLeHN6zXImZy /M5KzVkEcTkLKvltNfCMwLVlVEHmVgng3jk0rVK/czUdRFkD7L1tnp9HRQsFCbub6XNd GD9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:reply-to :from:date:message-id:subject:to:cc; bh=9FrXMbErno7+UYPolFaJfl1BWKDlG9+WhG9WCIdSW3Y=; b=mplG8fFs3mxuWD17uRf7curWyLXAuhn9k44I4GDbwCvS65XYrDPqtoxXhhCZcIvSrJ bdBUCgLmisATEc9XY2UOAB64Ntuy2J61+HETBqiSW6M3XCQ61NYlCX18rrobBKDhU6/U AgjytXhX+jcq1zoGSmJJrhPKMwRMiBEq1qjunbfdS5XWguw8obqKhd7o5eHhjzyQ6y5F I6qq2QyCm7rlbt8dhq5nD2ut/ePJlu4l7x+uyOOSm62QSANdbuaes6FEA61H0K2n8Gg1 Vv6hzmIUtFG6f5KBwJlbWWi8C06WfERFzD4SplbTHKV0wF59fhECrTIn1S1KUHhRzZfb AeJA== X-Gm-Message-State: AOAM530Od8Nf6X7R8nLNwYXyr3khp2DAZyA8yp9glYG4gaTm+Qzli4On 6iIh/NpjeQN7P7OMny08Ua18vTgySGoo3OIvTd0= X-Received: by 2002:a05:6e02:12cc:: with SMTP id i12mr17423767ilm.10.1617548408261; Sun, 04 Apr 2021 08:00:08 -0700 (PDT) MIME-Version: 1.0 References: <20210403184158.2834387-1-yhs@fb.com> In-Reply-To: <20210403184158.2834387-1-yhs@fb.com> Reply-To: sedat.dilek@gmail.com From: Sedat Dilek Date: Sun, 4 Apr 2021 16:59:33 +0200 Message-ID: Subject: Usage of CXX in tools directory To: Masahiro Yamada , Yonghong Song , Arnaldo Carvalho de Melo , David Blaikie , Bill Wendling , Nick Desaulniers , Nathan Chancellor , Alexei Starovoitov , Peter Zijlstra , Mark Rutland , Alexander Shishkin , Ingo Molnar , Jiri Olsa , Namhyung Kim Cc: dwarves@vger.kernel.org, bpf@vger.kernel.org, kernel-team@fb.com, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, Clang-Built-Linux ML Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [ Please CC me I am not subscribed to all mailing-lists ] [ Please CC some more folks if you like ] Hi, when dealing/experimenting with BPF together with pahole/dwarves and dwarf-v5 and clang-lto I fell over that there is usage of CXX in tools directory. Especially, I wanted to build and run test_progs from BPF selftests. One BPF selftest called "test_cpp" used GNU/g++ (and even /usr/bin/ld) and NOT LLVM/clang++. For details see the linux-bpf/dwarves thread "[PATCH dwarves] dwarf_loader: handle DWARF5 DW_OP_addrx properly" in [1]. Lemme check: $ git grep CXX tools/ tools/build/Build.include:cxx_flags = -Wp,-MD,$(depfile) -Wp,-MT,$@ $(CXXFLAGS) -D"BUILD_STR(s)=\#s" $(CXXFLAGS_$(basetarget).o) $(CXXFLAGS_$(obj)) tools/build/Makefile.build:quiet_cmd_cxx_o_c = CXX $@ tools/build/Makefile.build: cmd_cxx_o_c = $(CXX) $(cxx_flags) -c -o $@ $< tools/build/Makefile.feature: feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CC="$(CC)" CXX="$(CXX)" CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" CXXFLAGS="$(EXTRA_CXXFLAGS) $(FEATURE_CHECK_CXXFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/nu ll 2>/dev/null && echo 1 || echo 0) tools/build/feature/Makefile:__BUILDXX = $(CXX) $(CXXFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.cpp,$(@F)) $(LDFLAGS) ... tools/perf/Makefile.config:USE_CXX = 0 tools/perf/Makefile.config: CXXFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT -I$(shell $(LLVM_CONFIG) --includedir) tools/perf/Makefile.config: $(call detected,CONFIG_CXX) tools/perf/Makefile.config: USE_CXX = 1 tools/perf/Makefile.perf:export srctree OUTPUT RM CC CXX LD AR CFLAGS CXXFLAGS V BISON FLEX AWK tools/perf/Makefile.perf:ifeq ($(USE_CXX), 1) tools/perf/util/Build:perf-$(CONFIG_CXX) += c++/ ... tools/scripts/Makefile.include:$(call allow-override,CXX,$(CROSS_COMPILE)g++) ... tools/testing/selftests/bpf/Makefile:CXX ?= $(CROSS_COMPILE)g++ tools/testing/selftests/bpf/Makefile: $(call msg,CXX,,$@) tools/testing/selftests/bpf/Makefile: $(Q)$(CXX) $(CFLAGS) $^ $(LDLIBS) -o $@ The problem is if you pass LLVM=1 there is no clang(++) assigned to CXX automagically. [2] says: LLVM has substitutes for GNU binutils utilities. Kbuild supports LLVM=1 to enable them. make LLVM=1 They can be enabled individually. The full list of the parameters: make CC=clang LD=ld.lld AR=llvm-ar NM=llvm-nm STRIP=llvm-strip \ OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump READELF=llvm-readelf \ HOSTCC=clang HOSTCXX=clang++ HOSTAR=llvm-ar HOSTLD=ld.lld [ EndOfQuote ] So you need to pass CXX=clang++ manually when playing in tools directory: MAKE="make V=1 MAKE_OPTS="HOSTCC=clang HOSTCXX=clang++ HOSTLD=ld.lld CC=clang CXX=clang++ LD=ld.lld LLVM=1 LLVM_IAS=1" MAKE_OPTS="MAKE_OPTS $PAHOLE=/opt/pahole/bin/pahole" $ LC_ALL=C $MAKE $MAKE_OPTS -C tools/testing/selftests/bpf/ clean $ LC_ALL=C $MAKE $MAKE_OPTS -C tools/testing/selftests/bpf/ Unsure, if tools needs a special treatment in things of CXX or LLVM=1 needs to be enhanced with CCX=clang++. If we have HOSTCXX why not have a CXX in toplevel Makefile? In "tools: Factor Clang, LLC and LLVM utils definitions" (see [3]) I did some factor-ing. For the records: Here Linus Git is my base. Ideas? Thanks. Regards, - Sedat - P.S.: Just a small note: I know there is less usage of CXX code in the linux-kernel. [1] https://lore.kernel.org/bpf/CA+icZUWh6YOkCKG72SndqUbQNwG+iottO4=cPyRRVjaHD2=0qw@mail.gmail.com/T/#m22907f838d2d27be24e8959a53473a62f21cecea [2] https://www.kernel.org/doc/html/latest/kbuild/llvm.html#llvm-utilities [3] https://git.kernel.org/linus/211a741cd3e124bffdc13ee82e7e65f204e53f60