From: Pedro Alves Date: Tue, 8 Mar 2016 01:45:09 +0000 (+0000) Subject: [CRIS] Don't internal error if forced big endian X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=114d7832b0e07452277d748c81d8bc0c5675a1bc;p=binutils-gdb.git [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 * 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1718ff15543..a6414c10517 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2016-03-09 Pedro Alves + + * 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 * doublest.c: Extend comments. diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c index 971ee9f6910..d350ce8d613 100644 --- a/gdb/cris-tdep.c +++ b/gdb/cris-tdep.c @@ -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