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"
#include "interps.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 ()
 
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 (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)
 
int last_symtab_line (struct symtab *s)
 
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 57 of file source.c.

Referenced by search_command_helper().

◆ OPEN_MODE

#define OPEN_MODE   (O_RDONLY | O_BINARY)

Definition at line 56 of file source.c.

Referenced by find_and_open_source().

Function Documentation

◆ _initialize_source()

void _initialize_source ( )

Definition at line 1909 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 )

◆ add_path() [2/2]

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

Definition at line 662 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 1734 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 302 of file source.c.

References current_program_space, get_source_location(), and loc.

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

◆ clear_lines_listed_range()

static void clear_lines_listed_range ( void )
static

Definition at line 205 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 469 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 )

◆ forward_search_command()

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

Definition at line 1705 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 196 of file source.c.

References first_line_listed.

Referenced by list_command().

◆ get_lines_to_list()

int get_lines_to_list ( void )

◆ 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 995 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 428 of file source.c.

References forget_cached_source_info(), and source_path.

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

◆ last_symtab_line()

int last_symtab_line ( struct symtab * s)

Definition at line 1484 of file source.c.

References g_source_cache, and source_cache::get_line_charpos().

Referenced by list_command().

◆ mod_path()

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

Definition at line 477 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 714 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 1711 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 ( )

◆ 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 377 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 1893 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 398 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 408 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 154 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 130 of file source.c.

References gdb_printf().

◆ show_source()

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

Definition at line 1901 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 168 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 1742 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 944 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 1719 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 966 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 1775 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 120 of file source.c.

Referenced by get_source_location().

◆ filename_display_absolute

const char filename_display_absolute[] = "absolute"
static

Definition at line 142 of file source.c.

Referenced by symtab_to_filename_for_display().

◆ filename_display_basename

const char filename_display_basename[] = "basename"
static

Definition at line 140 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:142
static const char filename_display_basename[]
Definition source.c:140
static const char filename_display_relative[]
Definition source.c:141

Definition at line 144 of file source.c.

◆ filename_display_relative

const char filename_display_relative[] = "relative"
static

Definition at line 141 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 151 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 189 of file source.c.

Referenced by print_source_lines_base().

◆ last_source_visited

struct symtab* last_source_visited = NULL
static

Definition at line 188 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 128 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 163 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