[RFA] avoid NULL deref for non GDB_MULTI_ARCH mips configs
Andrew Cagney
ac131313@cygnus.com
Wed Oct 25 06:48:00 GMT 2000
fnf@ninemoons.com wrote:
>
> Currently any mips target that is not multi-arched (GDB_MULTI_ARCH == 0)
> will attempt to dereference a NULL pointer in mips_mask_address_p, when it
> unconditionally uses a gdbarch_tdep to look for the value of
> default_mask_address_p. The tdep pointer is NULL.
>
> Since the current default value is zero for all the multiarch cases,
> I'm assuming the non-multiarch default can be zero also, for now.
>
> Note that if there is a better place in mips-tdep.c to place the
> definition of the new macro, feel free to change it.
>
> Would the mips maintainer please review this patch and either apply
> it or let me know what needs fixing. Thanks!
This patch is approved. BTW, there can't be many non-multi-arch mips
targets left.
Andrew
> ===================================================================
>
> 2000-09-17 Fred Fish <fnf@cygnus.com>
>
> * mips-tdep.c (MIPS_DEFAULT_MASK_ADDRESS_P): Define using either
> the current arch or use zero.
>
> Index: mips-tdep.c
> ===================================================================
> RCS file: /cvs/cvsfiles/devo/gdb/mips-tdep.c,v
> retrieving revision 1.243
> diff -c -p -r1.243 mips-tdep.c
> *** mips-tdep.c 2000/08/11 00:28:27 1.243
> --- mips-tdep.c 2000/09/18 02:49:40
> *************** mips_stack_argsize (void)
> *** 228,233 ****
> --- 228,240 ----
> #define GDB_TARGET_IS_MIPS64 (gdbarch_tdep (current_gdbarch)->gdb_target_is_mips64 + 0)
> #endif
>
> + #if GDB_MULTI_ARCH
> + #undef MIPS_DEFAULT_MASK_ADDRESS_P
> + #define MIPS_DEFAULT_MASK_ADDRESS_P (gdbarch_tdep (current_gdbarch)->default_mask_address_p)
> + #elif !defined (MIPS_DEFAULT_MASK_ADDRESS_P)
> + #define MIPS_DEFAULT_MASK_ADDRESS_P (0)
> + #endif
> +
> #define VM_MIN_ADDRESS (CORE_ADDR)0x400000
>
> int gdb_print_insn_mips (bfd_vma, disassemble_info *);
> *************** mips_mask_address_p (void)
> *** 472,478 ****
> return 0;
> break;
> case CMD_AUTO_BOOLEAN_AUTO:
> ! return gdbarch_tdep (current_gdbarch)->default_mask_address_p;
> default:
> internal_error ("mips_mask_address_p: bad switch");
> return -1;
> --- 482,488 ----
> return 0;
> break;
> case CMD_AUTO_BOOLEAN_AUTO:
> ! return MIPS_DEFAULT_MASK_ADDRESS_P;
> default:
> internal_error ("mips_mask_address_p: bad switch");
> return -1;
More information about the Gdb-patches
mailing list