Dear Nikulichev:
Thanks for your advise. But traverse all functions in the binary is very 
time-consuming. I want to check the binary while sampling them.
It seems this is no solution.


Regards
Chenggang





At 2014-12-09 17:01:29, "Vladimir Nikulichev" <[email protected]> wrote:
>I think you should parse frame information in a binary and check whether all 
>functions have such pattern:
>
>00000050 000000000000001c 00000054 FDE cie=00000000 
>pc=00000000000365e0..0000000000036606
>  DW_CFA_advance_loc: 1 to 00000000000365e1
>  DW_CFA_def_cfa_offset: 16
>  DW_CFA_offset: r6 (rbp) at cfa-16
>  DW_CFA_advance_loc: 3 to 00000000000365e4
>  DW_CFA_def_cfa_register: r6 (rbp)
>
>You can play around with readelf --debug-dump=frames to see more examples.
>Dwarf specification may be helpful: http://www.dwarfstd.org/Download.php
>
>--
>Vladimir
>
>> On 09 Dec 2014, at 11:34, Chenggang <[email protected]> wrote:
>> 
>> Hi, all:
>>      I want to unwind the call trace of a binary or kernel (linux). If I can 
>> decide whether the binary or kernel use the frame pointers, I can process 
>> the stack in 2 different ways. While they use the frame pointer, I can walk 
>> the stack in a while loop. While they don't use the frame pointers, I can 
>> copy the stack into user space, and unwind it with libunwind, like perf 
>> events.
>>     So, is there any way to decide the binary is compiled with frame 
>> pointers on the fly?
>> 
>> regards
>> Chenggang
>> 
>> thanks
>> 
>> 
>> _______________________________________________
>> Libunwind-devel mailing list
>> [email protected]
>> https://lists.nongnu.org/mailman/listinfo/libunwind-devel
>
_______________________________________________
Libunwind-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to