SRI-CSL / whole-program-llvm

A toolkit for building whole-program LLVM bitcode files
MIT License
72 stars 11 forks source link

A issue in Klee's docker image #25

Closed zhw1042922958 closed 5 years ago

zhw1042922958 commented 5 years ago

hello ianmason, when i Use KLEE to Test GNU Coreutils and the command extract-bc cat Here's a mistake: ERROR:WLLVM Failed to execute: ['file', '/home/klee/coreutils-6.11/obj-llvm/src/cat'] I don't know how to solve this problem. My wllvm version is 1.2.6 GNU Coreutils version is 6.11

I really appreciate your help!

ianamason commented 5 years ago

@zhw1042922958 what happens when you type

file /home/klee/coreutils-6.11/obj-llvm/src/cat

to the command line inside the docker image?

My guess is that the utility file is not installed

zhw1042922958 commented 5 years ago

when i type file /home/klee/coreutils-6.11/obj-llvm/src/cat to the command line inside the docker image here is happen: bash: file: command not found

but when i type pip list to the command line inside the docker image there shows wllvm (1.2.6) is in the python libraries

The steps I take to install wllvm are: 1.git clone https://github.com/travitch/whole-program-llvm.git 2.cd whole-program-llvm

  1. python setup.py build
  2. python setup.py install does the question exist in my installation steps?

thank you very much!

ianamason commented 5 years ago

@zhw1042922958 you misunderstand the error message

file is a utility program. On my machines, its full name is

/usr/bin/file

FILE(1)                   BSD General Commands Manual                  FILE(1)

NAME
     file -- determine file type

SYNOPSIS
     file [-bcdDhiIkLnNprsvz] [--extension] [--mime-encoding] [--mime-type] [-f namefile] [-m magicfiles] [-P name=value] [-M magicfiles] file
     file -C [-m magicfiles]
     file [--help]

DESCRIPTION
     This manual page documents version 5.04 of the file command.

     file tests each argument in an attempt to classify it.  There are three sets of tests, performed in this order: filesystem tests, magic tests, and
     language tests.  The first test that succeeds causes the file type to be printed.

You need to install it in your docker image.

zhw1042922958 commented 5 years ago

when i type file /home/klee/coreutils-6.11/obj-llvm/src/cat to the command line inside the docker image here is happen: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, not stripped

and then i type extract-bc cat

here is happen: WARNING:Could not find ".llvm_bc" ELF section in "/tmp/klee_src/coreutils-6.11/obj-llvm/src/cat", so skipping this entry.

ianamason commented 5 years ago

This is probably because it wasn't compiled with wllvm. That is my guess. Try building coreutils again, and look carefully at the build output. What compiler is it using?

Last time I built coreutils I wrote a makefile that did it for me. Note that it builds a much more recent version, but the version and URL might be out of date.

zhw1042922958 commented 5 years ago

i building coreutils again, the problem is solved thank you for your help!