* symfile.c: Define two new hooks for symbol reading: "pre_add_symbol_hook"
and "post_add_symbol_hook". These hooks are called before we begin reading symbols, and after we finish. (generic_load): Use new symbol reading hooks and get rid of compiler warning. * gdbtk.c (gdbtk_init): Add hooks for pre- and post-symbol reading. (gdbtk_pre_add_symbol): New function: the pre-add-symbol hook. (gdbtk_post_add_symbol): New function: the post-add-symbol hook. (find_file_in_dir): New function. Moved the guts of gdb_find_file_command into here to allow its use by others. (gdb_loc): Use find_file_in_dir to return the real path to the file (or "N/A" if we can't find it). * configure.in (TIX_LIB_EXT): Define new variable for those special cases when TCL_SHLIB_SUFFIX is not enough to specify the dependency. * configure: Regenerate.
This commit is contained in:
parent
67f3b91e8b
commit
11f91b2bbc
@ -1,3 +1,23 @@
|
|||||||
|
Wed Jan 22 10:37:02 1998 Keith Seitz <keiths@onions.cygnus.com>
|
||||||
|
|
||||||
|
* symfile.c: Define two new hooks for symbol reading: "pre_add_symbol_hook"
|
||||||
|
and "post_add_symbol_hook". These hooks are called before we begin reading
|
||||||
|
symbols, and after we finish.
|
||||||
|
(generic_load): Use new symbol reading hooks and get rid of compiler warning.
|
||||||
|
|
||||||
|
* gdbtk.c (gdbtk_init): Add hooks for pre- and post-symbol reading.
|
||||||
|
(gdbtk_pre_add_symbol): New function: the pre-add-symbol hook.
|
||||||
|
(gdbtk_post_add_symbol): New function: the post-add-symbol hook.
|
||||||
|
(find_file_in_dir): New function. Moved the guts of gdb_find_file_command
|
||||||
|
into here to allow its use by others.
|
||||||
|
(gdb_loc): Use find_file_in_dir to return the real path to the file
|
||||||
|
(or "N/A" if we can't find it).
|
||||||
|
|
||||||
|
* configure.in (TIX_LIB_EXT): Define new variable for those special cases
|
||||||
|
when TCL_SHLIB_SUFFIX is not enough to specify the dependency.
|
||||||
|
|
||||||
|
* configure: Regenerate.
|
||||||
|
|
||||||
Fri Jan 23 07:47:06 1998 Fred Fish <fnf@cygnus.com>
|
Fri Jan 23 07:47:06 1998 Fred Fish <fnf@cygnus.com>
|
||||||
|
|
||||||
* Makefile.in (uninstall): Remove installed gdbtcl dir, if one
|
* Makefile.in (uninstall): Remove installed gdbtcl dir, if one
|
||||||
|
25
gdb/configure
vendored
25
gdb/configure
vendored
@ -3120,9 +3120,18 @@ fi
|
|||||||
esac
|
esac
|
||||||
if test "${TCL_SHARED_BUILD}" = "1"; then
|
if test "${TCL_SHARED_BUILD}" = "1"; then
|
||||||
TIX_LIB_EXT="${TCL_SHLIB_SUFFIX}"
|
TIX_LIB_EXT="${TCL_SHLIB_SUFFIX}"
|
||||||
|
|
||||||
|
# Can't win them all: SunOS 4 (others?) appends a version
|
||||||
|
# number after the ".so"
|
||||||
|
case "${host}" in
|
||||||
|
*-*-sunos4*)
|
||||||
|
TIX_LIB_EXT="${TIX_LIB_EXT}.1.0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
else
|
else
|
||||||
TIX_LIB_EXT=".a"
|
TIX_LIB_EXT=".a"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
|
if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
|
||||||
TIXLIB="-L${tixdir} -ltix${TIXVERSION}"
|
TIXLIB="-L${tixdir} -ltix${TIXVERSION}"
|
||||||
TIX_DEPS="${tixdir}/libtix${TIXVERSION}${TIX_LIB_EXT}"
|
TIX_DEPS="${tixdir}/libtix${TIXVERSION}${TIX_LIB_EXT}"
|
||||||
@ -3305,7 +3314,7 @@ links="${links} nm.h"
|
|||||||
fi
|
fi
|
||||||
# start-sanitize-gdbtk
|
# start-sanitize-gdbtk
|
||||||
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
|
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
|
||||||
echo "configure:3309: checking whether ln -s works" >&5
|
echo "configure:3318: checking whether ln -s works" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -3340,19 +3349,19 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
echo $ac_n "checking for Cygwin32 environment""... $ac_c" 1>&6
|
echo $ac_n "checking for Cygwin32 environment""... $ac_c" 1>&6
|
||||||
echo "configure:3344: checking for Cygwin32 environment" >&5
|
echo "configure:3353: checking for Cygwin32 environment" >&5
|
||||||
if eval "test \"`echo '$''{'am_cv_cygwin32'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'am_cv_cygwin32'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3349 "configure"
|
#line 3358 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
return __CYGWIN32__;
|
return __CYGWIN32__;
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3356: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:3365: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
am_cv_cygwin32=yes
|
am_cv_cygwin32=yes
|
||||||
else
|
else
|
||||||
@ -3369,19 +3378,19 @@ echo "$ac_t""$am_cv_cygwin32" 1>&6
|
|||||||
CYGWIN32=
|
CYGWIN32=
|
||||||
test "$am_cv_cygwin32" = yes && CYGWIN32=yes
|
test "$am_cv_cygwin32" = yes && CYGWIN32=yes
|
||||||
echo $ac_n "checking for Mingw32 environment""... $ac_c" 1>&6
|
echo $ac_n "checking for Mingw32 environment""... $ac_c" 1>&6
|
||||||
echo "configure:3373: checking for Mingw32 environment" >&5
|
echo "configure:3382: checking for Mingw32 environment" >&5
|
||||||
if eval "test \"`echo '$''{'am_cv_mingw32'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'am_cv_mingw32'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3378 "configure"
|
#line 3387 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
return __MINGW32__;
|
return __MINGW32__;
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3385: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:3394: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
am_cv_mingw32=yes
|
am_cv_mingw32=yes
|
||||||
else
|
else
|
||||||
@ -3400,7 +3409,7 @@ test "$am_cv_mingw32" = yes && MINGW32=yes
|
|||||||
|
|
||||||
|
|
||||||
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
|
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
|
||||||
echo "configure:3404: checking for executable suffix" >&5
|
echo "configure:3413: checking for executable suffix" >&5
|
||||||
if eval "test \"`echo '$''{'am_cv_exeext'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'am_cv_exeext'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
|
@ -361,9 +361,18 @@ if test "${enable_gdbtk}" = "yes"; then
|
|||||||
esac
|
esac
|
||||||
if test "${TCL_SHARED_BUILD}" = "1"; then
|
if test "${TCL_SHARED_BUILD}" = "1"; then
|
||||||
TIX_LIB_EXT="${TCL_SHLIB_SUFFIX}"
|
TIX_LIB_EXT="${TCL_SHLIB_SUFFIX}"
|
||||||
|
|
||||||
|
# Can't win them all: SunOS 4 (others?) appends a version
|
||||||
|
# number after the ".so"
|
||||||
|
case "${host}" in
|
||||||
|
*-*-sunos4*)
|
||||||
|
TIX_LIB_EXT="${TIX_LIB_EXT}.1.0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
else
|
else
|
||||||
TIX_LIB_EXT=".a"
|
TIX_LIB_EXT=".a"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
|
if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
|
||||||
TIXLIB="-L${tixdir} -ltix${TIXVERSION}"
|
TIXLIB="-L${tixdir} -ltix${TIXVERSION}"
|
||||||
TIX_DEPS="${tixdir}/libtix${TIXVERSION}${TIX_LIB_EXT}"
|
TIX_DEPS="${tixdir}/libtix${TIXVERSION}${TIX_LIB_EXT}"
|
||||||
|
73
gdb/gdbtk.c
73
gdb/gdbtk.c
@ -88,6 +88,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|||||||
|
|
||||||
int gdbtk_load_hash PARAMS ((char *, unsigned long));
|
int gdbtk_load_hash PARAMS ((char *, unsigned long));
|
||||||
int (*ui_load_progress_hook) PARAMS ((char *, unsigned long));
|
int (*ui_load_progress_hook) PARAMS ((char *, unsigned long));
|
||||||
|
void (*pre_add_symbol_hook) PARAMS ((char *));
|
||||||
|
void (*post_add_symbol_hook) PARAMS ((void));
|
||||||
|
|
||||||
static void null_routine PARAMS ((int));
|
static void null_routine PARAMS ((int));
|
||||||
static void gdbtk_flush PARAMS ((FILE *));
|
static void gdbtk_flush PARAMS ((FILE *));
|
||||||
@ -142,10 +144,13 @@ static int gdb_get_tracepoint_info PARAMS ((ClientData, Tcl_Interp *, int, Tcl_O
|
|||||||
static int gdb_actions_command PARAMS ((ClientData, Tcl_Interp *, int, Tcl_Obj *CONST objv[]));
|
static int gdb_actions_command PARAMS ((ClientData, Tcl_Interp *, int, Tcl_Obj *CONST objv[]));
|
||||||
static int gdb_prompt_command PARAMS ((ClientData, Tcl_Interp *, int, Tcl_Obj *CONST objv[]));
|
static int gdb_prompt_command PARAMS ((ClientData, Tcl_Interp *, int, Tcl_Obj *CONST objv[]));
|
||||||
static int gdb_find_file_command PARAMS ((ClientData, Tcl_Interp *, int, Tcl_Obj *CONST objv[]));
|
static int gdb_find_file_command PARAMS ((ClientData, Tcl_Interp *, int, Tcl_Obj *CONST objv[]));
|
||||||
|
static char *find_file_in_dir PARAMS ((char *));
|
||||||
static int gdb_get_tracepoint_list PARAMS ((ClientData, Tcl_Interp *, int, Tcl_Obj *CONST objv[]));
|
static int gdb_get_tracepoint_list PARAMS ((ClientData, Tcl_Interp *, int, Tcl_Obj *CONST objv[]));
|
||||||
static void gdbtk_create_tracepoint PARAMS ((struct tracepoint *));
|
static void gdbtk_create_tracepoint PARAMS ((struct tracepoint *));
|
||||||
static void gdbtk_delete_tracepoint PARAMS ((struct tracepoint *));
|
static void gdbtk_delete_tracepoint PARAMS ((struct tracepoint *));
|
||||||
static void tracepoint_notify PARAMS ((struct tracepoint *, const char *));
|
static void tracepoint_notify PARAMS ((struct tracepoint *, const char *));
|
||||||
|
void gdbtk_pre_add_symbol PARAMS ((char *));
|
||||||
|
void gdbtk_post_add_symbol PARAMS ((void));
|
||||||
|
|
||||||
/* Handle for TCL interpreter */
|
/* Handle for TCL interpreter */
|
||||||
|
|
||||||
@ -484,7 +489,7 @@ gdb_get_breakpoint_info (clientData, interp, argc, argv)
|
|||||||
|
|
||||||
filename = symtab_to_filename (sal.symtab);
|
filename = symtab_to_filename (sal.symtab);
|
||||||
if (filename == NULL)
|
if (filename == NULL)
|
||||||
filename = "N/A";
|
filename = "";
|
||||||
Tcl_DStringAppendElement (result_ptr, filename);
|
Tcl_DStringAppendElement (result_ptr, filename);
|
||||||
find_pc_partial_function (b->address, &funcname, NULL, NULL);
|
find_pc_partial_function (b->address, &funcname, NULL, NULL);
|
||||||
Tcl_DStringAppendElement (result_ptr, funcname);
|
Tcl_DStringAppendElement (result_ptr, funcname);
|
||||||
@ -613,7 +618,9 @@ gdb_loc (clientData, interp, argc, argv)
|
|||||||
find_pc_partial_function (pc, &funcname, NULL, NULL);
|
find_pc_partial_function (pc, &funcname, NULL, NULL);
|
||||||
Tcl_DStringAppendElement (result_ptr, funcname);
|
Tcl_DStringAppendElement (result_ptr, funcname);
|
||||||
|
|
||||||
|
/* Would it be better to use "find_file_in_dir"? */
|
||||||
filename = symtab_to_filename (sal.symtab);
|
filename = symtab_to_filename (sal.symtab);
|
||||||
|
|
||||||
if (filename == NULL)
|
if (filename == NULL)
|
||||||
filename = "N/A";
|
filename = "N/A";
|
||||||
Tcl_DStringAppendElement (result_ptr, filename);
|
Tcl_DStringAppendElement (result_ptr, filename);
|
||||||
@ -1955,6 +1962,8 @@ gdbtk_init ( argv0 )
|
|||||||
readline_hook = gdbtk_readline;
|
readline_hook = gdbtk_readline;
|
||||||
readline_end_hook = gdbtk_readline_end;
|
readline_end_hook = gdbtk_readline_end;
|
||||||
ui_load_progress_hook = gdbtk_load_hash;
|
ui_load_progress_hook = gdbtk_load_hash;
|
||||||
|
pre_add_symbol_hook = gdbtk_pre_add_symbol;
|
||||||
|
post_add_symbol_hook = gdbtk_post_add_symbol;
|
||||||
create_tracepoint_hook = gdbtk_create_tracepoint;
|
create_tracepoint_hook = gdbtk_create_tracepoint;
|
||||||
delete_tracepoint_hook = gdbtk_delete_tracepoint;
|
delete_tracepoint_hook = gdbtk_delete_tracepoint;
|
||||||
|
|
||||||
@ -2688,7 +2697,6 @@ gdb_find_file_command (clientData, interp, objc, objv)
|
|||||||
Tcl_Obj *CONST objv[];
|
Tcl_Obj *CONST objv[];
|
||||||
{
|
{
|
||||||
char *file, *filename;
|
char *file, *filename;
|
||||||
struct symtab *st = NULL;
|
|
||||||
|
|
||||||
if (objc != 2)
|
if (objc != 2)
|
||||||
{
|
{
|
||||||
@ -2698,28 +2706,59 @@ gdb_find_file_command (clientData, interp, objc, objv)
|
|||||||
return TCL_ERROR;
|
return TCL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* try something simple first */
|
|
||||||
file = Tcl_GetStringFromObj (objv[1], NULL);
|
file = Tcl_GetStringFromObj (objv[1], NULL);
|
||||||
if (access (file, R_OK) == 0)
|
filename = find_file_in_dir (file);
|
||||||
{
|
|
||||||
Tcl_SetObjResult (interp, Tcl_NewStringObj (file, -1));
|
if (filename == NULL)
|
||||||
return TCL_OK;
|
Tcl_SetResult (interp, "", TCL_STATIC);
|
||||||
}
|
else
|
||||||
|
Tcl_SetObjResult (interp, Tcl_NewStringObj (filename, -1));
|
||||||
|
|
||||||
/* We really need a symtab for this to work... */
|
return TCL_OK;
|
||||||
st = lookup_symtab (file);
|
}
|
||||||
if (st != NULL)
|
|
||||||
|
static char *
|
||||||
|
find_file_in_dir (file)
|
||||||
|
char *file;
|
||||||
|
{
|
||||||
|
struct symtab *st = NULL;
|
||||||
|
|
||||||
|
if (file != NULL)
|
||||||
{
|
{
|
||||||
filename = symtab_to_filename (st);
|
/* try something simple first */
|
||||||
if (filename != NULL)
|
if (access (file, R_OK) == 0)
|
||||||
|
return file;
|
||||||
|
|
||||||
|
/* We really need a symtab for this to work... */
|
||||||
|
st = lookup_symtab (file);
|
||||||
|
if (st != NULL)
|
||||||
{
|
{
|
||||||
Tcl_SetObjResult (interp, Tcl_NewStringObj (filename, -1));
|
file = symtab_to_filename (st);
|
||||||
return TCL_OK;
|
if (file != NULL)
|
||||||
|
return file;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
Tcl_SetResult (interp, "", TCL_STATIC);
|
/* This hook is called whenever we are ready to load a symbol file so that
|
||||||
return TCL_OK;
|
the UI can notify the user... */
|
||||||
|
void
|
||||||
|
gdbtk_pre_add_symbol (name)
|
||||||
|
char *name;
|
||||||
|
{
|
||||||
|
char command[256];
|
||||||
|
|
||||||
|
sprintf (command, "gdbtk_tcl_pre_add_symbol %s", name);
|
||||||
|
Tcl_Eval (interp, command);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This hook is called whenever we finish loading a symbol file. */
|
||||||
|
void
|
||||||
|
gdbtk_post_add_symbol ()
|
||||||
|
{
|
||||||
|
Tcl_Eval (interp, "gdbtk_tcl_post_add_symbol");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Come here during initialize_all_files () */
|
/* Come here during initialize_all_files () */
|
||||||
|
Loading…
Reference in New Issue
Block a user