DavidSpickett wrote: dwarfdump: [arm_dwarfdump.txt](https://github.com/user-attachments/files/17598949/arm_dwarfdump.txt) (this doesn't seem different to what AArch64 produces) objdump: [arm_objdump.txt](https://github.com/user-attachments/files/17598953/arm_objdump.txt) stepping log: [arm_step_log.txt](https://github.com/user-attachments/files/17598983/arm_step_log.txt)
In the log file I break on main then step (`n`) once. It might be relevant that we don't use hardware single step on Arm 32 bit (it exists we just don't use it). So perhaps the combination of software single step and this inlined function is a problem. I noticed that although you can step into (`s`) and out of (`fin`) the inlined function, if I did instruction steps (`ni`), lldb would not recognise that it was inside the inlined function: ``` (lldb) ni Process 1792462 stopped * thread #1, name = 'a.out', stop reason = instruction step over frame #0: 0x00400558 a.out`main(argc=1, argv=0xfffef3d4) at calling.cpp:11:5 8 9 int main (int argc, char **argv) { 10 inline_value = 0; // Stop here and step over to set up stepping over. -> 11 inline_trivial_1 (); // At inline_trivial_1 called from main. 12 return 0; 13 } (lldb) dis a.out`main: 0x40052c <+0>: push {r11, lr} 0x400530 <+4>: mov r11, sp 0x400534 <+8>: sub sp, sp, #12 0x400538 <+12>: movw r2, #0x0 0x40053c <+16>: str r2, [r11, #-0x4] 0x400540 <+20>: str r0, [sp, #0x4] 0x400544 <+24>: str r1, [sp] 0x400548 <+28>: movw r0, #0x0 0x40054c <+32>: ldr r1, [pc, #0x14] ; <+60> at calling.cpp 0x400550 <+36>: add r1, pc, r1 0x400554 <+40>: str r0, [r1] -> 0x400558 <+44>: nop 0x40055c <+48>: movw r0, #0x0 0x400560 <+52>: mov sp, r11 0x400564 <+56>: pop {r11, pc} 0x400568 <+60>: andeq r0, r1, r4, ror #21 (lldb) bt * thread #1, name = 'a.out', stop reason = instruction step over * frame #0: 0x00400558 a.out`main(argc=1, argv=0xfffef3d4) at calling.cpp:11:5 frame #1: 0xf7c8d7d6 libc.so.6`__libc_start_call_main(main=(a.out`main at calling.cpp:9), argc=1, argv=0xfffef3d4) at libc_start_call_main.h:58:16 frame #2: 0xf7c8d886 libc.so.6`__libc_start_main_impl(main=(a.out`main at calling.cpp:9), argc=0, argv=0xf7d8e000, init=<unavailable>, fini=0x00000000, rtld_fini=(ld-linux-armhf.so.3`_dl_fini + 1 at dl-fini.c:51:20), stack_end=0xfffef3d4) at libc-start.c:392:3 frame #3: 0x00400458 a.out`_start + 40 ``` If I add a second nop, it will realise it's in the inlined function when it gets to the second nop. https://github.com/llvm/llvm-project/pull/114295 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits