Re: gdb won't single-step over ARM integer divide opcode
John Breitenbach <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <[email protected]> |
Yao, Yes, your patch does work for me. Sorry for not noticing your patch earlier. John On 08/09/2015 07:39 AM, Yao Qi wrote: > On 05/08/15 19:02, John Breitenbach wrote: >> I did some debugging and have found that the function, >> arm_get_next_pc_raw, inappropriately decodes this opcode as a load into >> the PC register. (bits 24..27 are 7, bit 20 is set, and the dest >> register appears to be the PC. >> >> Binutils's logic to disassemble the sdiv/udiv opcodes has opcode & >> 0x0ff0f0f0 = 0x0710f010 (with bit 21 distinguishing between udiv and >> sdiv) >> >> I've come up with the following patch which makes my situation work. But >> I don't know how complete it is, as there may be other newer opcodes >> which fall into the formerly undefined instruction space. > > Hi John, > Thanks for your patch, however, I think I've fixed this problem in > patch https://sourceware.org/ml/gdb-patches/2015-06/msg00610.html > Does it work for you? This commit will be in 7.10 release. > >> >> Also, the comment "byte write to PC" around line 4930 seems wrong, as >> the check for bit 22 a few lines earlier catches that situation, and >> what's left is word writes to the PC." >> > > Yeah, it is possible. Patch is welcome :) >