From 428721aaa3be621b3c63dc823dfbd993eb2bf942 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Sat, 29 Dec 2001 19:25:58 +0000 Subject: [PATCH] * arch-utils.c (initialize_current_architecture): Test byte_order against BFD_ENDIAN_UNKNOWN. (gdbarch_info_init): Initialize byte_order to BFD_ENDIAN_UNKNOWN. * gdbarch.sh: Update comments on default value of byte_order. (verify_gdbarch, gdbarch_update_p): Test byte_order against BFD_ENDIAN_UNKNOWN. * gdbarch.h, gdbarch.c: Re-generate. --- gdb/ChangeLog | 10 ++++++++++ gdb/arch-utils.c | 7 ++++--- gdb/gdbarch.c | 10 +++++----- gdb/gdbarch.h | 5 ++--- gdb/gdbarch.sh | 15 +++++++-------- 5 files changed, 28 insertions(+), 19 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3e9e5944d81..ccbdf4308df 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2001-12-30 Andrew Cagney + + * arch-utils.c (initialize_current_architecture): Test byte_order + against BFD_ENDIAN_UNKNOWN. + (gdbarch_info_init): Initialize byte_order to BFD_ENDIAN_UNKNOWN. + * gdbarch.sh: Update comments on default value of byte_order. + (verify_gdbarch, gdbarch_update_p): Test byte_order against + BFD_ENDIAN_UNKNOWN. + * gdbarch.h, gdbarch.c: Re-generate. + 2001-12-27 Michael Snyder * i386-linux-nat.c: Include i386-tdep.h. diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c index 73fab811ac9..175f85eb3d8 100644 --- a/gdb/arch-utils.c +++ b/gdb/arch-utils.c @@ -762,7 +762,7 @@ initialize_current_architecture (void) /* take several guesses at a byte order. */ /* NB: can't use TARGET_BYTE_ORDER_DEFAULT as its definition is forced above. */ - if (info.byte_order == 0 + if (info.byte_order == BFD_ENDIAN_UNKNOWN && default_bfd_vec != NULL) { /* Extract BFD's default vector's byte order. */ @@ -778,7 +778,7 @@ initialize_current_architecture (void) break; } } - if (info.byte_order == 0) + if (info.byte_order == BFD_ENDIAN_UNKNOWN) { /* look for ``*el-*'' in the target name. */ const char *chp; @@ -788,7 +788,7 @@ initialize_current_architecture (void) && strncmp (chp - 2, "el", 2) == 0) info.byte_order = BFD_ENDIAN_LITTLE; } - if (info.byte_order == 0) + if (info.byte_order == BFD_ENDIAN_UNKNOWN) { /* Wire it to big-endian!!! */ info.byte_order = BIG_ENDIAN; @@ -842,6 +842,7 @@ void gdbarch_info_init (struct gdbarch_info *info) { memset (info, 0, sizeof (struct gdbarch_info)); + info->byte_order = BFD_ENDIAN_UNKNOWN; } /* */ diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index b1276c7d5ad..1f7ba6ee4d2 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -548,7 +548,7 @@ verify_gdbarch (struct gdbarch *gdbarch) log = mem_fileopen (); cleanups = make_cleanup_ui_file_delete (log); /* fundamental */ - if (gdbarch->byte_order == 0) + if (gdbarch->byte_order == BFD_ENDIAN_UNKNOWN) fprintf_unfiltered (log, "\n\tbyte-order"); if (gdbarch->bfd_arch_info == NULL) fprintf_unfiltered (log, "\n\tbfd_arch_info"); @@ -4749,17 +4749,17 @@ gdbarch_update_p (struct gdbarch_info info) info.bfd_arch_info = TARGET_ARCHITECTURE; /* ``(gdb) set byte-order ...'' */ - if (info.byte_order == 0 + if (info.byte_order == BFD_ENDIAN_UNKNOWN && !TARGET_BYTE_ORDER_AUTO) info.byte_order = TARGET_BYTE_ORDER; /* From the INFO struct. */ - if (info.byte_order == 0 + if (info.byte_order == BFD_ENDIAN_UNKNOWN && info.abfd != NULL) info.byte_order = (bfd_big_endian (info.abfd) ? BIG_ENDIAN : bfd_little_endian (info.abfd) ? BFD_ENDIAN_LITTLE - : 0); + : BFD_ENDIAN_UNKNOWN); /* From the current target. */ - if (info.byte_order == 0) + if (info.byte_order == BFD_ENDIAN_UNKNOWN) info.byte_order = TARGET_BYTE_ORDER; /* Must have found some sort of architecture. */ diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index 84e5c167a7d..8cac8cb2712 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -2263,8 +2263,7 @@ extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch); The INIT function parameter INFO shall, as far as possible, be pre-initialized with information obtained from INFO.ABFD or - previously selected architecture (if similar). INIT shall ensure - that the INFO.BYTE_ORDER is non-zero. + previously selected architecture (if similar). The INIT function shall return any of: NULL - indicating that it doesn't recognize the selected architecture; an existing ``struct @@ -2288,7 +2287,7 @@ struct gdbarch_info /* Use default: NULL (ZERO). */ const struct bfd_arch_info *bfd_arch_info; - /* Use default: 0 (ZERO). */ + /* Use default: BFD_ENDIAN_UNKNOWN (NB: is not ZERO). */ int byte_order; /* Use default: NULL (ZERO). */ diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh index 6d6d9edabe3..05c7768ca53 100755 --- a/gdb/gdbarch.sh +++ b/gdb/gdbarch.sh @@ -913,8 +913,7 @@ extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch); The INIT function parameter INFO shall, as far as possible, be pre-initialized with information obtained from INFO.ABFD or - previously selected architecture (if similar). INIT shall ensure - that the INFO.BYTE_ORDER is non-zero. + previously selected architecture (if similar). The INIT function shall return any of: NULL - indicating that it doesn't recognize the selected architecture; an existing \`\`struct @@ -938,7 +937,7 @@ struct gdbarch_info /* Use default: NULL (ZERO). */ const struct bfd_arch_info *bfd_arch_info; - /* Use default: 0 (ZERO). */ + /* Use default: BFD_ENDIAN_UNKNOWN (NB: is not ZERO). */ int byte_order; /* Use default: NULL (ZERO). */ @@ -1429,7 +1428,7 @@ verify_gdbarch (struct gdbarch *gdbarch) log = mem_fileopen (); cleanups = make_cleanup_ui_file_delete (log); /* fundamental */ - if (gdbarch->byte_order == 0) + if (gdbarch->byte_order == BFD_ENDIAN_UNKNOWN) fprintf_unfiltered (log, "\n\tbyte-order"); if (gdbarch->bfd_arch_info == NULL) fprintf_unfiltered (log, "\n\tbfd_arch_info"); @@ -2058,17 +2057,17 @@ gdbarch_update_p (struct gdbarch_info info) info.bfd_arch_info = TARGET_ARCHITECTURE; /* \`\`(gdb) set byte-order ...'' */ - if (info.byte_order == 0 + if (info.byte_order == BFD_ENDIAN_UNKNOWN && !TARGET_BYTE_ORDER_AUTO) info.byte_order = TARGET_BYTE_ORDER; /* From the INFO struct. */ - if (info.byte_order == 0 + if (info.byte_order == BFD_ENDIAN_UNKNOWN && info.abfd != NULL) info.byte_order = (bfd_big_endian (info.abfd) ? BIG_ENDIAN : bfd_little_endian (info.abfd) ? BFD_ENDIAN_LITTLE - : 0); + : BFD_ENDIAN_UNKNOWN); /* From the current target. */ - if (info.byte_order == 0) + if (info.byte_order == BFD_ENDIAN_UNKNOWN) info.byte_order = TARGET_BYTE_ORDER; /* Must have found some sort of architecture. */