Ming Lei <ming....@canonical.com> inquires: 

> Bcc can be installed on ubuntu 16.04/arm64 successfully, but when
> I try to trace, the folllowing failure[1] is triggered.
> So is bcc not ready for arm64? Or something is wrong?
 [ . . . ] 

> In file included from ./arch/arm64/include/asm/cputype.h:94:
> ./arch/arm64/include/asm/sysreg.h:260:43: warning: value size does not match 
> register

I thought that rather than using the Debian package, I would try to
cross-compile bcc in a multistrap Debian container with Clang and LLVM
packages of version 3.8 from Debian Unstable.   The build gets about
halfway through and then fails on linking of CPUDistribution.   The
details 
are preserved in the attachment, but here's the bottom line: 

alison@bonnet:~/bcc/build$ make
Scanning dependencies of target clang_frontend
[  1%] Building CXX object
src/cc/frontends/clang/CMakeFiles/clang_frontend.dir/loader.cc.o
[  3%] Building CXX object
src/cc/frontends/clang/CMakeFiles/clang_frontend.dir/b_frontend_action.cc.o
        

[ . . . ] 

Linking CXX static library libbcc.a
[ 52%] Built target bcc-static
Scanning dependencies of target CPUDistribution
[ 54%] Building CXX object
examples/cpp/CMakeFiles/CPUDistribution.dir/CPUDistribution.cc.o
Linking CXX executable CPUDistribution
../../src/cc/libbcc.a(bpf_module.cc.o): In function
`ebpf::BPFModule::dump_ir(llvm::Module&)':
bpf_module.cc:(.text+0x4600): undefined reference to
`llvm::createPrintModulePass(llvm::raw_ostream&, std::string const&,
bool)' 

plus several other related errors about missing symbols.   Is this
liable to be a version mismatch problem?   I find that the file 
src/cc/CMakeFiles/bcc-shared.dir/build.make refers to libraries and
archives in /usr/lib/llvm-3.8/lib/ which exist and are arm64-ABI, as
expected. 

Thanks for any suggestions.   I guess I could try the package after all,
but that doesn't sound promising, either.   My eventual goal is run eBPF
on a Dragonboard, which has too little memory to compile bcc-tools
natively. 

Thanks for any suggestions, 
Alison

---
Alison Chaiken                      ali...@she-devel.com, 650-279-5600 
http://{ she-devel.com, exerciseforthereader.org } 
"You shouldn't try to optimize things you can't measure." -- Elecia
White,
http://embedded.fm/episodes/170 
root@bonnet:~# dpkg --add-architecture arm64
root@bonnet:~# apt-get update
root@bonnet:~# apt-get install -t unstable libclang-dev:arm64 llvm-dev:arm64 
zlib1g-dev:arm64

alison@bonnet:~/bcc/build$ file /usr/lib/llvm-3.8/lib/libLLVM-3.8.1.so.1
/usr/lib/llvm-3.8/lib/libLLVM-3.8.1.so.1: symbolic link to 
../../aarch64-linux-gnu/libLLVM-3.8.so.1
alison@bonnet:~/bcc/build$ file /usr/lib/aarch64-linux-gnu/libelf.so 
/usr/lib/aarch64-linux-gnu/libelf.so: symbolic link to libelf.so.1
alison@bonnet:~/bcc/build$ file /usr/lib/aarch64-linux-gnu/libelf.so.1
/usr/lib/aarch64-linux-gnu/libelf.so.1: symbolic link to libelf-0.166.so
alison@bonnet:~/bcc/build$ file /usr/lib/aarch64-linux-gnu/libelf-0.166.so 
/usr/lib/aarch64-linux-gnu/libelf-0.166.so: ELF 64-bit LSB shared object, ARM 
aarch64, version 1 (SYSV), dynamcally linked, 
BuildID[sha1]=567f250f8131b10905e3bbc08ed825ee8d8f137f, stripped

alison@bonnet:~# mkdir build
alison@bonnet:~# cd build
alison@bonnet:~/bcc/build$ cmake -DCMAKE_TOOLCHAIN_FILE=CMakeCross.txt ..
Target system:Linux, Host system: 
CROSS COMPILING for aarch64-linux-gnu-gcc
Target system:Linux, Host system:Linux-3.16.0-4-amd64 
CROSS COMPILING for aarch64-linux-gnu-gcc
-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc
Target system:Linux, Host system:Linux-3.16.0-4-amd64 
CROSS COMPILING for aarch64-linux-gnu-gcc
-- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
Target system:Linux, Host system:Linux-3.16.0-4-amd64 
CROSS COMPILING for aarch64-linux-gnu-gcc
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/aarch64-linux-gnu-g++
Target system:Linux, Host system:Linux-3.16.0-4-amd64 
CROSS COMPILING for aarch64-linux-gnu-gcc
-- Check for working CXX compiler: /usr/bin/aarch64-linux-gnu-g++ -- works
-- Detecting CXX compiler ABI info
Target system:Linux, Host system:Linux-3.16.0-4-amd64 
CROSS COMPILING for aarch64-linux-gnu-gcc
-- Detecting CXX compiler ABI info - done
-- Latest recognized Git tag is v0.2.0
-- Git HEAD is e596170fbcfda9cb61db778f3ee97be96e1e52f2
-- Revision is 0.2.0-e596170f
-- Found BISON: /usr/bin/bison (found version "3.0.2") 
-- Found FLEX: /usr/bin/flex (found version "2.5.39") 
-- Found LLVM: /usr/lib/llvm-3.8/include
-- Found LibElf: /usr/lib/aarch64-linux-gnu/libelf.so  
-- Performing Test ELF_GETSHDRSTRNDX
Target system:Linux, Host system:Linux-3.16.0-4-amd64 
CROSS COMPILING for aarch64-linux-gnu-gcc
-- Performing Test ELF_GETSHDRSTRNDX - Success
-- Using static-libstdc++
-- Configuring done
-- Generating done
-- Build files have been written to: /home/alison/bcc/build

alison@bonnet:~/bcc/build$ make
Scanning dependencies of target clang_frontend
[  1%] Building CXX object 
src/cc/frontends/clang/CMakeFiles/clang_frontend.dir/loader.cc.o
[  3%] Building CXX object 
src/cc/frontends/clang/CMakeFiles/clang_frontend.dir/b_frontend_action.cc.o     
    
[  5%] Building CXX object 
src/cc/frontends/clang/CMakeFiles/clang_frontend.dir/tp_frontend_action.cc.o    
    
[  7%] Building CXX object 
src/cc/frontends/clang/CMakeFiles/clang_frontend.dir/kbuild_helper.cc.o         
    
Linking CXX static library libclang_frontend.a
[  7%] Built target clang_frontend
Scanning dependencies of target bcc-loader-static
[  9%] Building C object src/cc/CMakeFiles/bcc-loader-static.dir/libbpf.c.o
[ 11%] Building C object 
src/cc/CMakeFiles/bcc-loader-static.dir/perf_reader.c.o                         
      
/home/alison/bcc/src/cc/perf_reader.c: In function 'read_data_head':
/home/alison/bcc/src/cc/perf_reader.c:198:3: warning: dereferencing type-punned 
pointer will break strict-aliasing rules [-Wstrict-aliasing]
   uint64_t data_head = *((volatile uint64_t *)&perf_header->data_head);
   ^
[ 13%] Building C object src/cc/CMakeFiles/bcc-loader-static.dir/bcc_elf.c.o
[ 15%] Building C object 
src/cc/CMakeFiles/bcc-loader-static.dir/bcc_perf_map.c.o                        
      
[ 16%] Building C object src/cc/CMakeFiles/bcc-loader-static.dir/bcc_proc.c.o   
                               
Linking C static library libbcc-loader-static.a
[ 16%] Built target bcc-loader-static
[ 18%] [FLEX][Lexer] Building scanner with flex 2.5.39
lexer.ll:110: warning, -s option given but default rule can be matched
[ 20%] [BISON][Parser] Building parser with bison 3.0.2
parser.yy:19.9-17: warning: deprecated directive, use '%define api.namespace 
ebpf::cc' [-Wdeprecated]
 %define namespace "ebpf::cc"
         ^^^^^^^^^
parser.yy:19.9-17: warning: %define variable 'api.namespace' requires '{...}' 
values [-Wdeprecated]
 %define namespace "ebpf::cc"
         ^^^^^^^^^
parser.yy:20.9-25: warning: %define variable 'parser_class_name' requires 
'{...}' values [-Wdeprecated]
 %define parser_class_name "BisonParser"
         ^^^^^^^^^^^^^^^^^
Scanning dependencies of target b_frontend
[ 22%] Building CXX object 
src/cc/frontends/b/CMakeFiles/b_frontend.dir/loader.cc.o
[ 24%] Building CXX object 
src/cc/frontends/b/CMakeFiles/b_frontend.dir/codegen_llvm.cc.o                  
    
[ 26%] Building CXX object 
src/cc/frontends/b/CMakeFiles/b_frontend.dir/node.cc.o                          
    
[ 28%] Building CXX object 
src/cc/frontends/b/CMakeFiles/b_frontend.dir/parser.cc.o                        
    
[ 30%] Building CXX object 
src/cc/frontends/b/CMakeFiles/b_frontend.dir/printer.cc.o                       
    
[ 32%] Building CXX object 
src/cc/frontends/b/CMakeFiles/b_frontend.dir/type_check.cc.o                    
    
[ 33%] Building CXX object 
src/cc/frontends/b/CMakeFiles/b_frontend.dir/parser.yy.cc.o                     
    
[ 35%] Building CXX object 
src/cc/frontends/b/CMakeFiles/b_frontend.dir/lexer.ll.cc.o                      
    
/home/alison/bcc/build/src/cc/frontends/b/lexer.ll.cc: In member function 
'virtual int ebpf::cc::Lexer::yylex()':
/home/alison/bcc/build/src/cc/frontends/b/lexer.ll.cc:764:23: warning: 
comparison between signed and unsigned integer expressions [-Wsign-compare]
    for ( yyl = 0; yyl < yyleng; ++yyl )
                       ^
Linking CXX static library libb_frontend.a
[ 35%] Built target b_frontend
Scanning dependencies of target bcc-static
[ 37%] Building CXX object src/cc/CMakeFiles/bcc-static.dir/bpf_common.cc.o
[ 39%] Building CXX object src/cc/CMakeFiles/bcc-static.dir/bpf_module.cc.o     
                               
[ 41%] Building CXX object src/cc/CMakeFiles/bcc-static.dir/shared_table.cc.o   
                               
[ 43%] Building CXX object src/cc/CMakeFiles/bcc-static.dir/exported_files.cc.o 
                               
[ 45%] Building CXX object src/cc/CMakeFiles/bcc-static.dir/bcc_syms.cc.o
[ 47%] Building CXX object src/cc/CMakeFiles/bcc-static.dir/usdt_args.cc.o
[ 49%] Building CXX object src/cc/CMakeFiles/bcc-static.dir/usdt.cc.o
[ 50%] Building CXX object src/cc/CMakeFiles/bcc-static.dir/BPF.cc.o
[ 52%] Building CXX object src/cc/CMakeFiles/bcc-static.dir/BPFTable.cc.o
Linking CXX static library libbcc.a
[ 52%] Built target bcc-static
Scanning dependencies of target CPUDistribution
[ 54%] Building CXX object 
examples/cpp/CMakeFiles/CPUDistribution.dir/CPUDistribution.cc.o
Linking CXX executable CPUDistribution
../../src/cc/libbcc.a(bpf_module.cc.o): In function 
`ebpf::BPFModule::dump_ir(llvm::Module&)':
bpf_module.cc:(.text+0x4600): undefined reference to 
`llvm::createPrintModulePass(llvm::raw_ostream&, std::string const&, bool)'
../../src/cc/libbcc.a(bpf_module.cc.o): In function 
`ebpf::BPFModule::run_pass_manager(llvm::Module&)':
bpf_module.cc:(.text+0x479c): undefined reference to 
`llvm::createPrintModulePass(llvm::raw_ostream&, std::string const&, bool)'
../../src/cc/libbcc.a(bpf_module.cc.o): In function 
`llvm::RTDyldMemoryManager::getSymbolAddress(std::string const&)':
bpf_module.cc:(.text._ZN4llvm19RTDyldMemoryManager16getSymbolAddressERKSs[_ZN4llvm19RTDyldMemoryManager16getSymbolAddressERKSs]+0x4):
 undefined reference to 
`llvm::RTDyldMemoryManager::getSymbolAddressInProcess(std::string const&)'
../../src/cc/libbcc.a(bpf_module.cc.o): In function 
`llvm::RTDyldMemoryManager::findSymbol(std::string const&)':
bpf_module.cc:(.text._ZN4llvm19RTDyldMemoryManager10findSymbolERKSs[_ZN4llvm19RTDyldMemoryManager10findSymbolERKSs]+0x24):
 undefined reference to 
`llvm::RTDyldMemoryManager::getSymbolAddressInProcess(std::string const&)'
../../src/cc/libbcc.a(bpf_module.cc.o):(.data.rel.ro._ZTVN4ebpf15MyMemoryManagerE[_ZTVN4ebpf15MyMemoryManagerE]+0x50):
 undefined reference to 
`llvm::SectionMemoryManager::finalizeMemory(std::string*)'
../../src/cc/libbcc.a(bpf_module.cc.o):(.data.rel.ro._ZTVN4ebpf15MyMemoryManagerE[_ZTVN4ebpf15MyMemoryManagerE]+0x90):
 undefined reference to 
`llvm::RTDyldMemoryManager::getPointerToNamedFunction(std::string const&, bool)'
../../src/cc/frontends/clang/libclang_frontend.a(b_frontend_action.cc.o): In 
function `ebpf::BTypeVisitor::VisitBinaryOperator(clang::BinaryOperator*)':
b_frontend_action.cc:(.text+0x7a4): undefined reference to 
`clang::Rewriter::getRewrittenText(clang::SourceRange) const'
b_frontend_action.cc:(.text+0x7d8): undefined reference to 
`clang::Rewriter::getRewrittenText(clang::SourceRange) const'
../../src/cc/frontends/clang/libclang_frontend.a(b_frontend_action.cc.o): In 
function `ebpf::BTypeVisitor::VisitFunctionDecl(clang::FunctionDecl*)':
b_frontend_action.cc:(.text+0x2488): undefined reference to 
`clang::Rewriter::getRewrittenText(clang::SourceRange) const'
../../src/cc/frontends/clang/libclang_frontend.a(b_frontend_action.cc.o): In 
function `ebpf::BTypeVisitor::VisitCallExpr(clang::CallExpr*)':
b_frontend_action.cc:(.text+0x3394): undefined reference to 
`clang::Rewriter::getRewrittenText(clang::SourceRange) const'
b_frontend_action.cc:(.text+0x3b04): undefined reference to 
`clang::Rewriter::getRewrittenText(clang::SourceRange) const'
../../src/cc/frontends/clang/libclang_frontend.a(b_frontend_action.cc.o):b_frontend_action.cc:(.text+0x3d30):
 more undefined references to 
`clang::Rewriter::getRewrittenText(clang::SourceRange) const' follow
../../src/cc/frontends/clang/libclang_frontend.a(b_frontend_action.cc.o): In 
function `ebpf::BMapDeclVisitor::VisitRecordDecl(clang::RecordDecl*)':
b_frontend_action.cc:(.text+0xa0b8): undefined reference to 
`llvm::APInt::toString(unsigned int, bool) const'
../../src/cc/frontends/clang/libclang_frontend.a(b_frontend_action.cc.o): In 
function `ebpf::ProbeVisitor::VisitMemberExpr(clang::MemberExpr*)':
b_frontend_action.cc:(.text+0xb0f0): undefined reference to 
`clang::Rewriter::getRewrittenText(clang::SourceRange) const'
b_frontend_action.cc:(.text+0xb124): undefined reference to 
`clang::QualType::getAsString(clang::Type const*, clang::Qualifiers)'
b_frontend_action.cc:(.text+0xb160): undefined reference to 
`clang::QualType::getAsString(clang::Type const*, clang::Qualifiers)'
../../src/cc/frontends/clang/libclang_frontend.a(b_frontend_action.cc.o): In 
function `ebpf::ProbeVisitor::VisitUnaryOperator(clang::UnaryOperator*)':
b_frontend_action.cc:(.text+0xb75c): undefined reference to 
`clang::Rewriter::getRewrittenText(clang::SourceRange) const'
b_frontend_action.cc:(.text+0xb790): undefined reference to 
`clang::QualType::getAsString(clang::Type const*, clang::Qualifiers)'
../../src/cc/frontends/clang/libclang_frontend.a(tp_frontend_action.cc.o): In 
function `ebpf::TracepointTypeVisitor::VisitFunctionDecl(clang::FunctionDecl*)':
tp_frontend_action.cc:(.text+0x116c): undefined reference to 
`clang::QualType::getAsString(clang::Type const*, clang::Qualifiers)'
collect2: error: ld returned 1 exit status
examples/cpp/CMakeFiles/CPUDistribution.dir/build.make:140: recipe for target 
'examples/cpp/CPUDistribution' failed
make[2]: *** [examples/cpp/CPUDistribution] Error 1
CMakeFiles/Makefile2:110: recipe for target 
'examples/cpp/CMakeFiles/CPUDistribution.dir/all' failed
_______________________________________________
iovisor-dev mailing list
iovisor-dev@lists.iovisor.org
https://lists.iovisor.org/mailman/listinfo/iovisor-dev

Reply via email to