[CRIS] Don't internal error if forced big endian

This fixes:

  $ ./gdb -q -ex "set endian big" -ex "set architecture cris"
  The target is assumed to be big endian
  .../src/gdb/cris-tdep.c:4051: internal-error: cris_gdbarch_init: big endian byte order in info
  A problem internal to GDB has been detected,
  further debugging may prove unreliable.
  Quit this debugging session? (y or n)

The "set cris-version" command can likewise cause internal errors.

The gdbarch init routine should be returning 0 to reject the
architecture instead of internal erroring on user input.

gdb/ChangeLog:
2016-03-09  Pedro Alves  <palves@redhat.com>

	* cris-tdep.c (cris_gdbarch_init): Return 0 if the info's byte
	order is BFD_ENDIAN_BIG or if the cris version is unsupported.
This commit is contained in:
Pedro Alves 2016-03-08 01:45:09 +00:00
parent d7a87b5e43
commit 114d7832b0
2 changed files with 12 additions and 9 deletions

View File

@ -1,3 +1,8 @@
2016-03-09 Pedro Alves <palves@redhat.com>
* cris-tdep.c (cris_gdbarch_init): Return 0 if the info's byte
order is BFD_ENDIAN_BIG or if the cris version is unsupported.
2016-03-09 Pedro Alves <palves@redhat.com>
* doublest.c: Extend comments.

View File

@ -4048,10 +4048,10 @@ cris_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
break;
case BFD_ENDIAN_BIG:
internal_error (__FILE__, __LINE__,
_("cris_gdbarch_init: big endian byte order in info"));
break;
/* Cris is always little endian, but the user could have forced
big endian with "set endian". */
return 0;
default:
internal_error (__FILE__, __LINE__,
_("cris_gdbarch_init: unknown byte order in info"));
@ -4083,9 +4083,7 @@ cris_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
case 8:
case 9:
/* Old versions; not supported. */
internal_error (__FILE__, __LINE__,
_("cris_gdbarch_init: unsupported CRIS version"));
break;
return 0;
case 10:
case 11:
@ -4125,8 +4123,8 @@ cris_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
break;
default:
internal_error (__FILE__, __LINE__,
_("cris_gdbarch_init: unknown CRIS version"));
/* Unknown version. */
return 0;
}
/* Dummy frame functions (shared between CRISv10 and CRISv32 since they