On Tue, Jun 19, 2018 at 7:54 AM, William Tu <[email protected]> wrote: > Hi, > > I'm trying to run coverage tests on my bpf program and it compiles fails. > I guess BPF does not support '--coverage' flags?
This will not work. '-coverage' flag will introduce some additional global functions called by the program, e.g., __llvm_gcov_init, __llvm_gcov_flush, etc. global memset functions are called from one of these functions, global variable __llvm_gcov_ctr is also introduced. New clang compiler is much more tolerant on global functions in order to support function calls in bpf bytecode. Even if you compile successfully, you may not load the program as the program compiled with '-coverage' will reference to some global variables where the loader cannot resolve. > > root@boxes:~/ovs# clang-4.0 -Wstrict-prototypes -Wall -Wextra > -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security > -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align > -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes > -Wmissing-field-initializers -fno-strict-aliasing -Wswitch-bool > -Wlogical-not-parentheses -Wsizeof-array-argument --coverage > -D__NR_CPUS__=4 -O2 -Wall -Werror -emit-llvm -I./include -I./include > -Wno-error=pointer-arith -I/include/uapi/ -c bpf/datapath.c -o - | > llc-4.0 -march=bpf -filetype=obj -o bpf/datapath.o > LLVM ERROR: Cannot select: 0x8b2e90: ch,glue = BPFISD::CALL 0x8b2f60, > TargetExternalSymbol:i64'memset', Register:i64 %R1, Register:i64 %R2, > Register:i64 %R3, 0x8b2f60:1 > 0x8b2ef8: i64 = TargetExternalSymbol'memset' > 0x8b3168: i64 = Register %R1 > 0x8b3098: i64 = Register %R2 > 0x8b2fc8: i64 = Register %R3 > 0x8b2f60: ch,glue = CopyToReg 0x8b3030, Register:i64 %R3, > Constant:i64<1408>, 0x8b3030:1 > 0x8b2fc8: i64 = Register %R3 > 0x8b3308: i64 = Constant<1408> > 0x8b3030: ch,glue = CopyToReg 0x8b3100, Register:i64 %R2, > Constant:i64<0>, 0x8b3100:1 > 0x8b3098: i64 = Register %R2 > 0x8b3238: i64 = Constant<0> > 0x8b3100: ch,glue = CopyToReg 0x8b31d0, Register:i64 %R1, 0x73f0f8 > 0x8b3168: i64 = Register %R1 > 0x73f0f8: i64 = BPFISD::Wrapper TargetGlobalAddress:i64<[176 x > i64]* @__llvm_gcov_ctr> 0 > 0x8b2cb8: i64 = TargetGlobalAddress<[176 x i64]* @__llvm_gcov_ctr> 0 > In function: __llvm_gcov_flush > > Thanks > William > > > -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#1337): https://lists.iovisor.org/g/iovisor-dev/message/1337 Mute This Topic: https://lists.iovisor.org/mt/22433570/21656 Group Owner: [email protected] Unsubscribe: https://lists.iovisor.org/g/iovisor-dev/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
