<div dir="ltr"><div>For the "n" statement not stepping over a i386 hello_world app, it looks like we don't have unwind info for the printf plt.</div><div><br></div><div>They do exist in the binary:</div><div>
<br></div>> mikesart@mikesart-rad:~/data/src/blah/build32$ readelf --debug-dump=frames --wide hello_world<br>> Contents of the .eh_frame section:<br>> <br>> 00000000 00000014 00000000 CIE<br>> Version: 1<br>
> Augmentation: "zR"<br>> Code alignment factor: 1<br>> Data alignment factor: -4<br>> Return address column: 8<br>> Augmentation data: 1b<div>><br>> DW_CFA_def_cfa: r4 (esp) ofs 4<br>
> DW_CFA_offset: r8 (eip) at cfa-4<br>> DW_CFA_nop<br>> DW_CFA_nop<div>><br>> 00000018 00000020 0000001c FDE cie=00000000 pc=080484a0..080484e0<br>> DW_CFA_def_cfa_offset: 8<br>> DW_CFA_advance_loc: 6 to 080484a6<br>
> DW_CFA_def_cfa_offset: 12<br>> DW_CFA_advance_loc: 10 to 080484b0<br>> DW_CFA_def_cfa_expression (DW_OP_breg4 (esp): 4; DW_OP_breg8 (eip): 0; DW_OP_lit15; DW_OP_and; DW_OP_lit11; DW_OP_ge; DW_OP_lit2; DW_OP_shl; DW_OP_plus)<div>
<br><div>But lldb either can't find them or they've failed to load.</div><div class="gmail_extra"><br>> Process 4045 stopped<br>> * thread #1: tid = 4045, 0x080484d0 hello_world, name = 'hello_world', stop reason = instruction step into<br>
> frame #0: 0x080484d0 hello_world<br>> -> 0x80484d0: jmp dword ptr [0x804a008]<br>> 0x80484d6: push 0x10<br>> 0x80484db: jmp 0x80484a0 ; hello_world..plt + 0<br>> hello_world`_start + 64:<br>
> 0x80484e0: xor ebp, ebp</div><div class="gmail_extra">><br>> (lldb) target modules show-unwind -a 0x80484d0<br>> (lldb) <div class="gmail_extra"><br></div><div class="gmail_extra">Unwind info does exist for addresses in main(), and all of this works as expected in x64.<br>
</div><div class="gmail_extra"><br></div><div class="gmail_extra">I'll start debugging where this is failing...</div><div class="gmail_extra"> -Mike</div></div></div></div></div></div>