[DynInst_API:] Telling DynInst a particular function is non-returning


Date: Thu, 15 Mar 2018 09:14:36 +0100
From: Thomas Dullien <thomasdullien@xxxxxxxxxx>
Subject: [DynInst_API:] Telling DynInst a particular function is non-returning
Hey there,

I am running into troubles with disassembling executables generated by
clang.3.8.1-24, for x64, with optimization set to size-optimize and stack cookies
enabled.

The trouble is that any function with an enabled stack cookie will end with a sequence
of:

 Epilogue to check stack cookie
 jnz .fail
 Rest of epilogue.
 retn
.fail:
 call __stack_checkfail  Â// Does not return

This leads to DynInst lumping all consecutive functions that use stack cookies
into one huge CFG.

Is there a way to tell DynInst that a particular function is not returning? I found
that the parseAPI allows me to query if a function returns, but I did not find anything
to "override" this behavior?

Cheers,
Thomas
[← Prev in Thread] Current Thread [Next in Thread→]