-
Notifications
You must be signed in to change notification settings - Fork 277
Set addr_bits via command line and per language #1161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
b5d4187
Make configt::set_classpath private
peterschrammel 549443b
Factorize setting config from symbol table when reading goto binaries
peterschrammel c624d24
Replace BV_ADDR_BITS by config setting
peterschrammel c29bf8c
Better error message when too many dynamic objects
peterschrammel 18f30a6
Allow specifying object-bits via command line and language defaults
peterschrammel d7715c7
Catch command line parsing exceptions
peterschrammel f4a6dd1
Add java address space limits tests
peterschrammel 12e280f
Tests for overflows in pointer arithmetic
peterschrammel e9b9dd8
Fix getting model for object address (unsigned -> size_t)
peterschrammel ded2d1c
Output message about used object bits settings
peterschrammel File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
public class Test { | ||
int x; | ||
Test(int x) { this.x = x; } | ||
|
||
public static void main(String[] args) { | ||
int i; | ||
Test[] tests = new Test[30]; | ||
for(i = 0; i < 30; ++i) { | ||
tests[i] = new Test(i); | ||
} | ||
assert i == tests[0].x; | ||
} | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
CORE | ||
Test.class | ||
--object-bits 4 | ||
too many addressed objects | ||
-- |
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
public class Test { | ||
int x; | ||
Test(int x) { this.x = x; } | ||
|
||
public static void main(String[] args) { | ||
int i; | ||
Test[] tests = new Test[30]; | ||
for(i = 0; i < 30; ++i) { | ||
tests[i] = new Test(i); | ||
} | ||
assert i == tests[0].x; | ||
} | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
CORE | ||
Test.class | ||
--object-bits 8 | ||
^EXIT=10$ | ||
^SIGNAL=0$ | ||
^VERIFICATION FAILED$ | ||
^\[java::Test.main:\(\[Ljava/lang/String;\)V.assertion.1\] .*: FAILURE$ | ||
-- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
CORE | ||
test.c | ||
--no-simplify --unwind 300 | ||
too many variables | ||
--no-simplify --unwind 300 --object-bits 8 | ||
too many addressed objects | ||
-- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#include <stdlib.h> | ||
#include <assert.h> | ||
|
||
int main(int argc, char** argv) | ||
{ | ||
char* c=(char*)malloc(10); | ||
char* d=c; | ||
for(char i=0; i<10; i++, d++); | ||
assert((size_t)d==(size_t)c+10); | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
KNOWNBUG | ||
test.c | ||
--32 --object-bits 31 --unwind 11 --no-simplify | ||
dynamic object too large | ||
-- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,136 @@ | ||
// copy of Pointer_Arithmetic12 | ||
|
||
#include <stdint.h> | ||
|
||
#include <assert.h> | ||
|
||
uint32_t __stack[32]; | ||
|
||
uint32_t eax; | ||
uint32_t ebp; | ||
uint32_t ebx; | ||
uint32_t ecx; | ||
uint32_t edi; | ||
uint32_t edx; | ||
uint32_t esi; | ||
uint32_t esp=(uint32_t)&(__stack[31]); | ||
uint32_t var0; | ||
uint32_t var1; | ||
uint32_t var10; | ||
uint32_t var11; | ||
uint32_t var12; | ||
uint32_t var13; | ||
uint32_t var14; | ||
uint32_t var15; | ||
uint32_t var16; | ||
uint32_t var2; | ||
uint32_t var3; | ||
uint32_t var4; | ||
uint32_t var5; | ||
uint32_t var6; | ||
uint32_t var7; | ||
uint32_t var8; | ||
uint32_t var9; | ||
|
||
void g__L_0x3b4_0() | ||
{ | ||
L_0x3b4_0: esp-=0x4; | ||
L_0x3b4_1: *(uint32_t*)(esp)=ebp; | ||
L_0x3b5_0: ebp=esp; | ||
L_0x3b7_0: var4=ebp; | ||
L_0x3b7_1: var4+=0xc; | ||
L_0x3b7_2: eax=*(uint32_t*)(var4); | ||
L_0x3ba_0: edx=eax; | ||
L_0x3bc_0: edx&=0x3; | ||
L_0x3bf_0: var5=ebp; | ||
L_0x3bf_1: var5+=0x8; | ||
L_0x3bf_2: eax=*(uint32_t*)(var5); | ||
L_0x3c2_0: *(uint32_t*)(eax)=edx; | ||
L_0x3c4_0: ebp=*(uint32_t*)(esp); | ||
L_0x3c4_1: esp+=0x4; | ||
L_0x3c5_0: return; | ||
} | ||
|
||
void f__L_0x3c6_0() | ||
{ | ||
L_0x3c6_0: esp-=0x4; | ||
L_0x3c6_1: *(uint32_t*)(esp)=ebp; | ||
L_0x3c7_0: ebp=esp; | ||
L_0x3c9_0: esp-=0x18; | ||
L_0x3cc_0: var6=ebp; | ||
L_0x3cc_1: var6-=0x4; | ||
L_0x3cc_2: *(uint32_t*)(var6)=0x0; | ||
L_0x3d3_0: var7=ebp; | ||
L_0x3d3_1: var7-=0x8; | ||
L_0x3d3_2: *(uint32_t*)(var7)=0x0; | ||
L_0x3da_0: var8=ebp; | ||
L_0x3da_1: var8+=0x8; | ||
L_0x3da_2: eax=*(uint32_t*)(var8); | ||
L_0x3dd_0: var9=ebp; | ||
L_0x3dd_1: var9-=0x4; | ||
L_0x3dd_2: *(uint32_t*)(var9)=eax; | ||
L_0x3e0_0: var10=ebp; | ||
L_0x3e0_1: var10-=0x4; | ||
L_0x3e0_2: eax=*(uint32_t*)(var10); | ||
L_0x3e3_0: var11=esp; | ||
L_0x3e3_1: var11+=0x4; | ||
L_0x3e3_2: *(uint32_t*)(var11)=eax; | ||
L_0x3e7_0: var12=ebp; | ||
L_0x3e7_1: var12-=0x8; | ||
L_0x3e7_2: eax=(uint32_t)&*(uint32_t*)(var12); | ||
L_0x3ea_0: *(uint32_t*)(esp)=eax; | ||
L_0x3ed_0: esp-=4; g__L_0x3b4_0(); esp+=4; | ||
L_0x3f2_0: var13=ebp; | ||
L_0x3f2_1: var13-=0x4; | ||
L_0x3f2_2: *(uint32_t*)(var13)=0x5; | ||
L_0x3f9_0: var14=ebp; | ||
L_0x3f9_1: var14-=0x8; | ||
L_0x3f9_2: eax=*(uint32_t*)(var14); | ||
L_0x3fc_0: esp=ebp; | ||
L_0x3fc_1: ebp=*(uint32_t*)(esp); | ||
L_0x3fc_2: esp+=0x4; | ||
L_0x3fd_0: return; | ||
} | ||
|
||
int main() | ||
{ | ||
L_0x3fe_0: esp-=0x4; | ||
L_0x3fe_1: *(uint32_t*)(esp)=ebp; | ||
L_0x3ff_0: ebp=esp; | ||
L_0x401_0: esp-=0x14; | ||
L_0x404_0: var15=ebp; | ||
L_0x404_1: var15-=0x4; | ||
#ifdef NONDET | ||
L_0x404_2: *(uint32_t*)(var15)=nondet_uint(); | ||
#else | ||
L_0x404_2: *(uint32_t*)(var15)=0xffffffff; | ||
#endif | ||
L_0x40b_0: var16=ebp; | ||
L_0x40b_1: var16-=0x4; | ||
L_0x40b_2: eax=*(uint32_t*)(var16); | ||
L_0x40e_0: *(uint32_t*)(esp)=eax; | ||
L_0x411_0: esp-=4; f__L_0x3c6_0(); esp+=4; | ||
#if 1 | ||
uint32_t eax1=eax; | ||
C_0x3ff_0: ebp=esp; | ||
C_0x401_0: esp-=0x14; | ||
C_0x404_0: var15=ebp; | ||
C_0x404_1: var15-=0x4; | ||
#ifdef NONDET | ||
C_0x404_2: *(uint32_t*)(var15)=nondet_uint(); | ||
#else | ||
C_0x404_2: *(uint32_t*)(var15)=0xffffffff; | ||
#endif | ||
C_0x40b_0: var16=ebp; | ||
C_0x40b_1: var16-=0x4; | ||
C_0x40b_2: eax=*(uint32_t*)(var16); | ||
C_0x40e_0: *(uint32_t*)(esp)=eax; | ||
C_0x411_0: esp-=4; f__L_0x3c6_0(); esp+=4; | ||
uint32_t eax2=eax; | ||
assert(eax2==eax1); | ||
#endif | ||
L_0x416_0: esp=ebp; | ||
L_0x416_1: ebp=*(uint32_t*)(esp); | ||
L_0x416_2: esp+=0x4; | ||
L_0x417_0: return 0; | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
CORE | ||
main.c | ||
--32 --little-endian --object-bits 25 --pointer-check | ||
^EXIT=10$ | ||
^SIGNAL=0$ | ||
^VERIFICATION FAILED$ | ||
^.* dereference failure: pointer outside object bounds in .*: FAILURE$ | ||
-- | ||
^warning: ignoring | ||
-- | ||
requires at least 8 offset bits |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please comment either in this test,desc or in the test body what this assembly is testing