Unable to integrate CBMC into build systems - c

I'm trying to use CBMC (C Bounded Model Checking: https://www.cprover.org/cbmc/) on open-source C projects from GitHub. For the purpose of this question, let's consider the following project: https://github.com/reubenhwk/radvd
The problem arises when I compile the project with gcc. I'm able to obtain the executable file on which call cbmc like
cbmc radvd
but I obtain the following error message:
CBMC version 5.8 64-bit x86_64 linux
failed to open input file radvd`
The reason should be the fact that I used gcc instead of goto-cc (as explained here: http://www.cprover.org/cprover-manual/goto-cc.html), so might it's unable to recognize the file.
I also tried to use goto-cc as explained in the previous link and in some example like http://www.cprover.org/goto-cc/examples/nanosat.html. However, since they are guided examples it seems to be easy to make cbmc work. When I do the same process with other project, like the linked one (radvd) and use goto-cc instead of gcc I obtain the following message when running make CC=goto-cc command:
make all-am
make[1]: Entering directory '/home/stefano/Documents/github/radvd'
YACC gram.c
updating gram.h
CC libradvd_parser_a-gram.o
/usr/include/stdlib.h:133:1: error: syntax error before 'strtof128'
PARSING ERROR
Makefile:941: recipe for target 'libradvd_parser_a-gram.o' failed
make[1]: *** [libradvd_parser_a-gram.o] Error 1
make[1]: Leaving directory '/home/stefano/Documents/github/radvd'
Makefile:755: recipe for target 'all' failed
make: *** [all] Error 2`
I'm currently using the version 5.8 of cbmc on a virtual Linux machine (Ubuntu 17.10).
Do you have any idea on how make it work?
Thank you

Related

Trouble Installing CompCert C compiler on Ubuntu

I'm installing CompCert C compiler as instructed here: https://compcert.org/man/manual002.html.
However I'm stuck at the stage where I "Run the configure script with appropriate options: ./configure [option …] target "
The console output is:
~/compcert/CompCert-3.8$ ./configure -use-external-MenhirLib x86_64-linux
Testing assembler support for CFI directives... yes
Testing linker support for '-no-pie' / '-nopie' option... yes, '-no-pie'
Testing Coq... version 8.11.0 -- good!
Testing OCaml... version 4.08.1 -- good!
Testing OCaml native-code compiler...yes
Testing OCaml .opt compilers... yes
Testing Menhir... version 20200123 -- good!
Error: cannot determine the location of the Menhir API library.
This can be due to an incorrect Menhir package.
Consider using the OPAM package for Menhir.
Testing GNU make... version 4.2.1 (command 'make') -- good!
One or several required tools are missing or too old. Aborting.
I'm running Ubuntu 20.04 LTS.
[Edit: I managed to run the ./configure. However I cannot reproduce the exact method how I did it. Now I'm stuck in a different part.]
Follow-up question:
When running make all I receive the following output:
/compcert/CompCert-3.8$ make all
make proof
make[1]: Entering directory '/home/user/compcert/CompCert-3.8'
COQC Axioms.v
Error: Can't find file ./Axioms.v
make[1]: *** [Makefile:226: Axioms.vo] Error 1
make[1]: Leaving directory '/home/user/compcert/CompCert-3.8'
make: *** [Makefile:155: all] Error 2
I fixed that problem by copying lib/Axiom.v to the root. The make all then complained about another library in lib/ so I moved a bunch of them until I received the following error:
~/compcert/CompCert-3.8$ make all
make proof
make[1]: Entering directory '/home/user/compcert/CompCert-3.8'
COQC Ordered.v
File "./Ordered.v", line 90, characters 16-19:
Error: The reference int was not found in the current environment.
make[1]: *** [Makefile:226: Ordered.vo] Error 1
make[1]: Leaving directory '/home/user/compcert/CompCert-3.8'
make: *** [Makefile:155: all] Error 2
And now I'm stuck once again.
It seems that you have an incorrect version of the menhirLib. See these lines in the configure script in the build system which lead to this error. I think the problem is that you installed a different version of menhirLib, possibly using your package manager.
I suggest you to run the following commands to install the latest menhirLib from the opam:
opam update
opam install menhir menhirLib
This should help.

How to compile pmars-0.9.2 on Ubuntu 18.04? error: Makefile:116: recipe for target 'all' failed

I'm trying to compile a pmars-0.9.2 game, but stumbled on an error while passing the test, after command make -j4:
make[2]: *** [extractor/CMakeFiles/extractor.dir/backoff_sampler.cc.o] Error 1
CMakeFiles/Makefile2:2561: recipe for target 'extractor/CMakeFiles/extractor.dir/all' failed
make[1]: *** [extractor/CMakeFiles/extractor.dir/all] Error 2
Makefile:116: recipe for target 'all' failed
make: *** [all] Error 2
Can you tell me which installation drivers are missing to successfully complete the compilation?
To view logs from an unpacked archived use command:
nano /home/user/Desktop/pmars-0.9.2/cdec/BUILDING
To build cdec, you'll need:
boost headers & boost program_options (you may need to install a package
like libboost-dev)
Instructions for building
1) Create a build directory and generate Makefiles using CMake
mkdir my_build
cd my_build
cmake ..
If the cmake command completes successfully, you can proceed. If you have
libraries (such as Boost) installed in nonstandard locations, you may need
to run cmake with special options like -DBOOST_ROOT=/path/to/boost.
2) Build
make -j 2
3) Test
make test
./tests/run-system-tests.pl

kernel source 3.10.0-229.11.1.el7.x86_64 compilation fails

I updated my gcc from 4.8 to 5.2. After updating gcc I am trying to compile kernel with newer gcc. I am getting a compilation issue
make[1]: *** No rule to make target `/usr/src/kernels/3.10.0-229.11.1.el7.x86_64/arch/x86/syscalls/syscall_32.tbl', needed by `arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h'. Stop.
make: *** [archheaders] Error 2
Even after googling several hours. I could not find solution to this problem. Please help!
That target file is part of the source code. Maybe you or someone else deleted it accidentally?

Error while compiling glibc from source

I am trying to compile glibc 2.15 from source. I followed all the steps in gnu link. The configuration was success but when I try to make I am getting this peculiar which is terminating the compilation. I tried searching for the error but there was no mention of it on the web.
I am doing this on 64bit Ubuntu 12.10.
The error message is
'wctomb.c:59:1: error
__EI_wctomb' aliased to external symbol '__GI_wctomb'
make[2]: *** [/var/services/homes/abhi/ld/glibc-build/stdlib/wctomb.os] Error 1
make[2]: Leaving directory `/var/services/homes/abhi/ld/glibc-2.15/stdlib'
make[1]: *** [stdlib/subdir_lib] Error 2
make[1]: Leaving directory `/var/services/homes/abhi/ld/glibc-2.15'
make: *** [all] Error 2`
How do I solve this error. Any pointers or suggestions will be highly appreciated.
Thanks
There is a reported bug with GCC 4.7 on Debian distro bug because of which this and other variants of this bug occurs(another is with math library).
-> Work around was to download and install GCC 4.8 (this can only be done by building from source on 12.10 Quantal currently) and then using that to build glibc.

Link tests are not allowed after GCC_NO_EXECUTABLES ---crosscompiling toolchain

Iam trying to build a cross compiler using this tutorial:
http://wiki.osdev.org/OS_Specific_Toolchain
after succesfully building binutils,all-gcc,newlib
I am getting an error in the last part of make in build-gcc
checking for shl_load... configure: error: Link tests are not allowed after GCC_NO_EXECUTABLES.
Makefile:8970: recipe for target `configure-target-libstdc++-v3' failed
make[1]: *** [configure-target-libstdc++-v3] Error 1
make[1]: Leaving directory `/usr/src/build-gcc'
Makefile:870: recipe for target `all' failed
make: *** [all] Error 2
please help...
I don't know you configure command options. But if you have given --enable-language=c change it to --enable-languages=c. Or may be you are compiling bootstrap with languages c and c++. In which case this error occurs.
I ran into this issue when attempting to build a cross compiler for ARM. Eventually, switched to using crosstool-NG. It is a script that greatly simplifies the process. It worked like a charm for me.

Resources