mips_mips64: fix minor host endianness bug
authorAntonio Borneo <borneo.antonio@gmail.com>
Sun, 22 Nov 2020 12:02:32 +0000 (13:02 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 5 Dec 2020 23:18:33 +0000 (23:18 +0000)
Commit 80f1a92bd798 ("mips64: Add generic mips64 target support")
adds a log of the target's program counter in function
mips_mips64_debug_entry() by directly casting the little-endian
buffer in pc->value.
This is going to print an incorrect value on big-endian hosts.

Use the function buf_get_u64() to return the register value.

Not tested on real HW. Issue identified with GCC compiler flag
'-Wcast-align=strict' after change http://openocd.zylin.com/5937/
("target/register: use an array of uint8_t for register's value").

Change-Id: Icbda2b54a03fdec287c804e623f5db4252f9cd2a
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Fixes: 80f1a92bd798 ("mips64: Add generic mips64 target support")
Reviewed-on: http://openocd.zylin.com/5944
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
src/target/mips_mips64.c

index f941af51742a0a87ba14d1a167180d4845511d67..0fc089726542fb85334424b631833f95942934c5 100644 (file)
@@ -62,7 +62,7 @@ static int mips_mips64_debug_entry(struct target *target)
        mips_mips64_examine_debug_reason(target);
 
        LOG_DEBUG("entered debug state at PC 0x%" PRIx64 ", target->state: %s",
-                 *(uint64_t *)pc->value, target_state_name(target));
+                 buf_get_u64(pc->value, 0, 64), target_state_name(target));
 
        return ERROR_OK;
 }