Messages in this thread | | | From | Ian Rogers <> | Date | Fri, 12 Nov 2021 07:35:49 -0800 | Subject | Re: [PATCH 2/2] perf clang: Fixes for more recent LLVM/clang |
| |
On Fri, Nov 12, 2021 at 2:34 AM Ma Xinjian <xinjianx.ma@intel.com> wrote: > > Hi > > We build perf with clang also recently, but unlucky that failed with > following errors: > > > ``` > In file included from /usr/lib/llvm-7/include/llvm/ADT/STLExtras.h:21, > from /usr/lib/llvm-7/include/llvm/ADT/StringRef.h:13, > from /usr/lib/llvm-7/include/clang/Basic/Version.h:20, > from test-clang.cpp:2: > /usr/lib/llvm-7/include/llvm/ADT/SmallVector.h: In instantiation of > 'void llvm::SmallVectorTemplateBase<T, true>::push_back(const T&) [with > T = clang::driver::OffloadUnbundlingJobAction::DependentActionInfo]': > /usr/lib/llvm-7/include/clang/Driver/Action.h:579:61: required from here > /usr/lib/llvm-7/include/llvm/ADT/SmallVector.h:313:11: error: 'void* > memcpy(void*, const void*, size_t)' writing to an object of type 'struct > clang::driver::OffloadUnbundlingJobAction::DependentActionInfo' with no > trivial copy-assignment; use copy-initialization instead > [-Werror=class-memaccess] > memcpy(this->end(), &Elt, sizeof(T)); > ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > In file included from /usr/lib/llvm-7/include/clang/Driver/Driver.h:15, > from test-clang.cpp:6: > /usr/lib/llvm-7/include/clang/Driver/Action.h:549:10: note: 'struct > clang::driver::OffloadUnbundlingJobAction::DependentActionInfo' declared > here > struct DependentActionInfo final { > ^~~~~~~~~~~~~~~~~~~ > cc1plus: all warnings being treated as errors > ``` > > llvm version: 7 > rootfs: Debian10 > kernel: v5.8 v5.11 v5.15 > reproduce: > $ cd linux/tools/perf > $ make LIBCLANGLLVM=1 ARCH= EXTRA_CFLAGS='-fno-omit-frame-pointer > -fsanitize=undefined -fsanitize=address' > > Would you please kindly point out what's wrong with our steps? Or can > you give us your command to make perf with clang?
Hi Xinjian,
As the bug is in LLVM 7 there is little we can do in Linux perf to fix the issue. I haven't got LLVM 7 on my machine to test with, but I see the same problem with LLVM 6 - both of which are of course quite old. My workaround is to add to the make command line "CXXFLAGS=-Wno-error=class-memaccess". My full command line is:
make -C tools/perf O=/tmp/perf DESTDIR=/tmp/perf-install DEBUG=1 LIBPFM4=1 NO_LIBBFD=1 LIBCLANGLLVM=1 LLVM_CONFIG=/usr/lib/llvm-6.0/bin/llvm-config CXXFLAGS=-Wno-error=class-memaccess
I know Intel is keen on testing. Related to this code are the BPF tests in "perf test". I frequently see flakes on these tests that count the number of times a system call is called. The flakes are an under or over count by 1. The over count by 1 I can explain if during the test another process happens to use the same system call. The under counting is harder to explain and is possibly an indication of a data race. I'd be happy for any suggestions to fix these flakes.
Thanks, Ian
> Thanks > Ma Xinjian
| |