lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20220416063743.254755-1-yangjihong1@huawei.com>
Date:   Sat, 16 Apr 2022 14:37:43 +0800
From:   Yang Jihong <yangjihong1@...wei.com>
To:     <nathan@...nel.org>, <ndesaulniers@...gle.com>, <trix@...hat.com>,
        <acme@...hat.com>, <irogers@...gle.com>, <f.fainelli@...il.com>,
        <mpetlan@...hat.com>, <leo.yan@...aro.org>, <john@...anate.com>,
        <linux-kernel@...r.kernel.org>, <llvm@...ts.linux.dev>
CC:     <yangjihong1@...wei.com>
Subject: [PATCH] perf llvm: fix check feature libclang faled to cope with latest llvm

For llvm13, perf build check libclang failed even if llmv libraries have been
installed in the system. The output file is as follows:

  # cat ./build/feature/test-clang.make.output
  /usr/local/lib/libLLVMSupport.a(Path.cpp.o): In function `llvm::sys::fs::expandTildeExpr(llvm::SmallVectorImpl<char>&)':
  Path.cpp:(.text._ZN4llvm3sys2fsL15expandTildeExprERNS_15SmallVectorImplIcEE+0x13b): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
  /usr/local/lib/libLLVMSupport.a(Path.cpp.o): In function `llvm::sys::path::home_directory(llvm::SmallVectorImpl<char>&) [clone .localalias.6]':
  Path.cpp:(.text._ZN4llvm3sys4path14home_directoryERNS_15SmallVectorImplIcEE+0x88): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
  /usr/local/lib/libclangDriver.a(Darwin.cpp.o): In function `clang::driver::toolchains::Darwin::addProfileRTLibs(llvm::opt::ArgList const&, llvm::SmallVector<char const*, 16u>&) const':
  Darwin.cpp:(.text._ZNK5clang6driver10toolchains6Darwin16addProfileRTLibsERKN4llvm3opt7ArgListERNS3_11SmallVectorIPKcLj16EEE+0x217): undefined reference to `llvm::getInstrProfSectionName[abi:cxx11](llvm::InstrProfSectKind, llvm::Triple::ObjectFormatType, bool)'
  collect2: error: ld returned 1 exit status

Because relevant link library is missing. For llvm13, getInstrProfSectionName
interface is in libLLVMInstrumentation, which is part of BPF component library.

The solution has been verified in the llvm13 environment, as following:

  # make OUTPUT= CC=gcc CXX=g++ CFLAGS=  CXXFLAGS=  \
    LDFLAGS="-static -Wl,-z,noexecstack"  \
    -C /home/aa/linux/tools/build/feature test-clang.bin V=1
  make: Entering directory '/home/aa/linux/tools/build/feature'
  g++  -MD -Wall -Werror -o test-clang.bin test-clang.cpp -static -Wl,-z,noexecstack > test-clang.make.output 2>&1 -std=gnu++14                                   \
          -I/usr/local/include            \
          -L/usr/local/lib                \
          -Wl,--start-group -lclangBasic -lclangDriver    \
            -lclangFrontend -lclangEdit -lclangLex        \
            -lclangAST -Wl,--end-group                    \
          -lLLVMBPFDisassembler -lLLVMMCDisassembler -lLLVMBPFAsmParser -lLLVMBPFCodeGen -lLLVMSelectionDAG -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMFrontendOpenMP -lLLVMBPFDesc -lLLVMBPFInfo -lLLVMAsmPrinter -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMOption -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle    \
          -lrt -ldl -lpthread -lm -lz -ltinfo -lxml2              \
          > test-clang.make.output 2>&1
  make: Leaving directory '/home/aa/linux/tools/build/feature'

Signed-off-by: Yang Jihong <yangjihong1@...wei.com>
---
 tools/build/feature/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index de66e1cc0734..af667972cb88 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -322,7 +322,7 @@ $(OUTPUT)test-clang.bin:
 		-Wl,--start-group -lclangBasic -lclangDriver	\
 		  -lclangFrontend -lclangEdit -lclangLex	\
 		  -lclangAST -Wl,--end-group 			\
-		$(shell $(LLVM_CONFIG) --libs Core option)	\
+		$(shell $(LLVM_CONFIG) --libs Core option BPF)	\
 		$(shell $(LLVM_CONFIG) --system-libs)		\
 		> $(@:.bin=.make.output) 2>&1
 
-- 
2.30.GIT

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ