From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11353 invoked by alias); 19 Jan 2002 05:59:20 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 11217 invoked from network); 19 Jan 2002 05:58:48 -0000 Received: from unknown (HELO localhost.cygnus.com) (24.114.42.213) by sources.redhat.com with SMTP; 19 Jan 2002 05:58:48 -0000 Received: from cygnus.com (localhost [127.0.0.1]) by localhost.cygnus.com (Postfix) with ESMTP id 049313D66 for ; Sat, 19 Jan 2002 00:58:37 -0500 (EST) Message-ID: <3C490B0C.6090601@cygnus.com> Date: Fri, 18 Jan 2002 21:59:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:0.9.7) Gecko/20020103 X-Accept-Language: en-us MIME-Version: 1.0 To: gdb-patches@sources.redhat.com Subject: [patch/rfc] Eliminate TARGET_BYTE_ORDER_SELECTABLE Content-Type: multipart/mixed; boundary="------------000700030803060108090205" X-SW-Source: 2002-01/txt/msg00525.txt.bz2 This is a multi-part message in MIME format. --------------000700030803060108090205 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-length: 410 Hello, All multi-arch targets (yep, including the i386) allow the byte order to be selected at run time. This means that the macro TARGET_BYTE_ORDER_SELECTABLE which was used by non-multi-arch targets is obsolete. The attached patch eliminates that macro. I've tested it on a multi-arch target and I don't think it breaks non-multi-arch targets. Anyway, I intend committing this in a few days. Andrew --------------000700030803060108090205 Content-Type: text/plain; name="diffs" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diffs" Content-length: 18067 2002-01-19 Andrew Cagney * remote-sim.c (gdbsim_open): Simplify code testing the macro TARGET_BYTE_ORDER_SELECTABLE_P. Assume the target is always byte-order selectable. * sparc-tdep.c (sparc_target_architecture_hook): Ditto. * arch-utils.c: Ditto. (set_endian): Ditto. (set_endian_from_file): Ditto. * gdbserver/low-sim.c (create_inferior): Ditto. * gdbarch.sh: Ditto. * gdbarch.h: Re-generate. * config/powerpc/tm-ppc-eabi.h (TARGET_BYTE_ORDER_SELECTABLE_P): * config/sparc/tm-sparclite.h (TARGET_BYTE_ORDER_SELECTABLE): * config/sparc/tm-sparclet.h (TARGET_BYTE_ORDER_SELECTABLE): * config/mcore/tm-mcore.h (TARGET_BYTE_ORDER_SELECTABLE_P): * config/arm/tm-wince.h (TARGET_BYTE_ORDER_SELECTABLE_P): * config/arm/tm-linux.h (TARGET_BYTE_ORDER_SELECTABLE_P): * config/arc/tm-arc.h (TARGET_BYTE_ORDER_SELECTABLE): * config/arm/tm-arm.h (TARGET_BYTE_ORDER_SELECTABLE_P): Delete macro definition. * config/mips/tm-wince.h: Remove #undef of macro TARGET_BYTE_ORDER_SELECTABLE. * config/sh/tm-wince.h: Ditto. Index: arch-utils.c =================================================================== RCS file: /cvs/src/src/gdb/arch-utils.c,v retrieving revision 1.46 diff -p -r1.46 arch-utils.c *** arch-utils.c 2002/01/05 04:30:14 1.46 --- arch-utils.c 2002/01/19 05:51:15 *************** generic_register_virtual_size (int regnu *** 399,422 **** /* Functions to manipulate the endianness of the target. */ - #ifdef TARGET_BYTE_ORDER_SELECTABLE - /* compat - Catch old targets that expect a selectable byte-order to - default to BFD_ENDIAN_BIG */ #ifndef TARGET_BYTE_ORDER_DEFAULT - #define TARGET_BYTE_ORDER_DEFAULT BFD_ENDIAN_BIG - #endif - #endif - #if !TARGET_BYTE_ORDER_SELECTABLE_P - #ifndef TARGET_BYTE_ORDER_DEFAULT - /* compat - Catch old non byte-order selectable targets that do not - define TARGET_BYTE_ORDER_DEFAULT and instead expect - TARGET_BYTE_ORDER to be used as the default. For targets that - defined neither TARGET_BYTE_ORDER nor TARGET_BYTE_ORDER_DEFAULT the - below will get a strange compiler warning. */ - #define TARGET_BYTE_ORDER_DEFAULT TARGET_BYTE_ORDER - #endif - #endif - #ifndef TARGET_BYTE_ORDER_DEFAULT #define TARGET_BYTE_ORDER_DEFAULT BFD_ENDIAN_BIG /* arbitrary */ #endif /* ``target_byte_order'' is only used when non- multi-arch. --- 399,405 ---- *************** show_endian (char *args, int from_tty) *** 453,463 **** static void set_endian (char *ignore_args, int from_tty, struct cmd_list_element *c) { ! if (!TARGET_BYTE_ORDER_SELECTABLE_P) ! { ! printf_unfiltered ("Byte order is not selectable."); ! } ! else if (set_endian_string == endian_auto) { target_byte_order_auto = 1; } --- 436,442 ---- static void set_endian (char *ignore_args, int from_tty, struct cmd_list_element *c) { ! if (set_endian_string == endian_auto) { target_byte_order_auto = 1; } *************** set_endian (char *ignore_args, int from_ *** 508,540 **** static void set_endian_from_file (bfd *abfd) { if (GDB_MULTI_ARCH) internal_error (__FILE__, __LINE__, "set_endian_from_file: not for multi-arch"); ! if (TARGET_BYTE_ORDER_SELECTABLE_P) ! { ! int want; ! ! if (bfd_big_endian (abfd)) ! want = BFD_ENDIAN_BIG; ! else ! want = BFD_ENDIAN_LITTLE; ! if (TARGET_BYTE_ORDER_AUTO) ! target_byte_order = want; ! else if (TARGET_BYTE_ORDER != want) ! warning ("%s endian file does not match %s endian target.", ! want == BFD_ENDIAN_BIG ? "big" : "little", ! TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? "big" : "little"); ! } else ! { ! if (bfd_big_endian (abfd) ! ? TARGET_BYTE_ORDER != BFD_ENDIAN_BIG ! : TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) ! warning ("%s endian file does not match %s endian target.", ! bfd_big_endian (abfd) ? "big" : "little", ! TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? "big" : "little"); ! } } --- 487,506 ---- static void set_endian_from_file (bfd *abfd) { + int want; if (GDB_MULTI_ARCH) internal_error (__FILE__, __LINE__, "set_endian_from_file: not for multi-arch"); ! if (bfd_big_endian (abfd)) ! want = BFD_ENDIAN_BIG; else ! want = BFD_ENDIAN_LITTLE; ! if (TARGET_BYTE_ORDER_AUTO) ! target_byte_order = want; ! else if (TARGET_BYTE_ORDER != want) ! warning ("%s endian file does not match %s endian target.", ! want == BFD_ENDIAN_BIG ? "big" : "little", ! TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? "big" : "little"); } Index: gdbarch.h =================================================================== RCS file: /cvs/src/src/gdb/gdbarch.h,v retrieving revision 1.73 diff -p -r1.73 gdbarch.h *** gdbarch.h 2001/12/29 19:25:58 1.73 --- gdbarch.h 2002/01/19 05:51:22 *************** extern void register_gdbarch_swap (void *** 2408,2440 **** /* The target-system-dependent byte order is dynamic */ - /* TARGET_BYTE_ORDER_SELECTABLE_P determines if the target endianness - is selectable at runtime. The user can use the ``set endian'' - command to change it. TARGET_BYTE_ORDER_AUTO is nonzero when - target_byte_order should be auto-detected (from the program image - say). */ - - #if GDB_MULTI_ARCH - /* Multi-arch GDB is always bi-endian. */ - #define TARGET_BYTE_ORDER_SELECTABLE_P 1 - #endif - - #ifndef TARGET_BYTE_ORDER_SELECTABLE_P - /* compat - Catch old targets that define TARGET_BYTE_ORDER_SLECTABLE - when they should have defined TARGET_BYTE_ORDER_SELECTABLE_P 1 */ - #ifdef TARGET_BYTE_ORDER_SELECTABLE - #define TARGET_BYTE_ORDER_SELECTABLE_P 1 - #else - #define TARGET_BYTE_ORDER_SELECTABLE_P 0 - #endif - #endif - extern int target_byte_order; - #ifdef TARGET_BYTE_ORDER_SELECTABLE - /* compat - Catch old targets that define TARGET_BYTE_ORDER_SELECTABLE - and expect defs.h to re-define TARGET_BYTE_ORDER. */ - #undef TARGET_BYTE_ORDER - #endif #ifndef TARGET_BYTE_ORDER #define TARGET_BYTE_ORDER (target_byte_order + 0) #endif --- 2408,2414 ---- Index: gdbarch.sh =================================================================== RCS file: /cvs/src/src/gdb/gdbarch.sh,v retrieving revision 1.103 diff -p -r1.103 gdbarch.sh *** gdbarch.sh 2002/01/05 04:30:17 1.103 --- gdbarch.sh 2002/01/19 05:51:24 *************** extern void register_gdbarch_swap (void *** 1058,1090 **** /* The target-system-dependent byte order is dynamic */ - /* TARGET_BYTE_ORDER_SELECTABLE_P determines if the target endianness - is selectable at runtime. The user can use the \`\`set endian'' - command to change it. TARGET_BYTE_ORDER_AUTO is nonzero when - target_byte_order should be auto-detected (from the program image - say). */ - - #if GDB_MULTI_ARCH - /* Multi-arch GDB is always bi-endian. */ - #define TARGET_BYTE_ORDER_SELECTABLE_P 1 - #endif - - #ifndef TARGET_BYTE_ORDER_SELECTABLE_P - /* compat - Catch old targets that define TARGET_BYTE_ORDER_SLECTABLE - when they should have defined TARGET_BYTE_ORDER_SELECTABLE_P 1 */ - #ifdef TARGET_BYTE_ORDER_SELECTABLE - #define TARGET_BYTE_ORDER_SELECTABLE_P 1 - #else - #define TARGET_BYTE_ORDER_SELECTABLE_P 0 - #endif - #endif - extern int target_byte_order; - #ifdef TARGET_BYTE_ORDER_SELECTABLE - /* compat - Catch old targets that define TARGET_BYTE_ORDER_SELECTABLE - and expect defs.h to re-define TARGET_BYTE_ORDER. */ - #undef TARGET_BYTE_ORDER - #endif #ifndef TARGET_BYTE_ORDER #define TARGET_BYTE_ORDER (target_byte_order + 0) #endif --- 1058,1064 ---- Index: remote-sim.c =================================================================== RCS file: /cvs/src/src/gdb/remote-sim.c,v retrieving revision 1.19 diff -p -r1.19 remote-sim.c *** remote-sim.c 2002/01/05 04:30:18 1.19 --- remote-sim.c 2002/01/19 05:51:27 *************** gdbsim_open (char *args, int from_tty) *** 472,479 **** strcpy (arg_buf, "gdbsim"); /* 7 */ /* Specify the byte order for the target when it is both selectable and explicitly specified by the user (not auto detected). */ ! if (TARGET_BYTE_ORDER_SELECTABLE_P ! && !TARGET_BYTE_ORDER_AUTO) { switch (TARGET_BYTE_ORDER) { --- 472,478 ---- strcpy (arg_buf, "gdbsim"); /* 7 */ /* Specify the byte order for the target when it is both selectable and explicitly specified by the user (not auto detected). */ ! if (!TARGET_BYTE_ORDER_AUTO) { switch (TARGET_BYTE_ORDER) { Index: sparc-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sparc-tdep.c,v retrieving revision 1.20 diff -p -r1.20 sparc-tdep.c *** sparc-tdep.c 2001/12/30 17:00:43 1.20 --- sparc-tdep.c 2002/01/19 05:51:33 *************** sparc_target_architecture_hook (const bf *** 2200,2214 **** if (ap->mach == bfd_mach_sparc_sparclite_le) { ! if (TARGET_BYTE_ORDER_SELECTABLE_P) ! { ! target_byte_order = BFD_ENDIAN_LITTLE; ! bi_endian = 1; ! } ! else ! { ! warning ("This GDB does not support little endian sparclite."); ! } } else bi_endian = 0; --- 2200,2207 ---- if (ap->mach == bfd_mach_sparc_sparclite_le) { ! target_byte_order = BFD_ENDIAN_LITTLE; ! bi_endian = 1; } else bi_endian = 0; Index: config/arc/tm-arc.h =================================================================== RCS file: /cvs/src/src/gdb/config/arc/tm-arc.h,v retrieving revision 1.7 diff -p -r1.7 tm-arc.h *** tm-arc.h 2001/03/21 18:31:48 1.7 --- tm-arc.h 2002/01/19 05:51:36 *************** *** 24,32 **** /* Used by arc-tdep.c to set the default cpu type. */ #define DEFAULT_ARC_CPU_TYPE "base" - /* Byte order is selectable. */ - #define TARGET_BYTE_ORDER_SELECTABLE - /* We have IEEE floating point, if we have any float at all. */ #define IEEE_FLOAT (1) --- 24,29 ---- Index: config/arm/tm-arm.h =================================================================== RCS file: /cvs/src/src/gdb/config/arm/tm-arm.h,v retrieving revision 1.13 diff -p -r1.13 tm-arm.h *** tm-arm.h 2002/01/09 18:39:37 1.13 --- tm-arm.h 2002/01/19 05:51:37 *************** struct value; *** 31,37 **** /* Target byte order on ARM defaults to selectable, and defaults to little endian. */ - #define TARGET_BYTE_ORDER_SELECTABLE_P 1 #define TARGET_BYTE_ORDER_DEFAULT BFD_ENDIAN_LITTLE /* IEEE format floating point. */ --- 31,36 ---- Index: config/arm/tm-linux.h =================================================================== RCS file: /cvs/src/src/gdb/config/arm/tm-linux.h,v retrieving revision 1.8 diff -p -r1.8 tm-linux.h *** tm-linux.h 2001/12/05 15:11:48 1.8 --- tm-linux.h 2002/01/19 05:51:37 *************** *** 34,43 **** extern struct link_map_offsets *arm_linux_svr4_fetch_link_map_offsets (void); #define SVR4_FETCH_LINK_MAP_OFFSETS() arm_linux_svr4_fetch_link_map_offsets () - /* Target byte order on ARM Linux is little endian and not selectable. */ - #undef TARGET_BYTE_ORDER_SELECTABLE_P - #define TARGET_BYTE_ORDER_SELECTABLE_P 0 - /* Under ARM Linux the traditional way of performing a breakpoint is to execute a particular software interrupt, rather than use a particular undefined instruction to provoke a trap. Upon exection of the software --- 34,39 ---- Index: config/arm/tm-wince.h =================================================================== RCS file: /cvs/src/src/gdb/config/arm/tm-wince.h,v retrieving revision 1.3 diff -p -r1.3 tm-wince.h *** tm-wince.h 2001/03/20 18:16:16 1.3 --- tm-wince.h 2002/01/19 05:51:37 *************** *** 31,38 **** void wince_software_single_step (unsigned int, int); - /* Target byte order is little endian and not selectable on WinCE. */ - #undef TARGET_BYTE_ORDER_SELECTABLE_P - #define TARGET_BYTE_ORDER_SELECTABLE_P 0 - #endif /* TM_WINCE_H */ --- 31,34 ---- Index: config/mcore/tm-mcore.h =================================================================== RCS file: /cvs/src/src/gdb/config/mcore/tm-mcore.h,v retrieving revision 1.7 diff -p -r1.7 tm-mcore.h *** tm-mcore.h 2001/12/15 16:53:23 1.7 --- tm-mcore.h 2002/01/19 05:51:37 *************** extern void mcore_virtual_frame_pointer *** 155,163 **** #define TARGET_VIRTUAL_FRAME_POINTER(PC, REGP, OFFP) \ mcore_virtual_frame_pointer ((PC), (REGP), (OFFP)) - /* MCore can be bi-endian. */ - #define TARGET_BYTE_ORDER_SELECTABLE_P 1 - /* For PE, gcc will tell us what th real type of arguments are when it promotes arguments. */ #define BELIEVE_PCC_PROMOTION 1 --- 155,160 ---- Index: config/mips/tm-wince.h =================================================================== RCS file: /cvs/src/src/gdb/config/mips/tm-wince.h,v retrieving revision 1.4 diff -p -r1.4 tm-wince.h *** tm-wince.h 2001/12/15 16:53:23 1.4 --- tm-wince.h 2002/01/19 05:51:37 *************** *** 29,35 **** #define SOFTWARE_SINGLE_STEP(sig, bp_p) wince_software_single_step (sig, bp_p) void wince_software_single_step (unsigned int, int); - #undef TARGET_BYTE_ORDER_SELECTABLE #define TARGET_BYTE_ORDER BFD_ENDIAN_LITTLE #endif /* TM_WINCE_H */ --- 29,34 ---- Index: config/powerpc/tm-ppc-eabi.h =================================================================== RCS file: /cvs/src/src/gdb/config/powerpc/tm-ppc-eabi.h,v retrieving revision 1.7 diff -p -r1.7 tm-ppc-eabi.h *** tm-ppc-eabi.h 2001/12/03 21:17:49 1.7 --- tm-ppc-eabi.h 2002/01/19 05:51:37 *************** *** 39,46 **** /* Say that we're using ELF, not XCOFF. */ #define ELF_OBJECT_FORMAT 1 - #define TARGET_BYTE_ORDER_SELECTABLE_P 1 - /* The value of symbols of type N_SO and N_FUN maybe null when it shouldn't be. */ #define SOFUN_ADDRESS_MAYBE_MISSING --- 39,44 ---- Index: config/sh/tm-wince.h =================================================================== RCS file: /cvs/src/src/gdb/config/sh/tm-wince.h,v retrieving revision 1.5 diff -p -r1.5 tm-wince.h *** tm-wince.h 2001/12/15 16:53:24 1.5 --- tm-wince.h 2002/01/19 05:51:37 *************** *** 28,34 **** #undef SOFTWARE_SINGLE_STEP #define SOFTWARE_SINGLE_STEP(sig, bp_p) wince_software_single_step (sig, bp_p) void wince_software_single_step (unsigned int, int); - #undef TARGET_BYTE_ORDER_SELECTABLE #define TARGET_BYTE_ORDER BFD_ENDIAN_LITTLE #endif /* TM_WINCE_H */ --- 28,33 ---- Index: config/sparc/tm-sparclet.h =================================================================== RCS file: /cvs/src/src/gdb/config/sparc/tm-sparclet.h,v retrieving revision 1.5 diff -p -r1.5 tm-sparclet.h *** tm-sparclet.h 2001/03/14 23:23:14 1.5 --- tm-sparclet.h 2002/01/19 05:51:37 *************** enum { *** 49,55 **** /* overrides of tm-sparc.h */ #undef TARGET_BYTE_ORDER - #define TARGET_BYTE_ORDER_SELECTABLE /* Sequence of bytes for breakpoint instruction (ta 1). */ #undef BREAKPOINT --- 49,54 ---- Index: config/sparc/tm-sparclite.h =================================================================== RCS file: /cvs/src/src/gdb/config/sparc/tm-sparclite.h,v retrieving revision 1.4 diff -p -r1.4 tm-sparclite.h *** tm-sparclite.h 2001/03/14 23:23:14 1.4 --- tm-sparclite.h 2002/01/19 05:51:39 *************** enum { *** 45,51 **** /* overrides of tm-sparc.h */ #undef TARGET_BYTE_ORDER - #define TARGET_BYTE_ORDER_SELECTABLE /* Select the sparclite disassembler. Slightly different instruction set from the V8 sparc. */ --- 45,50 ---- Index: doc/ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/doc/ChangeLog,v retrieving revision 1.136 diff -p -r1.136 ChangeLog *** ChangeLog 2002/01/18 04:51:09 1.136 --- ChangeLog 2002/01/19 05:51:45 *************** *** 1,3 **** --- 1,8 ---- + 2002-01-19 Andrew Cagney + + * gdbint.texinfo (Target Architecture Definition): Delete + description of TARGET_BYTE_ORDER_SELECTABLE_P. + 2002-01-17 Andrew Cagney * gdbint.texinfo (Host Definition): Remove references to XDEPFILES Index: doc/gdbint.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdbint.texinfo,v retrieving revision 1.56 diff -p -r1.56 gdbint.texinfo *** gdbint.texinfo 2002/01/18 04:51:10 1.56 --- gdbint.texinfo 2002/01/19 05:51:53 *************** The ordering of bytes in the target. Th *** 3482,3493 **** @code{BFD_ENDIAN_BIG} or @code{BFD_ENDIAN_LITTLE}. This macro replaces @code{TARGET_BYTE_ORDER} which is deprecated. - @item TARGET_BYTE_ORDER_SELECTABLE_P - @findex TARGET_BYTE_ORDER_SELECTABLE_P - Non-zero if the target has both @code{BIG_ENDIAN} and - @code{BFD_ENDIAN_LITTLE} variants. This macro replaces - @code{TARGET_BYTE_ORDER_SELECTABLE} which is deprecated. - @item TARGET_CHAR_BIT @findex TARGET_CHAR_BIT Number of bits in a char; defaults to 8. --- 3482,3487 ---- Index: gdbserver/low-sim.c =================================================================== RCS file: /cvs/src/src/gdb/gdbserver/low-sim.c,v retrieving revision 1.6 diff -p -r1.6 low-sim.c *** low-sim.c 2002/01/17 21:13:49 1.6 --- low-sim.c 2002/01/19 05:51:53 *************** create_inferior (char *program, char **a *** 88,97 **** { bfd *abfd; int pid = 0; - #ifdef TARGET_BYTE_ORDER_SELECTABLE char **new_argv; int nargs; - #endif abfd = bfd_openr (program, 0); if (!abfd) --- 88,95 ---- *************** create_inferior (char *program, char **a *** 108,114 **** exit (1); } - #ifdef TARGET_BYTE_ORDER_SELECTABLE /* Add "-E big" or "-E little" to the argument list depending on the endianness of the program to be loaded. */ for (nargs = 0; argv[nargs] != NULL; nargs++) /* count the args */ --- 106,111 ---- *************** create_inferior (char *program, char **a *** 120,126 **** new_argv[nargs + 1] = bfd_big_endian (abfd) ? "big" : "little"; new_argv[nargs + 2] = NULL; argv = new_argv; - #endif /* Create an instance of the simulator. */ default_callback.init (&default_callback); --- 117,122 ---- --------------000700030803060108090205--