[4/7] MIPS: Correct BLEZL single-stepping
Checks
| Context |
Check |
Description |
| linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 |
success
|
Build passed
|
| linaro-tcwg-bot/tcwg_gdb_build--master-arm |
success
|
Build passed
|
Commit Message
From: Maciej W. Rozycki <macro@globalfoundries.com>
Correct `mips32_next_pc' and also consider BLEZL taken for the value of
zero held in the source register as per the instruction's semantics,
restoring `less_zero_branch' label discarded with commit 54f1137d66be
and actually matching the comment present in the source.
Verification will be provided with the test cases in the next change.
Co-Authored-By: Andrew Bennett <andrew.bennett@imgtec.com>
Co-Authored-By: Matthew Fortune <matthew.fortune@mips.com>
Co-Authored-By: Faraz Shahbazker <fshahbazker@wavecomp.com>
Co-Authored-By: Milica Matic <milica.matic@htecgroup.com>
Co-Authored-By: Jovan Dmitrović <jovan.dmitrovic@htecgroup.com>
Approved-by: Maciej W. Rozycki <macro@orcam.me.uk>
---
gdb/mips-tdep.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
gdb-mips-next-pc-blezl.diff
===================================================================
@@ -1662,7 +1662,7 @@ mips32_next_pc (struct regcache *regcach
case 1: /* BNEL */
goto neq_branch;
case 2: /* BLEZL */
- goto less_branch;
+ goto less_equal_branch;
case 3: /* BGTZL */
goto greater_branch;
default:
@@ -1751,7 +1751,6 @@ mips32_next_pc (struct regcache *regcach
case 2: /* BLTZL */
case 16: /* BLTZAL */
case 18: /* BLTZALL */
- less_branch:
if (regcache_raw_get_signed (regcache, itype_rs (inst)) < 0)
pc += mips32_relative_offset (inst) + 4;
else
@@ -1817,6 +1816,7 @@ mips32_next_pc (struct regcache *regcach
pc += 8;
break;
case 6: /* BLEZ, BLEZL */
+ less_equal_branch:
if (regcache_raw_get_signed (regcache, itype_rs (inst)) <= 0)
pc += mips32_relative_offset (inst) + 4;
else