When I read arm-tdep.c:copy_ldr_str_ldrb_strb, I feel pretty hard to understand two lines of code, dsc->modinsn[0] = 0xe58ff014; /* str pc, [pc, #20]. */ dsc->modinsn[1] = 0xe59f4010; /* ldr r4, [pc, #16]. */ Shall program get SIGSEGV when executing `str pc, [pc, #20]' during displaced stepping? A simple test case confirmed my guess, which is included in arm-disp-step.S in this patch. If it is a bug here, this patch is to address it. These two lines of code is to compute the offset of `str pc'. In this patch, we can do this in a different way, str pc, [sp, #-4] ldr r4, [sp, #-4] OK for mainline and 7.2 branch? -- Yao (齐尧)