While building libgcc in mips16 mode I found another instance of dbx_reg_number aborting that the patch to pr54061 did not fix. This code:
extern void __chk_fail (void) __attribute__ ((__noreturn__)); __strncpy_chk (s1, s2, n, s1len) { char c; char *s = s1; if (__builtin_expect (s1len < n, 0)) __chk_fail (); while (c != '\0'); return s; } aborts when compiled with -O2 -g -fpic -mips16. The following patch fixes it. OK to checkin? Steve Ellcey sell...@mips.com 2012-12-11 Steve Ellcey <sell...@mips.com> * config/mips/mips.c (mips_option_override): Set mips_dbx_regno[CPRESTORE_SLOT_REGNUM] to IGNORED_DWARF_REGNUM. diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 820b228..8113e5d 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -16760,6 +16760,8 @@ mips_option_override (void) for (i = ALL_COP_REG_FIRST; i <= ALL_COP_REG_LAST; i++) mips_dbx_regno[i] = IGNORED_DWARF_REGNUM; + mips_dbx_regno[CPRESTORE_SLOT_REGNUM] = IGNORED_DWARF_REGNUM; + /* Accumulator debug registers use big-endian ordering. */ mips_dbx_regno[HI_REGNUM] = MD_DBX_FIRST + 0; mips_dbx_regno[LO_REGNUM] = MD_DBX_FIRST + 1;