The error message is telling you that the argparse module is missing. This module is a command line argument parser in Python >=2.7. Because that module is missing it probably means your version of python is VERY OUT OF DATE (you can check your version by running python --version) to use wllvm. If it's out of date you should upgrade!
If you don't want to install a newer version of python then you can try to use the older version of extract-bc that doesn't have an argument parser ( https://github.com/travitch/whole-program-llvm/blob/1256a2e6c5e64fcac97758eeb723d2de47f3d5ce/extract-bc ). I make no guarantees that this will work. Hope that helps, Dan. On 27 November 2013 12:28, Wang Shuai <[email protected]> wrote: > On 11/27/2013 01:52 PM, Daniel Liew wrote: > > Hi, > > I would advise using my fork [1] of wllvm instead of klee-gcc for > building programs to LLVM bitcode. > > I don't quite have the same error as you when I use wllvm. Instead I see ... > > ``` > > Failed: -Wl,--start-group -lm -Wl,--end-group > > > [76/1831] > Output of: > wllvm -fnested-functions -Wall -Wshadow -Wwrite-strings -Wundef > -Wstrict-prototypes -Wunused -Wunused-parameter -Wunused-function > -Wunused-value -Wmissing-prototypes -Wmissing-declarations > -Wno-format-security -Wdeclaration-after-statement > -Wold-style-definition -fno-builtin-strlen -finline-limit=0 > -fomit-frame-pointer -ffunction-sections -fdata-sections > -fno-guess-branch-probability -funsigned-char -static-libgcc > -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign > -loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -Os -o > busybox_unstripped -Wl,--sort-common -Wl,--sort-section,alignment > -Wl,--gc-sections -Wl,--start-group applets/built-in.o archival/lib.a > archival/libarchive/lib.a console-to > ols/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a > debianutils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a > init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a > mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a > networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a > procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a > util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o > archival/libarchive/built-in.o console-to > ols/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o > debianutils/built-in.o e2fsprogs/built-in.o editors/built-in.o > findutils/built-in.o init/built-in.o libbb/built-in.o > libpwdgrp/built-in.o loginutils/built-in.o mailutils > /built-in.o miscutils/built-in.o modutils/built-in.o > networking/built-in.o networking/libiproute/built-in.o > networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o > runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/b > uilt-in.o util-linux/built-in.o util-linux/volume_id/built-in.o > -Wl,--end-group -Wl,--start-group -lm -Wl,--end-group > ========== > networking/lib.a(inetd.o): In function `inetd_main': > networking/inetd.c:(.text.inetd_main+0x261): undefined reference to > `__FDELT' > networking/inetd.c:(.text.inetd_main+0x275): undefined reference to > `__FDMASK' > > ... > ``` > > The errors I have are macros that expand to something that is not used > as a symbol (_FDELT and _FDMASK). This seems to have something to do > with llvm-gcc and the macros FD_CLEAR, FD_ISSET, FD_SET and FD_ZERO > (in lib/gcc/x86_64-unknown-linux-gnu/4.2.1/include/bits/select.h ). > > Anyway the quick way to avoid this issue is to not build the > networking part of busybox by running make menuconfig (you may need > remove .config file first) and then removing the networking bits and > saving your configuration then building. > > If I do this then I can successfully build busybox using wllvm with > llvm-gcc provided I also add to CFLAGS in Makefile.flags > -fnested-functions i.e. > > CFLAGS += -fnested-function > > Hope that helps, > Dan Liew > > [1] Make sure you use llvm-gcc branch of repository > https://github.com/delcypher/whole-program-llvm/tree/llvm-gcc > > On 27 November 2013 03:29, 王帅 <[email protected]> wrote: > > Hi guys, > Recently, I'm trying to apply KLEE to busybox1.21.0. I followed the > subsequent steps: > > mkdir obj-klee > make -w O=obj-klee defconfig > cd obj-klee > make CC=klee-gcc LD="llvm-ld --disable-opt" AR=llvm-ar SKIP_STRIP=y V=1 > make CC=/home/wang/work/klee/scripts/klee-gcc LD="llvm-ld --disable-opt" > SKIP_STRIP=y V=1 AR=llvm-ar CFLAGS=-fnested-functions > > > But,an error happened: > > ------------------------ > ------------------------- > ------------------------ > > Trying libraries: m > Failed: -Wl,--start-group -lm -Wl,--end-group > Output of: > /home/wang/work/klee/scripts/klee-gcc -fnested-functions -o > busybox_unstripped -Wl,--start-group applets/built-in.o archival/lib.a > archival/libarchive/lib.a console-tools/lib.a coreutils/lib.a > coreutils/libcoreutils/lib.a debianutils/lib.a e2fsprogs/lib.a editors/lib.a > findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a > mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a > networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a > procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a > util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o > archival/libarchive/built-in.o console-tools/built-in.o coreutils/built-in.o > coreutils/libcoreutils/built-in.o debianutils/built-in.o > e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o > libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o > mailutils/built-in.o miscutils/built-in.o modutils/built-in.o > networking/built-in.o networking/libiproute/built-in.o > networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o > runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o > util-linux/built-in.o util-linux/volume_id/built-in.o -Wl,--end-group > -Wl,--start-group -lm -Wl,--end-group > ========== > llvm-ld: error: Cannot find linker input 'selinux/lib.a' > make[2]: *** [busybox_unstripped] Error 1 > make[1]: *** [_all] Error 2 > make: *** [all] Error 2 > > > When I check selinux/lib.a, the file is there, but it contains only a > single line with: "!<arch>" . Someone can help me ? If any, could you tell > me how to solve it? I'm really hurried with this test. Thank you very much > for advance! > > Thank know for your advice! It really helps me. Busybox 1.21.0 build > successfully. But when I wanted to use extract-bc busybox_unstripped to > generate LLVM bitcode, another error happened > > Traceback (most recent call last): > File "/home/wang/work/wllvm-gcc/extract-bc", line 269, in <module> > sys.exit(main(sys.argv)) > File "/home/wang/work/wllvm-gcc/extract-bc", line 212, in main > import argparse > ImportError: No module named argparse > > I also tried to apply wllvm to gzip1.6. There was the same error. Why? Was > there something wrong with my instructions? > > export LLVM_COMPILER=llvm-gcc > export LLVM_COMPILER_PATH=/home/wang/work/llvm-2.9/Release+Asserts/bin > export WLLVM_OUTPUT=DEBUG > > make CC=wllvm defconfig > make CC=wllvm > extract-bc busybox_unstripped > > > > > _______________________________________________ klee-dev mailing list [email protected] https://mailman.ic.ac.uk/mailman/listinfo/klee-dev
