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

reinoudkoornstra at gmail dot com sourceware-bugzilla@sourceware.org
Thu Nov 7 02:36:00 GMT 2019


https://sourceware.org/bugzilla/show_bug.cgi?id=25162

--- Comment #17 from Reinoud Koornstra <reinoudkoornstra at gmail dot com> ---
(In reply to Luis Machado from comment #16)
> 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.

Yeah, thanks for finding that commit, I didn't know the commit id. There is
nothing else as it works alright, thanks for all your help! Reinoud.

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


More information about the Gdb-prs mailing list