GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
source.c File Reference
#include "defs.h"
#include "arch-utils.h"
#include "symtab.h"
#include "expression.h"
#include "language.h"
#include "command.h"
#include "source.h"
#include "gdbcmd.h"
#include "frame.h"
#include "value.h"
#include "gdbsupport/filestuff.h"
#include <sys/types.h>
#include <fcntl.h>
#include "gdbcore.h"
#include "gdbsupport/gdb_regex.h"
#include "symfile.h"
#include "objfiles.h"
#include "annotate.h"
#include "gdbtypes.h"
#include "linespec.h"
#include "filenames.h"
#include "completer.h"
#include "ui-out.h"
#include "readline/tilde.h"
#include "gdbsupport/enum-flags.h"
#include "gdbsupport/scoped_fd.h"
#include <algorithm>
#include "gdbsupport/pathstuff.h"
#include "source-cache.h"
#include "cli/cli-style.h"
#include "observable.h"
#include "build-id.h"
#include "debuginfod-support.h"
#include "gdbsupport/buildargv.h"

Go to the source code of this file.

Classes

struct  substitute_path_rule
 
struct  current_source_location
 

Macros

#define OPEN_MODE   (O_RDONLY | O_BINARY)
 
#define FDOPEN_MODE   FOPEN_RB
 
#define cdir_len   5
 

Functions

static void show_lines_to_list (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static void show_filename_display_string (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static void show_source_open (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
int get_first_line_listed (void)
 
static void clear_lines_listed_range (void)
 
int get_lines_to_list (void)
 
static current_source_locationget_source_location (program_space *pspace)
 
struct symtab_and_line get_current_source_symtab_and_line (void)
 
void set_default_source_symtab_and_line (void)
 
struct symtab_and_line set_current_source_symtab_and_line (const symtab_and_line &sal)
 
void clear_current_source_symtab_and_line (void)
 
void select_source_symtab (struct symtab *s)
 
static void set_directories_command (const char *args, int from_tty, struct cmd_list_element *c)
 
static void show_directories_1 (ui_file *file, char *ignore, int from_tty)
 
static void show_directories_command (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
void forget_cached_source_info_for_objfile (struct objfile *objfile)
 
void forget_cached_source_info (void)
 
void init_source_path (void)
 
static void directory_command (const char *dirname, int from_tty)
 
void directory_switch (const char *dirname, int from_tty)
 
void mod_path (const char *dirname, std::string &which_path)
 
void add_path (const char *dirname, char **which_path, int parse_separators)
 
void add_path (const char *dirname, std::string &which_path, int parse_separators)
 
static void info_source_command (const char *ignore, int from_tty)
 
static const char * prepare_path_for_appending (const char *path)
 
int openp (const char *path, openp_flags opts, const char *string, int mode, gdb::unique_xmalloc_ptr< char > *filename_opened)
 
int source_full_path_of (const char *filename, gdb::unique_xmalloc_ptr< char > *full_pathname)
 
static int substitute_path_rule_matches (const struct substitute_path_rule *rule, const char *path)
 
static struct substitute_path_ruleget_substitute_path_rule (const char *path)
 
gdb::unique_xmalloc_ptr< char > rewrite_source_path (const char *path)
 
scoped_fd find_and_open_source (const char *filename, const char *dirname, gdb::unique_xmalloc_ptr< char > *fullname)
 
scoped_fd open_source_file (struct symtab *s)
 
gdb::unique_xmalloc_ptr< char > find_source_or_rewrite (const char *filename, const char *dirname)
 
const char * symtab_to_fullname (struct symtab *s)
 
const char * symtab_to_filename_for_display (struct symtab *symtab)
 
static void print_source_lines_base (struct symtab *s, int line, int stopline, print_source_lines_flags flags)
 
void print_source_lines (struct symtab *s, int line, int stopline, print_source_lines_flags flags)
 
void print_source_lines (struct symtab *s, source_lines_range line_range, print_source_lines_flags flags)
 
static void info_line_command (const char *arg, int from_tty)
 
static void search_command_helper (const char *regex, int from_tty, bool forward)
 
static void forward_search_command (const char *regex, int from_tty)
 
static void reverse_search_command (const char *regex, int from_tty)
 
static void strip_trailing_directory_separator (char *path)
 
void add_substitute_path_rule (const char *from, const char *to)
 
static void show_substitute_path_command (const char *args, int from_tty)
 
static void unset_substitute_path_command (const char *args, int from_tty)
 
static void set_substitute_path_command (const char *args, int from_tty)
 
static void set_source (const char *arg, int from_tty)
 
static void show_source (const char *args, int from_tty)
 
void _initialize_source ()
 

Variables

std::string source_path
 
static std::list< substitute_path_rulesubstitute_path_rules
 
static const registry< program_space >::key< current_source_locationcurrent_source_key
 
static int lines_to_list = 10
 
static const char filename_display_basename [] = "basename"
 
static const char filename_display_relative [] = "relative"
 
static const char filename_display_absolute [] = "absolute"
 
static const char *const filename_display_kind_names []
 
static const char * filename_display_string = filename_display_relative
 
static bool source_open = true
 
static int last_line_listed
 
static int first_line_listed
 
static struct symtablast_source_visited = NULL
 
static bool last_source_error = false
 

Macro Definition Documentation

◆ cdir_len

#define cdir_len   5

◆ FDOPEN_MODE

#define FDOPEN_MODE   FOPEN_RB

Definition at line 56 of file source.c.

◆ OPEN_MODE

#define OPEN_MODE   (O_RDONLY | O_BINARY)

Definition at line 55 of file source.c.

Function Documentation

◆ _initialize_source()

void _initialize_source ( )

Definition at line 1908 of file source.c.

Referenced by initialize_all_files().

◆ add_path() [1/2]

void add_path ( const char *  dirname,
char **  which_path,
int  parse_separators 
)

Definition at line 518 of file source.c.

References gdb_printf(), gdb_stderr, name, prefix, print_sys_errmsg(), and xfree().

Referenced by add_path(), directory_switch(), env_mod_path(), and mod_path().

◆ add_path() [2/2]

void add_path ( const char *  dirname,
std::string &  which_path,
int  parse_separators 
)

Definition at line 695 of file source.c.

References add_path(), and xfree().

◆ add_substitute_path_rule()

void add_substitute_path_rule ( const char *  from,
const char *  to 
)

Definition at line 1733 of file source.c.

References substitute_path_rules.

Referenced by captured_main_1(), and set_substitute_path_command().

◆ clear_current_source_symtab_and_line()

void clear_current_source_symtab_and_line ( void  )

Definition at line 301 of file source.c.

References current_program_space, get_source_location(), and loc.

Referenced by clear_symtab_users(), and objfile::~objfile().

◆ clear_lines_listed_range()

static void clear_lines_listed_range ( void  )
static

Definition at line 204 of file source.c.

References first_line_listed, and last_line_listed.

Referenced by set_current_source_symtab_and_line().

◆ directory_command()

static void directory_command ( const char *  dirname,
int  from_tty 
)
static

◆ directory_switch()

void directory_switch ( const char *  dirname,
int  from_tty 
)

Definition at line 498 of file source.c.

References add_path(), and source_path.

Referenced by captured_main_1().

◆ find_and_open_source()

scoped_fd find_and_open_source ( const char *  filename,
const char *  dirname,
gdb::unique_xmalloc_ptr< char > *  fullname 
)

◆ find_source_or_rewrite()

gdb::unique_xmalloc_ptr< char > find_source_or_rewrite ( const char *  filename,
const char *  dirname 
)

◆ forget_cached_source_info()

void forget_cached_source_info ( void  )

◆ forget_cached_source_info_for_objfile()

void forget_cached_source_info_for_objfile ( struct objfile objfile)

◆ forward_search_command()

static void forward_search_command ( const char *  regex,
int  from_tty 
)
static

Definition at line 1704 of file source.c.

References search_command_helper().

◆ get_current_source_symtab_and_line()

struct symtab_and_line get_current_source_symtab_and_line ( void  )

◆ get_first_line_listed()

int get_first_line_listed ( void  )

Definition at line 195 of file source.c.

References first_line_listed.

Referenced by list_command().

◆ get_lines_to_list()

int get_lines_to_list ( void  )

Definition at line 216 of file source.c.

References lines_to_list.

Referenced by edit_command(), list_command(), and source_lines_range::source_lines_range().

◆ get_source_location()

static current_source_location * get_source_location ( program_space pspace)
static

◆ get_substitute_path_rule()

static struct substitute_path_rule * get_substitute_path_rule ( const char *  path)
static

Definition at line 1028 of file source.c.

References substitute_path_rule_matches(), and substitute_path_rules.

Referenced by rewrite_source_path().

◆ info_line_command()

static void info_line_command ( const char *  arg,
int  from_tty 
)
static

◆ info_source_command()

static void info_source_command ( const char *  ignore,
int  from_tty 
)
static

◆ init_source_path()

void init_source_path ( void  )

Definition at line 457 of file source.c.

References forget_cached_source_info(), and source_path.

Referenced by directory_command(), mi_cmd_env_dir(), and set_directories_command().

◆ mod_path()

void mod_path ( const char *  dirname,
std::string &  which_path 
)

Definition at line 506 of file source.c.

References add_path().

Referenced by directory_command(), path_command(), and set_directories_command().

◆ open_source_file()

scoped_fd open_source_file ( struct symtab s)

◆ openp()

int openp ( const char *  path,
openp_flags  opts,
const char *  string,
int  mode,
gdb::unique_xmalloc_ptr< char > *  filename_opened 
)

◆ prepare_path_for_appending()

static const char * prepare_path_for_appending ( const char *  path)
static

Definition at line 747 of file source.c.

Referenced by find_and_open_source(), and openp().

◆ print_source_lines() [1/2]

void print_source_lines ( struct symtab s,
int  line,
int  stopline,
print_source_lines_flags  flags 
)

◆ print_source_lines() [2/2]

void print_source_lines ( struct symtab s,
source_lines_range  line_range,
print_source_lines_flags  flags 
)

◆ print_source_lines_base()

static void print_source_lines_base ( struct symtab s,
int  line,
int  stopline,
print_source_lines_flags  flags 
)
static

◆ reverse_search_command()

static void reverse_search_command ( const char *  regex,
int  from_tty 
)
static

Definition at line 1710 of file source.c.

References search_command_helper().

◆ rewrite_source_path()

gdb::unique_xmalloc_ptr< char > rewrite_source_path ( const char *  path)

◆ search_command_helper()

static void search_command_helper ( const char *  regex,
int  from_tty,
bool  forward 
)
static

◆ select_source_symtab()

void select_source_symtab ( struct symtab s)

◆ set_current_source_symtab_and_line()

struct symtab_and_line set_current_source_symtab_and_line ( const symtab_and_line sal)

◆ set_default_source_symtab_and_line()

void set_default_source_symtab_and_line ( void  )

◆ set_directories_command()

static void set_directories_command ( const char *  args,
int  from_tty,
struct cmd_list_element c 
)
static

Definition at line 384 of file source.c.

References init_source_path(), mod_path(), and source_path.

◆ set_source()

static void set_source ( const char *  arg,
int  from_tty 
)
static

Definition at line 1892 of file source.c.

References all_commands, gdb_stdout, help_list(), and setsourcelist.

◆ set_substitute_path_command()

static void set_substitute_path_command ( const char *  args,
int  from_tty 
)
static

◆ show_directories_1()

static void show_directories_1 ( ui_file file,
char *  ignore,
int  from_tty 
)
static

Definition at line 405 of file source.c.

References gdb_puts(), and source_path.

Referenced by directory_command(), and show_directories_command().

◆ show_directories_command()

static void show_directories_command ( struct ui_file file,
int  from_tty,
struct cmd_list_element c,
const char *  value 
)
static

Definition at line 415 of file source.c.

References show_directories_1().

◆ show_filename_display_string()

static void show_filename_display_string ( struct ui_file file,
int  from_tty,
struct cmd_list_element c,
const char *  value 
)
static

Definition at line 153 of file source.c.

References gdb_printf().

◆ show_lines_to_list()

static void show_lines_to_list ( struct ui_file file,
int  from_tty,
struct cmd_list_element c,
const char *  value 
)
static

Definition at line 129 of file source.c.

References gdb_printf().

◆ show_source()

static void show_source ( const char *  args,
int  from_tty 
)
static

Definition at line 1900 of file source.c.

References all_commands, gdb_stdout, help_list(), and showsourcelist.

Referenced by mi_cmd_disassemble().

◆ show_source_open()

static void show_source_open ( struct ui_file file,
int  from_tty,
struct cmd_list_element c,
const char *  value 
)
static

Definition at line 167 of file source.c.

References gdb_printf().

◆ show_substitute_path_command()

static void show_substitute_path_command ( const char *  args,
int  from_tty 
)
static

Definition at line 1741 of file source.c.

References gdb_printf(), substitute_path_rule_matches(), and substitute_path_rules.

◆ source_full_path_of()

int source_full_path_of ( const char *  filename,
gdb::unique_xmalloc_ptr< char > *  full_pathname 
)

Definition at line 977 of file source.c.

References openp(), OPF_RETURN_REALPATH, OPF_SEARCH_IN_PATH, OPF_TRY_CWD_FIRST, and source_path.

Referenced by exec_file_find().

◆ strip_trailing_directory_separator()

static void strip_trailing_directory_separator ( char *  path)
static

Definition at line 1718 of file source.c.

Referenced by set_substitute_path_command().

◆ substitute_path_rule_matches()

static int substitute_path_rule_matches ( const struct substitute_path_rule rule,
const char *  path 
)
static

Definition at line 999 of file source.c.

References substitute_path_rule::from.

Referenced by get_substitute_path_rule(), and show_substitute_path_command().

◆ symtab_to_filename_for_display()

const char * symtab_to_filename_for_display ( struct symtab symtab)

◆ symtab_to_fullname()

const char * symtab_to_fullname ( struct symtab s)

◆ unset_substitute_path_command()

static void unset_substitute_path_command ( const char *  args,
int  from_tty 
)
static

Definition at line 1774 of file source.c.

References forget_cached_source_info(), query(), and substitute_path_rules.

Variable Documentation

◆ current_source_key

const registry<program_space>::key<current_source_location> current_source_key
static

Definition at line 119 of file source.c.

Referenced by get_source_location().

◆ filename_display_absolute

const char filename_display_absolute[] = "absolute"
static

Definition at line 141 of file source.c.

Referenced by symtab_to_filename_for_display().

◆ filename_display_basename

const char filename_display_basename[] = "basename"
static

Definition at line 139 of file source.c.

Referenced by symtab_to_filename_for_display().

◆ filename_display_kind_names

const char* const filename_display_kind_names[]
static
Initial value:
= {
NULL
}
static const char filename_display_absolute[]
Definition source.c:141
static const char filename_display_basename[]
Definition source.c:139
static const char filename_display_relative[]
Definition source.c:140

Definition at line 143 of file source.c.

◆ filename_display_relative

const char filename_display_relative[] = "relative"
static

Definition at line 140 of file source.c.

Referenced by symtab_to_filename_for_display().

◆ filename_display_string

const char* filename_display_string = filename_display_relative
static

Definition at line 150 of file source.c.

Referenced by symtab_to_filename_for_display().

◆ first_line_listed

int first_line_listed
static

◆ last_line_listed

int last_line_listed
static

◆ last_source_error

bool last_source_error = false
static

Definition at line 188 of file source.c.

Referenced by print_source_lines_base().

◆ last_source_visited

struct symtab* last_source_visited = NULL
static

Definition at line 187 of file source.c.

Referenced by forget_cached_source_info(), and print_source_lines_base().

◆ lines_to_list

int lines_to_list = 10
static

Definition at line 127 of file source.c.

Referenced by get_lines_to_list(), search_command_helper(), and select_source_symtab().

◆ source_open

bool source_open = true
static

Definition at line 162 of file source.c.

Referenced by find_and_open_source(), print_source_lines_base(), and search_command_helper().

◆ source_path

std::string source_path

◆ substitute_path_rules

std::list<substitute_path_rule> substitute_path_rules
static