[klee-dev] KLEE klee.ctor_stub Function Behavior and Symbolization Inquiry

刘乔森 liuqiaosen666 at 163.com
Mon Jul 21 13:50:50 BST 2025


Hello KLEE Developer Team,

I've recently been using KLEE for symbolic execution of a large program. To precisely control the entry point for symbolic execution, I've wrapped an API function, klee_entry, as my entry point. Inside klee_entry, I symbolize global variables and concretize their pointer members before calling the target function to begin symbolic execution.

However, during actual execution, I've noticed that klee_entry calls the klee.ctor_stub function. This function appears to invoke constructors for some global variables, seemingly for initialization. This seems redundant since I've already manually symbolized these global variables.

I have a couple of questions regarding this behavior:

What is the specific purpose of the klee.ctor_stub function? Is it related to the initialization of vtables (i.e., indirect calls)?

Within the klee_entry function, is klee.ctor_stub called before or after klee_make_symbolic is used to symbolize variables? In other words, is the execution of klee.ctor_stub also subject to KLEE's symbolic execution?

On a related note, how does KLEE generally handle indirect calls (e.g., through function pointers or virtual functions) during symbolic execution?

Thank you for your assistance!

Sincerely,

lqs66
-------------- next part --------------
HTML attachment scrubbed and removed


More information about the klee-dev mailing list