On Mon, Apr 12, 2021 at 4:58 PM Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > > On Mon, Apr 12, 2021 at 7:29 AM Yonghong Song <yhs@xxxxxx> wrote: > > > > To build kernel with clang, people typically use > > make -j60 LLVM=1 LLVM_IAS=1 > > LLVM_IAS=1 is not required for non-LTO build but > > is required for LTO build. In my environment, > > I am always having LLVM_IAS=1 regardless of > > whether LTO is enabled or not. > > > > After kernel is build with clang, the following command > > can be used to build selftests with clang: > > make -j60 -C tools/testing/selftests/bpf LLVM=1 LLVM_IAS=1 > > Thank you for the series Yonghong. When I test the above command with > your series applied, I observe: > tools/include/tools/libc_compat.h:11:21: error: static declaration of > 'reallocarray' follows non-static declaration > static inline void *reallocarray(void *ptr, size_t nmemb, size_t size) > ^ > /usr/include/stdlib.h:559:14: note: previous declaration is here > extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) > ^ > so perhaps the detection of > COMPAT_NEED_REALLOCARRAY/feature-reallocarray is incorrect? Is this related to _DEFAULT_SOURCE vs _GNU_SOURCE. via man 3 reallocarray: reallocarray(): Since glibc 2.29: _DEFAULT_SOURCE Glibc 2.28 and earlier: _GNU_SOURCE $ cd tools/testing/selftests/bpf $ grep -rn _DEFAULT_SOURCE | wc -l 0 $ grep -rn _GNU_SOURCE | wc -l 37 $ ldd --version | head -n1 ldd (Debian GLIBC 2.31-9+build1) 2.31 -- Thanks, ~Nick Desaulniers