Skip to content

Commit 4286b86

Browse files
author
Daniel Kroening
committed
added jbmc executable
1 parent 88acdfd commit 4286b86

File tree

5 files changed

+1135
-2
lines changed

5 files changed

+1135
-2
lines changed

src/Makefile

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
DIRS = ansi-c big-int cbmc cpp goto-cc goto-instrument goto-programs \
1+
DIRS = ansi-c big-int cbmc jbmc cpp goto-cc goto-instrument goto-programs \
22
goto-symex langapi pointer-analysis solvers util linking xmllang \
33
assembler analyses java_bytecode \
44
json goto-analyzer jsil goto-diff clobber \
55
memory-models miniz
66

7-
all: cbmc.dir goto-cc.dir goto-instrument.dir goto-analyzer.dir goto-diff.dir
7+
all: cbmc.dir jbmc.dir goto-cc.dir goto-instrument.dir \
8+
goto-analyzer.dir goto-diff.dir
89

910
###############################################################################
1011

@@ -30,6 +31,8 @@ cbmc.dir: languages solvers.dir goto-symex.dir analyses.dir \
3031
pointer-analysis.dir goto-programs.dir linking.dir \
3132
goto-instrument.dir
3233

34+
jbmc.dir: cbmc.dir
35+
3336
goto-analyzer.dir: languages analyses.dir goto-programs.dir linking.dir \
3437
json.dir goto-instrument.dir
3538

src/jbmc/Makefile

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
SRC = jbmc_main.cpp \
2+
jbmc_parse_options.cpp \
3+
# Empty last line
4+
5+
OBJ += ../ansi-c/ansi-c$(LIBEXT) \
6+
../java_bytecode/java_bytecode$(LIBEXT) \
7+
../linking/linking$(LIBEXT) \
8+
../big-int/big-int$(LIBEXT) \
9+
../goto-programs/goto-programs$(LIBEXT) \
10+
../goto-symex/goto-symex$(LIBEXT) \
11+
../pointer-analysis/value_set$(OBJEXT) \
12+
../pointer-analysis/value_set_analysis_fi$(OBJEXT) \
13+
../pointer-analysis/value_set_domain_fi$(OBJEXT) \
14+
../pointer-analysis/value_set_fi$(OBJEXT) \
15+
../pointer-analysis/value_set_dereference$(OBJEXT) \
16+
../pointer-analysis/dereference_callback$(OBJEXT) \
17+
../pointer-analysis/add_failed_symbols$(OBJEXT) \
18+
../pointer-analysis/rewrite_index$(OBJEXT) \
19+
../pointer-analysis/goto_program_dereference$(OBJEXT) \
20+
../goto-instrument/full_slicer$(OBJEXT) \
21+
../goto-instrument/nondet_static$(OBJEXT) \
22+
../goto-instrument/cover$(OBJEXT) \
23+
../analyses/analyses$(LIBEXT) \
24+
../langapi/langapi$(LIBEXT) \
25+
../xmllang/xmllang$(LIBEXT) \
26+
../assembler/assembler$(LIBEXT) \
27+
../solvers/solvers$(LIBEXT) \
28+
../util/util$(LIBEXT) \
29+
../miniz/miniz$(OBJEXT) \
30+
../json/json$(LIBEXT) \
31+
../cbmc/all_properties$(OBJEXT) \
32+
../cbmc/bmc$(OBJEXT) \
33+
../cbmc/bmc_cover$(OBJEXT) \
34+
../cbmc/bv_cbmc$(OBJEXT) \
35+
../cbmc/cbmc_dimacs$(OBJEXT) \
36+
../cbmc/cbmc_solvers$(OBJEXT) \
37+
../cbmc/counterexample_beautification$(OBJEXT) \
38+
../cbmc/fault_localization$(OBJEXT) \
39+
../cbmc/show_vcc$(OBJEXT) \
40+
../cbmc/symex_bmc$(OBJEXT) \
41+
../cbmc/symex_coverage$(OBJEXT) \
42+
# Empty last line
43+
44+
INCLUDES= -I ..
45+
46+
LIBS =
47+
48+
include ../config.inc
49+
include ../common
50+
51+
CLEANFILES = jbmc$(EXEEXT)
52+
53+
all: jbmc$(EXEEXT)
54+
55+
###############################################################################
56+
57+
jbmc$(EXEEXT): $(OBJ)
58+
$(LINKBIN)
59+
60+
.PHONY: jbmc-mac-signed
61+
62+
jbmc-mac-signed: jbmc$(EXEEXT)
63+
strip jbmc$(EXEEXT) ; codesign -v -s $(OSX_IDENTITY) jbmc$(EXEEXT)

src/jbmc/jbmc_main.cpp

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*******************************************************************\
2+
3+
Module: CBMC Main Module
4+
5+
Author: Daniel Kroening, [email protected]
6+
7+
\*******************************************************************/
8+
9+
/// \file
10+
/// CBMC Main Module
11+
12+
/*
13+
14+
JBMC
15+
Bounded Model Checking for Java
16+
Copyright (C) 2017 Daniel Kroening <[email protected]>
17+
18+
*/
19+
20+
#include "jbmc_parse_options.h"
21+
22+
#include <util/unicode.h>
23+
24+
#ifdef IREP_HASH_STATS
25+
#include <iostream>
26+
#endif
27+
28+
#ifdef IREP_HASH_STATS
29+
extern unsigned long long irep_hash_cnt;
30+
extern unsigned long long irep_cmp_cnt;
31+
extern unsigned long long irep_cmp_ne_cnt;
32+
#endif
33+
34+
#ifdef _MSC_VER
35+
int wmain(int argc, const wchar_t **argv_wide)
36+
{
37+
auto vec=narrow_argv(argc, argv_wide);
38+
auto narrow=to_c_str_array(std::begin(vec), std::end(vec));
39+
auto argv=narrow.data();
40+
#else
41+
int main(int argc, const char **argv)
42+
{
43+
#endif
44+
jbmc_parse_optionst parse_options(argc, argv);
45+
46+
int res=parse_options.main();
47+
48+
#ifdef IREP_HASH_STATS
49+
std::cout << "IREP_HASH_CNT=" << irep_hash_cnt << '\n';
50+
std::cout << "IREP_CMP_CNT=" << irep_cmp_cnt << '\n';
51+
std::cout << "IREP_CMP_NE_CNT=" << irep_cmp_ne_cnt << '\n';
52+
#endif
53+
54+
return res;
55+
}

0 commit comments

Comments
 (0)