Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp369623pxf; Wed, 7 Apr 2021 01:17:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzGNO0NRoCLTKT3k3dXZzOGBpLzfw9XAlyiMyHUM1NF1Fh4rXU8kls9jS6jlrz0kVt8Dstc X-Received: by 2002:a6b:8fc5:: with SMTP id r188mr1599980iod.207.1617783430808; Wed, 07 Apr 2021 01:17:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617783430; cv=none; d=google.com; s=arc-20160816; b=dcEocGHkhQB47VAHs1ZQjMM+8n8dEMhCs71rH53RlwUQ10iBLkUsyokfLmVAI4kQqc m/wDMDcziR3X3TDGr9u6vYkAN14zgTk7/bYhZV6JgLIa5waCqwJm6Erjog8Qf4xKBHb2 4IZyx0YapcwMOcKvPdlWML8jd/i4utKx9AtgQHfyce0RrC3Q6SXm97J6PY+XxEf+0GMz KduSeKP+gMxg8uk9wy/l9I7Ut6yoTM24EuLQQDKIbFP3T/+PRf5ldzurCbU817Nqin/P cq2H721ZwSwbCYJAsGwzkVNdx9akJmazUga5udCEV5fhPjRTimfZOOgFZhKr7CfHl7FT 4dVw== 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:in-reply-to :references:mime-version:dkim-signature; bh=HQMr+myNry7kMYJRVZWeSVgVa7oM6pbfeSZSl/6u29k=; b=YtdUJMuUyONMbnEnVDWTqmcmmevv3PHUhsGSVs8IG7+hcGDQQdD+zz9CFwkUvQSjxx R8XfCDgpjKVkIEafhwSLs7Nf6cJ1yo8rifZl23gPsVf0kHuA4DwyIHpO7NZRs6wzW7Ls J1eGgArqHpyAQYkK4kE4MBgrYmyv4PP2eumkZYDlben1Dh97Ib2kgYs8GRi/8HGE+g8y u8+rvULUWj7AIXZDqZQTPZNJKpHTfX5fBrN561F/z30thBzA31Dy8hQ7nKTI/6kVb0Tu N9a7FizxudSMAJL2Ftj+qNwP9s/i/iKswDN8dUmIAswOcelcK/r0Au/f/GTwt1GB862X Nmuw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="Pejc/BsA"; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p12si8883156ios.6.2021.04.07.01.16.55; Wed, 07 Apr 2021 01:17:10 -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=@google.com header.s=20161025 header.b="Pejc/BsA"; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238387AbhDFSkw (ORCPT + 99 others); Tue, 6 Apr 2021 14:40:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42054 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244974AbhDFSja (ORCPT ); Tue, 6 Apr 2021 14:39:30 -0400 Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com [IPv6:2a00:1450:4864:20::132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 62692C06175F for ; Tue, 6 Apr 2021 11:39:22 -0700 (PDT) Received: by mail-lf1-x132.google.com with SMTP id 12so24191865lfq.13 for ; Tue, 06 Apr 2021 11:39:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=HQMr+myNry7kMYJRVZWeSVgVa7oM6pbfeSZSl/6u29k=; b=Pejc/BsA8L+TrZPdOwGHEPycuL6xNz5a8xRww8TuUSCgKj81lbNaCMvZ5AezmAQOo3 iHffyxnvTmFH7xH1zeco1pel6rsL9/SLE7+vYfV8Q2byaIXSP/WyDIdz4/JhkoV6E8ao C196PK+sW2SGOEDgD4CihqKsl+i2l6NvINN+hzneYJZhSlabo9suuKlOcZ/teKY+epXk kIrWCtpa0jSvxVILeR85ZnCyHpvG4AZhXKnFjw+GO3gN/C1spLIA7WFl6kUWAMxToRRh SaeHhHZntayiEUo9dRoaT4nPrF2Hy/fyJdSa6aJCTo3TUuTtNphN9MjO2NCNY3GDLRf8 vZDw== 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:from:date :message-id:subject:to:cc; bh=HQMr+myNry7kMYJRVZWeSVgVa7oM6pbfeSZSl/6u29k=; b=uCGDNQJVVVzC0CQS7XBePIhU6sFOqlGbCaRFWayEyhwrbg50SwLjgmbZTld7RYcvRI pJncMwy5iw97uw1FwfRWQYrNStBCJoagxsG5EpL0Y+6UQn5dg5k8sJZ58Vk79n6WnC1h 3lbFtGQwa/6/k30GoaKvSLaahcUyPSAqdWyAL136+IPvRkU0yJAz4dUZbqy5NLBVJWz8 HbFGWSQfR2X6Do48mY/XIlgNB2FnDbR+STzSRQ6fKHP2Q1JEfHpBc3Ou/mNYlYr+Wupx H5V3kwYoT5+RO0IqfPRaLr9Yf6DMcq3Kc61ho66iDE/c/eTtxf+ONzAyUNLz5rAG8UKz pj0w== X-Gm-Message-State: AOAM532L7VhXaZUW50DR4g70VADmJ0vggkhVyTv3wyk8tGXBYuYr2xMT 7rl8EQLbft0qS7qn0TJ4aXFu6IZZZJf3KXzgpiwe6w== X-Received: by 2002:a19:8c19:: with SMTP id o25mr22129544lfd.547.1617734360307; Tue, 06 Apr 2021 11:39:20 -0700 (PDT) MIME-Version: 1.0 References: <20210403184158.2834387-1-yhs@fb.com> In-Reply-To: From: Nick Desaulniers Date: Tue, 6 Apr 2021 11:39:09 -0700 Message-ID: Subject: Re: Usage of CXX in tools directory To: Sedat Dilek Cc: Masahiro Yamada , Yonghong Song , Arnaldo Carvalho de Melo , David Blaikie , Bill Wendling , Nathan Chancellor , Alexei Starovoitov , Peter Zijlstra , Mark Rutland , Alexander Shishkin , Ingo Molnar , Jiri Olsa , Namhyung Kim , dwarves@vger.kernel.org, bpf , kernel-team@fb.com, Linux Kbuild mailing list , LKML , "maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)" , Clang-Built-Linux ML Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Apr 4, 2021 at 8:00 AM Sedat Dilek wrote: > > [ 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: Yes, CXX is not set by LLVM=1 in the top level Makefile. CXX is not exported by the top level Makefile. I suspect that tools/scripts/Mafefile.include (and possible testing/selftests/bpf/Makefile) needs to check for LLVM=1 and set CXX=clang++ explicitly. > > 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 -- Thanks, ~Nick Desaulniers