Skip to content

Commit 1893fdb

Browse files
author
Daniel Kroening
authored
Merge pull request #3440 from diffblue/smt2_diagnostic_output
smt2_solver: SMT2-specific message output
2 parents 23932b8 + 9249423 commit 1893fdb

File tree

3 files changed

+48
-30
lines changed

3 files changed

+48
-30
lines changed

Diff for: regression/smt2_solver/function-applications/function-application2.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ function-application2.smt2
33

44
^EXIT=134$
55
^SIGNAL=0$
6-
^line 5: type mismatch in function definition: expected `\(_ BitVec 16\)' but got `\(_ BitVec 8\)'$
6+
^\(error "line 5: type mismatch in function definition: expected `\(_ BitVec 16\)' but got `\(_ BitVec 8\)'"\)$
77
--

Diff for: scripts/delete_failing_smt2_solver_tests

+16-25
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ rm Array_operations1/test.desc
88
rm BV_Arithmetic6/test.desc
99
rm Bitfields1/test.desc
1010
rm Bitfields3/test.desc
11+
rm Boolean_Guards1/test.desc
12+
rm Computed-Goto1/test.desc
1113
rm Division2/test.desc
12-
rm Double-to-float-no-simp1/test.desc
13-
rm Double-to-float-no-simp1-fix1/test.desc
14-
rm Double-to-float-no-simp1-fix2/test.desc
1514
rm Empty_struct1/test.desc
1615
rm Endianness3/test.desc
1716
rm Endianness4/test.desc
@@ -20,33 +19,24 @@ rm Endianness7/test.desc
2019
rm Fixedbv3/test.desc
2120
rm Fixedbv5/test.desc
2221
rm Fixedbv6/test.desc
23-
rm Float-Rounding1/test.desc
24-
rm Float-div1/test.desc
2522
rm Float-div2/test.desc
2623
rm Float-div3/test.desc
27-
rm Float-flags-no-simp1/test.desc
28-
rm Float-flags-simp1/test.desc
2924
rm Float-no-simp1/test.desc
3025
rm Float-no-simp2/test.desc
3126
rm Float-no-simp3/test.desc
3227
rm Float-no-simp4/test.desc
3328
rm Float-no-simp5/test.desc
3429
rm Float-no-simp6/test.desc
3530
rm Float-no-simp7/test.desc
36-
rm Float-no-simp8/test.desc
37-
rm Float-no-simp9/test.desc
3831
rm Float-smt2-1/test.desc
39-
rm Float-to-double1/test.desc
4032
rm Float-to-double2/test.desc
4133
rm Float-to-int1/test.desc
4234
rm Float-to-int2/test.desc
4335
rm Float-to-int3/test.desc
4436
rm Float-zero-sum1/test.desc
4537
rm Float12/test.desc
4638
rm Float13/test.desc
47-
rm Float19/test.desc
4839
rm Float20/test.desc
49-
rm Float21/test.desc
5040
rm Float22/test.desc
5141
rm Float23/test.desc
5242
rm Float24/test.desc
@@ -61,27 +51,32 @@ rm Function_Pointer3/test.desc
6151
rm Initialization6/test.desc
6252
rm Linking4/test.desc
6353
rm Linking7/test.desc
54+
rm Local_out_of_scope3/test.desc
6455
rm Malloc17/test.desc
6556
rm Malloc18/test.desc
6657
rm Malloc19/test.desc
67-
rm Malloc20/test.desc
6858
rm Malloc21/test.desc
6959
rm Malloc23/test.desc
7060
rm Malloc24/test.desc
71-
rm Memmove1/test.desc
7261
rm Memory_leak1/test.desc
7362
rm Memory_leak2/test.desc
63+
rm Multi_Dimensional_Array1/test.desc
7464
rm Multi_Dimensional_Array2/test.desc
65+
rm Multi_Dimensional_Array3/test.desc
7566
rm Multi_Dimensional_Array4/test.desc
7667
rm Multi_Dimensional_Array6/test.desc
7768
rm Multiple_Properties1/test.desc
7869
rm Overflow_Leftshift1/test.desc
7970
rm Overflow_Subtraction1/test.desc
71+
rm Pointer_Arithmetic1/test.desc
8072
rm Pointer_Arithmetic10/test.desc
8173
rm Pointer_Arithmetic11/test.desc
8274
rm Pointer_Arithmetic12/test.desc
8375
rm Pointer_Arithmetic6/test.desc
76+
rm Pointer_array3/test.desc
77+
rm Pointer_array4/test.desc
8478
rm Pointer_array5/test.desc
79+
rm Pointer_array6/test.desc
8580
rm Pointer_byte_extract2/test.desc
8681
rm Pointer_byte_extract3/test.desc
8782
rm Pointer_byte_extract4/test.desc
@@ -105,7 +100,7 @@ rm Quantifiers-two-dimension-array/test.desc
105100
rm Quantifiers-type/test.desc
106101
rm Quantifiers1/test.desc
107102
rm Recursion5/test.desc
108-
rm String6/test.desc
103+
rm String2/test.desc
109104
rm Struct_Bytewise1/test.desc
110105
rm Struct_Bytewise2/test.desc
111106
rm Struct_Initialization2/test.desc
@@ -140,14 +135,13 @@ rm equality_through_array_of_struct3/test.desc
140135
rm equality_through_array_of_struct4/test.desc
141136
rm equality_through_struct_containing_arrays1/test.desc
142137
rm equality_through_struct_containing_arrays2/test.desc
143-
rm equality_through_struct_containing_arrays3/test.desc
144138
rm equality_through_union1/test.desc
145139
rm equality_through_union2/test.desc
146140
rm equality_through_union3/test.desc
147-
rm fgets1/test.desc
148141
rm full_slice1/test.desc
149142
rm full_slice2/test.desc
150143
rm gcc_bswap1/test.desc
144+
rm gcc_c99-bool-1/test.desc
151145
rm gcc_statement_expression4/test.desc
152146
rm gcc_switch_case_range1/test.desc
153147
rm gcc_switch_case_range2/test.desc
@@ -157,31 +151,27 @@ rm graphml_witness1/test.desc
157151
rm havoc_object1/test.desc
158152
rm hex_trace/test.desc
159153
rm if2/test.desc
160-
rm inet_endian1/test.desc
161-
rm int-to-float2/test.desc
162154
rm integer-assignments1/test.desc
163155
rm little-endian-array1/test.desc
164156
rm memory_allocation1/test.desc
157+
rm memset1/test.desc
165158
rm memset3/test.desc
166159
rm mm_io1/test.desc
167-
rm nested_label1/test.desc
168160
rm no_nondet_static/test.desc
169-
rm pipe1/test.desc
161+
rm null1/test.desc
170162
rm pointer-function-parameters/test.desc
171163
rm pointer-function-parameters-2/test.desc
172-
rm read1/test.desc
173-
rm realloc1/test.desc
174-
rm realloc2/test.desc
175164
rm scanf1/test.desc
176165
rm simple_assert/test.desc
177166
rm stack-trace/test.desc
178-
rm strcat1/test.desc
179167
rm struct10/test.desc
180168
rm struct6/test.desc
181169
rm struct7/test.desc
182170
rm struct9/test.desc
183171
rm trace-values/trace-values.desc
184172
rm trace_address_arithmetic1/test.desc
173+
rm trace_options_json_extended/extended.desc
174+
rm trace_options_json_extended/non-extended.desc
185175
rm trace_show_function_calls/test.desc
186176
rm uncaught_exceptions_analysis1/test.desc
187177
rm uniform_array1/test.desc
@@ -192,6 +182,7 @@ rm union7/test.desc
192182
rm union8/test.desc
193183
rm union9/test.desc
194184
rm unsigned___int128/test.desc
185+
rm variable-access-to-constant-array/test.desc
195186
rm void_pointer2/test.desc
196187
rm void_pointer3/test.desc
197188
rm void_pointer4/test.desc

Diff for: src/solvers/smt2/smt2_solver.cpp

+31-4
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ Author: Daniel Kroening, [email protected]
1111

1212
#include "smt2_parser.h"
1313

14+
#include <util/message.h>
1415
#include <util/namespace.h>
15-
#include <util/symbol_table.h>
16-
#include <util/cout_message.h>
17-
#include <util/simplify_expr.h>
1816
#include <util/replace_symbol.h>
17+
#include <util/simplify_expr.h>
18+
#include <util/symbol_table.h>
1919

2020
#include <solvers/sat/satcheck.h>
2121
#include <solvers/flattening/boolbv.h>
@@ -216,12 +216,39 @@ void smt2_solvert::command(const std::string &c)
216216
}
217217
}
218218

219+
class smt2_message_handlert : public message_handlert
220+
{
221+
public:
222+
void print(unsigned level, const std::string &message) override
223+
{
224+
message_handlert::print(level, message);
225+
226+
if(level < 4) // errors
227+
std::cout << "(error \"" << message << "\")\n";
228+
else
229+
std::cout << "; " << message << '\n';
230+
}
231+
232+
void print(unsigned level, const xmlt &xml) override
233+
{
234+
}
235+
236+
void print(unsigned level, const jsont &json) override
237+
{
238+
}
239+
240+
void flush(unsigned) override
241+
{
242+
std::cout << std::flush;
243+
}
244+
};
245+
219246
int solver(std::istream &in)
220247
{
221248
symbol_tablet symbol_table;
222249
namespacet ns(symbol_table);
223250

224-
console_message_handlert message_handler;
251+
smt2_message_handlert message_handler;
225252
messaget message(message_handler);
226253

227254
// this is our default verbosity

0 commit comments

Comments
 (0)