[PATCH,HURD] Fix reading core

Joel Brobecker brobecker@adacore.com
Wed Apr 10 11:33:00 GMT 2013


> The i386 GNU/Hurd ELF core format actually follows the uaccess gregset_t
> array format, not the Mach thread state format.  This fixes gdb reading
> it.
> 
> * gdb/i386gnu-nat.c (CREG_OFFSET): New macro.
> (creg_offset): New array.
> (CREG_ADDR): Use creg_offset instead of reg_offset.

Did anyone review this? I don't know GNU/Hurd, but the patch looks
very plausible.

Do you have write access to the GDB repository? If not, do you have
copyright assignment papers on file? This patch is small enough that
we can take it as a tiny patch, but if you think you're going to
send more patches, we should probably get you started on those.

The ChangeLog entry above needs to be indented properly (just to be
sure). Another tiny style nitpick below...

> --- a/gdb/i386gnu-nat.c.original	2013-02-11 00:46:02.000000000 +0000
> +++ b/gdb/i386gnu-nat.c	2013-02-11 00:48:09.000000000 +0000
> @@ -56,8 +56,21 @@
>    REG_OFFSET (ds), REG_OFFSET (es), REG_OFFSET (fs), REG_OFFSET (gs)
>  };
>  
> +/* Offset to the greg_t location where REG is stored.  */
> +#define CREG_OFFSET(reg) (REG_##reg * 4)
> +
> +/* At CREG_OFFSET[N] is the offset to the greg_t location where
> +   the GDB register N is stored.  */
> +static int creg_offset[] =
> +{
> +  CREG_OFFSET (EAX), CREG_OFFSET (ECX), CREG_OFFSET (EDX), CREG_OFFSET (EBX),
> +  CREG_OFFSET (UESP), CREG_OFFSET (EBP), CREG_OFFSET (ESI), CREG_OFFSET (EDI),
> +  CREG_OFFSET (EIP), CREG_OFFSET (EFL), CREG_OFFSET (CS), CREG_OFFSET (SS),
> +  CREG_OFFSET (DS), CREG_OFFSET (ES), CREG_OFFSET (FS), CREG_OFFSET (GS)
> +};

Unless it was done on purpose, we try to limit the size of lines
to 70 characters, only extending it to up to 80 when it makes
a difference....


> +
>  #define REG_ADDR(state, regnum) ((char *)(state) + reg_offset[regnum])
> -#define CREG_ADDR(state, regnum) ((const char *)(state) + reg_offset[regnum])
> +#define CREG_ADDR(state, regnum) ((const char *)(state) + creg_offset[regnum])
>  
>  
>  /* Get the whole floating-point state of THREAD and record the values

-- 
Joel



More information about the Gdb-patches mailing list