summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRalf Corsepius <ralf.corsepius@rtems.org>2008-05-08 02:57:51 +0000
committerRalf Corsepius <ralf.corsepius@rtems.org>2008-05-08 02:57:51 +0000
commitd299ca4b488d5996f1664c0eb3076c21cbffcb74 (patch)
treeba4e9a0e533a3c67cebd71bfda7afbaaa0d18c46
parentUpgrade to gdb-6.6. (diff)
downloadrtems-d299ca4b488d5996f1664c0eb3076c21cbffcb74.tar.bz2
New (sync with rtems-4-8-branch)
-rw-r--r--contrib/crossrpms/patches/gdb-6.6-rtems4.7-20071216.diff173
-rw-r--r--contrib/crossrpms/patches/gdb-6.8-rtems4.7-20080429.diff597
2 files changed, 770 insertions, 0 deletions
diff --git a/contrib/crossrpms/patches/gdb-6.6-rtems4.7-20071216.diff b/contrib/crossrpms/patches/gdb-6.6-rtems4.7-20071216.diff
new file mode 100644
index 0000000000..d9c615a748
--- /dev/null
+++ b/contrib/crossrpms/patches/gdb-6.6-rtems4.7-20071216.diff
@@ -0,0 +1,173 @@
+diff -uNr gdb-6.6.orig/bfd/sysdep.h gdb-6.6/bfd/sysdep.h
+--- gdb-6.6.orig/bfd/sysdep.h 2005-05-05 20:51:14.000000000 +0200
++++ gdb-6.6/bfd/sysdep.h 2007-12-14 17:51:58.000000000 +0100
+@@ -135,7 +135,7 @@
+ #endif
+
+ #if !HAVE_DECL_STRSTR
+-extern char *strstr ();
++/* extern char *strstr (); */
+ #endif
+
+ #ifdef HAVE_FTELLO
+diff -uNr gdb-6.6.orig/configure gdb-6.6/configure
+--- gdb-6.6.orig/configure 2006-11-15 00:26:39.000000000 +0100
++++ gdb-6.6/configure 2007-12-14 17:51:58.000000000 +0100
+@@ -3679,7 +3679,7 @@
+ # For an installed makeinfo, we require it to be from texinfo 4.4 or
+ # higher, else we use the "missing" dummy.
+ if ${MAKEINFO} --version \
+- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
++ | egrep 'texinfo[^0-9]*(4\.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
+ :
+ else
+ MAKEINFO="$MISSING makeinfo"
+diff -uNr gdb-6.6.orig/configure.in gdb-6.6/configure.in
+--- gdb-6.6.orig/configure.in 2006-12-18 08:22:58.000000000 +0100
++++ gdb-6.6/configure.in 2007-12-14 17:51:58.000000000 +0100
+@@ -2228,7 +2228,7 @@
+ # For an installed makeinfo, we require it to be from texinfo 4.4 or
+ # higher, else we use the "missing" dummy.
+ if ${MAKEINFO} --version \
+- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
++ | egrep 'texinfo[^0-9]*(4\.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
+ :
+ else
+ MAKEINFO="$MISSING makeinfo"
+diff -uNr gdb-6.6.orig/gdb/arch-utils.c gdb-6.6/gdb/arch-utils.c
+--- gdb-6.6.orig/gdb/arch-utils.c 2006-11-10 20:20:35.000000000 +0100
++++ gdb-6.6/gdb/arch-utils.c 2007-12-14 17:51:58.000000000 +0100
+@@ -349,6 +349,15 @@
+ };
+ static const char *set_endian_string;
+
++enum bfd_endian
++selected_byte_order (void)
++{
++ if (target_byte_order_user != BFD_ENDIAN_UNKNOWN)
++ return TARGET_BYTE_ORDER;
++ else
++ return BFD_ENDIAN_UNKNOWN;
++}
++
+ /* Called by ``show endian''. */
+
+ static void
+diff -uNr gdb-6.6.orig/gdb/arch-utils.h gdb-6.6/gdb/arch-utils.h
+--- gdb-6.6.orig/gdb/arch-utils.h 2006-11-10 20:20:35.000000000 +0100
++++ gdb-6.6/gdb/arch-utils.h 2007-12-14 17:51:58.000000000 +0100
+@@ -126,6 +126,10 @@
+
+ extern int legacy_register_sim_regno (int regnum);
+
++/* Return the selected byte order, or BFD_ENDIAN_UNKNOWN if no byte
++ order was explicitly selected. */
++extern enum bfd_endian selected_byte_order (void);
++
+ /* Return the selected architecture's name, or NULL if no architecture
+ was explicitly selected. */
+ extern const char *selected_architecture_name (void);
+diff -uNr gdb-6.6.orig/gdb/ChangeLog.rtems gdb-6.6/gdb/ChangeLog.rtems
+--- gdb-6.6.orig/gdb/ChangeLog.rtems 1970-01-01 01:00:00.000000000 +0100
++++ gdb-6.6/gdb/ChangeLog.rtems 2007-12-14 17:51:58.000000000 +0100
+@@ -0,0 +1,6 @@
++2007-02-08 Daniel Jacobowitz <dan@codesourcery.com>
++
++ * arch-utils.c (selected_byte_order): New.
++ * arch-utils.h (selected_byte_order): New prototype.
++ * remote-sim.c (gdbsim_open): Use selected_byte_order.
++
+diff -uNr gdb-6.6.orig/gdb/memory-map.c gdb-6.6/gdb/memory-map.c
+--- gdb-6.6.orig/gdb/memory-map.c 2006-10-05 21:42:31.000000000 +0200
++++ gdb-6.6/gdb/memory-map.c 2007-12-14 17:51:58.000000000 +0100
+@@ -141,10 +141,10 @@
+ {
+ if (strcmp (data->property_name, "blocksize") == 0)
+ {
++ char *end = NULL;
+ if (!data->character_data)
+ throw_error (XML_PARSE_ERROR,
+ _("Empty content of 'property' element"));
+- char *end = NULL;
+ data->currently_parsing->attrib.blocksize
+ = strtoul (data->character_data, &end, 0);
+ if (*end != '\0')
+diff -uNr gdb-6.6.orig/gdb/remote-sim.c gdb-6.6/gdb/remote-sim.c
+--- gdb-6.6.orig/gdb/remote-sim.c 2006-11-10 20:20:36.000000000 +0100
++++ gdb-6.6/gdb/remote-sim.c 2007-12-14 17:51:58.000000000 +0100
+@@ -504,9 +504,9 @@
+ + 50) /* slack */ ;
+ arg_buf = (char *) alloca (len);
+ 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). */
+- switch (TARGET_BYTE_ORDER)
++ /* Specify the byte order for the target when it is explicitly
++ specified by the user (not auto detected). */
++ switch (selected_byte_order ())
+ {
+ case BFD_ENDIAN_BIG:
+ strcat (arg_buf, " -E big");
+diff -uNr gdb-6.6.orig/sim/erc32/erc32.c gdb-6.6/sim/erc32/erc32.c
+--- gdb-6.6.orig/sim/erc32/erc32.c 1999-04-16 03:35:00.000000000 +0200
++++ gdb-6.6/sim/erc32/erc32.c 2007-12-14 17:51:58.000000000 +0100
+@@ -413,7 +413,7 @@
+ if (rom8) mec_memcfg &= ~0x20000;
+ else mec_memcfg |= 0x20000;
+
+- mem_ramsz = (256 * 1024) << ((mec_memcfg >> 10) & 7);
++ mem_ramsz = (512 * 1024) << ((mec_memcfg >> 10) & 7);
+ mem_romsz = (128 * 1024) << ((mec_memcfg >> 18) & 7);
+
+ if (sparclite_board) {
+diff -uNr gdb-6.6.orig/sim/erc32/exec.c gdb-6.6/sim/erc32/exec.c
+--- gdb-6.6.orig/sim/erc32/exec.c 2005-03-07 12:09:05.000000000 +0100
++++ gdb-6.6/sim/erc32/exec.c 2007-12-14 17:51:58.000000000 +0100
+@@ -1713,7 +1713,7 @@
+ sregs->fdp[rs2 | 1] = sregs->fs[rs2 & ~1];
+ sregs->fdp[rs2 & ~1] = sregs->fs[rs2 | 1];
+ default:
+- ;
++ break;
+ }
+ #endif
+
+@@ -1886,7 +1886,7 @@
+ sregs->fs[rd & ~1] = sregs->fdp[rd | 1];
+ sregs->fs[rd | 1] = sregs->fdp[rd & ~1];
+ default:
+- ;
++ break;
+ }
+ #endif
+ if (sregs->fpstate == FP_EXC_PE) {
+diff -uNr gdb-6.6.orig/sim/ppc/ppc-instructions gdb-6.6/sim/ppc/ppc-instructions
+--- gdb-6.6.orig/sim/ppc/ppc-instructions 2006-11-29 16:25:26.000000000 +0100
++++ gdb-6.6/sim/ppc/ppc-instructions 2007-12-14 17:52:11.000000000 +0100
+@@ -3402,6 +3402,14 @@
+ case spr_dec:
+ *rT = cpu_get_decrementer(processor);
+ break;
++ case spr_tbrl:
++ if (is_64bit_implementation) *rT = TB;
++ else *rT = EXTRACTED64(TB, 32, 63);
++ break;
++ case spr_tbru:
++ if (is_64bit_implementation) *rT = EXTRACTED64(TB, 0, 31);
++ else *rT = EXTRACTED64(TB, 0, 31);
++ break;
+ case spr_tbu:
+ case spr_tbl:
+ /* NOTE - these SPR's are not readable. Use mftb[ul] */
+diff -uNr gdb-6.6.orig/sim/ppc/ppc-spr-table gdb-6.6/sim/ppc/ppc-spr-table
+--- gdb-6.6.orig/sim/ppc/ppc-spr-table 2003-06-22 18:48:12.000000000 +0200
++++ gdb-6.6/sim/ppc/ppc-spr-table 2007-12-14 17:52:11.000000000 +0100
+@@ -32,6 +32,8 @@
+ SRR0:26:0:0
+ SRR1:27:0:0
+ VRSAVE:256:0:0
++TBRL:268:0:0
++TBRU:269:0:0
+ SPRG0:272:0:0
+ SPRG1:273:0:0
+ SPRG2:274:0:0
diff --git a/contrib/crossrpms/patches/gdb-6.8-rtems4.7-20080429.diff b/contrib/crossrpms/patches/gdb-6.8-rtems4.7-20080429.diff
new file mode 100644
index 0000000000..87a8b463a0
--- /dev/null
+++ b/contrib/crossrpms/patches/gdb-6.8-rtems4.7-20080429.diff
@@ -0,0 +1,597 @@
+diff -Naur gdb-6.8.orig/sim/common/aclocal.m4 gdb-6.8/sim/common/aclocal.m4
+--- gdb-6.8.orig/sim/common/aclocal.m4 2006-06-13 10:06:48.000000000 +0200
++++ gdb-6.8/sim/common/aclocal.m4 2008-04-28 07:18:30.000000000 +0200
+@@ -18,7 +18,7 @@
+ #
+ # SIM_AC_OUTPUT
+
+-AC_DEFUN(SIM_AC_COMMON,
++AC_DEFUN([SIM_AC_COMMON],
+ [
+ # autoconf.info says this should be called right after AC_INIT.
+ AC_CONFIG_HEADER(ifelse([$1],,config.h,[$1]):config.in)
+@@ -245,7 +245,7 @@
+ dnl supported.
+ dnl ??? Until there is demonstrable value in doing something more complicated,
+ dnl let's not.
+-AC_DEFUN(SIM_AC_OPTION_ENVIRONMENT,
++AC_DEFUN([SIM_AC_OPTION_ENVIRONMENT],
+ [
+ AC_ARG_ENABLE(sim-environment,
+ [ --enable-sim-environment=environment Specify mixed, user, virtual or operating environment.],
+@@ -269,7 +269,7 @@
+ dnl Without this option all possible alignment restrictions are accommodated.
+ dnl arg[1] is hardwired target alignment
+ dnl arg[2] is default target alignment
+-AC_DEFUN(SIM_AC_OPTION_ALIGNMENT,
++AC_DEFUN([SIM_AC_OPTION_ALIGNMENT],
+ wire_alignment="[$1]"
+ default_alignment="[$2]"
+ [
+@@ -318,7 +318,7 @@
+
+
+ dnl Conditionally compile in assertion statements.
+-AC_DEFUN(SIM_AC_OPTION_ASSERT,
++AC_DEFUN([SIM_AC_OPTION_ASSERT],
+ [
+ AC_ARG_ENABLE(sim-assert,
+ [ --enable-sim-assert Specify whether to perform random assertions.],
+@@ -342,7 +342,7 @@
+ dnl arg[3] is the number of bits in an address
+ dnl arg[4] is the number of bits in an OpenFirmware cell.
+ dnl FIXME: this information should be obtained from bfd/archure
+-AC_DEFUN(SIM_AC_OPTION_BITSIZE,
++AC_DEFUN([SIM_AC_OPTION_BITSIZE],
+ wire_word_bitsize="[$1]"
+ wire_word_msb="[$2]"
+ wire_address_bitsize="[$3]"
+@@ -408,7 +408,7 @@
+ dnl that support both big and little endian targets.
+ dnl arg[1] is hardwired target endianness.
+ dnl arg[2] is default target endianness.
+-AC_DEFUN(SIM_AC_OPTION_ENDIAN,
++AC_DEFUN([SIM_AC_OPTION_ENDIAN],
+ [
+ wire_endian="[$1]"
+ default_endian="[$2]"
+@@ -458,7 +458,7 @@
+ dnl --enable-sim-hostendian is for users of the simulator when
+ dnl they find that AC_C_BIGENDIAN does not function correctly
+ dnl (for instance in a canadian cross)
+-AC_DEFUN(SIM_AC_OPTION_HOSTENDIAN,
++AC_DEFUN([SIM_AC_OPTION_HOSTENDIAN],
+ [
+ AC_ARG_ENABLE(sim-hostendian,
+ [ --enable-sim-hostendian=end Specify host byte endian orientation.],
+@@ -490,7 +490,7 @@
+ dnl And optionally the bitsize of the floating point register.
+ dnl arg[1] specifies the presence (or absence) of floating point hardware
+ dnl arg[2] specifies the number of bits in a floating point register
+-AC_DEFUN(SIM_AC_OPTION_FLOAT,
++AC_DEFUN([SIM_AC_OPTION_FLOAT],
+ [
+ default_sim_float="[$1]"
+ default_sim_float_bitsize="[$2]"
+@@ -519,7 +519,7 @@
+
+
+ dnl The argument is the default cache size if none is specified.
+-AC_DEFUN(SIM_AC_OPTION_SCACHE,
++AC_DEFUN([SIM_AC_OPTION_SCACHE],
+ [
+ default_sim_scache="ifelse([$1],,0,[$1])"
+ AC_ARG_ENABLE(sim-scache,
+@@ -539,7 +539,7 @@
+
+
+ dnl The argument is the default model if none is specified.
+-AC_DEFUN(SIM_AC_OPTION_DEFAULT_MODEL,
++AC_DEFUN([SIM_AC_OPTION_DEFAULT_MODEL],
+ [
+ default_sim_default_model="ifelse([$1],,0,[$1])"
+ AC_ARG_ENABLE(sim-default-model,
+@@ -559,7 +559,7 @@
+ dnl arg[1] Enable sim-hw by default? ("yes" or "no")
+ dnl arg[2] is a space separated list of devices that override the defaults
+ dnl arg[3] is a space separated list of extra target specific devices.
+-AC_DEFUN(SIM_AC_OPTION_HARDWARE,
++AC_DEFUN([SIM_AC_OPTION_HARDWARE],
+ [
+ if test x"[$1]" = x"yes"; then
+ sim_hw_p=yes
+@@ -621,7 +621,7 @@
+ dnl performance by inlining functions.
+ dnl Guarantee that unconfigured simulators do not do any inlining
+ sim_inline="-DDEFAULT_INLINE=0"
+-AC_DEFUN(SIM_AC_OPTION_INLINE,
++AC_DEFUN([SIM_AC_OPTION_INLINE],
+ [
+ default_sim_inline="ifelse([$1],,,-DDEFAULT_INLINE=[$1])"
+ AC_ARG_ENABLE(sim-inline,
+@@ -666,7 +666,7 @@
+ AC_SUBST(sim_inline)
+
+
+-AC_DEFUN(SIM_AC_OPTION_PACKAGES,
++AC_DEFUN([SIM_AC_OPTION_PACKAGES],
+ [
+ AC_ARG_ENABLE(sim-packages,
+ [ --enable-sim-packages=list Specify the packages to be included in the build.],
+@@ -692,7 +692,7 @@
+ AC_SUBST(sim_packages)
+
+
+-AC_DEFUN(SIM_AC_OPTION_REGPARM,
++AC_DEFUN([SIM_AC_OPTION_REGPARM],
+ [
+ AC_ARG_ENABLE(sim-regparm,
+ [ --enable-sim-regparm=nr-parm Pass parameters in registers instead of on the stack - x86/GCC specific.],
+@@ -709,7 +709,7 @@
+ AC_SUBST(sim_regparm)
+
+
+-AC_DEFUN(SIM_AC_OPTION_RESERVED_BITS,
++AC_DEFUN([SIM_AC_OPTION_RESERVED_BITS],
+ [
+ default_sim_reserved_bits="ifelse([$1],,1,[$1])"
+ AC_ARG_ENABLE(sim-reserved-bits,
+@@ -726,7 +726,7 @@
+ AC_SUBST(sim_reserved_bits)
+
+
+-AC_DEFUN(SIM_AC_OPTION_SMP,
++AC_DEFUN([SIM_AC_OPTION_SMP],
+ [
+ default_sim_smp="ifelse([$1],,5,[$1])"
+ AC_ARG_ENABLE(sim-smp,
+@@ -746,7 +746,7 @@
+ AC_SUBST(sim_smp)
+
+
+-AC_DEFUN(SIM_AC_OPTION_STDCALL,
++AC_DEFUN([SIM_AC_OPTION_STDCALL],
+ [
+ AC_ARG_ENABLE(sim-stdcall,
+ [ --enable-sim-stdcall=type Use an alternative function call/return mechanism - x86/GCC specific.],
+@@ -763,7 +763,7 @@
+ AC_SUBST(sim_stdcall)
+
+
+-AC_DEFUN(SIM_AC_OPTION_XOR_ENDIAN,
++AC_DEFUN([SIM_AC_OPTION_XOR_ENDIAN],
+ [
+ default_sim_xor_endian="ifelse([$1],,8,[$1])"
+ AC_ARG_ENABLE(sim-xor-endian,
+@@ -782,7 +782,7 @@
+
+ dnl --enable-build-warnings is for developers of the simulator.
+ dnl it enables extra GCC specific warnings.
+-AC_DEFUN(SIM_AC_OPTION_WARNINGS,
++AC_DEFUN([SIM_AC_OPTION_WARNINGS],
+ [
+ # NOTE: Don't add -Wall or -Wunused, they both include
+ # -Wunused-parameter which reports bogus warnings.
+@@ -866,7 +866,7 @@
+ dnl one afterwards. The two pieces of the common fragment are inserted into
+ dnl the target's fragment at the appropriate points.
+
+-AC_DEFUN(SIM_AC_OUTPUT,
++AC_DEFUN([SIM_AC_OUTPUT],
+ [
+ AC_LINK_FILES($sim_link_files, $sim_link_links)
+ dnl Make @cgen_breaks@ non-null only if the sim uses CGEN.
+@@ -895,7 +895,7 @@
+ sinclude(../../config/gettext-sister.m4)
+
+ dnl --enable-cgen-maint support
+-AC_DEFUN(SIM_AC_OPTION_CGEN_MAINT,
++AC_DEFUN([SIM_AC_OPTION_CGEN_MAINT],
+ [
+ cgen_maint=no
+ dnl Default is to use one in build tree.
+diff -Naur gdb-6.8.orig/sim/erc32/configure gdb-6.8/sim/erc32/configure
+--- gdb-6.8.orig/sim/erc32/configure 2006-12-20 23:35:51.000000000 +0100
++++ gdb-6.8/sim/erc32/configure 2008-04-29 05:18:03.000000000 +0200
+@@ -309,7 +309,7 @@
+ # include <unistd.h>
+ #endif"
+
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS sim_environment sim_alignment sim_assert sim_bitsize sim_endian sim_hostendian sim_float sim_scache sim_default_model sim_hw_cflags sim_hw_objs sim_hw sim_inline sim_packages sim_regparm sim_reserved_bits sim_smp sim_stdcall sim_xor_endian WARN_CFLAGS WERROR_CFLAGS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CC_FOR_BUILD HDEFINES AR RANLIB ac_ct_RANLIB USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CPP EGREP MAINT sim_bswap sim_cflags sim_debug sim_stdio sim_trace sim_profile TERMCAP READLINE cgen_breaks LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS sim_environment sim_alignment sim_assert sim_bitsize sim_endian sim_hostendian sim_float sim_scache sim_default_model sim_hw_cflags sim_hw_objs sim_hw sim_inline sim_packages sim_regparm sim_reserved_bits sim_smp sim_stdcall sim_xor_endian WARN_CFLAGS WERROR_CFLAGS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CC_FOR_BUILD HDEFINES AR RANLIB ac_ct_RANLIB USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CPP EGREP MAINT sim_bswap sim_cflags sim_debug sim_stdio sim_trace sim_profile READLINE READLINE_DEPS READLINE_CFLAGS cgen_breaks LIBOBJS LTLIBOBJS'
+ ac_subst_files=''
+
+ # Initialize some variables set by options.
+@@ -858,6 +858,11 @@
+ --enable-sim-trace=opts Enable tracing flags
+ --enable-sim-profile=opts Enable profiling flags
+
++Optional Packages:
++ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
++ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
++ --with-system-readline use installed readline library
++
+ Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+@@ -4493,57 +4498,36 @@
+ done
+
+
+-# In the Cygwin environment, we need some additional flags.
+-echo "$as_me:$LINENO: checking for cygwin" >&5
+-echo $ECHO_N "checking for cygwin... $ECHO_C" >&6
+-if test "${sim_cv_os_cygwin+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+
+-#ifdef __CYGWIN__
+-lose
+-#endif
+-_ACEOF
+-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "lose" >/dev/null 2>&1; then
+- sim_cv_os_cygwin=yes
+-else
+- sim_cv_os_cygwin=no
+-fi
+-rm -f conftest*
++# Check whether --with-system-readline or --without-system-readline was given.
++if test "${with_system_readline+set}" = set; then
++ withval="$with_system_readline"
+
+-fi
+-echo "$as_me:$LINENO: result: $sim_cv_os_cygwin" >&5
+-echo "${ECHO_T}$sim_cv_os_cygwin" >&6
++fi;
+
+-if test x$sim_cv_os_cygwin = xyes; then
+- TERMCAP='`if test -r ../../libtermcap/libtermcap.a; then echo ../../libtermcap/libtermcap.a; else echo -ltermcap; fi` -luser32'
+-else
+- echo "$as_me:$LINENO: checking for main in -ltermcap" >&5
+-echo $ECHO_N "checking for main in -ltermcap... $ECHO_C" >&6
+-if test "${ac_cv_lib_termcap_main+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_check_lib_save_LIBS=$LIBS
+-LIBS="-ltermcap $LIBS"
+-cat >conftest.$ac_ext <<_ACEOF
++if test "$with_system_readline" = yes; then
++ echo "$as_me:$LINENO: checking for readline" >&5
++echo $ECHO_N "checking for readline... $ECHO_C" >&6
++ save_LIBS="$LIBS"
++ LIBS="-lreadline $save_LIBS"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-
++/* Override any gcc2 internal prototype to avoid an error. */
++#ifdef __cplusplus
++extern "C"
++#endif
++/* We use char because int might match the return type of a gcc2
++ builtin and then its argument prototype would still apply. */
++char add_history ();
+ int
+ main ()
+ {
+-main ();
++add_history ();
+ ;
+ return 0;
+ }
+@@ -4570,41 +4554,13 @@
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+- ac_cv_lib_termcap_main=yes
++ READLINE=-lreadline
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_termcap_main=no
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_main" >&5
+-echo "${ECHO_T}$ac_cv_lib_termcap_main" >&6
+-if test $ac_cv_lib_termcap_main = yes; then
+- TERMCAP=-ltermcap
+-else
+- TERMCAP=""
+-fi
+-
+-fi
+-
+-
+-# We prefer the in-tree readline. Top-level dependencies make sure
+-# src/readline (if it's there) is configured before src/sim.
+-if test -r ../../readline/Makefile; then
+- READLINE=../../readline/libreadline.a
+-else
+- echo "$as_me:$LINENO: checking for readline in -lreadline" >&5
+-echo $ECHO_N "checking for readline in -lreadline... $ECHO_C" >&6
+-if test "${ac_cv_lib_readline_readline+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lreadline $TERMCAP $LIBS"
+-cat >conftest.$ac_ext <<_ACEOF
++ LIBS="-lreadline -lncurses $save_LIBS"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -4617,11 +4573,11 @@
+ #endif
+ /* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+-char readline ();
++char add_history ();
+ int
+ main ()
+ {
+-readline ();
++add_history ();
+ ;
+ return 0;
+ }
+@@ -4648,28 +4604,34 @@
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+- ac_cv_lib_readline_readline=yes
++ READLINE="-lreadline -lncurses"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_lib_readline_readline=no
++{ { echo "$as_me:$LINENO: error: unable to detect readline" >&5
++echo "$as_me: error: unable to detect readline" >&2;}
++ { (exit 1); exit 1; }; }
+ fi
+ rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
++
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_lib_readline_readline" >&5
+-echo "${ECHO_T}$ac_cv_lib_readline_readline" >&6
+-if test $ac_cv_lib_readline_readline = yes; then
+- READLINE=-lreadline
+-else
+- { { echo "$as_me:$LINENO: error: the required \"readline\" library is missing" >&5
+-echo "$as_me: error: the required \"readline\" library is missing" >&2;}
+- { (exit 1); exit 1; }; }
++rm -f conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++ LIBS="$save_LIBS"
++ echo "$as_me:$LINENO: result: $READLINE" >&5
++echo "${ECHO_T}$READLINE" >&6
++ READLINE_DEPS=
++ READLINE_CFLAGS=
++else
++ READLINE='$(READLINE_DIR)/libreadline.a'
++ READLINE_DEPS='$(READLINE)'
++ READLINE_CFLAGS='-I$(READLINE_SRC)/..'
+ fi
+
+-fi
++
++
+
+
+ ac_sources="$sim_link_files"
+@@ -5389,8 +5351,9 @@
+ s,@sim_stdio@,$sim_stdio,;t t
+ s,@sim_trace@,$sim_trace,;t t
+ s,@sim_profile@,$sim_profile,;t t
+-s,@TERMCAP@,$TERMCAP,;t t
+ s,@READLINE@,$READLINE,;t t
++s,@READLINE_DEPS@,$READLINE_DEPS,;t t
++s,@READLINE_CFLAGS@,$READLINE_CFLAGS,;t t
+ s,@cgen_breaks@,$cgen_breaks,;t t
+ s,@LIBOBJS@,$LIBOBJS,;t t
+ s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+diff -Naur gdb-6.8.orig/sim/erc32/configure.ac gdb-6.8/sim/erc32/configure.ac
+--- gdb-6.8.orig/sim/erc32/configure.ac 2006-12-20 23:35:51.000000000 +0100
++++ gdb-6.8/sim/erc32/configure.ac 2008-04-29 05:18:00.000000000 +0200
+@@ -11,27 +11,32 @@
+
+ AC_CHECK_HEADERS(stdlib.h)
+
+-# In the Cygwin environment, we need some additional flags.
+-AC_CACHE_CHECK([for cygwin], sim_cv_os_cygwin,
+-[AC_EGREP_CPP(lose, [
+-#ifdef __CYGWIN__
+-lose
+-#endif],[sim_cv_os_cygwin=yes],[sim_cv_os_cygwin=no])])
++AC_ARG_WITH([system-readline],
++ [AS_HELP_STRING([--with-system-readline],
++ [use installed readline library])])
+
+-if test x$sim_cv_os_cygwin = xyes; then
+- TERMCAP='`if test -r ../../libtermcap/libtermcap.a; then echo ../../libtermcap/libtermcap.a; else echo -ltermcap; fi` -luser32'
++if test "$with_system_readline" = yes; then
++ AC_MSG_CHECKING([for readline])
++ save_LIBS="$LIBS"
++ LIBS="-lreadline $save_LIBS"
++ AC_LINK_IFELSE([AC_LANG_CALL([],
++ [add_history])], [READLINE=-lreadline],
++ [ LIBS="-lreadline -lncurses $save_LIBS"
++ AC_LINK_IFELSE([AC_LANG_CALL([],
++ [add_history])], [READLINE="-lreadline -lncurses"],
++ [AC_MSG_ERROR([unable to detect readline])])
++ ])
++ LIBS="$save_LIBS"
++ AC_MSG_RESULT($READLINE)
++ READLINE_DEPS=
++ READLINE_CFLAGS=
+ else
+- AC_CHECK_LIB(termcap, main, TERMCAP=-ltermcap, TERMCAP="")
+-fi
+-AC_SUBST(TERMCAP)
+-
+-# We prefer the in-tree readline. Top-level dependencies make sure
+-# src/readline (if it's there) is configured before src/sim.
+-if test -r ../../readline/Makefile; then
+- READLINE=../../readline/libreadline.a
+-else
+- AC_CHECK_LIB(readline, readline, READLINE=-lreadline,
+- AC_ERROR([the required "readline" library is missing]), $TERMCAP)
++ READLINE='$(READLINE_DIR)/libreadline.a'
++ READLINE_DEPS='$(READLINE)'
++ READLINE_CFLAGS='-I$(READLINE_SRC)/..'
+ fi
+ AC_SUBST(READLINE)
++AC_SUBST(READLINE_DEPS)
++AC_SUBST(READLINE_CFLAGS)
++
+ SIM_AC_OUTPUT
+diff -Naur gdb-6.8.orig/sim/erc32/erc32.c gdb-6.8/sim/erc32/erc32.c
+--- gdb-6.8.orig/sim/erc32/erc32.c 1999-04-16 03:35:00.000000000 +0200
++++ gdb-6.8/sim/erc32/erc32.c 2008-04-28 07:18:30.000000000 +0200
+@@ -24,6 +24,7 @@
+
+ #include <sys/types.h>
+ #include <stdio.h>
++#include <string.h>
+ #include <termios.h>
+ #include <sys/fcntl.h>
+ #include <sys/file.h>
+@@ -413,7 +414,7 @@
+ if (rom8) mec_memcfg &= ~0x20000;
+ else mec_memcfg |= 0x20000;
+
+- mem_ramsz = (256 * 1024) << ((mec_memcfg >> 10) & 7);
++ mem_ramsz = (512 * 1024) << ((mec_memcfg >> 10) & 7);
+ mem_romsz = (128 * 1024) << ((mec_memcfg >> 18) & 7);
+
+ if (sparclite_board) {
+@@ -1659,7 +1660,7 @@
+ errmec = 0;
+ return(1);
+ }
+-#endif;
++#endif
+
+ if ((addr >= mem_ramstart) && (addr < (mem_ramstart + mem_ramsz))) {
+ fetch_bytes (asi, &ramb[addr & mem_rammask], data, sz);
+@@ -1736,7 +1737,7 @@
+ errmec = 0;
+ return(1);
+ }
+-#endif;
++#endif
+
+ if ((addr >= mem_ramstart) && (addr < (mem_ramstart + mem_ramsz))) {
+ if (mem_accprot) {
+diff -Naur gdb-6.8.orig/sim/erc32/exec.c gdb-6.8/sim/erc32/exec.c
+--- gdb-6.8.orig/sim/erc32/exec.c 2005-03-07 12:09:05.000000000 +0100
++++ gdb-6.8/sim/erc32/exec.c 2008-04-28 07:18:30.000000000 +0200
+@@ -1713,7 +1713,7 @@
+ sregs->fdp[rs2 | 1] = sregs->fs[rs2 & ~1];
+ sregs->fdp[rs2 & ~1] = sregs->fs[rs2 | 1];
+ default:
+- ;
++ break;
+ }
+ #endif
+
+@@ -1886,7 +1886,7 @@
+ sregs->fs[rd & ~1] = sregs->fdp[rd | 1];
+ sregs->fs[rd | 1] = sregs->fdp[rd & ~1];
+ default:
+- ;
++ break;
+ }
+ #endif
+ if (sregs->fpstate == FP_EXC_PE) {
+diff -Naur gdb-6.8.orig/sim/erc32/Makefile.in gdb-6.8/sim/erc32/Makefile.in
+--- gdb-6.8.orig/sim/erc32/Makefile.in 2008-01-01 23:53:24.000000000 +0100
++++ gdb-6.8/sim/erc32/Makefile.in 2008-04-28 07:18:30.000000000 +0200
+@@ -18,12 +18,12 @@
+
+ ## COMMON_PRE_CONFIG_FRAG
+
+-TERMCAP_LIB = @TERMCAP@
++# TERMCAP_LIB = -lncurses
+ READLINE_LIB = @READLINE@
+
+ SIM_OBJS = exec.o erc32.o func.o help.o float.o interf.o
+ SIM_EXTRA_LIBS = $(READLINE_LIB) $(TERMCAP_LIB) -lm
+-SIM_EXTRA_ALL = sis
++SIM_EXTRA_ALL = sis$(EXEEXT)
+ SIM_EXTRA_INSTALL = install-sis
+ SIM_EXTRA_CLEAN = clean-sis
+
+@@ -37,8 +37,8 @@
+ # `sis' doesn't need interf.o.
+ SIS_OFILES = exec.o erc32.o func.o help.o float.o
+
+-sis: sis.o $(SIS_OFILES) $(COMMON_OBJS) $(LIBDEPS)
+- $(CC) $(ALL_CFLAGS) -o sis \
++sis$(EXEEXT): sis.o $(SIS_OFILES) $(COMMON_OBJS) $(LIBDEPS)
++ $(CC) $(ALL_CFLAGS) -o sis$(EXEEXT) \
+ sis.o $(SIS_OFILES) $(COMMON_OBJS) $(EXTRA_LIBS)
+
+ # FIXME: This computes the build host's endianness, doesn't it?
+@@ -51,11 +51,11 @@
+
+ # Copy the files into directories where they will be run.
+ install-sis: installdirs
+- n=`echo sis | sed '$(program_transform_name)'`; \
+- $(INSTALL_PROGRAM) sis$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
++ n=`echo sis$(EXEEXT) | sed '$(program_transform_name)'`; \
++ $(INSTALL_PROGRAM) sis$(EXEEXT) $(DESTDIR)$(bindir)/$$n
+
+ clean-sis:
+- rm -f sis end end.h
++ rm -f sis$(EXEEXT) end end.h
+
+ configure:
+ @echo "Rebuilding configure..."
+diff -Naur gdb-6.8.orig/sim/ppc/ppc-instructions gdb-6.8/sim/ppc/ppc-instructions
+--- gdb-6.8.orig/sim/ppc/ppc-instructions 2006-11-29 16:20:55.000000000 +0100
++++ gdb-6.8/sim/ppc/ppc-instructions 2008-04-28 07:18:30.000000000 +0200
+@@ -3402,6 +3402,14 @@
+ case spr_dec:
+ *rT = cpu_get_decrementer(processor);
+ break;
++ case spr_tbrl:
++ if (is_64bit_implementation) *rT = TB;
++ else *rT = EXTRACTED64(TB, 32, 63);
++ break;
++ case spr_tbru:
++ if (is_64bit_implementation) *rT = EXTRACTED64(TB, 0, 31);
++ else *rT = EXTRACTED64(TB, 0, 31);
++ break;
+ case spr_tbu:
+ case spr_tbl:
+ /* NOTE - these SPR's are not readable. Use mftb[ul] */
+diff -Naur gdb-6.8.orig/sim/ppc/ppc-spr-table gdb-6.8/sim/ppc/ppc-spr-table
+--- gdb-6.8.orig/sim/ppc/ppc-spr-table 2003-06-22 18:48:12.000000000 +0200
++++ gdb-6.8/sim/ppc/ppc-spr-table 2008-04-28 07:18:30.000000000 +0200
+@@ -32,6 +32,8 @@
+ SRR0:26:0:0
+ SRR1:27:0:0
+ VRSAVE:256:0:0
++TBRL:268:0:0
++TBRU:269:0:0
+ SPRG0:272:0:0
+ SPRG1:273:0:0
+ SPRG2:274:0:0