+Wed Nov 26 15:02:43 1997 Keith Seitz <keiths@onions.cygnus.com>
+
+ * gdbtk.c (gdb_loc): symtab_to_filename can return NULL
+ (breakpoint_notify): symtab_to_filename can return NULL
+ (gdb_get_breakpoint_info): symtab_to_filename can return NULL
+
+ * tracepoint.c (set_raw_tracepoint): fix typo
+
Wed Nov 26 11:33:09 1997 Keith Seitz <keiths@onions.cygnus.com>
* tracepoint.c (set_raw_tracepoint): make sure there's a trailing slash on
int bpnum;
struct breakpoint *b;
extern struct breakpoint *breakpoint_chain;
- char *funcname;
-
+ char *funcname, *filename;
+
if (argc != 2)
error ("wrong # args");
sal = find_pc_line (b->address, 0);
- Tcl_DStringAppendElement (result_ptr, symtab_to_filename (sal.symtab));
+ filename = symtab_to_filename (sal.symtab);
+ if (filename == NULL)
+ filename = "N/A";
+ Tcl_DStringAppendElement (result_ptr, );
find_pc_partial_function (b->address, &funcname, NULL, NULL);
Tcl_DStringAppendElement (result_ptr, funcname);
dsprintf_append_element (result_ptr, "%d", sal.line);
char buf[256];
int v;
struct symtab_and_line sal;
+ char *filename;
if (b->type != bp_breakpoint)
return;
/* We ensure that ACTION contains no special Tcl characters, so we
can do this. */
sal = find_pc_line (b->address, 0);
+ filename = symtab_to_filename (sal.symtab);
+ if (filename == NULL)
+ filename = "N/A";
sprintf (buf, "gdbtk_tcl_breakpoint %s %d 0x%lx %d {%s}", action, b->number,
- (long)b->address, sal.line, symtab_to_filename (sal.symtab));
+ (long)b->address, sal.line, filename);
v = Tcl_Eval (interp, buf);
Tcl_DStringAppendElement (result_ptr, funcname);
filename = symtab_to_filename (sal.symtab);
+ if (filename == NULL)
+ filename = "N/A";
Tcl_DStringAppendElement (result_ptr, filename);
dsprintf_append_element (result_ptr, "%d", sal.line); /* line number */
#endif
extern int info_verbose;
+extern void (*readline_begin_hook) PARAMS ((char *, ...));
+extern char * (*readline_hook) PARAMS ((char *));
+extern void (*readline_end_hook) PARAMS ((void));
/* If this definition isn't overridden by the header files, assume
that isatty and fileno exist on this system. */
strcpy (t->source_file, sal.symtab->dirname);
p = t->source_file;
- while (*p++) ;
- if (*p != '/') /* Will this work on Windows? */
+ while (*p)
+ p++;
+ if (*(--p) != '/') /* Will this work on Windows? */
strcat (t->source_file, "/");
strcat (t->source_file, sal.symtab->filename);
}
{
struct tracepoint *t;
char *actions;
+ char tmpbuf[128];
+ char *end_msg = "End with a line saying just \"end\".";
if (t = get_tracepoint_by_number (&args))
{
- if (from_tty)
- printf_filtered ("Enter actions for tracepoint %d, one per line.\n",
- t->number);
+ sprintf (tmpbuf, "Enter actions for tracepoint %d, one per line.",
+ t->number);
+
+ if (readline_begin_hook)
+ (*readline_begin_hook) ("%s %s\n", tmpbuf, end_msg);
+ else if (from_tty && input_from_terminal_p ())
+ printf_filtered ("%s\n%s\n", tmpbuf, end_msg);
+
free_actions (t);
read_actions (t);
+
+ if (readline_end_hook)
+ (*readline_end_hook) ();
+
/* tracepoints_changed () */
}
/* else error, just return; */
wrap_here ("");
gdb_flush (gdb_stdout);
gdb_flush (gdb_stderr);
- if (instream == stdin && ISATTY (instream))
+
+ if (readline_hook && instream == NULL)
+ line = (*readline_hook) (prompt);
+ else if (instream == stdin && ISATTY (instream))
line = readline (prompt);
else
line = gdb_readline (0);