• Yonghong Song's avatar
    perf tools: Fix a clang 7.0 compilation error · c6555c14
    Yonghong Song authored
    Arnaldo reported the perf build failure with latest llvm/clang compiler
    (7.0).
    
       $ make LIBCLANGLLVM=1 -C tools/perf/
       <SNIP>
        CC       /tmp/tmp.t53Qo38zci/tests/kmod-path.o
       util/c++/clang.cpp: In function ‘std::unique_ptr<llvm::SmallVectorImpl<char> >
           perf::getBPFObjectFromModule(llvm::Module*)’:
       util/c++/clang.cpp:150:43: error: no matching function for call to
           ‘llvm::TargetMachine::addPassesToEmitFile(llvm::legacy::PassManager&,
            llvm::raw_svector_ostream&, llvm::TargetMachine::CodeGenFileType)’
                   TargetMachine::CGFT_ObjectFile)) {
                                                 ^
       In file included from util/c++/clang.cpp:25:0:
       /usr/local/include/llvm/Target/TargetMachine.h:254:16: note: candidate:
           virtual bool llvm::TargetMachine::addPassesToEmitFile(
           llvm::legacy::PassManagerBase&, llvm::raw_pwrite_stream&,
           llvm::raw_pwrite_stream*, llvm::TargetMachine::CodeGenFileType, bool,
           llvm::MachineModuleInfo*)
         virtual bool addPassesToEmitFile(PassManagerBase &, raw_pwrite_stream &,
                      ^~~~~~~~~~~~~~~~~~~
      /usr/local/include/llvm/Target/TargetMachine.h:254:16: note:
          candidate expects 6 arguments, 3 provided
      mv: cannot stat '/tmp/tmp.t53Qo38zci/util/c++/.clang.o.tmp': No such file or directory
      make[7]: *** [/home/acme/git/perf/tools/build/Makefile.build:101:
          /tmp/tmp.t53Qo38zci/util/c++/clang.o] Error 1
      make[6]: *** [/home/acme/git/perf/tools/build/Makefile.build:139: c++] Error 2
      make[5]: *** [/home/acme/git/perf/tools/build/Makefile.build:139: util] Error 2
      make[5]: *** Waiting for unfinished jobs....
        CC       /tmp/tmp.t53Qo38zci/tests/thread-map.o
    
    The function addPassesToEmitFile signature changed in llvm 7.0 and such
    a change caused the failure. This patch fixed the issue with using
    proper function signatures under different compiler versions.
    Reported-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: default avatarYonghong Song <yhs@fb.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/20180616174739.1076733-1-yhs@fb.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    c6555c14
clang.cpp 5.39 KB