diff --git a/bochs/CHANGES b/bochs/CHANGES index adf0b1865..47f75f546 100644 --- a/bochs/CHANGES +++ b/bochs/CHANGES @@ -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. diff --git a/bochs/configure b/bochs/configure index ecea405cc..7abd0fdd1 100755 --- a/bochs/configure +++ b/bochs/configure @@ -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 < conftest.$ac_ext <&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 < conftest.$ac_ext <&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 < conftest.$ac_ext < conftest.$ac_ext <&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 . -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 . -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 diff --git a/bochs/configure.in b/bochs/configure.in index edfac587d..c10e28b39 100644 --- a/bochs/configure.in +++ b/bochs/configure.in @@ -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 diff --git a/bochs/gui/Makefile.in b/bochs/gui/Makefile.in index 21803b9d5..e895c7d87 100644 --- a/bochs/gui/Makefile.in +++ b/bochs/gui/Makefile.in @@ -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 \ diff --git a/bochs/gui/enh_dbg.cc b/bochs/gui/enh_dbg.cc index bfe43edf8..3bf034f06 100755 --- a/bochs/gui/enh_dbg.cc +++ b/bochs/gui/enh_dbg.cc @@ -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"); diff --git a/bochs/gui/enh_dbg.h b/bochs/gui/enh_dbg.h index d8ca1a515..ae4cb8235 100755 --- a/bochs/gui/enh_dbg.h +++ b/bochs/gui/enh_dbg.h @@ -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 diff --git a/bochs/gui/gtk_enh_dbg_osdep.cc b/bochs/gui/gtk_enh_dbg_osdep.cc index 1061ef7e6..4737e43c8 100755 --- a/bochs/gui/gtk_enh_dbg_osdep.cc +++ b/bochs/gui/gtk_enh_dbg_osdep.cc @@ -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 diff --git a/bochs/gui/siminterface.cc b/bochs/gui/siminterface.cc index 2b7065a9e..1bb65979a 100644 --- a/bochs/gui/siminterface.cc +++ b/bochs/gui/siminterface.cc @@ -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; diff --git a/bochs/gui/textconfig.h b/bochs/gui/textconfig.h index 96e7bd4da..6c61f78c8 100644 --- a/bochs/gui/textconfig.h +++ b/bochs/gui/textconfig.h @@ -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" diff --git a/bochs/gui/wenhdbg_res.h b/bochs/gui/wenhdbg_res.h index f5010d4be..021ff8850 100755 --- a/bochs/gui/wenhdbg_res.h +++ b/bochs/gui/wenhdbg_res.h @@ -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 diff --git a/bochs/gui/win32_enh_dbg_osdep.cc b/bochs/gui/win32_enh_dbg_osdep.cc index a617e5d67..e54a9acd1 100755 --- a/bochs/gui/win32_enh_dbg_osdep.cc +++ b/bochs/gui/win32_enh_dbg_osdep.cc @@ -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) { diff --git a/bochs/gui/x.cc b/bochs/gui/x.cc index cc9fb6b16..898d7e332 100644 --- a/bochs/gui/x.cc +++ b/bochs/gui/x.cc @@ -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