File tree Expand file tree Collapse file tree 13 files changed +320
-1
lines changed Expand file tree Collapse file tree 13 files changed +320
-1
lines changed Original file line number Diff line number Diff line change @@ -157,6 +157,7 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR
157
157
"$<TARGET_FILE:goto-cc>"
158
158
"$<TARGET_FILE:goto-diff>"
159
159
"$<TARGET_FILE:goto-instrument>"
160
+ "$<TARGET_FILE:goto-synthesizer>"
160
161
"$<TARGET_FILE:janalyzer>"
161
162
"$<TARGET_FILE:jbmc>"
162
163
"$<TARGET_FILE:jdiff>"
@@ -233,6 +234,8 @@ cprover_default_properties(
233
234
goto-instrument-lib
234
235
goto-programs
235
236
goto-symex
237
+ goto-synthesizer
238
+ goto-synthesizer-lib
236
239
jsil
237
240
json
238
241
json-symtab-language
Original file line number Diff line number Diff line change 53
53
/src /goto-instrument / @ martin-cs @ chris-ryder @ peterschrammel @ tautschnig @ kroening
54
54
/src /goto-instrument /contracts / @ tautschnig @ feliperodri @ remi-delmas-3000
55
55
/src /goto-instrument /synthesizer / @ qinheping @ tautschnig @ feliperodri @ remi-delmas-3000
56
+ /src /goto-synthesizer / @ qinheping @ tautschnig @ feliperodri @ remi-delmas-3000
56
57
/src /goto-diff / @ tautschnig @ peterschrammel
57
58
/src /jsil / @ kroening @ tautschnig
58
59
/src /memory-analyzer / @ tautschnig @ chris-ryder @ kroening
Original file line number Diff line number Diff line change
1
+ .TH GOTO-SYNTHESIZER "1" "December 2022" "goto-synthesizer-5.59.0" "User Commands"
2
+ .SH NAME
3
+ goto\- synthesizer \- Synthesize and apply loop contracts of goto binaries.
4
+ .SH SYNOPSIS
5
+ .TP
6
+ .B goto\-synthesizer [\-?] [\-h] [\-\- help]
7
+ show help
8
+ .TP
9
+ .B goto\-synthesizer \-\- version
10
+ show version and exit
11
+ .TP
12
+ .B goto\-synthesizer [options] \fI in \fR [\fI out \fR ]
13
+ perform synthesis and loop-contracts transformation
14
+ .SH DESCRIPTION
15
+ \fB goto-synthesis \fR reads a GOTO binary, performs loop-contracts synthesis and
16
+ program transformation for the synthesized contracts, and then writes the
17
+ resulting program as GOTO binary on disk.
18
+ .SH OPTIONS
19
+ .SS "User-interface options:"
20
+ .TP
21
+ \fB \-\- xml \- ui \fR
22
+ use XML\- formatted output
23
+ .TP
24
+ \fB \-\- json \- ui \fR
25
+ use JSON\- formatted output
26
+ .TP
27
+ \fB \-\- verbosity \fR \fI n \fR
28
+ verbosity level
29
+ .SH ENVIRONMENT
30
+ All tools honor the TMPDIR environment variable when generating temporary
31
+ files and directories.
32
+ .SH BUGS
33
+ If you encounter a problem please create an issue at
34
+ .B https://github.com/diffblue/cbmc/issues
35
+ .SH SEE ALSO
36
+ .BR cbmc (1),
37
+ .BR goto-cc (1)
38
+ .BR goto-instrument (1)
39
+ .SH COPYRIGHT
40
+ 2022, Qinheping Hu
Original file line number Diff line number Diff line change @@ -117,6 +117,7 @@ add_subdirectory(goto-instrument)
117
117
add_subdirectory (goto-analyzer )
118
118
add_subdirectory (goto-diff )
119
119
add_subdirectory (goto-harness )
120
+ add_subdirectory (goto-synthesizer )
120
121
add_subdirectory (symtab2gb )
121
122
122
123
if (UNIX OR WITH_MEMORY_ANALYZER )
Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ DIRS = analyses \
14
14
goto-harness \
15
15
goto-programs \
16
16
goto-symex \
17
+ goto-synthesizer \
17
18
jsil \
18
19
json \
19
20
json-symtab-language \
@@ -36,6 +37,7 @@ all: cbmc.dir \
36
37
goto-diff.dir \
37
38
goto-instrument.dir \
38
39
goto-harness.dir \
40
+ goto-synthesizer.dir \
39
41
symtab2gb.dir \
40
42
# Empty last line
41
43
@@ -104,6 +106,10 @@ memory-analyzer.dir: util.dir goto-programs.dir langapi.dir linking.dir \
104
106
symtab2gb.dir : util.dir goto-programs.dir langapi.dir linking.dir \
105
107
json.dir json-symtab-language.dir ansi-c.dir
106
108
109
+ goto-synthesizer.dir : languages util.dir goto-programs.dir langapi.dir \
110
+ json.dir goto-checker.dir \
111
+ goto-instrument.dir
112
+
107
113
# building for a particular directory
108
114
109
115
$(patsubst % , % .dir, $(DIRS ) ) :
@@ -180,7 +186,7 @@ doc :
180
186
install : all
181
187
for b in \
182
188
cbmc crangler \
183
- goto-analyzer goto-cc goto-diff goto-instrument goto-harness \
189
+ goto-analyzer goto-cc goto-diff goto-instrument goto-harness goto-synthesizer \
184
190
symtab2gb ; do \
185
191
cp $$ b/$$ b $(PREFIX ) /bin/ ; \
186
192
cp ../doc/man/$$ b.1 $(PREFIX ) /doc/man/man1/ ; \
Original file line number Diff line number Diff line change
1
+ # Library
2
+ file (GLOB_RECURSE sources "*.cpp" "*.h" )
3
+ list (REMOVE_ITEM sources
4
+ ${CMAKE_CURRENT_SOURCE_DIR} /goto_synthesizer_main.cpp
5
+ )
6
+ add_library (goto-synthesizer-lib ${sources} )
7
+
8
+ generic_includes (goto-synthesizer-lib )
9
+
10
+ target_link_libraries (goto-synthesizer-lib
11
+ ansi-c
12
+ cpp
13
+ big-int
14
+ goto-checker
15
+ goto-instrument-lib
16
+ goto-programs
17
+ langapi
18
+ util
19
+ json
20
+ )
21
+
22
+ # Executable
23
+ add_executable (goto-synthesizer goto_synthesizer_main.cpp )
24
+ target_link_libraries (goto-synthesizer goto-synthesizer-lib )
25
+ install (TARGETS goto-synthesizer DESTINATION ${CMAKE_INSTALL_BINDIR} )
26
+
27
+ # Man page
28
+ if (NOT WIN32 )
29
+ install (
30
+ DIRECTORY ${CMAKE_SOURCE_DIR} /doc/man/
31
+ DESTINATION ${CMAKE_INSTALL_MANDIR} /man1
32
+ FILES_MATCHING PATTERN "goto-synthesizer*" )
33
+ endif ()
Original file line number Diff line number Diff line change
1
+ SRC = goto_synthesizer_languages.cpp \
2
+ goto_synthesizer_main.cpp \
3
+ goto_synthesizer_parse_options.cpp \
4
+ # Empty last line
5
+
6
+ OBJ += ../ansi-c/ansi-c$(LIBEXT ) \
7
+ ../cpp/cpp$(LIBEXT ) \
8
+ ../linking/linking$(LIBEXT ) \
9
+ ../big-int/big-int$(LIBEXT ) \
10
+ ../goto-checker/goto-checker$(LIBEXT ) \
11
+ ../goto-programs/goto-programs$(LIBEXT ) \
12
+ ../langapi/langapi$(LIBEXT ) \
13
+ ../util/util$(LIBEXT ) \
14
+ ../json/json$(LIBEXT ) \
15
+ # Empty last line
16
+
17
+ INCLUDES = -I ..
18
+
19
+ LIBS =
20
+
21
+ CLEANFILES = goto-synthesizer$(EXEEXT ) goto-synthesizer$(LIBEXT )
22
+
23
+ include ../config.inc
24
+ include ../common
25
+
26
+ all : goto-synthesizer$(EXEEXT )
27
+
28
+ # ##############################################################################
29
+
30
+ goto-synthesizer$(EXEEXT ) : $(OBJ )
31
+ $(LINKBIN )
32
+
33
+ .PHONY : goto-synthesizer-mac-signed
34
+
35
+ goto-synthesizer-mac-signed : goto-synthesizer$(EXEEXT )
36
+ codesign -v -s $(OSX_IDENTITY ) goto-synthesizer$(EXEEXT )
Original file line number Diff line number Diff line change
1
+ \ingroup module_hidden
2
+ \defgroup goto-synthesizer goto-synthesizer
3
+
4
+ # Folder goto-synthesizer
5
+
6
+ \author Qinheping Hu
7
+
8
+ The ` goto-synthesizer/ ` contains all processing of loop-contracts synthesizer.
Original file line number Diff line number Diff line change
1
+ /* ******************************************************************\
2
+ Module: Language Registration
3
+ Author: Qinheping Hu
4
+ \*******************************************************************/
5
+
6
+ // / \file
7
+ // / Language Registration
8
+
9
+ #include < ansi-c/ansi_c_language.h>
10
+ #include < cpp/cpp_language.h>
11
+ #include < langapi/mode.h>
12
+
13
+ #include " goto_synthesizer_parse_options.h"
14
+
15
+ void goto_synthesizer_parse_optionst::register_languages ()
16
+ {
17
+ register_language (new_ansi_c_language);
18
+ register_language (new_cpp_language);
19
+ }
Original file line number Diff line number Diff line change
1
+ /* ******************************************************************\
2
+ Module: Main Module
3
+ Author: Qinheping Hu
4
+ \*******************************************************************/
5
+
6
+ // / \file
7
+ // / Main Module
8
+
9
+ #ifdef _MSC_VER
10
+ # include < util/unicode.h>
11
+ #endif
12
+
13
+ #include " goto_synthesizer_parse_options.h"
14
+
15
+ #ifdef _MSC_VER
16
+ int wmain (int argc, const wchar_t **argv_wide)
17
+ {
18
+ auto vec = narrow_argv (argc, argv_wide);
19
+ auto narrow = to_c_str_array (std::begin (vec), std::end (vec));
20
+ auto argv = narrow.data ();
21
+ #else
22
+ int main (int argc, const char **argv)
23
+ {
24
+ #endif
25
+ goto_synthesizer_parse_optionst parse_options (argc, argv);
26
+ return parse_options.main ();
27
+ }
You can’t perform that action at this time.
0 commit comments