-
Notifications
You must be signed in to change notification settings - Fork 273
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
Prefix identifiers in stubs with function name #2270
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
public class Opaque extends Exception | ||
{ | ||
public static Opaque static_field; | ||
public Opaque field; | ||
|
||
public Opaque(Opaque o) { | ||
} | ||
|
||
public static Opaque static_method(Opaque o) { | ||
return o; | ||
} | ||
|
||
public Opaque[] method(Opaque[] o) { | ||
return o; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
public class Test | ||
{ | ||
public static void f00(Opaque z) | ||
{ | ||
try { | ||
Opaque x = new Opaque(Opaque.static_field); | ||
Opaque[] a = {Opaque.static_method(x.field), z}; | ||
Opaque[] y = x.method(a); | ||
throw y[0]; | ||
} catch(Opaque o) { | ||
} | ||
} | ||
public Opaque f01(Opaque z) | ||
{ | ||
try { | ||
Opaque x = new Opaque(Opaque.static_field); | ||
Opaque[] a = {Opaque.static_method(x.field), z}; | ||
Opaque[] y = x.method(a); | ||
throw y[0]; | ||
} catch(Opaque o) { | ||
return o; | ||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
CORE symex-driven-lazy-loading-expected-failure | ||
Test.class | ||
--show-symbol-table | ||
^EXIT=0$ | ||
^SIGNAL=0$ | ||
^Symbol\.*: java::Opaque\.static_method:\(LOpaque;\)LOpaque;::malloc_site\$[0-3]?$ | ||
^Symbol\.*: java::Opaque\.method:\(\[LOpaque;\)\[LOpaque;::malloc_site\$[0-3]?$ | ||
-- | ||
^Symbol\.*: malloc_site | ||
^Symbol\.*: to_construct | ||
^Symbol\.*: to_return | ||
^Symbol\.*: this | ||
^Symbol\.*: caught_exception | ||
^Symbol\.*: anonlocal | ||
^Symbol\.*: stub_ignored_arg | ||
^Symbol\.*: #return_value | ||
^Symbol\.*: return_tmp | ||
^Symbol\.*: new_tmp | ||
^Symbol\.*: tmp_new_data_array | ||
^Symbol\.*: newarray_tmp | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add positive conditions too? At the moment There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That would be perfectly fine. I only want to check that no non-prefixed variables are generated - these break goto-diff. I added two checks if this is preferred. |
||
-- | ||
Does not work with symex-driven lazy loading because we want to check the | ||
symbol table for the entire program. |
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.
Add a comment regarding why this doesn't work with symex-driven loading