mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-02 04:27:46 +08:00
gdb: Remove an update of current_source_line and current_source_symtab
While reviewing some of the annotation code I noticed that identify_source_line (in source.c) sets current_source_line, current_source_symtab, and also calls clear_lines_listed_range. This seems a little strange, identify_source_line is really a wrapper around annotate_source, and is only called when annotation_level is greater than 0 (so annotations are turned on). It seems weird (to me) that when annotations are on we update GDB's idea of the "current" line/symtab, but when they are off we don't, given that annotations are really about communicating GDB's state to a user (GUI) and surely shouldn't be changing GDB's behaviour. This commit removes from identify_source_line all of the setting of current line/symtab and the call to clear_lines_listed_range, after doing this GDB still passes all tests, so I don't believe these lines were actually required. With this code removed identify_source_line is only a wrapper around annotate_source, so I moved identify_source_line to annotate.c and renamed it to annotate_source_line. gdb/ChangeLog: * annotate.c: Add 'source.h' and 'objfiles.h' includes. (annotate_source): Make static. (annotate_source_line): Moved from source.c and renamed from identify_source_line. Update the return type. * annotate.h (annotate_source): Delete declaration. (annotate_source_line): Declaration moved from source.h, and renamed from identify_source_line. Return type updated. * source.c (identify_source_line): Moved to annotate.c and renamed to annotate_source_line. (info_line_command): Remove check of annotation_level. * source.h (identify_source_line): Move declaration to annotate.h and rename to annotate_source_line. * stack.c: Add 'annotate.h' include. (print_frame_info): Remove check of annotation_level before calling annotate_source_line.
This commit is contained in:
@ -87,8 +87,17 @@ struct annotate_arg_emitter
|
||||
DISABLE_COPY_AND_ASSIGN (annotate_arg_emitter);
|
||||
};
|
||||
|
||||
extern void annotate_source (const char *, int, int, int,
|
||||
struct gdbarch *, CORE_ADDR);
|
||||
/* If annotations are turned on then print annotation describing the full
|
||||
name of the source file S and the line number LINE and its corresponding
|
||||
character position.
|
||||
|
||||
MID_STATEMENT is nonzero if the PC is not at the beginning of that
|
||||
line.
|
||||
|
||||
Return true if successful, false if the file could not be found or
|
||||
annotations are turned off. */
|
||||
extern bool annotate_source_line (struct symtab *s, int line,
|
||||
int mid_statement, CORE_ADDR pc);
|
||||
|
||||
extern void annotate_frame_begin (int, struct gdbarch *, CORE_ADDR);
|
||||
extern void annotate_function_call (void);
|
||||
|
Reference in New Issue
Block a user