diff options
author | Jiri Slaby <jslaby@suse.cz> | 2014-10-24 10:48:43 +0200 |
---|---|---|
committer | Jiri Slaby <jslaby@suse.cz> | 2016-07-11 17:20:47 +0200 |
commit | a6b2f63dbf0dd4498409d3caaf34eaccea3019ea (patch) | |
tree | b3c2c832d3f8fb119a9384dfb6ab77cd23bd6bea /test | |
parent | c1037080cb61ec6d5d8af3db97a6ad5f35d7af31 (diff) | |
download | klee-a6b2f63dbf0dd4498409d3caaf34eaccea3019ea.tar.gz |
Executor: do not crash on non-sized globals
Sometimes, globals are not sized and ->getTypeStoreSize on such type crashes inside the LLVM. Check whether type is sized prior to calling the function above. A minimalistic example of Y being unsized with no effect on the actual code is put to tests. [v2] Use klee_warning for printing. And use %.*s formatting string given StringRef.data() need not be null terminated. Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Diffstat (limited to 'test')
-rw-r--r-- | test/Feature/NonSizedGlobals.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/test/Feature/NonSizedGlobals.c b/test/Feature/NonSizedGlobals.c new file mode 100644 index 00000000..b98f7bf1 --- /dev/null +++ b/test/Feature/NonSizedGlobals.c @@ -0,0 +1,12 @@ +// RUN: %llvmgcc %s -emit-llvm -g -c -o %t1.bc +// RUN: rm -rf %t.klee-out +// RUN: %klee --output-dir=%t.klee-out --exit-on-error %t1.bc + +struct X; +extern struct X Y; +void *ptr = &Y; + +int main() +{ + return 0; +} |