Date: | Fri, 16 Mar 2018 16:39:28 +0100 |
---|---|
From: | Thomas Dullien <thomasdullien@xxxxxxxxxx> |
Subject: | Re: [DynInst_API:] Telling DynInst a particular function is non-returning |
Hey there, ok, tracing this a bit further, I have some more questions :-) If I am not mistaken, the code around Parser.C, line 1013 is supposed to deal with calls to non-returning targets? is_nonret = obj().cs()->nonReturning(target); if (is_nonret) { Â.... Now, in my example, for some reason the .plt.got stub function that jmps straight to cs:__stack_chk_fail is not a function: .plt.got:0000000000001030 __stack_chk_fail proc near       ; CODE XREF: postproc_version:loc_11D0âp .plt.got:0000000000001030                    Â; postproc_configuration:loc_1202âp ... .plt.got:0000000000001030        Âjmp  Âcs:__stack_chk_fail_ptr .plt.got:0000000000001030 __stack_chk_fail endp So when nonReturning(0x1030) is called, no function gets returned in SymtabCodeSource::nonReturning while calling findFuncByEntryOffset, and then the code mistakenly adds the fallthrough edge. I am still finding my way through the codebase - but I presume there is some initial pass that is supposed to create functions from the stubs in the PLT and check them for non-returning status? Cheers, Thomas On Thu, Mar 15, 2018 at 6:33 PM, Thomas Dullien <thomasdullien@xxxxxxxxxx> wrote:
|
Previous by Date: | Re: [DynInst_API:] Telling DynInst a particular function is non-returning, Thomas Dullien |
---|---|
Next by Date: | Re: [DynInst_API:] Telling DynInst a particular function is non-returning, Thomas Dullien |
Previous by Thread: | Re: [DynInst_API:] Telling DynInst a particular function is non-returning, Thomas Dullien |
Next by Thread: | Re: [DynInst_API:] Telling DynInst a particular function is non-returning, Thomas Dullien |
Indexes: | [Date] [Thread] |