@@ -145,7 +145,9 @@ alphanbsd_supply_gregset (const struct regset *regset,
static const struct regset alphanbsd_gregset =
{
NULL,
- alphanbsd_supply_gregset
+ alphanbsd_supply_gregset,
+ NULL,
+ REGSET_VARIABLE_SIZE
};
static const struct regset alphanbsd_fpregset =
@@ -98,7 +98,9 @@ armbsd_supply_gregset (const struct regset *regset,
static const struct regset armbsd_gregset =
{
NULL,
- armbsd_supply_gregset
+ armbsd_supply_gregset,
+ NULL,
+ REGSET_VARIABLE_SIZE
};
static const struct regset armbsd_fpregset =
@@ -523,6 +523,11 @@ get_core_register_section (struct regcache *regcache,
warning (_("Section `%s' in core file too small."), section_name);
return;
}
+ if (size != min_size && !(regset->flags & REGSET_VARIABLE_SIZE))
+ {
+ warning (_("Unexpected size of section `%s' in core file."),
+ section_name);
+ }
contents = alloca (size);
if (! bfd_get_section_contents (core_bfd, section, contents,
@@ -1367,7 +1367,9 @@ hppa_hpux_supply_save_state (const struct regset *regset,
static const struct regset hppa_hpux_regset =
{
NULL,
- hppa_hpux_supply_save_state
+ hppa_hpux_supply_save_state,
+ NULL,
+ REGSET_VARIABLE_SIZE
};
static void
@@ -131,7 +131,9 @@ hppaobsd_supply_fpregset (const struct regset *regset,
static const struct regset hppaobsd_gregset =
{
NULL,
- hppaobsd_supply_gregset
+ hppaobsd_supply_gregset,
+ NULL,
+ REGSET_VARIABLE_SIZE
};
static const struct regset hppaobsd_fpregset =
@@ -105,7 +105,9 @@ m68kbsd_supply_gregset (const struct regset *regset,
static const struct regset m68kbsd_gregset =
{
NULL,
- m68kbsd_supply_gregset
+ m68kbsd_supply_gregset,
+ NULL,
+ REGSET_VARIABLE_SIZE
};
static const struct regset m68kbsd_fpregset =
@@ -103,7 +103,9 @@ mipsnbsd_supply_gregset (const struct regset *regset,
static const struct regset mipsnbsd_gregset =
{
NULL,
- mipsnbsd_supply_gregset
+ mipsnbsd_supply_gregset,
+ NULL,
+ REGSET_VARIABLE_SIZE
};
static const struct regset mipsnbsd_fpregset =
@@ -43,6 +43,13 @@ struct regset
/* Function collecting values in a register set from a register cache. */
collect_regset_ftype *collect_regset;
+
+ unsigned flags;
};
+/* Values for a regset's 'flags' field. */
+
+#define REGSET_VARIABLE_SIZE 1 /* Accept a larger regset section size
+ in a core file without warning. */
+
#endif /* regset.h */