From 8a19b35a1b19df6c9fc9f1072073ff0c702157bb Mon Sep 17 00:00:00 2001 From: Martin Hunt Date: Wed, 19 Mar 1997 23:39:20 +0000 Subject: [PATCH] Wed Mar 19 15:16:17 1997 Martin M. Hunt * Makefile.in: Install gdbtcl dir instead of gdbtk.tcl. * gdbtk.c: Added some ifdefs for Windows. Changed GDBTK_FILENAME to GDBTK_LIBRARY, which is now a path to search. (gdb_path_conv): New function. Convert Cygwin32 pathname to DOS-style pathname. * aclocal.m4, configure.in: Changes for Windows builds. * configure: Rebuilt. --- gdb/.Sanitize | 2 +- gdb/ChangeLog | 15 +++++ gdb/README.GDBTK | 49 +++++++++----- gdb/aclocal.m4 | 19 +++--- gdb/configure | 195 +++++++++++++++++++++++++++++-------------------------- gdb/configure.in | 13 +++- gdb/gdbtk.c | 118 +++++++++++++++++++++++++++++---- 7 files changed, 276 insertions(+), 135 deletions(-) diff --git a/gdb/.Sanitize b/gdb/.Sanitize index ff29580..ee363d5 100644 --- a/gdb/.Sanitize +++ b/gdb/.Sanitize @@ -29,7 +29,7 @@ else fi fi -gdbtk_files="README.GDBTK gdbtk.c gdbtk.tcl" +gdbtk_files="README.GDBTK gdbtk.c gdbtcl" if ( echo $* | grep lose\-gdbtk > /dev/null ) ; then lose_these_too="${gdbtk_files} ${lose_these_too}" diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 87899a0..77f28c3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,18 @@ +start-sanitize-gdbtk + Wed Mar 19 15:16:17 1997 Martin M. Hunt + + * Makefile.in: Install gdbtcl dir instead of gdbtk.tcl. + + * gdbtk.c: Added some ifdefs for Windows. Changed GDBTK_FILENAME + to GDBTK_LIBRARY, which is now a path to search. + (gdb_path_conv): New function. Convert Cygwin32 pathname to + DOS-style pathname. + + * aclocal.m4, configure.in: Changes for Windows builds. + + * configure: Rebuilt. + +end-sanitize-gdbtk Mon Mar 17 17:52:00 1997 J.T. Conklin * dsrec.c (load_srec): Print leading zeroes when printing section diff --git a/gdb/README.GDBTK b/gdb/README.GDBTK index d2aecdd..3d9f155 100644 --- a/gdb/README.GDBTK +++ b/gdb/README.GDBTK @@ -1,6 +1,7 @@ README.GDBTK Written by Stu Grossman Updated 9/26/95 by Fred Fish for gdb 4.15 release + Updated 4/18/97 by Martin Hunt This file describes how to build, install, use and hack on GDBtk, a TK based GUI for GDB, the GNU debugger. @@ -9,8 +10,8 @@ Introduction ============ GDBtk is a version of GDB that uses Tcl/Tk to implement a graphical -user inter- face. It is a fully integrated GUI, not a separate -front-end program. The interface consists of several seperate X +user inter-face. It is a fully integrated GUI, not a separate +front-end program. The interface consists of several seperate windows, which use standard elements like buttons, scrollbars, entry boxes and such to create a fairly easy to use interface. Each window has a distinct content and purpose, and can be enabled or disabled @@ -23,10 +24,16 @@ Building and installing Building GDBtk is very straightforward. The main difference is that you will need to use the `--enable-gdbtk' option when you run configure in the top level -directory. You will also need to install Tcl version 7.5a2, and Tk 4.1a2. +directory. You will also need to install Tcl version 7.6 and Tk version 4.2. -You will also need to have X11 (R4/R5/R6) installed (this is a prerequisite to -installing Tk). +On Unix machines, you will also need to have X11 (R4/R5/R6) installed +(this is a prerequisite to installing Tk). + +For Windows, you can obtain Tcl/Tk from ftp://ftp.smli.com:/pub/tcl/win76p2.exe. +There is a bug in this version of Tcl/tk that requires you to set the +environmental variable TK_LIBRARY to where the tk library directory is installed. +There is also a problem with the colors in images on 16-bit displays under +Windows, so some icons may look strange. [See the GDB README file for more details on configure options and such.] @@ -79,7 +86,7 @@ Source window: This contains the current source file. The margin displays line numbers, and has an indicator for lines that actually contain code (and therefore can have breakpoints as well). When a breakpoint is set at - that line, the indicator is replaced with a `B'. + that line, the indicator is replaced with a stop sign icon. The buttons are: @@ -134,15 +141,16 @@ Expressions: Customizing GDBtk ================= -There are three primary ways to customize GDBtk. One is to modifiy the appropriate -X resources. The other is to hack a ~/.gdbtkinit file. The last is to change -gdbtk.tcl, which defines the most basic interface elements. +There are three primary ways to customize GDBtk. One is to modifiy the +appropriate X resources. The other is to hack a ~/.gdbtkinit file. The last +is to change the files in gdbtcl, which defines the most basic interface +elements. X resources give you control over things like the choice of fonts, color schemes and some geometry info. -For more serious customizations, you will probably need to hack your ~/.gdbtkinit -or gdbtk.tcl files. +For more serious customizations, you will probably need to hack your +~/.gdbtkinit or gdbtcl files. X Resources =========== @@ -191,24 +199,29 @@ Note that some things may be explicitly overridden by gdbtk.tcl. In particular, the `tk colormodel . monochrome' command should probably be disabled if you want to use color. -Hacking ~/.gdbtkinit and gdbtk.tcl +Hacking ~/.gdbtkinit and gdbtcl ================================== ~/.gdbtkinit is sourced at the end of gdbtk.tcl. Currently there is no good -doc on this. See gdbtk.tcl for see what you can change. +doc on this. See gdbtcl/main.tcl for see what you can change. -The GUI is primarily implemented by Tcl/Tk code which lives in gdbtk.tcl and a +The GUI is primarily implemented by Tcl/Tk code which lives in gdbtcl and a C file called gdbtk.c. The Tcl/Tk code determines the look and feel, the layout, and the functions associated with all of the interface elements. The C code is mostly just glue between GDB internals and Tclland. In essence, all of the policy is implemented in Tcl/Tk, and is easily changed without recompiling. To make more serious changes to the interface, such as adding a new window or -changing the framework, you will have to hack gdbtk.tcl. This file is +changing the framework, you will have to hack the tcl code. This directory is installed in $(libdir) (probably /usr/local/lib/). But, you will probably want to hack on your own private copy before putting it up for the rest of the -users. GDB actually searches three places for gdbtk.tcl. First, it looks in -the GDBTK_FILENAME environment variable. Second, it looks for ./gdbtk.tcl. -And third, it looks for $(libdir)/gdbtk.tcl. +users. To find the GDB tcl code, GDB first checks for the environment variable +GDBTK_LIBRARY. This can be a directory name or a list of directories seperated +by colons (semicolons on Windows). GDB will check each directory in order until +it finds "main.tcl". If GDBTK_LIBRARY is not set, GDB will look for +"gdbtcl/main.tcl" in the current directory, and finally, it will try to find +the tcl directory in the sources. + +Note that the old GDBTK_FILENAME environment variable is no longer used. Internally, GDBtk is basically GDB, linked with Tcl/Tk, and some glue code that interfaces GDB internals to Tclland. This means that GDBtk operates as a diff --git a/gdb/aclocal.m4 b/gdb/aclocal.m4 index 770d148..2c134cc 100644 --- a/gdb/aclocal.m4 +++ b/gdb/aclocal.m4 @@ -74,8 +74,9 @@ AC_DEFUN(CY_AC_PATH_TCLH, [ # be careful that we don't match stuff like tclX by accident. # the alternative search directory is involked by --with-tclinclude # + no_tcl=true -AC_MSG_CHECKING(for Tcl private headers) +AC_MSG_CHECKING(for Tcl private headers. dir=${configdir}) AC_ARG_WITH(tclinclude, [ --with-tclinclude directory where tcl private headers are], with_tclinclude=${withval}) AC_CACHE_VAL(ac_cv_c_tclh,[ # first check to see if --with-tclinclude was specified @@ -187,8 +188,8 @@ if test x"${no_tcl}" = x ; then `ls -dr ../../tcl[[7-9]]* 2>/dev/null` \ ../../../tcl \ `ls -dr ../../../tcl[[7-9]]* 2>/dev/null` ; do - if test -f "$i/unix/tclConfig.sh" ; then - ac_cv_c_tclconfig=`(cd $i/unix; pwd)` + if test -f "$i/${configdir}/tclConfig.sh" ; then + ac_cv_c_tclconfig=`(cd $i/${configdir}; pwd)` break fi done @@ -207,8 +208,8 @@ if test x"${no_tcl}" = x ; then for i in \ ${srcdir}/../tcl \ `ls -dr ${srcdir}/../tcl[[7-9]]* 2>/dev/null` ; do - if test -f "$i/unix/tclConfig.sh" ; then - ac_cv_c_tclconfig=`(cd $i/unix; pwd)` + if test -f "$i/${configdir}/tclConfig.sh" ; then + ac_cv_c_tclconfig=`(cd $i/${configdir}; pwd)` break fi done @@ -409,8 +410,8 @@ if test x"${no_tk}" = x ; then `ls -dr ../../tk[[4-9]]* 2>/dev/null` \ ../../../tk \ `ls -dr ../../../tk[[4-9]]* 2>/dev/null` ; do - if test -f "$i/unix/tkConfig.sh" ; then - ac_cv_c_tkconfig=`(cd $i/unix; pwd)` + if test -f "$i/${configdir}/tkConfig.sh" ; then + ac_cv_c_tkconfig=`(cd $i/${configdir}; pwd)` break fi done @@ -429,8 +430,8 @@ if test x"${no_tk}" = x ; then for i in \ ${srcdir}/../tk \ `ls -dr ${srcdir}/../tk[[4-9]]* 2>/dev/null` ; do - if test -f "$i/unix/tkConfig.sh" ; then - ac_cv_c_tkconfig=`(cd $i/unix; pwd)` + if test -f "$i/${configdir}/tkConfig.sh" ; then + ac_cv_c_tkconfig=`(cd $i/${configdir}; pwd)` break fi done diff --git a/gdb/configure b/gdb/configure index a3e5b32..d3cc195 100755 --- a/gdb/configure +++ b/gdb/configure @@ -864,7 +864,6 @@ else fi - ac_aux_dir= for ac_dir in `cd $srcdir;pwd`/.. $srcdir/`cd $srcdir;pwd`/..; do if test -f $ac_dir/install-sh; then @@ -912,7 +911,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:916: checking host system type" >&5 +echo "configure:915: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -933,7 +932,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:937: checking target system type" >&5 +echo "configure:936: checking target system type" >&5 target_alias=$target case "$target_alias" in @@ -951,7 +950,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:955: checking build system type" >&5 +echo "configure:954: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -996,7 +995,7 @@ configdirs="doc testsuite" # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1000: checking for a BSD compatible install" >&5 +echo "configure:999: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1054,7 +1053,7 @@ fi # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1058: checking for $ac_word" >&5 +echo "configure:1057: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1085,7 +1084,7 @@ fi # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1089: checking for $ac_word" >&5 +echo "configure:1088: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1116,7 +1115,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1120: checking for $ac_word" >&5 +echo "configure:1119: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1152,7 +1151,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1156: checking for $ac_word" >&5 +echo "configure:1155: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1186,7 +1185,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1190: checking for $ac_word" >&5 +echo "configure:1189: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1236,12 +1235,12 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1240: checking for ANSI C header files" >&5 +echo "configure:1239: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1249,7 +1248,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1253: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1266,7 +1265,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1284,7 +1283,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1305,7 +1304,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -1316,7 +1315,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:1320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then : else @@ -1343,17 +1342,17 @@ for ac_hdr in limits.h memory.h string.h strings.h unistd.h termios.h termio.h s do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1347: checking for $ac_hdr" >&5 +echo "configure:1346: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1357: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1356: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1380,12 +1379,12 @@ fi done echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6 -echo "configure:1384: checking whether stat file-mode macros are broken" >&5 +echo "configure:1383: checking whether stat file-mode macros are broken" >&5 if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1437,12 +1436,12 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:1441: checking for working const" >&5 +echo "configure:1440: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1494: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -1515,12 +1514,12 @@ fi for ac_func in setpgid sbrk select poll do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1519: checking for $ac_func" >&5 +echo "configure:1518: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1585,19 +1584,19 @@ EOF fi echo $ac_n "checking for gregset_t type""... $ac_c" 1>&6 -echo "configure:1589: checking for gregset_t type" >&5 +echo "configure:1588: checking for gregset_t type" >&5 if eval "test \"`echo '$''{'gdb_cv_have_gregset_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { gregset_t *gregsetp = 0 ; return 0; } EOF -if { (eval echo configure:1601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* gdb_cv_have_gregset_t=yes else @@ -1618,19 +1617,19 @@ EOF fi echo $ac_n "checking for fpregset_t type""... $ac_c" 1>&6 -echo "configure:1622: checking for fpregset_t type" >&5 +echo "configure:1621: checking for fpregset_t type" >&5 if eval "test \"`echo '$''{'gdb_cv_have_fpregset_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { fpregset_t *fpregsetp = 0 ; return 0; } EOF -if { (eval echo configure:1634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* gdb_cv_have_fpregset_t=yes else @@ -1651,7 +1650,7 @@ EOF fi echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 -echo "configure:1655: checking for main in -lm" >&5 +echo "configure:1654: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1659,14 +1658,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1696,12 +1695,12 @@ fi echo $ac_n "checking for long long support in compiler""... $ac_c" 1>&6 -echo "configure:1700: checking for long long support in compiler" >&5 +echo "configure:1699: checking for long long support in compiler" >&5 if eval "test \"`echo '$''{'gdb_cv_c_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1714: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* gdb_cv_c_long_long=yes else @@ -1733,7 +1732,7 @@ fi echo $ac_n "checking for long long support in printf""... $ac_c" 1>&6 -echo "configure:1737: checking for long long support in printf" >&5 +echo "configure:1736: checking for long long support in printf" >&5 if eval "test \"`echo '$''{'gdb_cv_printf_has_long_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1741,7 +1740,7 @@ else gdb_cv_printf_has_long_long=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then gdb_cv_printf_has_long_long=yes else @@ -1775,19 +1774,19 @@ echo "$ac_t""$gdb_cv_printf_has_long_long" 1>&6 echo $ac_n "checking for long double support in compiler""... $ac_c" 1>&6 -echo "configure:1779: checking for long double support in compiler" >&5 +echo "configure:1778: checking for long double support in compiler" >&5 if eval "test \"`echo '$''{'ac_cv_c_long_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1790: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_long_double=yes else @@ -1809,7 +1808,7 @@ fi echo $ac_n "checking for long double support in printf""... $ac_c" 1>&6 -echo "configure:1813: checking for long double support in printf" >&5 +echo "configure:1812: checking for long double support in printf" >&5 if eval "test \"`echo '$''{'gdb_cv_printf_has_long_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1817,7 +1816,7 @@ else gdb_cv_printf_has_long_double=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then gdb_cv_printf_has_long_double=yes else @@ -1853,17 +1852,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1857: checking for $ac_hdr" >&5 +echo "configure:1856: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1867: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1892,12 +1891,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1896: checking for $ac_func" >&5 +echo "configure:1895: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1945,7 +1944,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:1949: checking for working mmap" >&5 +echo "configure:1948: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1953,7 +1952,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -2117,12 +2116,12 @@ fi echo $ac_n "checking whether malloc must be declared""... $ac_c" 1>&6 -echo "configure:2121: checking whether malloc must be declared" >&5 +echo "configure:2120: checking whether malloc must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_malloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -2143,7 +2142,7 @@ int main() { char *(*pfn) = (char *(*)) malloc ; return 0; } EOF -if { (eval echo configure:2147: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2146: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_malloc=no else @@ -2165,12 +2164,12 @@ EOF fi echo $ac_n "checking whether realloc must be declared""... $ac_c" 1>&6 -echo "configure:2169: checking whether realloc must be declared" >&5 +echo "configure:2168: checking whether realloc must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_realloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -2191,7 +2190,7 @@ int main() { char *(*pfn) = (char *(*)) realloc ; return 0; } EOF -if { (eval echo configure:2195: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2194: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_realloc=no else @@ -2213,12 +2212,12 @@ EOF fi echo $ac_n "checking whether free must be declared""... $ac_c" 1>&6 -echo "configure:2217: checking whether free must be declared" >&5 +echo "configure:2216: checking whether free must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_free'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -2239,7 +2238,7 @@ int main() { char *(*pfn) = (char *(*)) free ; return 0; } EOF -if { (eval echo configure:2243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2242: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_free=no else @@ -2267,7 +2266,7 @@ if test ${build} = ${host} -a ${host} = ${target} ; then case ${host_os} in hpux*) echo $ac_n "checking for HPUX/OSF thread support""... $ac_c" 1>&6 -echo "configure:2271: checking for HPUX/OSF thread support" >&5 +echo "configure:2270: checking for HPUX/OSF thread support" >&5 if test -f /usr/include/dce/cma_config.h ; then if test "$GCC" = "yes" ; then echo "$ac_t""yes" 1>&6 @@ -2285,7 +2284,7 @@ EOF ;; solaris*) echo $ac_n "checking for Solaris thread debugging library""... $ac_c" 1>&6 -echo "configure:2289: checking for Solaris thread debugging library" >&5 +echo "configure:2288: checking for Solaris thread debugging library" >&5 if test -f /usr/lib/libthread_db.so.1 ; then echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF @@ -2294,7 +2293,7 @@ EOF CONFIG_OBS="${CONFIG_OBS} sol-thread.o" echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2298: checking for dlopen in -ldl" >&5 +echo "configure:2297: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2302,7 +2301,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2411,7 +2410,7 @@ if test "${enable_gdbtk+set}" = set; then *go32*) echo "configure: warning: GDB does not support GDBtk on host ${host}. GDBtk will be disabled." 1>&2 enable_gdbtk=no ;; - *cygwin32* | *windows*) + *windows*) echo "configure: warning: GDB does not support GDBtk on host ${host}. GDBtk will be disabled." 1>&2 enable_gdbtk=no ;; *) @@ -2426,7 +2425,7 @@ else # Default is on for everything but go32 and cygwin32 case "$host" in - *go32* | *cygwin32* | *windows*) + *go32* | *windows*) ;; *) enable_gdbtk=yes ;; @@ -2435,6 +2434,15 @@ case "$host" in fi +case "${target}" in +*-cygwin32) + configdir="win" + ;; +*) + configdir="unix" + ;; +esac + if test "${enable_gdbtk}" = "yes"; then @@ -2454,7 +2462,7 @@ if test "${with_tclconfig+set}" = set; then fi echo $ac_n "checking for Tcl configuration""... $ac_c" 1>&6 -echo "configure:2458: checking for Tcl configuration" >&5 +echo "configure:2466: checking for Tcl configuration" >&5 if eval "test \"`echo '$''{'ac_cv_c_tclconfig'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2478,8 +2486,8 @@ else `ls -dr ../../tcl[7-9]* 2>/dev/null` \ ../../../tcl \ `ls -dr ../../../tcl[7-9]* 2>/dev/null` ; do - if test -f "$i/unix/tclConfig.sh" ; then - ac_cv_c_tclconfig=`(cd $i/unix; pwd)` + if test -f "$i/${configdir}/tclConfig.sh" ; then + ac_cv_c_tclconfig=`(cd $i/${configdir}; pwd)` break fi done @@ -2498,8 +2506,8 @@ else for i in \ ${srcdir}/../tcl \ `ls -dr ${srcdir}/../tcl[7-9]* 2>/dev/null` ; do - if test -f "$i/unix/tclConfig.sh" ; then - ac_cv_c_tclconfig=`(cd $i/unix; pwd)` + if test -f "$i/${configdir}/tclConfig.sh" ; then + ac_cv_c_tclconfig=`(cd $i/${configdir}; pwd)` break fi done @@ -2562,7 +2570,7 @@ if test "${with_tkconfig+set}" = set; then fi echo $ac_n "checking for Tk configuration""... $ac_c" 1>&6 -echo "configure:2566: checking for Tk configuration" >&5 +echo "configure:2574: checking for Tk configuration" >&5 if eval "test \"`echo '$''{'ac_cv_c_tkconfig'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2586,8 +2594,8 @@ else `ls -dr ../../tk[4-9]* 2>/dev/null` \ ../../../tk \ `ls -dr ../../../tk[4-9]* 2>/dev/null` ; do - if test -f "$i/unix/tkConfig.sh" ; then - ac_cv_c_tkconfig=`(cd $i/unix; pwd)` + if test -f "$i/${configdir}/tkConfig.sh" ; then + ac_cv_c_tkconfig=`(cd $i/${configdir}; pwd)` break fi done @@ -2606,8 +2614,8 @@ else for i in \ ${srcdir}/../tk \ `ls -dr ${srcdir}/../tk[4-9]* 2>/dev/null` ; do - if test -f "$i/unix/tkConfig.sh" ; then - ac_cv_c_tkconfig=`(cd $i/unix; pwd)` + if test -f "$i/${configdir}/tkConfig.sh" ; then + ac_cv_c_tkconfig=`(cd $i/${configdir}; pwd)` break fi done @@ -2654,9 +2662,10 @@ fi # be careful that we don't match stuff like tclX by accident. # the alternative search directory is involked by --with-tclinclude # + no_tcl=true -echo $ac_n "checking for Tcl private headers""... $ac_c" 1>&6 -echo "configure:2660: checking for Tcl private headers" >&5 +echo $ac_n "checking for Tcl private headers. dir=${configdir}""... $ac_c" 1>&6 +echo "configure:2669: checking for Tcl private headers. dir=${configdir}" >&5 # Check whether --with-tclinclude or --without-tclinclude was given. if test "${with_tclinclude+set}" = set; then withval="$with_tclinclude" @@ -2722,17 +2731,17 @@ fi if test x"${ac_cv_c_tclh}" = x ; then ac_safe=`echo "tclInt.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for tclInt.h""... $ac_c" 1>&6 -echo "configure:2726: checking for tclInt.h" >&5 +echo "configure:2735: checking for tclInt.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2745: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2792,7 +2801,7 @@ fi # no_tk=true echo $ac_n "checking for Tk private headers""... $ac_c" 1>&6 -echo "configure:2796: checking for Tk private headers" >&5 +echo "configure:2805: checking for Tk private headers" >&5 # Check whether --with-tkinclude or --without-tkinclude was given. if test "${with_tkinclude+set}" = set; then withval="$with_tkinclude" @@ -2858,17 +2867,17 @@ fi if test x"${ac_cv_c_tkh}" = x ; then ac_safe=`echo "tk.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for tk.h""... $ac_c" 1>&6 -echo "configure:2862: checking for tk.h" >&5 +echo "configure:2871: checking for tk.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2872: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2881: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* diff --git a/gdb/configure.in b/gdb/configure.in index 2498c1e..be3a7ba 100644 --- a/gdb/configure.in +++ b/gdb/configure.in @@ -255,7 +255,7 @@ AC_ARG_ENABLE(gdbtk, *go32*) AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.]) enable_gdbtk=no ;; - *cygwin32* | *windows*) + *windows*) AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.]) enable_gdbtk=no ;; *) @@ -269,13 +269,22 @@ esac], [ # Default is on for everything but go32 and cygwin32 case "$host" in - *go32* | *cygwin32* | *windows*) + *go32* | *windows*) ;; *) enable_gdbtk=yes ;; esac ]) +case "${target}" in +*-cygwin32) + configdir="win" + ;; +*) + configdir="unix" + ;; +esac + if test "${enable_gdbtk}" = "yes"; then CY_AC_PATH_TCLCONFIG diff --git a/gdb/gdbtk.c b/gdb/gdbtk.c index 2188d48..7fab1fd 100644 --- a/gdb/gdbtk.c +++ b/gdb/gdbtk.c @@ -1,5 +1,5 @@ /* Tcl/Tk interface routines. - Copyright 1994, 1995, 1996 Free Software Foundation, Inc. + Copyright 1994, 1995, 1996, 1997 Free Software Foundation, Inc. Written by Stu Grossman of Cygnus Support. @@ -29,6 +29,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "target.h" #include #include +/* #include */ #ifdef ANSI_PROTOTYPES #include #else @@ -45,9 +46,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include "gdbcmd.h" +#ifndef WINNT #ifndef FIOASYNC #include #endif +#endif + +#ifdef WINNT +#define GDBTK_PATH_SEP ";" +#else +#define GDBTK_PATH_SEP ":" +#endif /* Some versions (1.3.79, 1.3.81) of Linux don't support SIOCSPGRP the way gdbtk wants to use it... */ @@ -71,6 +80,7 @@ static void tk_command PARAMS ((char *, int)); static int gdb_disassemble PARAMS ((ClientData, Tcl_Interp *, int, char *[])); static int compare_lines PARAMS ((const PTR, const PTR)); static int gdbtk_dis_asm_read_memory PARAMS ((bfd_vma, bfd_byte *, int, disassemble_info *)); +static int gdb_path_conv PARAMS ((ClientData, Tcl_Interp *, int, char *[])); static int gdb_stop PARAMS ((ClientData, Tcl_Interp *, int, char *[])); static int gdb_listfiles PARAMS ((ClientData, Tcl_Interp *, int, char *[])); static int call_wrapper PARAMS ((ClientData, Tcl_Interp *, int, char *[])); @@ -117,6 +127,8 @@ static int running_now; static int disassemble_from_exec = -1; +static char *Gdbtk_Library; + /* Supply malloc calls for tcl/tk. */ char * @@ -307,6 +319,30 @@ dsprintf_append_element (va_alist) } static int +gdb_path_conv (clientData, interp, argc, argv) + ClientData clientData; + Tcl_Interp *interp; + int argc; + char *argv[]; +{ +#ifdef WINNT + char pathname[256], *ptr; + if (argc != 2) + error ("wrong # args"); + cygwin32_conv_to_full_win32_path (argv[1], pathname); + for (ptr = pathname; *ptr; ptr++) + { + if (*ptr == '\\') + *ptr = '/'; + } +#else + char *pathname = argv[1]; +#endif + Tcl_DStringAppend (result_ptr, pathname, strlen(pathname)); + return TCL_OK; +} + +static int gdb_get_breakpoint_list (clientData, interp, argc, argv) ClientData clientData; Tcl_Interp *interp; @@ -1186,12 +1222,16 @@ gdbtk_wait (pid, ourstatus) action.sa_handler = x_event; action.sa_mask = nullsigmask; action.sa_flags = SA_RESTART; +#ifndef WINNT sigaction(SIGIO, &action, NULL); +#endif pid = target_wait (pid, ourstatus); action.sa_handler = SIG_IGN; - sigaction(SIGIO, &action, NULL); +#ifndef WINNT + sigaction(SIGIO, &action, NULL); +#endif return pid; } @@ -1239,8 +1279,8 @@ static void gdbtk_init () { struct cleanup *old_chain; - char *gdbtk_filename; - int i; + char *lib, *gdbtk_lib, gdbtk_lib_tmp[1024],gdbtk_file[128]; + int i, found_main; struct sigaction action; static sigset_t nullsigmask = {0}; @@ -1248,8 +1288,10 @@ gdbtk_init () causing gdb to abort. If instead we simply return here, gdb will gracefully degrade to using the command line interface. */ +#ifndef WINNT if (getenv ("DISPLAY") == NULL) return; +#endif old_chain = make_cleanup (cleanup_init, 0); @@ -1263,11 +1305,17 @@ gdbtk_init () if (Tcl_Init(interp) != TCL_OK) error ("Tcl_Init failed: %s", interp->result); + /* + if (Itcl_Init(interp) == TCL_ERROR) + error ("Itcl_Init failed: %s", interp->result); + */ + if (Tk_Init(interp) != TCL_OK) error ("Tk_Init failed: %s", interp->result); Tcl_CreateCommand (interp, "gdb_cmd", call_wrapper, gdb_cmd, NULL); Tcl_CreateCommand (interp, "gdb_loc", call_wrapper, gdb_loc, NULL); + Tcl_CreateCommand (interp, "gdb_path_conv", call_wrapper, gdb_path_conv, NULL); Tcl_CreateCommand (interp, "gdb_sourcelines", call_wrapper, gdb_sourcelines, NULL); Tcl_CreateCommand (interp, "gdb_listfiles", call_wrapper, gdb_listfiles, @@ -1310,7 +1358,9 @@ gdbtk_init () action.sa_mask = nullsigmask; action.sa_flags = 0; action.sa_handler = SIG_IGN; +#ifndef WINNT sigaction(SIGIO, &action, NULL); +#endif #ifdef FIOASYNC i = 1; @@ -1330,8 +1380,11 @@ gdbtk_init () #endif /* F_SETOWN */ #endif /* !SIOCSPGRP */ #else +#ifndef WINNT if (ioctl (x_fd, I_SETSIG, S_INPUT|S_RDNORM) < 0) perror_with_name ("gdbtk_init: ioctl I_SETSIG failed"); +#endif + #endif /* ifndef FIOASYNC */ add_com ("tk", class_obscure, tk_command, @@ -1340,25 +1393,66 @@ gdbtk_init () Tcl_LinkVar (interp, "disassemble-from-exec", (char *)&disassemble_from_exec, TCL_LINK_INT); - /* Load up gdbtk.tcl after all the environment stuff has been setup. */ + /* find the gdb tcl library and source main.tcl */ - gdbtk_filename = getenv ("GDBTK_FILENAME"); - if (!gdbtk_filename) - if (access ("gdbtk.tcl", R_OK) == 0) - gdbtk_filename = "gdbtk.tcl"; + gdbtk_lib = getenv ("GDBTK_LIBRARY"); + if (!gdbtk_lib) + if (access ("gdbtcl/main.tcl", R_OK) == 0) + gdbtk_lib = "gdbtcl"; else - gdbtk_filename = GDBTK_FILENAME; + gdbtk_lib = GDBTK_LIBRARY; + + strcpy (gdbtk_lib_tmp, gdbtk_lib); + found_main = 0; + /* see if GDBTK_LIBRARY is a path list */ + lib = strtok (gdbtk_lib_tmp, GDBTK_PATH_SEP); + do + { + if (Tcl_VarEval (interp, "lappend auto_path ", lib, NULL) != TCL_OK) + { + fputs_unfiltered (Tcl_GetVar (interp, "errorInfo", 0), gdb_stderr); + error (""); + } + if (!found_main) + { + strcpy (gdbtk_file, lib); + strcat (gdbtk_file, "/main.tcl"); + if (access (gdbtk_file, R_OK) == 0) + { + found_main++; + Tcl_SetVar (interp, "GDBTK_LIBRARY", lib, 0); + } + } + } + while (lib = strtok (NULL, ":")); + + if (!found_main) + { + fputs_unfiltered_hook = NULL; /* Force errors to stdout/stderr */ + if (getenv("GDBTK_LIBRARY")) + { + fprintf_unfiltered (stderr, "Unable to find main.tcl in %s\n",getenv("GDBTK_LIBRARY")); + fprintf_unfiltered (stderr, + "Please set GDBTK_LIBRARY to a path that includes the GDB tcl files.\n"); + } + else + { + fprintf_unfiltered (stderr, "Unable to find main.tcl in %s\n", GDBTK_LIBRARY); + fprintf_unfiltered (stderr, "You might want to set GDBTK_LIBRARY\n"); + } + error(""); + } /* Defer setup of fputs_unfiltered_hook to near the end so that error messages prior to this point go to stdout/stderr. */ fputs_unfiltered_hook = gdbtk_fputs; - if (Tcl_EvalFile (interp, gdbtk_filename) != TCL_OK) + if (Tcl_EvalFile (interp, gdbtk_file) != TCL_OK) { fputs_unfiltered_hook = NULL; /* Force errors to stdout/stderr */ - fprintf_unfiltered (stderr, "%s:%d: %s\n", gdbtk_filename, + fprintf_unfiltered (stderr, "%s:%d: %s\n", gdbtk_file, interp->errorLine, interp->result); fputs_unfiltered ("Stack trace:\n", gdb_stderr); -- 2.7.4