[klee-dev] adding setjmp/longjmp support?
Nowack, Martin
m.nowack at imperial.ac.uk
Fri Jun 9 23:37:29 BST 2023
Hi Dan,
We are always looking for contributors and contributions ;)
A good starting point for KLEE development is: https://klee.github.io/docs/developers-guide/
>From a technical perspective, it is not trivial but not too hard either.
The main function you are interested in is `Executor::executeCall`: https://github.com/klee/klee/blob/b926b3d49d7650ba76c81f4dfe0fd9aad44150d2/lib/Core/Executor.cpp#L1679
Familiarise yourself with it to get an idea how it works.
In a nutshell for your project:
* Handle the `Setjmp` function call
- resolve the buffer argument to a valid memory object
- save the current ExectionState::prevPc into that buffer
- save the current stack depth into this buffer
- set the target value to `0`
* Handle the `Longjmp` function call:
- resolve the buffer argument to a valid memory object
- preserve the longmp value
- load `prevPC`
- load the targeted stack depth
- unroll the stack by using the stack depth
- set the PC to the loaded prevPC
- set the result of the `Setjmp` argument to the longjmp argument value
Those are all quite some steps but all this functionality should happen inside of this single function mentioned above.
I hope those will get you started.
Let us know, if anything is unclear.
All the best,
Martin
> On 3. Jun 2023, at 18:26, Dan Hoffman <dhoff749 at gmail.com> wrote:
>
> I'm looking to apply KLEE to a program that heavily uses co-routines.
> These syscalls aren't implemented, so I'm investigating whether a
> patch can be written/upstreamed. This is my first patch for KLEE (but
> I have written patches for other large open-source projects). A few
> questions:
> 1. Are there any hard/technical reasons why this is
> impossible/impractical? Threading is impractical because the
> scheduling is another set of variables, but co-routines have
> deterministic scheduling by definition, so that shouldn't be an issue.
> 2. What are some good small/beginner issues to familiarize myself
> with the code and patch submission process? I'm somewhat familiar with
> LLVM internals from previous projects/my job.
>
> Thanks!
>
> _______________________________________________
> klee-dev mailing list
> klee-dev at imperial.ac.uk
> https://mailman.ic.ac.uk/mailman/listinfo/klee-dev
More information about the klee-dev
mailing list