On Fri, Nov 21, 2014 at 7:51 PM, Bill Williams <b...@cs.wisc.edu> wrote:

> On 11/21/2014 11:36 AM, Josh Stone wrote:
>
>> On 11/21/2014 01:02 AM, Adrian M Negreanu wrote:
>>
>>> I tried to instrument a strip-ed chrome, as a workaround the
>>> processCreate issue(s) , only to find another problem, this time in
>>> image::findMain()
>>>
>>
>> As a workaround, since you're the one stripping it, you can try
>> stripping slightly less.  Just removing debuginfo with "strip -g" might
>> be enough to improve your processCreate issues, or use "strip -K main"
>> to at least keep main in the symbol table, making findMain unnecessary.
>>
>>  findMain() assumes the entry point address to be an immediate operand:
>>>   mov    $0x40051b,%rdi
>>>   callq  0x7ffff7fef3f0
>>>
>>> For chrome, I found this instead
>>>   lea -0x34f7(%rip),%rdi
>>>   callq 26f20 <__libc_start_main@plt>
>>>
>>> Josh found the same issue with a strip-ed stap, or as he put it
>>>   "/usr/bin/stap is PIE, and I removed the debuginfo package"
>>>
>>> Any suggestions for this one ?
>>>
>>
>> I think ideally this should find the call in question, then use the
>> dataflowAPI to slice back and find the value of %rdi at this point.  I
>> hope that's smart enough to evaluate things like -0x34f7(%rip), but I
>> haven't played with it much.  PPC does something similar for r8.
>>
>> On 32-bit x86, we'll want the last value on the stack instead.
>>
>
> The findMain logic here is sound, but I want to point out that stripping
> chrome is not actually going to help.
>

So it's sound to expect an immediate value for -pie binaries ? This
eventually returns NULL, and
in that case the boostrap fails.
The strip-ing indeed, it doesn't fix the "processCreate taking too long",
it only makes a bit bearable.



> Assuming that you don't need the preFork callback, chopping out the
> preFork instrumentation should be easy enough; I can send out a patch
> (probably late this afternoon or Monday) that implements the change I
> discussed in my most recent email if you want a slightly more polished
> version that doesn't break preFork wholesale.
>

Cool. I'll wait for the patch then.
_______________________________________________
Dyninst-api mailing list
Dyninst-api@cs.wisc.edu
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api

Reply via email to