All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yonghong Song <yhs@fb.com>
To: <sedat.dilek@gmail.com>
Cc: <bpf@vger.kernel.org>, Andrii Nakryiko <andrii@kernel.org>,
	Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>,
	<kernel-team@fb.com>, Nick Desaulniers <ndesaulniers@google.com>
Subject: Re: [PATCH bpf-next 3/5] selftests/bpf: fix test_cpp compilation failure with clang
Date: Mon, 12 Apr 2021 07:15:40 -0700	[thread overview]
Message-ID: <1b52c9f6-cf2e-f7f4-3ce6-e7acd449884e@fb.com> (raw)
In-Reply-To: <CA+icZUWYNFpL+ueU3i2+1N=C1s51BgRv0D1kusfhzZsYscMTUA@mail.gmail.com>



On 4/11/21 11:06 PM, Sedat Dilek wrote:
> On Mon, Apr 12, 2021 at 7:42 AM Yonghong Song <yhs@fb.com> wrote:
>>
>>
>>
>> On 4/11/21 9:47 PM, Sedat Dilek wrote:
>>> On Sun, Apr 11, 2021 at 9:08 PM Yonghong Song <yhs@fb.com> wrote:
>>> [ ... ]
>>>>> BTW, did you check (llvm-)objdump output?
>>>>>
>>>>> $ /opt/llvm-toolchain/bin/llvm-objdump-12 -Dr test_cpp | grep core_extern
>>>>
>>>> This is what I got with g++ compiled test_cpp:
>>>>
>>>> $ llvm-objdump -Dr test_cpp | grep core_extern
>>>>      406a80: e8 5b 01 00 00                callq   0x406be0
>>>> <_ZL25test_core_extern__destroyP16test_core_extern>
>>>>      406ab9: e8 22 01 00 00                callq   0x406be0
>>>> <_ZL25test_core_extern__destroyP16test_core_extern>
>>>> 0000000000406be0 <_ZL25test_core_extern__destroyP16test_core_extern>:
>>>>      406be3: 74 1a                         je      0x406bff
>>>> <_ZL25test_core_extern__destroyP16test_core_extern+0x1f>
>>>>      406bef: 74 05                         je      0x406bf6
>>>> <_ZL25test_core_extern__destroyP16test_core_extern+0x16>
>>>>
>>>
>>> What is the output when compiling with clang++ in your bpf-next environment?
>>
>> $ llvm-objdump -Dr test_cpp | grep core_extern
>> $
>>
>> So looks like all test_core_extern_*() functions are inlined.
>> This can be confirmed by looking at assembly code.
>> while for gcc, there is still the call to
>>     _ZL25test_core_extern__destroyP16test_core_extern
>> which is
>>     test_core_extern__destroy(test_core_extern*)
>>
>> This is just a difference between compiler optimizations
>> between gcc and clang. We don't need to worry about this.
>>
> 
> ( My previous comment was from my samrtphone - so I started into my desktop. )
> 
> Thanks for your analysis and hint about inlining.
> 
> My inbox is full with that different handling of inlining "GCC vs. LLVM/Clang".
> 
> When I recall correctly and I have not to care about the inlining
> optimization of clang++, then we can drop
> "$(OUTPUT)/test_core_extern.skel.h" from the BPF selftests Makefile:
> 
> [ tools/testing/selftests/bpf/Makefile ]
> 
> # Make sure we are able to include and link libbpf against c++.
> $(OUTPUT)/test_cpp: test_cpp.cpp $(OUTPUT)/test_core_extern.skel.h $(BPFOBJ)
> $(call msg,CXX,,$@)
> $(Q)$(CXX) $(CFLAGS) test_cpp.cpp $(BPFOBJ) $(LDLIBS) -o $@
> 
> Note: This is with your patchset applied against Linus Git
> 
> As we have the include here:
> 
> [ tools/testing/selftests/bpf/test_cpp.cpp ]
> 
> /* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
> #include <iostream>
> #include <bpf/libbpf.h>
> #include <bpf/bpf.h>
> #include <bpf/btf.h>
> #include "test_core_extern.skel.h"
> ...
> 
> With and without keeping "test_core_extern.skel.h" I got the same
> output with g++ and llvm-objdump.
> Compiling with clang++ did not show that "CPP-file and C-header"
> build-error when dropping "test_core_extern.skel.h" from the Makefile.

Thanks for testing. Great to see all g++/clang++ compilations passed!

> 
> As said here all my testings with Linus Git not bpf-next.
> 
> Thanks for your precious time!
> 
> - Sedat -
> 

  reply	other threads:[~2021-04-12 14:15 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-10 16:49 [PATCH bpf-next 0/5] support build selftests/bpf with clang Yonghong Song
2021-04-10 16:49 ` [PATCH bpf-next 1/5] selftests: set CC to clang in lib.mk if LLVM is set Yonghong Song
2021-04-11 10:22   ` Sedat Dilek
2021-04-11 16:51     ` Yonghong Song
2021-04-11 17:10       ` Sedat Dilek
2021-04-10 16:49 ` [PATCH bpf-next 2/5] tools: allow proper CC/CXX/... override with LLVM=1 in Makefile.include Yonghong Song
2021-04-11 10:24   ` Sedat Dilek
2021-04-11 16:52     ` Yonghong Song
2021-04-10 16:49 ` [PATCH bpf-next 3/5] selftests/bpf: fix test_cpp compilation failure with clang Yonghong Song
2021-04-11 10:47   ` Sedat Dilek
2021-04-11 17:20     ` Yonghong Song
2021-04-11 17:31       ` Sedat Dilek
2021-04-11 19:08         ` Yonghong Song
2021-04-12  4:47           ` Sedat Dilek
2021-04-12  5:42             ` Yonghong Song
2021-04-12  6:06               ` Sedat Dilek
2021-04-12 14:15                 ` Yonghong Song [this message]
2021-04-13  4:32   ` Andrii Nakryiko
2021-04-13  6:12     ` Yonghong Song
2021-04-13 17:50       ` Andrii Nakryiko
2021-04-10 16:49 ` [PATCH bpf-next 4/5] selftests/bpf: silence clang compilation warnings Yonghong Song
2021-04-11 11:12   ` Sedat Dilek
2021-04-11 17:40     ` Yonghong Song
2021-04-10 16:49 ` [PATCH bpf-next 5/5] bpftool: fix a clang compilation warning Yonghong Song
2021-04-11 11:05   ` Sedat Dilek
2021-04-11 17:24     ` Yonghong Song
2021-04-10 17:23 ` [PATCH bpf-next 0/5] support build selftests/bpf with clang Alexei Starovoitov
2021-04-10 17:38   ` Yonghong Song
2021-04-10 19:19 ` Sedat Dilek
2021-04-11 16:46   ` Yonghong Song

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1b52c9f6-cf2e-f7f4-3ce6-e7acd449884e@fb.com \
    --to=yhs@fb.com \
    --cc=andrii@kernel.org \
    --cc=arnaldo.melo@gmail.com \
    --cc=bpf@vger.kernel.org \
    --cc=kernel-team@fb.com \
    --cc=ndesaulniers@google.com \
    --cc=sedat.dilek@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.