[Bug gdb/25162] [GDB, kgdb] gdb 8.3.1 truncated register in remote g packet

luis.machado at linaro dot org sourceware-bugzilla@sourceware.org
Thu Nov 7 01:35:00 GMT 2019


--- Comment #16 from Luis Machado <luis.machado at linaro dot org> ---
I see this change made it to the kernel in 2018:

commit 76ed0b803a2ab793a1b27d1dfe0de7955282cd34
Author: David Rivshin <DRivshin@allworx.com>
Date:   Wed Apr 25 21:15:01 2018 +0100

    ARM: 8764/1: kgdb: fix NUMREGBYTES so that gdb_regs[] is the correct size

    NUMREGBYTES (which is used as the size for gdb_regs[]) is incorrectly
    based on DBG_MAX_REG_NUM instead of GDB_MAX_REGS. DBG_MAX_REG_NUM
    is the number of total registers, while GDB_MAX_REGS is the number
    of 'unsigned longs' it takes to serialize those registers. Since
    FP registers require 3 'unsigned longs' each, DBG_MAX_REG_NUM is
    smaller than GDB_MAX_REGS.

    This causes GDB 8.0 give the following error on connect:
    "Truncated register 19 in remote 'g' packet"

    This also causes the register serialization/deserialization logic
    to overflow gdb_regs[], overwriting whatever follows.

    Fixes: 834b2964b7ab ("kgdb,arm: fix register dump")
    Cc: <stable@vger.kernel.org> # 2.6.37+
    Signed-off-by: David Rivshin <drivshin@allworx.com>
    Acked-by: Rabin Vincent <rabin@rab.in>
    Tested-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>

diff --git a/arch/arm/include/asm/kgdb.h b/arch/arm/include/asm/kgdb.h
index 3b73fdcf3627..8de1100d1067 100644
--- a/arch/arm/include/asm/kgdb.h
+++ b/arch/arm/include/asm/kgdb.h
@@ -77,7 +77,7 @@ extern int kgdb_fault_expected;

 #define KGDB_MAX_NO_CPUS       1
 #define BUFMAX                 400
-#define NUMREGBYTES            (DBG_MAX_REG_NUM << 2)
+#define NUMREGBYTES            (GDB_MAX_REGS << 2)
 #define NUMCRITREGBYTES                (32 << 2)

 #define _R0                    0

The GDB 8.3.1 output looks sane with the patch. Glad it worked for you.

If there is nothing else, i'll close this ticket.

You are receiving this mail because:
You are on the CC list for the bug.

More information about the Gdb-prs mailing list