diff -Naur gdb-7.4.1.orig/gdb/lm32-tdep.c gdb-7.4.1/gdb/lm32-tdep.c
--- gdb-7.4.1.orig/gdb/lm32-tdep.c	2012-01-06 05:43:19.000000000 +0100
+++ gdb-7.4.1/gdb/lm32-tdep.c	2012-04-27 12:54:02.244991076 +0200
@@ -35,7 +35,7 @@
 #include "regcache.h"
 #include "trad-frame.h"
 #include "reggroups.h"
-#include "opcodes/lm32-desc.h"
+#include "../opcodes/lm32-desc.h"
 
 #include "gdb_string.h"
 
diff -Naur gdb-7.4.1.orig/gdb/sparc-tdep.c gdb-7.4.1/gdb/sparc-tdep.c
--- gdb-7.4.1.orig/gdb/sparc-tdep.c	2012-01-06 05:43:30.000000000 +0100
+++ gdb-7.4.1/gdb/sparc-tdep.c	2012-04-27 12:54:16.490208226 +0200
@@ -1305,7 +1305,7 @@
 sparc32_store_return_value (struct type *type, struct regcache *regcache,
 			    const gdb_byte *valbuf)
 {
-  int len = TYPE_LENGTH (type);
+  size_t len = TYPE_LENGTH (type);
   gdb_byte buf[8];
 
   gdb_assert (!sparc_structure_or_union_p (type));
diff -Naur gdb-7.4.1.orig/sim/common/gentmap.c gdb-7.4.1/sim/common/gentmap.c
--- gdb-7.4.1.orig/sim/common/gentmap.c	2006-11-07 20:29:59.000000000 +0100
+++ gdb-7.4.1/sim/common/gentmap.c	2012-04-27 12:54:39.289556009 +0200
@@ -2,6 +2,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
 struct tdefs {
   char *symbol;
diff -Naur gdb-7.4.1.orig/sim/erc32/configure gdb-7.4.1/sim/erc32/configure
--- gdb-7.4.1.orig/sim/erc32/configure	2011-12-03 19:23:45.000000000 +0100
+++ gdb-7.4.1/sim/erc32/configure	2012-04-27 12:56:27.078198573 +0200
@@ -591,8 +591,9 @@
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 cgen_breaks
+READLINE_CFLAGS
+READLINE_DEPS
 READLINE
-TERMCAP
 REPORT_BUGS_TEXI
 REPORT_BUGS_TO
 PKGVERSION
@@ -722,6 +723,7 @@
 enable_sim_profile
 with_pkgversion
 with_bugurl
+with_system_readline
 '
       ac_precious_vars='build_alias
 host_alias
@@ -1364,6 +1366,7 @@
   --with-zlib             include zlib support (auto/yes/no) default=auto
   --with-pkgversion=PKG   Use PKG in the version string in place of "GDB"
   --with-bugurl=URL       Direct users to URL to report a bug
+  --with-system-readline  use installed readline library
 
 Some influential environment variables:
   CC          C compiler command
@@ -4737,86 +4740,41 @@
 done
 
 
-# In the Cygwin environment, we need some additional flags.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cygwin" >&5
-$as_echo_n "checking for cygwin... " >&6; }
-if test "${sim_cv_os_cygwin+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* 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
+# Check whether --with-system-readline was given.
+if test "${with_system_readline+set}" = set; then :
+  withval=$with_system_readline;
 fi
-rm -f conftest*
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sim_cv_os_cygwin" >&5
-$as_echo "$sim_cv_os_cygwin" >&6; }
 
-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
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -ltermcap" >&5
-$as_echo_n "checking for main in -ltermcap... " >&6; }
-if test "${ac_cv_lib_termcap_main+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltermcap  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+if test "$with_system_readline" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline" >&5
+$as_echo_n "checking for readline... " >&6; }
+  save_LIBS="$LIBS"
+  LIBS="-lreadline $save_LIBS"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char add_history ();
 int
 main ()
 {
-return main ();
+return add_history ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_termcap_main=yes
-else
-  ac_cv_lib_termcap_main=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_main" >&5
-$as_echo "$ac_cv_lib_termcap_main" >&6; }
-if test "x$ac_cv_lib_termcap_main" = x""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
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for readline in -lreadline" >&5
-$as_echo_n "checking for readline in -lreadline... " >&6; }
-if test "${ac_cv_lib_readline_readline+set}" = set; then :
-  $as_echo_n "(cached) " >&6
+  READLINE=-lreadline
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lreadline $TERMCAP $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+   LIBS="-lreadline -lncurses $save_LIBS"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -4825,33 +4783,39 @@
 #ifdef __cplusplus
 extern "C"
 #endif
-char readline ();
+char add_history ();
 int
 main ()
 {
-return readline ();
+return add_history ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_readline_readline=yes
+  READLINE="-lreadline -lncurses"
 else
-  ac_cv_lib_readline_readline=no
+  as_fn_error "unable to detect readline" "$LINENO" 5
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_readline" >&5
-$as_echo "$ac_cv_lib_readline_readline" >&6; }
-if test "x$ac_cv_lib_readline_readline" = x""yes; then :
-  READLINE=-lreadline
-else
-  as_fn_error "the required \"readline\" library is missing" "$LINENO" 5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LIBS="$save_LIBS"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINE" >&5
+$as_echo "$READLINE" >&6; }
+  READLINE_DEPS=
+  READLINE_CFLAGS=
+else
+  READLINE='../../readline/libreadline.a -lncurses'
+  READLINE_DEPS='$(READLINE)'
+  READLINE_CFLAGS='-I$(READLINE_SRC)/..'
 fi
 
-fi
+
+
 
 
 ac_sources="$sim_link_files"
diff -Naur gdb-7.4.1.orig/sim/erc32/configure.ac gdb-7.4.1/sim/erc32/configure.ac
--- gdb-7.4.1.orig/sim/erc32/configure.ac	2011-10-18 02:30:57.000000000 +0200
+++ gdb-7.4.1/sim/erc32/configure.ac	2012-04-27 12:56:27.079198579 +0200
@@ -7,27 +7,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/libreadline.a -lncurses'
+  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-7.4.1.orig/sim/erc32/erc32.c gdb-7.4.1/sim/erc32/erc32.c
--- gdb-7.4.1.orig/sim/erc32/erc32.c	2010-05-11 16:18:20.000000000 +0200
+++ gdb-7.4.1/sim/erc32/erc32.c	2012-04-27 12:54:58.453847837 +0200
@@ -414,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) {
diff -Naur gdb-7.4.1.orig/sim/erc32/Makefile.in gdb-7.4.1/sim/erc32/Makefile.in
--- gdb-7.4.1.orig/sim/erc32/Makefile.in	2012-01-06 05:54:43.000000000 +0100
+++ gdb-7.4.1/sim/erc32/Makefile.in	2012-04-27 12:56:02.725826652 +0200
@@ -19,12 +19,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
 
@@ -38,8 +38,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?
@@ -52,11 +52,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-7.4.1.orig/sim/h8300/compile.c gdb-7.4.1/sim/h8300/compile.c
--- gdb-7.4.1.orig/sim/h8300/compile.c	2011-07-05 21:06:37.000000000 +0200
+++ gdb-7.4.1/sim/h8300/compile.c	2012-04-27 12:55:14.873099123 +0200
@@ -38,6 +38,12 @@
 # define SIGTRAP 5
 #endif
 
+#ifdef _WIN32
+#ifndef SIGBUS
+#define SIGBUS 10
+#endif
+#endif
+
 int debug;
 
 host_callback *sim_callback;
diff -Naur gdb-7.4.1.orig/sim/m32c/Makefile.in gdb-7.4.1/sim/m32c/Makefile.in
--- gdb-7.4.1.orig/sim/m32c/Makefile.in	2012-01-06 05:54:51.000000000 +0100
+++ gdb-7.4.1/sim/m32c/Makefile.in	2012-04-27 12:55:27.860293689 +0200
@@ -55,7 +55,7 @@
 	./opc2c -l m32c.out $(srcdir)/m32c.opc > m32c.c
 
 opc2c : opc2c.o safe-fgets.o
-	$(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) $^ -o $@ $(BUILD_LIBS)
+	$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $^ -o $@ $(BUILD_LIBS)
 
 sample.x : $(srcdir)/sample.S $(srcdir)/sample.ld
 	../../gcc/xgcc $(CPUFLAGS) -B../../gcc/ -c $(srcdir)/sample.S -o sample.o
@@ -89,8 +89,8 @@
 r8c.o : cpu.h mem.h misc.h int.h
 
 opc2c.o : opc2c.c safe-fgets.h
-	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/opc2c.c
+	$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -o $@ -c $(srcdir)/opc2c.c
 
 safe-fgets.o : safe-fgets.c safe-fgets.h
-	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/safe-fgets.c
+	$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -o $@ -c $(srcdir)/safe-fgets.c
 
diff -Naur gdb-7.4.1.orig/sim/ppc/device.c gdb-7.4.1/sim/ppc/device.c
--- gdb-7.4.1.orig/sim/ppc/device.c	2011-02-14 06:14:27.000000000 +0100
+++ gdb-7.4.1/sim/ppc/device.c	2012-04-27 12:55:39.858479511 +0200
@@ -1816,7 +1816,7 @@
 /* I/O */
 
 EXTERN_DEVICE\
-(void volatile)
+(void)
 device_error(device *me,
 	     const char *fmt,
 	     ...)
diff -Naur gdb-7.4.1.orig/sim/ppc/device.h gdb-7.4.1/sim/ppc/device.h
--- gdb-7.4.1.orig/sim/ppc/device.h	2001-12-14 01:22:12.000000000 +0100
+++ gdb-7.4.1/sim/ppc/device.h	2012-04-27 12:55:39.859479484 +0200
@@ -727,7 +727,7 @@
    */
 
 EXTERN_DEVICE\
-(void volatile) device_error
+(void) device_error
 (device *me,
  const char *fmt,
  ...) __attribute__ ((format (printf, 2, 3)));
diff -Naur gdb-7.4.1.orig/sim/ppc/hw_glue.c gdb-7.4.1/sim/ppc/hw_glue.c
--- gdb-7.4.1.orig/sim/ppc/hw_glue.c	1999-04-16 03:35:09.000000000 +0200
+++ gdb-7.4.1/sim/ppc/hw_glue.c	2012-04-27 12:55:49.294622835 +0200
@@ -194,13 +194,13 @@
     if (glue->sizeof_output == 0)
       device_error(me, "at least one reg property size must be nonzero");
     if (glue->sizeof_output % sizeof(unsigned_word) != 0)
-      device_error(me, "reg property size must be %d aligned", sizeof(unsigned_word));
+      device_error(me, "reg property size must be %zd aligned", sizeof(unsigned_word));
     /* and the address */
     device_address_to_attach_address(device_parent(me),
 				     &unit.address, &glue->space, &glue->address,
 				     me);
     if (glue->address % (sizeof(unsigned_word) * max_nr_interrupts) != 0)
-      device_error(me, "reg property address must be %d aligned",
+      device_error(me, "reg property address must be %zd aligned",
 		   sizeof(unsigned_word) * max_nr_interrupts);
     glue->nr_outputs = glue->sizeof_output / sizeof(unsigned_word);
     glue->output = zalloc(glue->sizeof_output);
