From: hunt Date: Fri, 2 Jul 2004 22:00:55 +0000 (+0000) Subject: 2004-07-02 Martin Hunt X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=9afc6ca028e19b9ca90506346cb5611ced8b2202;p=pf3gnuchains%2Fpf3gnuchains3x.git 2004-07-02 Martin Hunt * generic/gdbtk-cmds.c (symtab_to_filename): New function. Like symtab_to_fullname() but returns the filename if the fullname cannot be found. * generic/gdbtk-cmds.c (gdb_find_file_command): Revert patch of 2004-06-11. Use symtab_to_filename() again. (gdb_loc): Ditto. (gdb_loadfile): Ditto. * generic/gdbtk-bp.c (gdb_get_breakpoint_info): Ditto. (gdb_get_tracepoint_info): Ditto. * generic/gdbtk-cmds.h: Declare symtab_to_filename(). --- diff --git a/gdb/gdbtk/ChangeLog b/gdb/gdbtk/ChangeLog index 7e59d23a51..4b8780cb4f 100644 --- a/gdb/gdbtk/ChangeLog +++ b/gdb/gdbtk/ChangeLog @@ -1,3 +1,18 @@ +2004-07-02 Martin Hunt + + * generic/gdbtk-cmds.c (symtab_to_filename): New function. Like + symtab_to_fullname() but returns the filename if the fullname + cannot be found. + + * generic/gdbtk-cmds.c (gdb_find_file_command): Revert + patch of 2004-06-11. Use symtab_to_filename() again. + (gdb_loc): Ditto. + (gdb_loadfile): Ditto. + * generic/gdbtk-bp.c (gdb_get_breakpoint_info): Ditto. + (gdb_get_tracepoint_info): Ditto. + + * generic/gdbtk-cmds.h: Declare symtab_to_filename(). + 2004-06-26 Andrew Cagney * generic/gdbtk-hooks.c (gdbtk_add_hooks): Call diff --git a/gdb/gdbtk/generic/gdbtk-bp.c b/gdb/gdbtk/generic/gdbtk-bp.c index 8ed01c49b1..31cca04add 100644 --- a/gdb/gdbtk/generic/gdbtk-bp.c +++ b/gdb/gdbtk/generic/gdbtk-bp.c @@ -313,7 +313,7 @@ gdb_get_breakpoint_info (ClientData clientData, Tcl_Interp *interp, int objc, sal = find_pc_line (b->loc->address, 0); - filename = symtab_to_fullname (sal.symtab); + filename = symtab_to_filename (sal.symtab); if (filename == NULL) filename = ""; @@ -826,7 +826,7 @@ gdb_get_tracepoint_info (ClientData clientData, Tcl_Interp *interp, Tcl_SetListObj (result_ptr->obj_ptr, 0, NULL); sal = find_pc_line (tp->address, 0); - filename = symtab_to_fullname (sal.symtab); + filename = symtab_to_filename (sal.symtab); if (filename == NULL) filename = "N/A"; Tcl_ListObjAppendElement (interp, result_ptr->obj_ptr, diff --git a/gdb/gdbtk/generic/gdbtk-cmds.c b/gdb/gdbtk/generic/gdbtk-cmds.c index 11e12b5cf9..89c61acb69 100644 --- a/gdb/gdbtk/generic/gdbtk-cmds.c +++ b/gdb/gdbtk/generic/gdbtk-cmds.c @@ -1079,7 +1079,7 @@ gdb_find_file_command (ClientData clientData, Tcl_Interp *interp, } fullname = - (st->fullname == NULL ? symtab_to_fullname (st) : st->fullname); + (st->fullname == NULL ? symtab_to_filename (st) : st->fullname); } /* We may not be able to open the file (not available). */ @@ -2189,7 +2189,7 @@ gdb_loc (ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST obj Tcl_ListObjAppendElement (NULL, result_ptr->obj_ptr, Tcl_NewStringObj (fname, -1)); - filename = symtab_to_fullname (sal.symtab); + filename = symtab_to_filename (sal.symtab); if (filename == NULL) filename = ""; @@ -2647,7 +2647,7 @@ gdb_loadfile (ClientData clientData, Tcl_Interp *interp, int objc, return TCL_ERROR; } - file = symtab_to_fullname ( symtab ); + file = symtab_to_filename ( symtab ); if ((fp = fopen ( file, "r" )) == NULL) { gdbtk_set_result (interp, "Can't open file for reading"); @@ -2999,3 +2999,31 @@ gdb_CA_to_TAS (ClientData clientData, Tcl_Interp *interp, return TCL_OK; } + +/* Another function that was removed in GDB and replaced + * with something similar, but different enough to break + * Insight. + */ +int find_and_open_source (struct objfile *objfile, const char *filename, + const char *dirname, char **fullname); + +char * +symtab_to_filename (struct symtab *s) +{ + + int r; + + if (!s) + return NULL; + + /* Don't check s->fullname here, the file could have been + deleted/moved/..., look for it again */ + r = find_and_open_source (s->objfile, s->filename, s->dirname, + &s->fullname); + if (r) + close (r); + + if (s->fullname && *s->fullname) + return s->fullname; + return s->filename; +} diff --git a/gdb/gdbtk/generic/gdbtk-cmds.h b/gdb/gdbtk/generic/gdbtk-cmds.h index 8193dae980..a659b382d0 100644 --- a/gdb/gdbtk/generic/gdbtk-cmds.h +++ b/gdb/gdbtk/generic/gdbtk-cmds.h @@ -54,4 +54,7 @@ extern int Gdbtk_Breakpoint_Init (Tcl_Interp *interp); extern int Gdbtk_Stack_Init (Tcl_Interp *interp); extern int Gdbtk_Register_Init (Tcl_Interp *interp); +/* replacement for removed gdb function */ +char *symtab_to_filename (struct symtab *s); + #endif /* GDBTK_CMDS_H */