Skip to content
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

Incorrect stack region identification #263

Open
Tracked by #270
l-kent opened this issue Oct 30, 2024 · 0 comments
Open
Tracked by #270

Incorrect stack region identification #263

l-kent opened this issue Oct 30, 2024 · 0 comments
Assignees

Comments

@l-kent
Copy link
Contributor

l-kent commented Oct 30, 2024

For correct/functionpointer/clang:GTIRB, there is an issue with the stack regions. This is an excerpt of the output:

    R29, Gamma_R29 := bvadd64(R31, 32bv64), Gamma_R31;
    stack_9, Gamma_stack_9 := memory_store32_le(stack_9, bvadd64(R29, 18446744073709551612bv64), 0bv32), gamma_store32(Gamma_stack_9, bvadd64(R29, 18446744073709551612bv64), true);
    assume {:captureState "1872$0"} true;
    stack_20, Gamma_stack_20 := memory_store32_le(stack_20, bvadd64(R29, 18446744073709551608bv64), R0[32:0]), gamma_store32(Gamma_stack_20, bvadd64(R29, 18446744073709551608bv64), Gamma_R0);
    assume {:captureState "1876$0"} true;
    R8, Gamma_R8 := zero_extend32_32(memory_load32_le(stack_8, bvadd64(R29, 18446744073709551608bv64))), gamma_load32(Gamma_stack_8, bvadd64(R29, 18446744073709551608bv64));

The accesses to regions stack_20 and stack_8 both have the same address (R29 - 8 == R31 + 24) but have different regions. This is incorrect.

This seems to only happen some of the time (sometimes the functionpointer/clang_pic:GTIRB variant is affected too or separately), so it may be some weird iteration-order issue with iterating over a Set or something?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants