Integrate GTK GUI debugger frontend module

This commit is contained in:
Stanislav Shwartsman 2009-01-31 10:04:25 +00:00
parent dd21ea963e
commit 717f323722
12 changed files with 311 additions and 365 deletions

View File

@ -2,9 +2,9 @@ Changes after 2.3.7 release:
Brief summary :
- Added graphical Bochs debugger under Win32 host !
- Added graphical Bochs debugger frontend for most of the supported platforms.
- Thanks for Chourdakis Michael and Bruce Ewing.
- Added user plugin interface support
- Added user plugin interface support.
- Many fixes in Bochs internal debugger and CPU instrumentation.
- Bugfixes for CPU emulation correctness.

363
bochs/configure vendored
View File

@ -1,5 +1,5 @@
#! /bin/sh
# From configure.in Id: configure.in,v 1.382 2009/01/18 13:11:27 vruppert Exp .
# From configure.in Id: configure.in,v 1.383 2009/01/19 09:48:11 vruppert Exp .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61.
#
@ -892,14 +892,13 @@ EXTERNAL_DEPENDENCY
RC_CMD
WX_CONFIG
XPM_LIB
PKG_CONFIG
GTK_CFLAGS
GTK_LIBS
GUI_CFLAGS
GUI_CXXFLAGS
WX_CFLAGS
WX_CXXFLAGS
TOOLKIT_CXXFLAGS
WGET
ENH_DBG_OBJS
DIALOG_OBJS
EXPORT_DYNAMIC
PTHREAD_CC
@ -962,10 +961,7 @@ CPP
CXXCPP
F77
FFLAGS
XMKMF
PKG_CONFIG
GTK_CFLAGS
GTK_LIBS'
XMKMF'
# Initialize some variables set by options.
@ -1655,9 +1651,6 @@ Some influential environment variables:
F77 Fortran 77 compiler command
FFLAGS Fortran 77 compiler flags
XMKMF Path to xmkmf, Makefile generator for X Window System
PKG_CONFIG path to pkg-config utility
GTK_CFLAGS C compiler flags for GTK, overriding pkg-config
GTK_LIBS linker flags for GTK, overriding pkg-config
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@ -4376,7 +4369,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
echo '#line 4379 "configure"' > conftest.$ac_ext
echo '#line 4372 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@ -6578,11 +6571,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:6581: $lt_compile\"" >&5)
(eval echo "\"\$as_me:6574: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:6585: \$? = $ac_status" >&5
echo "$as_me:6578: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -6811,11 +6804,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:6814: $lt_compile\"" >&5)
(eval echo "\"\$as_me:6807: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:6818: \$? = $ac_status" >&5
echo "$as_me:6811: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -6878,11 +6871,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:6881: $lt_compile\"" >&5)
(eval echo "\"\$as_me:6874: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:6885: \$? = $ac_status" >&5
echo "$as_me:6878: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -9007,7 +9000,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 9010 "configure"
#line 9003 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -9105,7 +9098,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 9108 "configure"
#line 9101 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -11280,11 +11273,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:11283: $lt_compile\"" >&5)
(eval echo "\"\$as_me:11276: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:11287: \$? = $ac_status" >&5
echo "$as_me:11280: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -11347,11 +11340,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:11350: $lt_compile\"" >&5)
(eval echo "\"\$as_me:11343: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:11354: \$? = $ac_status" >&5
echo "$as_me:11347: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -12657,7 +12650,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 12660 "configure"
#line 12653 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -12755,7 +12748,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 12758 "configure"
#line 12751 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -13578,11 +13571,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:13581: $lt_compile\"" >&5)
(eval echo "\"\$as_me:13574: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:13585: \$? = $ac_status" >&5
echo "$as_me:13578: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -13645,11 +13638,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:13648: $lt_compile\"" >&5)
(eval echo "\"\$as_me:13641: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:13652: \$? = $ac_status" >&5
echo "$as_me:13645: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -15656,11 +15649,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:15659: $lt_compile\"" >&5)
(eval echo "\"\$as_me:15652: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:15663: \$? = $ac_status" >&5
echo "$as_me:15656: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -15889,11 +15882,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:15892: $lt_compile\"" >&5)
(eval echo "\"\$as_me:15885: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:15896: \$? = $ac_status" >&5
echo "$as_me:15889: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -15956,11 +15949,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:15959: $lt_compile\"" >&5)
(eval echo "\"\$as_me:15952: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:15963: \$? = $ac_status" >&5
echo "$as_me:15956: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -18085,7 +18078,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 18088 "configure"
#line 18081 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -18183,7 +18176,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 18186 "configure"
#line 18179 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -20370,7 +20363,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 20373 "configure"
#line 20366 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -34824,6 +34817,7 @@ echo "${ECHO_T}yes" >&6; }
#define BX_DEBUGGER_GUI 1
_ACEOF
gui_debugger=1
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
@ -34831,6 +34825,7 @@ echo "${ECHO_T}no" >&6; }
#define BX_DEBUGGER_GUI 0
_ACEOF
gui_debugger=0
fi
else
@ -34841,6 +34836,7 @@ echo "${ECHO_T}yes" >&6; }
#define BX_DEBUGGER_GUI 1
_ACEOF
gui_debugger=1
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
@ -34848,6 +34844,7 @@ echo "${ECHO_T}no" >&6; }
#define BX_DEBUGGER_GUI 0
_ACEOF
gui_debugger=0
fi
@ -37070,7 +37067,7 @@ echo "${ECHO_T}$WX_CONFIG" >&6; }
ok_wx_version=0
wx_multi_lib=0
wx_needs_gtk2=0
needs_gtk2=0
{ echo "$as_me:$LINENO: checking for wxWidgets library version" >&5
echo $ECHO_N "checking for wxWidgets library version... $ECHO_C" >&6; }
if test x$WX_CONFIG != xnot_found; then
@ -37087,7 +37084,7 @@ if test x$WX_CONFIG != xnot_found; then
ok_wx_version=1
wx_multi_lib=1
case x$WX_BASENAME in
xwx_gtk2|xwx_gtk2u) wx_needs_gtk2=1 ;;
xwx_gtk2|xwx_gtk2u) needs_gtk2=1 ;;
*) ;;
esac
;;
@ -37139,6 +37136,10 @@ _ACEOF
GUI_CFLAGS="$GUI_CFLAGS \$(X_CFLAGS)"
GUI_CXXFLAGS="$GUI_CXXFLAGS \$(X_CFLAGS)"
GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_X)"
# The enhanced X debugger depends on GTK2
if test "$BX_DEBUGGER_GUI" = 1; then
needs_gtk2=1
fi
check_xpm=0
{ echo "$as_me:$LINENO: checking whether user wants XPM support" >&5
echo $ECHO_N "checking whether user wants XPM support... $ECHO_C" >&6; }
@ -37463,250 +37464,6 @@ _ACEOF
else
GUI_LINK_OPTS_WX="`$WX_CONFIG --libs`"
fi
if test "$wx_needs_gtk2" = 1; then
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
{ echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
case $PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
{ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
echo "${ECHO_T}$PKG_CONFIG" >&6; }
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
fi
fi
if test -z "$ac_cv_path_PKG_CONFIG"; then
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
{ echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
case $ac_pt_PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
{ echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; }
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
fi
if test "x$ac_pt_PKG_CONFIG" = x; then
PKG_CONFIG=""
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
whose name does not start with the host triplet. If you think this
configuration is useful to you, please write to autoconf@gnu.org." >&5
echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
whose name does not start with the host triplet. If you think this
configuration is useful to you, please write to autoconf@gnu.org." >&2;}
ac_tool_warned=yes ;;
esac
PKG_CONFIG=$ac_pt_PKG_CONFIG
fi
else
PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
fi
fi
if test -n "$PKG_CONFIG"; then
_pkg_min_version=0.9.0
{ echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
{ echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6; }
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
PKG_CONFIG=""
fi
fi
pkg_failed=no
{ echo "$as_me:$LINENO: checking for GTK" >&5
echo $ECHO_N "checking for GTK... $ECHO_C" >&6; }
if test -n "$PKG_CONFIG"; then
if test -n "$GTK_CFLAGS"; then
pkg_cv_GTK_CFLAGS="$GTK_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
{ (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0\"") >&5
($PKG_CONFIG --exists --print-errors "gtk+-2.0") 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0" 2>/dev/null`
else
pkg_failed=yes
fi
fi
else
pkg_failed=untried
fi
if test -n "$PKG_CONFIG"; then
if test -n "$GTK_LIBS"; then
pkg_cv_GTK_LIBS="$GTK_LIBS"
else
if test -n "$PKG_CONFIG" && \
{ (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0\"") >&5
($PKG_CONFIG --exists --print-errors "gtk+-2.0") 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0" 2>/dev/null`
else
pkg_failed=yes
fi
fi
else
pkg_failed=untried
fi
if test $pkg_failed = yes; then
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk+-2.0"`
else
GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0"`
fi
# Put the nasty error message in config.log where it belongs
echo "$GTK_PKG_ERRORS" >&5
{ { echo "$as_me:$LINENO: error: Package requirements (gtk+-2.0) were not met:
$GTK_PKG_ERRORS
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables GTK_CFLAGS
and GTK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
" >&5
echo "$as_me: error: Package requirements (gtk+-2.0) were not met:
$GTK_PKG_ERRORS
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables GTK_CFLAGS
and GTK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
" >&2;}
{ (exit 1); exit 1; }; }
elif test $pkg_failed = untried; then
{ { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.
Alternatively, you may set the environment variables GTK_CFLAGS
and GTK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
See \`config.log' for more details." >&5
echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.
Alternatively, you may set the environment variables GTK_CFLAGS
and GTK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
See \`config.log' for more details." >&2;}
{ (exit 1); exit 1; }; }
else
GTK_CFLAGS=$pkg_cv_GTK_CFLAGS
GTK_LIBS=$pkg_cv_GTK_LIBS
{ echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6; }
WX_CFLAGS="$WX_CFLAGS $GTK_CFLAGS"
WX_CXXFLAGS="$WX_CXXFLAGS $GTK_CFLAGS"
fi
else
# if gtk-config exists, then add it to the cflags.
gtkconf=`gtk-config --cflags`
if test $? = 0; then
# gtk-config was found and returned 0, so it must return valid output
WX_CFLAGS="$WX_CFLAGS $gtkconf"
WX_CXXFLAGS="$WX_CXXFLAGS $gtkconf"
fi
fi
# GUI_C*FLAGS are added to the compilation of every bochs file, not just
# the files in gui/*.cc. They are not used when building other things
# such as bximage.
@ -37744,6 +37501,22 @@ if test "$display_libs" = ""; then
exit 1
fi
# some display libraries and the enhanced debugger may depend on the GTK+ software package
if test "$needs_gtk2" = 1; then
# if pkg-config exists, then add it to the /gui cflags.
gtkconf=`pkg-config --cflags gtk+-2.0`
if test $? = 0; then
# pkg-config was found and returned 0, so it must return valid output
TOOLKIT_CXXFLAGS="$gtkconf"
LIBS="$LIBS `pkg-config --libs gtk+-2.0`"
else
echo "ERROR: pkg-config was not found, or unable to access the gtk+-2.0 package."
echo "Install pkg-config and the gtk+ development package,"
echo "or disable the gui debugger, or the wxWidgets display library (whichever is being used)."
exit 1
fi
fi
if test "$display_libs" = " wxWidgets"; then
{ echo "$as_me:$LINENO: checking for default configuration interface" >&5
echo $ECHO_N "checking for default configuration interface... $ECHO_C" >&6; }
@ -37787,6 +37560,7 @@ fi
for ac_prog in wget curl fetch
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
@ -38016,6 +37790,16 @@ _ACEOF
;;
esac
ENH_DBG_OBJS=""
if test "$gui_debugger" = 1; then
if test "$with_win32" = yes; then
ENH_DBG_OBJS="win32_enh_dbg_osdep.o"
else
ENH_DBG_OBJS="gtk_enh_dbg_osdep.o"
fi
fi
DIALOG_OBJS=""
EXPORT_DYNAMIC="-export-dynamic"
case $target in
@ -38095,7 +37879,7 @@ fi
LIBS="$LIBS -lcomctl32"
fi
fi
DIALOG_OBJS="win32dialog.o win32_enh_dbg_osdep.o"
DIALOG_OBJS="win32dialog.o"
EXPORT_DYNAMIC=""
;;
esac
@ -40422,14 +40206,13 @@ EXTERNAL_DEPENDENCY!$EXTERNAL_DEPENDENCY$ac_delim
RC_CMD!$RC_CMD$ac_delim
WX_CONFIG!$WX_CONFIG$ac_delim
XPM_LIB!$XPM_LIB$ac_delim
PKG_CONFIG!$PKG_CONFIG$ac_delim
GTK_CFLAGS!$GTK_CFLAGS$ac_delim
GTK_LIBS!$GTK_LIBS$ac_delim
GUI_CFLAGS!$GUI_CFLAGS$ac_delim
GUI_CXXFLAGS!$GUI_CXXFLAGS$ac_delim
WX_CFLAGS!$WX_CFLAGS$ac_delim
WX_CXXFLAGS!$WX_CXXFLAGS$ac_delim
TOOLKIT_CXXFLAGS!$TOOLKIT_CXXFLAGS$ac_delim
WGET!$WGET$ac_delim
ENH_DBG_OBJS!$ENH_DBG_OBJS$ac_delim
DIALOG_OBJS!$DIALOG_OBJS$ac_delim
EXPORT_DYNAMIC!$EXPORT_DYNAMIC$ac_delim
PTHREAD_CC!$PTHREAD_CC$ac_delim
@ -40478,7 +40261,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 81; then
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 80; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5

View File

@ -2,7 +2,7 @@ dnl // Process this file with autoconf to produce a configure script.
AC_PREREQ(2.50)
AC_INIT(bochs.h)
AC_REVISION([[$Id: configure.in,v 1.383 2009-01-19 09:48:11 vruppert Exp $]])
AC_REVISION([[$Id: configure.in,v 1.384 2009-01-31 10:04:25 sshwarts Exp $]])
AC_CONFIG_HEADER(config.h)
AC_CONFIG_HEADER(ltdlconf.h)
@ -1260,17 +1260,21 @@ AC_ARG_ENABLE(debugger-gui,
[if test "$enableval" = yes; then
AC_MSG_RESULT(yes)
AC_DEFINE(BX_DEBUGGER_GUI, 1)
gui_debugger=1
else
AC_MSG_RESULT(no)
AC_DEFINE(BX_DEBUGGER_GUI, 0)
gui_debugger=0
fi],
[
if test "$bx_debugger" = 1; then
AC_MSG_RESULT(yes)
AC_DEFINE(BX_DEBUGGER_GUI, 1)
gui_debugger=1
else
AC_MSG_RESULT(no)
AC_DEFINE(BX_DEBUGGER_GUI, 0)
gui_debugger=0
fi
]
)
@ -2297,7 +2301,7 @@ AC_MSG_RESULT($WX_CONFIG)
ok_wx_version=0
wx_multi_lib=0
wx_needs_gtk2=0
needs_gtk2=0
AC_MSG_CHECKING(for wxWidgets library version)
if test x$WX_CONFIG != xnot_found; then
WX_VERSION=`$WX_CONFIG --version`
@ -2313,7 +2317,7 @@ if test x$WX_CONFIG != xnot_found; then
ok_wx_version=1
wx_multi_lib=1
case x$WX_BASENAME in
xwx_gtk2|xwx_gtk2u) wx_needs_gtk2=1 ;;
xwx_gtk2|xwx_gtk2u) needs_gtk2=1 ;;
*) ;;
esac
;;
@ -2358,6 +2362,10 @@ if test "$with_x11" = yes; then
GUI_CFLAGS="$GUI_CFLAGS \$(X_CFLAGS)"
GUI_CXXFLAGS="$GUI_CXXFLAGS \$(X_CFLAGS)"
GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_X)"
# The enhanced X debugger depends on GTK2
if test "$BX_DEBUGGER_GUI" = 1; then
needs_gtk2=1
fi
check_xpm=0
AC_MSG_CHECKING(whether user wants XPM support)
AC_ARG_ENABLE(xpm,
@ -2513,20 +2521,6 @@ if test "$with_wx" = yes; then
else
GUI_LINK_OPTS_WX="`$WX_CONFIG --libs`"
fi
if test "$wx_needs_gtk2" = 1; then
PKG_CHECK_MODULES([GTK], [gtk+-2.0], [
WX_CFLAGS="$WX_CFLAGS $GTK_CFLAGS"
WX_CXXFLAGS="$WX_CXXFLAGS $GTK_CFLAGS"
])
else
# if gtk-config exists, then add it to the cflags.
gtkconf=`gtk-config --cflags`
if test $? = 0; then
# gtk-config was found and returned 0, so it must return valid output
WX_CFLAGS="$WX_CFLAGS $gtkconf"
WX_CXXFLAGS="$WX_CXXFLAGS $gtkconf"
fi
fi
# GUI_C*FLAGS are added to the compilation of every bochs file, not just
# the files in gui/*.cc. They are not used when building other things
# such as bximage.
@ -2559,6 +2553,22 @@ if test "$display_libs" = ""; then
exit 1
fi
# some display libraries and the enhanced debugger may depend on the GTK+ software package
if test "$needs_gtk2" = 1; then
# if pkg-config exists, then add it to the /gui cflags.
gtkconf=`pkg-config --cflags gtk+-2.0`
if test $? = 0; then
# pkg-config was found and returned 0, so it must return valid output
TOOLKIT_CXXFLAGS="$gtkconf"
LIBS="$LIBS `pkg-config --libs gtk+-2.0`"
else
echo "ERROR: pkg-config was not found, or unable to access the gtk+-2.0 package."
echo "Install pkg-config and the gtk+ development package,"
echo "or disable the gui debugger, or the wxWidgets display library (whichever is being used)."
exit 1
fi
fi
dnl To use wxWidgets you must select it as both the configuration interface
dnl and the display library. In the simplest case where the user has
dnl only configured with --with-wx, set both defaults to wxWidgets.
@ -2591,6 +2601,7 @@ AC_SUBST(GUI_CXXFLAGS)
AC_SUBST(WX_CONFIG)
AC_SUBST(WX_CFLAGS)
AC_SUBST(WX_CXXFLAGS)
AC_SUBST(TOOLKIT_CXXFLAGS)
AC_CHECK_PROGS(WGET, wget curl fetch, not_found)
if test "$WGET" = not_found; then
@ -2688,6 +2699,16 @@ case "$target" in
;;
esac
ENH_DBG_OBJS=""
if test "$gui_debugger" = 1; then
if test "$with_win32" = yes; then
ENH_DBG_OBJS="win32_enh_dbg_osdep.o"
else
ENH_DBG_OBJS="gtk_enh_dbg_osdep.o"
fi
fi
AC_SUBST(ENH_DBG_OBJS)
DIALOG_OBJS=""
EXPORT_DYNAMIC="-export-dynamic"
case $target in
@ -2703,7 +2724,7 @@ case $target in
LIBS="$LIBS -lcomctl32"
fi
fi
DIALOG_OBJS="win32dialog.o win32_enh_dbg_osdep.o"
DIALOG_OBJS="win32dialog.o"
EXPORT_DYNAMIC=""
;;
esac

View File

@ -46,7 +46,7 @@ SHELL = /bin/sh
CXX = @CXX@
CXXFLAGS = $(BX_INCDIRS) @CXXFLAGS@ @GUI_CXXFLAGS@
LOCAL_CXXFLAGS =
LOCAL_CXXFLAGS = @TOOLKIT_CXXFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
X_CFLAGS = @X_CFLAGS@
@ -70,7 +70,7 @@ GUI_OBJS_RFB = rfb.o
GUI_OBJS_AMIGAOS = amigaos.o
GUI_OBJS_WX = wx.o
GUI_OBJS_WX_SUPPORT = wxmain.o wxdialog.o
OBJS_THAT_CANNOT_BE_PLUGINS = keymap.o gui.o siminterface.o textconfig.o enh_dbg.o @DIALOG_OBJS@
OBJS_THAT_CANNOT_BE_PLUGINS = keymap.o gui.o siminterface.o textconfig.o enh_dbg.o @ENH_DBG_OBJS@ @DIALOG_OBJS@
OBJS_THAT_CAN_BE_PLUGINS = @GUI_OBJS@
X_LIBS = @X_LIBS@
@ -285,7 +285,7 @@ win32.o: win32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.
../iodev/svga_cirrus.h ../iodev/ioapic.h ../cpu/apic.h \
../iodev/keyboard.h
win32dialog.o: win32dialog.@CPP_SUFFIX@ win32dialog.h ../config.h
win32_enh_dbg_osdep.o: win32_enh_dbg_osdep.@CPP_SUFFIX@ ../config.h
win32_enh_dbg_osdep.o: win32_enh_dbg_osdep.@CPP_SUFFIX@ enh_dbg.h ../config.h
wx.o: wx.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
../config.h ../osdep.h ../bxversion.h ../gui/siminterface.h \
../memory/memory.h ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h \
@ -303,6 +303,7 @@ wxmain.o: wxmain.@CPP_SUFFIX@ ../config.h \
bitmaps/power.xpm bitmaps/reset.xpm bitmaps/snapshot.xpm \
bitmaps/mouse.xpm bitmaps/userbutton.xpm bitmaps/saverestore.xpm \
icon_bochs.xpm
gtk_enh_dbg_osdep.o: gtk_enh_dbg_osdep.@CPP_SUFFIX@ enh_dbg.h ../config.h
x.o: x.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
../config.h ../osdep.h ../bxversion.h ../gui/siminterface.h \
../memory/memory.h ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h \
@ -405,7 +406,7 @@ win32.lo: win32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug
../iodev/svga_cirrus.h ../iodev/ioapic.h ../cpu/apic.h \
../iodev/keyboard.h
win32dialog.lo: win32dialog.@CPP_SUFFIX@ win32dialog.h ../config.h
win32_enh_dbg_osdep.lo: win32_enh_dbg_osdep.@CPP_SUFFIX@ ../config.h
win32_enh_dbg_osdep.lo: win32_enh_dbg_osdep.@CPP_SUFFIX@ enh_dbg.h ../config.h
wx.lo: wx.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
../config.h ../osdep.h ../bxversion.h ../gui/siminterface.h \
../memory/memory.h ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h \
@ -423,6 +424,7 @@ wxmain.lo: wxmain.@CPP_SUFFIX@ ../config.h \
bitmaps/power.xpm bitmaps/reset.xpm bitmaps/snapshot.xpm \
bitmaps/mouse.xpm bitmaps/userbutton.xpm bitmaps/saverestore.xpm \
icon_bochs.xpm
gtk_enh_dbg_osdep.lo: gtk_enh_dbg_osdep.@CPP_SUFFIX@ enh_dbg.h ../config.h
x.lo: x.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
../config.h ../osdep.h ../bxversion.h ../gui/siminterface.h \
../memory/memory.h ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h \

View File

@ -1,3 +1,7 @@
/////////////////////////////////////////////////////////////////////////
// $Id: enh_dbg.cc,v 1.9 2009-01-31 10:04:25 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// BOCHS ENHANCED DEBUGGER Ver 1.2
// (C) Chourdakis Michael, 2008
// http://www.turboirc.com
@ -16,7 +20,6 @@
#include "disasm/disasm.h"
#include "enh_dbg.h"
#include "wenhdbg_res.h" // MenuIDs
// Match stuff
#define MATCH_TRUE 1
@ -31,8 +34,13 @@
// -- i.e. No further initialization necessary.
static disassembler bx_disassemble;
int useCR = 1; // Win32 needs CRLF pairs for an EOL
bx_bool NeedSysRresize = TRUE; // use Sys Reg to help autosize Reg "hex" column
#ifdef WIN32
int useCR = 1; // Win32 needs CRLF pairs for an EOL
bx_bool NeedSysRresize = TRUE; // use Sys Reg to help autosize Reg "hex" column
#else
int useCR = 0;
bx_bool NeedSysRresize = FALSE; // use Sys Reg to help autosize Reg "hex" column
#endif
bx_bool SeeReg[8] = {
TRUE, // in 64bit mode, show 32bit versions of registers also (EAX, ...)
@ -161,6 +169,10 @@ int CommandHistoryIdx = 0;
char *CmdHistory[CmdHistorySize]; // 64 command History storage (fixed 80b each)
int CmdHInsert = 0; // index of next history entry to store
int SizeList = 0;
Bit32s xClick = -1; // halfway through a mouseclick flag + location
Bit32s yClick = 0; // values are in Listview coordinates
static char* GDTt2[8] = {
"16-bit code",
"64-bit code",
@ -311,12 +323,11 @@ int IsMatching(const char *text, const char *p, bx_bool IsCaseSensitive)
}
// utility function for list resizing operation -- set LoX and HiX
// the resize/dock operation exits if the mouse moves beyond LoX or HiX
// ParentX is the x-coordinate of the mouse in the list's parent's coord sys
void SetHorzLimits(Bit32s ParentX)
// the resize operation exits if the mouse moves beyond LoX or HiX
void SetHorzLimits()
{
int i;
if (ParentX < BarClix[0] + 10) // is it the left or right bar?
if (Sizing == -2) // is it the left or right bar?
{
Resize_LoX = OneCharWide << 2; // set horizontal limits
i = ListWidthPix[(DockOrder >> 8) -1]; // col1 width
@ -324,7 +335,7 @@ void SetHorzLimits(Bit32s ParentX)
Resize_HiX = i + ListWidthPix[CurCenterList] - (OneCharWide << 2);
Sizing = 1;
}
else if (ParentX > BarClix[1] - 10)
else
{
i = ListWidthPix[(DockOrder >> 8) -1]; // col1 width
Resize_LoX = i + (OneCharWide << 2); // set horizontal limits
@ -339,14 +350,14 @@ void DockResize (int DestIdx, Bit32u ParentX)
{
if (Sizing >= 10) // dock operation
{
Sizing -= 10; // calculate which list initiated dock = moving window
if (Sizing != DestIdx) // moving window = destination window is a no-op
int Siz = Sizing - 10; // calculate which list initiated dock = moving window
if (Siz != DestIdx) // moving window = destination window is a no-op
{
// Convert Sizing and DestIdx into a table lookup index (j)
// -- otherwise, the "algorithm" to compute new DockOrder is annoying
int j = (Sizing*2 + ((Sizing | DestIdx) & 1)) *6;
if (Sizing == 1)
j = (Sizing*4 + (DestIdx & 2)) *3;
int j = (Siz*2 + ((Siz | DestIdx) & 1)) *6;
if (Siz == 1)
j = (Siz*4 + (DestIdx & 2)) *3;
// convert current DockOrder to a number from 0 to 5, add to j
j += ((DockOrder >> 7) - 2) &6;
@ -356,8 +367,7 @@ void DockResize (int DestIdx, Bit32u ParentX)
MoveLists();
}
}
else // resize operation
else // resize operation
{
int idx, totpix;
if (Sizing == 1)
@ -375,9 +385,9 @@ void DockResize (int DestIdx, Bit32u ParentX)
ListWidthPix[CurCenterList] = ParentX;
ListWidthPix[idx] = totpix - ParentX; // reset the widths of the right and center windows
}
MoveLists();
}
Sizing = 0;
}
// Convert a string (except for the 0x in a hex number) to uppercase
@ -2379,7 +2389,7 @@ void ToggleGDT()
return;
GrayMenuItem (0, CMD_WPTWR);
GrayMenuItem (0, CMD_WPTRD);
if (DViewMode == VIEW_GDT || (GDT_Len & 7) != 7 || (unsigned) GDT_Len >= 0x10000)
if (DViewMode == VIEW_GDT || /*(GDT_Len & 7) != 7 ||*/ (unsigned) GDT_Len >= 0x10000)
{
if (DViewMode != VIEW_GDT)
DispMessage("GDT limit is illegal","Simulation error");
@ -2399,7 +2409,7 @@ void ToggleIDT()
return;
GrayMenuItem (0, CMD_WPTWR);
GrayMenuItem (0, CMD_WPTRD);
if (DViewMode == VIEW_IDT || (IDT_Len & 3) != 3 || (unsigned) IDT_Len >= 0x10000)
if (DViewMode == VIEW_IDT || /*(IDT_Len & 3) != 3 ||*/ (unsigned) IDT_Len >= 0x10000)
{
if (DViewMode != VIEW_IDT)
DispMessage("IDT limit is illegal","Simulation error");

View File

@ -1,8 +1,27 @@
/////////////////////////////////////////////////////////////////////////
// $Id: enh_dbg.h,v 1.7 2009-01-31 10:04:25 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// BOCHS ENHANCED DEBUGGER Ver 1.2
// (C) Chourdakis Michael, 2008
// http://www.turboirc.com
//
// Modified by Bruce Ewing
//
#ifndef BX_ENH_DBG_DEF_H
#define BX_ENH_DBG_DEF_H
#if BX_DEBUGGER && BX_DEBUGGER_GUI
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
void MoveLists();
void SetStatusText(int column, char *buf); // should it be here ?
void MakeListsGray();
@ -39,10 +58,15 @@ int GetNextSelectedLI(int listnum, int StartPt);
bx_bool OSInit();
void SpecialInit();
void HitBreak();
void ParseIDText(char *x);
extern char *debug_cmd;
extern bx_bool debug_cmd_ready;
extern bx_bool vgaw_refresh;
#ifdef WIN32
#define CHK_CMD_MODEB CMD_MODEB
#define CHK_CMD_ONECPU CMD_ONECPU
#define CHK_CMD_UCASE CMD_UCASE
@ -56,12 +80,42 @@ extern bx_bool vgaw_refresh;
#define CHK_CMD_RCLR CMD_RCLR
#define CHK_CMD_EREG CMD_EREG
#ifndef FALSE
#define FALSE 0
#endif
#else // GTK+
// checkmark indices
#define MODE_BRK 0
#define ONE_CPU 1
#define U_CASE 2
#define IO_WIN 3
#define SHOW_BTN 4
#define MD_HEX 5
#define MD_ASC 6
#define L_END 7
#define IGN_SA 8
#define IGN_NT 9
#define R_CLR 10
#define E_REG 11
#define S_REG 12
#define SYS_R 13
#define C_REG 14
#define FPU_R 15
#define XMM_R 16
#define D_REG 17
//#define T_REG 18
#define CHK_CMD_MODEB MODE_BRK
#define CHK_CMD_ONECPU ONE_CPU
#define CHK_CMD_UCASE U_CASE
#define CHK_CMD_IOWIN IO_WIN
#define CHK_CMD_SBTN SHOW_BTN
#define CHK_CMD_MHEX MD_HEX
#define CHK_CMD_MASCII MD_ASC
#define CHK_CMD_LEND L_END
#define CHK_CMD_IGNSA IGN_SA
#define CHK_CMD_IGNNT IGN_NT
#define CHK_CMD_RCLR R_CLR
#define CHK_CMD_EREG E_REG
#ifndef TRUE
#define TRUE 1
#endif
#ifndef WIN32
@ -200,8 +254,9 @@ extern int PO_Tdelay; // delay before displaying partial output lin
extern int AsmPgSize;
extern int ListLineRatio; // number of vertical pixels in a ListView Item
extern int ListVerticalPix; // number of vertical pixels in each List
extern Bit64u AsmLA[MAX_ASM]; // linear address of each disassembled ASM line
extern int ListVerticalPix; // number of vertical pixels in each List
extern int AsmLineCount; // # of disassembled asm lines loaded
extern Bit64u AsmLA[MAX_ASM]; // linear address of each disassembled ASM line
// Command stuff
extern int CommandHistoryIdx;
@ -331,6 +386,26 @@ extern unsigned short RWPSnapCount;
extern bx_phy_address WWP_Snapshot[16];
extern bx_phy_address RWP_Snapshot[16];
extern int SizeList;
extern Bit32s xClick; // halfway through a mouseclick flag + location
extern Bit32s yClick; // values are in Listview coordinates
#include "wenhdbg_res.h" // MenuIDs
static char* DC0txt[2] = {"P.Address","L.Address"}; // DumpMode definitions in text
static const char* BTxt[6] = {
"Continue [c]",
"Step [s]",
"Step N [s ###]",
"Refresh",
"Break [^C]",
"Break All"};
static int BtnLkup[6] = {
CMD_CONT, CMD_STEP1, CMD_STEPN, CMD_RFRSH, CMD_BREAK
};
#endif
#endif

View File

@ -1,3 +1,14 @@
/////////////////////////////////////////////////////////////////////////
// $Id: gtk_enh_dbg_osdep.cc,v 1.2 2009-01-31 10:04:25 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// BOCHS ENHANCED DEBUGGER Ver 1.2
// (C) Chourdakis Michael, 2008
// http://www.turboirc.com
//
// Modified by Bruce Ewing
//
#include "config.h"
#if BX_DEBUGGER && BX_DEBUGGER_GUI

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: siminterface.cc,v 1.189 2009-01-12 19:15:35 sshwarts Exp $
// $Id: siminterface.cc,v 1.190 2009-01-31 10:04:25 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2009 The Bochs Project
@ -180,8 +180,8 @@ private:
bx_bool save_sr_param(FILE *fp, bx_param_c *node, const char *sr_path, int level);
};
#if BX_DEBUGGER
// FIXME: you will probably want to put these into the SIM-> structure
#if BX_DEBUGGER && BX_DEBUGGER_GUI
// FIXME: these probably belong inside the bx_simulator_interface_c structure
char *debug_cmd = NULL;
bx_bool debug_cmd_ready = 0;
bx_bool vgaw_refresh = 0;

View File

@ -1,7 +1,6 @@
/////////////////////////////////////////////////////////////////////////
// $Id: textconfig.h,v 1.7 2006-08-29 20:10:26 vruppert Exp $
// $Id: textconfig.h,v 1.8 2009-01-31 10:04:25 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
#include "config.h"

View File

@ -1,3 +1,14 @@
/////////////////////////////////////////////////////////////////////////
// $Id: wenhdbg_res.h,v 1.3 2009-01-31 10:04:25 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// BOCHS ENHANCED DEBUGGER Ver 1.2
// (C) Chourdakis Michael, 2008
// http://www.turboirc.com
//
// Modified by Bruce Ewing
//
#ifndef BX_ENH_DBG_RES_H
#define BX_ENH_DBG_RES_H

View File

@ -1,15 +1,22 @@
/////////////////////////////////////////////////////////////////////////
// $Id: win32_enh_dbg_osdep.cc,v 1.7 2009-01-31 10:04:25 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// BOCHS ENHANCED DEBUGGER Ver 1.2
// (C) Chourdakis Michael, 2008
// http://www.turboirc.com
//
// Modified by Bruce Ewing
//
#include "config.h"
#if BX_DEBUGGER && BX_DEBUGGER_GUI
#include "bochs.h"
#include "disasm/disasm.h"
#include "win32dialog.h"
#include "enh_dbg.h"
#include "wenhdbg_res.h" // MenuIDs
// Important Note! All the string manipulation functions assume one byte chars -- ie. "ascii",
// instead of "wide" chars. If there exists a compiler that automatically assumes wide chars
// (ie. 2 byte), then all the function names in here need to be changed to FORCE the compiler
@ -64,7 +71,7 @@ COLORREF AsmColors[4] = {
#define WS_POPUP_IDX 14
void DockResize (int j, Bit32u x); // need some function prototypes
void SetHorzLimits(Bit32s i);
void SetHorzLimits(void);
void ParseIDText(char *x);
void ShowData();
void UpdateStatus();
@ -80,18 +87,7 @@ void ActivateMenuItem (int LW);
void SetMemLine (int L);
void MakeBL(HTREEITEM *h_P, bx_param_c *p);
static char* DC0txt[2] = {"P.Address","L.Address"}; // DumpMode definitions in text
static const char* BTxt[6] = {"Continue [c]","Step [s]","Step N [s ###]","Refresh","Break [^C]","Break All"};
static int BtnLkup[6] = {
CMD_CONT, CMD_STEP1, CMD_STEPN, CMD_RFRSH, CMD_BREAK
};
static unsigned LstTop = 0;
static int SizeList = 0;
static Bit32s xClick = -1; // halfway through a mouseclick flag + location
static Bit32s yClick = 0; // values are in Listview coordinates
static Bit32u CurTimeStamp = 0; // last mousedown time
// Handles to Windows and global stuff
@ -309,6 +305,7 @@ LRESULT CALLBACK LVProc(HWND hh, UINT mm, WPARAM ww, LPARAM ll)
ClientToScreen(hh,&pt);
ScreenToClient(hY,&pt); // convert to parent's coordinates
DockResize (j, (Bit32u)pt.x);
Sizing = 0;
}
}
if (Sizing != 0)
@ -327,6 +324,7 @@ LRESULT CALLBACK LVProc(HWND hh, UINT mm, WPARAM ww, LPARAM ll)
else if (hh == hL[ASM_WND])
j = ASM_WND;
DockResize (j, (Bit32u)pt.x);
Sizing = 0;
}
else if (Sizing > 5)
SetCursor(hCursDock);
@ -371,7 +369,7 @@ LRESULT CALLBACK LVProc(HWND hh, UINT mm, WPARAM ww, LPARAM ll)
ScreenToClient(hY,&pt); // convert to parent's coordinates
if (Sizing < 0) // doing a presize? -- enter full resize mode
{
SetHorzLimits((int) pt.x);
SetHorzLimits();
SetCursor(hCursResize);
return 0; // important to eat the mousedown (for scrollbars)
}
@ -387,9 +385,7 @@ LRESULT CALLBACK LVProc(HWND hh, UINT mm, WPARAM ww, LPARAM ll)
case WM_LBUTTONDOWN:
if (Sizing < 0) // doing a presize?
{
GetCursorPos(&pt); // Screen coordinates
ScreenToClient(hY,&pt); // convert to parent's coordinates
SetHorzLimits((int) pt.x);
SetHorzLimits();
SetCursor(hCursResize);
}
else // set "pre-dock" mode
@ -423,6 +419,7 @@ LRESULT CALLBACK LVProc(HWND hh, UINT mm, WPARAM ww, LPARAM ll)
GetCursorPos(&pt); // Screen coordinates
ScreenToClient(hY,&pt); // convert to parent's coordinates
DockResize (j, (Bit32u) pt.x);
Sizing = 0;
}
else if (xClick >= 0)
{

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: x.cc,v 1.119 2008-12-29 08:51:34 vruppert Exp $
// $Id: x.cc,v 1.120 2009-01-31 10:04:25 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2002 MandrakeSoft S.A.
@ -34,6 +34,7 @@
#include "bochs.h"
#include "iodev.h"
#include "enh_dbg.h"
#if BX_WITH_X11
extern "C" {
@ -648,6 +649,14 @@ void bx_x_gui_c::specific_init(int argc, char **argv, unsigned tilewidth, unsign
// parse x11 specific options
if (argc > 1) {
for (i = 1; i < argc; i++) {
#if BX_DEBUGGER && BX_DEBUGGER_GUI
if (!strcmp(argv[i], "gui_debug")) {
void InitDebugDialog();
SIM->set_debug_gui(1);
InitDebugDialog();
}
else
#endif
#if BX_SHOW_IPS
if (!strcmp(argv[i], "hideIPS")) {
x11_hide_ips = 1;
@ -2546,6 +2555,34 @@ BxEvent *x11_notify_callback (void *unused, BxEvent *event)
event->retcode = x11_yesno_dialog((bx_param_bool_c *)param);
return event;
}
#if BX_DEBUGGER && BX_DEBUGGER_GUI
case BX_SYNC_EVT_GET_DBG_COMMAND:
{
debug_cmd = new char[512];
debug_cmd_ready = 0;
HitBreak();
while (debug_cmd_ready == 0 && bx_user_quit == 0)
{
if (vgaw_refresh != 0) // is the GUI frontend requesting a VGAW refresh?
DEV_vga_refresh();
vgaw_refresh = 0;
sleep(1);
}
if (bx_user_quit != 0)
BX_EXIT(0);
event->u.debugcmd.command = debug_cmd;
event->retcode = 1;
return event;
}
case BX_ASYNC_EVT_DBG_MSG:
{
ParseIDText ((char*) event->u.logmsg.msg);
// free the char* which was allocated in dbg_printf
delete [] ((char*)event->u.logmsg.msg);
return event;
}
#endif
case BX_SYNC_EVT_TICK: // called periodically by siminterface.
case BX_ASYNC_EVT_REFRESH: // called when some bx_param_c parameters have changed.
// fall into default case