/* Annotation routines for GDB.
- Copyright (C) 1986-2020 Free Software Foundation, Inc.
+ Copyright (C) 1986-2022 Free Software Foundation, Inc.
This file is part of GDB.
if (annotation_level > 1)
{
printf_filtered(("\n\032\032thread-exited,"
- "id=\"%d\",group-id=\"i%d\"\n"),
- t->global_num, t->inf->num);
+ "id=\"%d\",group-id=\"i%d\"\n"),
+ t->global_num, t->inf->num);
}
}
/* See annotate.h. */
-void
+bool
annotate_source_line (struct symtab *s, int line, int mid_statement,
CORE_ADDR pc)
{
{
const std::vector<off_t> *offsets;
if (!g_source_cache.get_line_charpos (s, &offsets))
- return;
-
- /* Don't index off the end of the line_charpos array. */
+ return false;
if (line > offsets->size ())
- return;
+ return false;
annotate_source (s->fullname, line, (int) (*offsets)[line - 1],
- mid_statement, get_objfile_arch (SYMTAB_OBJFILE (s)),
+ mid_statement, SYMTAB_OBJFILE (s)->arch (),
pc);
+
+ /* Update the current symtab and line. */
+ symtab_and_line sal;
+ sal.pspace = SYMTAB_PSPACE (s);
+ sal.symtab = s;
+ sal.line = line;
+ set_current_source_symtab_and_line (sal);
+
+ return true;
}
+
+ return false;
}
void
_initialize_annotate ()
{
- gdb::observers::breakpoint_created.attach (breakpoint_changed);
- gdb::observers::breakpoint_deleted.attach (breakpoint_changed);
- gdb::observers::breakpoint_modified.attach (breakpoint_changed);
- gdb::observers::thread_exit.attach (annotate_thread_exited);
+ gdb::observers::breakpoint_created.attach (breakpoint_changed, "annotate");
+ gdb::observers::breakpoint_deleted.attach (breakpoint_changed, "annotate");
+ gdb::observers::breakpoint_modified.attach (breakpoint_changed, "annotate");
+ gdb::observers::thread_exit.attach (annotate_thread_exited, "annotate");
}