+Thu Jan 4 16:04:54 1996 Stu Grossman (grossman@cygnus.com)
+
+ * breakpoint.c (remove_breakpoint): Change error to warning so
+ that hardware watchpoint removal problems won't leave breakpoint
+ traps in the target.
+ * configure configure.in: Make --enable-gdbtk be the default.
+ * remote-e7000.c (e7000_insert_breakpoint,
+ e7000_remove_breakpoint): Use e7000 based breakpoints, not memory
+ breakpoints.
+ * (e7000_wait): Adjust PC back by two when we see a breakpoint to
+ compensate for e7000 maladjustment.
+ * sparcl-tdep.c (sparclite_check_watch_resources): Fix logic bug
+ which prevented hardware watchpoints from working.
+
Thu Jan 4 10:44:17 1996 Fred Fish <fnf@cirdan.cygnus.com>
* infptrace.c (udot_info): New function.
}
/* Failure to remove any of the hardware watchpoints comes here. */
if (b->inserted)
- error ("Hardware watchpoint %d: Could not remove watchpoint\n",
- b->number);
+ warning ("Hardware watchpoint %d: Could not remove watchpoint\n",
+ b->number);
/* Free the saved value chain. We will construct a new one
the next time the watchpoint is inserted. */
#endif
#if 0
- /* Took this out (temporaliy at least), since it produces an extra
+ /* Took this out (temporarily at least), since it produces an extra
blank line at startup. This messes up the gdbtests. -PB */
/* Blank line to finish off all those mention() messages we just printed. */
printf_filtered ("\n");
if test "${enable_gdbtk+set}" = set; then
enableval="$enable_gdbtk"
case "${enableval}" in
-yes) enable_gdbtk=yes ;;
-no) enable_gdbtk=no ;;
-*) { echo "configure: error: bad value ${enableval} given for gdbtk option" 1>&2; exit 1; } ;;
+ yes)
+ case "$host" in
+ *go32*)
+ echo "configure: warning: GDB does not support GDBtk on host ${host}. GDBtk will be disabled." 1>&2
+ enable_gdbtk=no ;;
+ *)
+ enable_gdbtk=yes ;;
+ esac ;;
+ no)
+ enable_gdbtk=no ;;
+ *)
+ { echo "configure: error: bad value ${enableval} given for gdbtk option" 1>&2; exit 1; } ;;
esac
+else
+
+# Default is on for everything but go32
+case "$host" in
+ *go32*)
+ ;;
+ *)
+ enable_gdbtk=yes ;;
+ esac
+
fi
if test "${enable_gdbtk}" = "yes"; then
+
# If we find X, set shell vars x_includes and x_libraries to the
# paths, otherwise set no_x=yes.
# Uses ac_ vars as temps to allow command line to override cache and checks.
test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc
test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h
cat > conftest.$ac_ext <<EOF
-#line 1500 "configure"
+#line 1520 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
EOF
ac_save_LIBS="$LIBS"
LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1563 "configure"
+#line 1583 "configure"
#include "confdefs.h"
int main() { return 0; }
ac_save_LIBS="$LIBS"
LIBS="-lICE $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1682 "configure"
+#line 1702 "configure"
#include "confdefs.h"
int main() { return 0; }
ac_save_LIBS="$LIBS"
LIBS="-ldnet $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1726 "configure"
+#line 1746 "configure"
#include "confdefs.h"
int main() { return 0; }
ac_save_LIBS="$LIBS"
LIBS="-ldnet_stub $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1761 "configure"
+#line 1781 "configure"
#include "confdefs.h"
int main() { return 0; }
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1801 "configure"
+#line 1821 "configure"
#include "confdefs.h"
int main() { return 0; }
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1840 "configure"
+#line 1860 "configure"
#include "confdefs.h"
int main() { return 0; }
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1897 "configure"
+#line 1917 "configure"
#include "confdefs.h"
#include <tk.h>
EOF
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1999 "configure"
+#line 2019 "configure"
#include "confdefs.h"
#include <tclInt.h>
EOF
AC_ARG_ENABLE(gdbtk,
[ --enable-gdbtk ],
[case "${enableval}" in
-yes) enable_gdbtk=yes ;;
-no) enable_gdbtk=no ;;
-*) AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
-esac])
+ yes)
+ case "$host" in
+ *go32*)
+ AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
+ enable_gdbtk=no ;;
+ *)
+ enable_gdbtk=yes ;;
+ esac ;;
+ no)
+ enable_gdbtk=no ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
+esac],
+[
+# Default is on for everything but go32
+case "$host" in
+ *go32*)
+ ;;
+ *)
+ enable_gdbtk=yes ;;
+ esac
+])
if test "${enable_gdbtk}" = "yes"; then
+
AC_PATH_X
AC_PATH_XTRA
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* The E7000 is an in-circuit emulator for the Hitachi H8/300-H and
Hitachi-SH processor. It has serial port and a lan port.
#include <sys/types.h>
#include "serial.h"
#include "remote-utils.h"
-
+#include "symfile.h"
#if 0
#define HARD_BREAKPOINTS
#define BC_BREAKPOINTS 0
puts_e7000debug (buf);
}
#else
+#if 0
e7000_read_inferior_memory (addr, shadow, 2);
e7000_write_inferior_memory (addr, nop, 2);
+#endif
sprintf (buf, "B %x\r", addr);
puts_e7000debug (buf);
puts_e7000debug (buf);
expect_prompt ();
+#if 0
/* Replace the insn under the break */
e7000_write_inferior_memory (addr, shadow, 2);
#endif
+#endif
return 0;
}
registers_changed ();
}
-static void
-e7000_load (args, fromtty)
- char *args;
- int fromtty;
-{
- gr_load_image (args, fromtty);
-}
static void
e7000_drain_command (args, fromtty)
switch (stop_reason)
{
case 1: /* Breakpoint */
+ write_pc (read_pc () - 2); /* PC is always off by 2 for breakpoints */
status->value.sig = TARGET_SIGNAL_TRAP;
break;
case 0: /* Single step */
e7000_prepare_to_store, /* to_prepare_to_store */
e7000_xfer_inferior_memory, /* to_xfer_memory */
e7000_files_info, /* to_files_info */
-#ifdef HARD_BREAKPOINTS
e7000_insert_breakpoint, /* to_insert_breakpoint */
e7000_remove_breakpoint, /* to_remove_breakpoint */
-#else
- memory_insert_breakpoint, /* to_insert_breakpoint */
- memory_remove_breakpoint, /* to_remove_breakpoint */
-#endif
0, /* to_terminal_init */
0, /* to_terminal_inferior */
0, /* to_terminal_ours_for_output */
0, /* to_terminal_ours */
0, /* to_terminal_info */
e7000_kill, /* to_kill */
- e7000_load, /* to_load */
+ generic_load, /* to_load */
0, /* to_lookup_symbol */
e7000_create_inferior, /* to_create_inferior */
e7000_mourn_inferior, /* to_mourn_inferior */
int ot;
{
if (type == bp_hardware_breakpoint)
- if (TARGET_HW_BREAK_LIMIT == 0)
- return 0;
- else if (cnt <= TARGET_HW_BREAK_LIMIT)
- return 1;
+ {
+ if (TARGET_HW_BREAK_LIMIT == 0)
+ return 0;
+ else if (cnt <= TARGET_HW_BREAK_LIMIT)
+ return 1;
+ }
else
- if (TARGET_HW_WATCH_LIMIT == 0)
- return 0;
- else if (ot)
- return -1;
- else if (cnt <= TARGET_HW_WATCH_LIMIT)
- return 1;
+ {
+ if (TARGET_HW_WATCH_LIMIT == 0)
+ return 0;
+ else if (ot)
+ return -1;
+ else if (cnt <= TARGET_HW_WATCH_LIMIT)
+ return 1;
+ }
return -1;
}