GDB (xrefs)
Classes | Macros | Functions | Variables
/tmp/gdb-8.1/gdb/auto-load.c File Reference
#include "defs.h"
#include <ctype.h>
#include "auto-load.h"
#include "progspace.h"
#include "gdb_regex.h"
#include "ui-out.h"
#include "filenames.h"
#include "command.h"
#include "observer.h"
#include "objfiles.h"
#include "cli/cli-script.h"
#include "gdbcmd.h"
#include "cli/cli-cmds.h"
#include "cli/cli-decode.h"
#include "cli/cli-setshow.h"
#include "readline/tilde.h"
#include "completer.h"
#include "fnmatch.h"
#include "top.h"
#include "filestuff.h"
#include "extension.h"
#include "gdb/section-scripts.h"
#include <algorithm>

Go to the source code of this file.

Classes

struct  auto_load_pspace_info
 
struct  loaded_script
 
struct  collect_matching_scripts_data
 

Macros

#define AUTO_SECTION_NAME   ".debug_gdb_scripts"
 

Functions

static void maybe_print_unsupported_script_warning (struct auto_load_pspace_info *, struct objfile *objfile, const struct extension_language_defn *language, const char *section_name, unsigned offset)
 
static void maybe_print_script_not_found_warning (struct auto_load_pspace_info *, struct objfile *objfile, const struct extension_language_defn *language, const char *section_name, unsigned offset)
 
static void show_debug_auto_load (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static void show_auto_load_gdb_scripts (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
int auto_load_gdb_scripts_enabled (const struct extension_language_defn *extlang)
 
static void show_auto_load_local_gdbinit (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static void set_auto_load_dir (const char *args, int from_tty, struct cmd_list_element *c)
 
static void show_auto_load_dir (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static VEC (char_ptr)
 
static void auto_load_safe_path_vec_update (void)
 
static void auto_load_gdb_datadir_changed (void)
 
static void set_auto_load_safe_path (const char *args, int from_tty, struct cmd_list_element *c)
 
static void show_auto_load_safe_path (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static void add_auto_load_safe_path (const char *args, int from_tty)
 
static void add_auto_load_dir (const char *args, int from_tty)
 
static int filename_is_in_pattern_1 (char *filename, char *pattern)
 
static ATTRIBUTE_PURE int filename_is_in_pattern (const char *filename, const char *pattern)
 
static int filename_is_in_auto_load_safe_path_vec (const char *filename, gdb::unique_xmalloc_ptr< char > *filename_realp)
 
int file_is_auto_load_safe (const char *filename, const char *debug_fmt,...)
 
static void auto_load_pspace_data_cleanup (struct program_space *pspace, void *arg)
 
static struct auto_load_pspace_infoget_auto_load_pspace_data (struct program_space *pspace)
 
static hashval_t hash_loaded_script_entry (const void *data)
 
static int eq_loaded_script_entry (const void *a, const void *b)
 
static void init_loaded_scripts_info (struct auto_load_pspace_info *pspace_info)
 
struct auto_load_pspace_infoget_auto_load_pspace_data_for_loading (struct program_space *pspace)
 
static int maybe_add_script_file (struct auto_load_pspace_info *pspace_info, int loaded, const char *name, const char *full_path, const struct extension_language_defn *language)
 
static int maybe_add_script_text (struct auto_load_pspace_info *pspace_info, int loaded, const char *name, const struct extension_language_defn *language)
 
static void clear_section_scripts (void)
 
static int auto_load_objfile_script_1 (struct objfile *objfile, const char *realname, const struct extension_language_defn *language)
 
void auto_load_objfile_script (struct objfile *objfile, const struct extension_language_defn *language)
 
static void source_script_file (struct auto_load_pspace_info *pspace_info, struct objfile *objfile, const struct extension_language_defn *language, const char *section_name, unsigned int offset, const char *file)
 
static void execute_script_contents (struct auto_load_pspace_info *pspace_info, struct objfile *objfile, const struct extension_language_defn *language, const char *section_name, unsigned int offset, const char *script)
 
static void source_section_scripts (struct objfile *objfile, const char *section_name, const char *start, const char *end)
 
static void auto_load_section_scripts (struct objfile *objfile, const char *section_name)
 
void load_auto_scripts_for_objfile (struct objfile *objfile)
 
static void auto_load_new_objfile (struct objfile *objfile)
 
static int collect_matching_scripts (void **slot, void *info)
 
static void print_script (struct loaded_script *script)
 
static bool sort_scripts_by_name (loaded_script *a, loaded_script *b)
 
static void print_scripts (const std::vector< loaded_script *> &scripts)
 
void auto_load_info_scripts (const char *pattern, int from_tty, const struct extension_language_defn *language)
 
static void info_auto_load_gdb_scripts (const char *pattern, int from_tty)
 
static void info_auto_load_local_gdbinit (const char *args, int from_tty)
 
static void set_auto_load_cmd (const char *args, int from_tty)
 
struct cmd_list_element ** auto_load_set_cmdlist_get (void)
 
static void show_auto_load_cmd (const char *args, int from_tty)
 
struct cmd_list_element ** auto_load_show_cmdlist_get (void)
 
static void info_auto_load_cmd (const char *args, int from_tty)
 
struct cmd_list_element ** auto_load_info_cmdlist_get (void)
 
void _initialize_auto_load (void)
 

Variables

static int debug_auto_load = 0
 
static int auto_load_gdb_scripts = 1
 
int global_auto_load = 1
 
int auto_load_local_gdbinit = 1
 
char * auto_load_local_gdbinit_pathname = NULL
 
int auto_load_local_gdbinit_loaded = 0
 
static char * auto_load_dir
 
static char * auto_load_safe_path
 
static const struct program_space_data * auto_load_pspace_data
 
char auto_load_info_scripts_pattern_nl [] = ""
 

Macro Definition Documentation

◆ AUTO_SECTION_NAME

#define AUTO_SECTION_NAME   ".debug_gdb_scripts"

Definition at line 50 of file auto-load.c.

Referenced by load_auto_scripts_for_objfile().

Function Documentation

◆ _initialize_auto_load()

void _initialize_auto_load ( void  )

◆ add_auto_load_dir()

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

Definition at line 326 of file auto-load.c.

References _, auto_load_dir, DIRNAME_SEPARATOR, error(), xfree(), and xstrprintf().

Referenced by _initialize_auto_load().

◆ add_auto_load_safe_path()

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

◆ auto_load_gdb_datadir_changed()

static void auto_load_gdb_datadir_changed ( void  )
static

Definition at line 257 of file auto-load.c.

References auto_load_safe_path_vec_update().

Referenced by _initialize_auto_load().

◆ auto_load_gdb_scripts_enabled()

int auto_load_gdb_scripts_enabled ( const struct extension_language_defn extlang)

Definition at line 97 of file auto-load.c.

References auto_load_gdb_scripts.

◆ auto_load_info_cmdlist_get()

struct cmd_list_element** auto_load_info_cmdlist_get ( void  )

◆ auto_load_info_scripts()

void auto_load_info_scripts ( const char *  pattern,
int  from_tty,
const struct extension_language_defn language 
)

◆ auto_load_new_objfile()

static void auto_load_new_objfile ( struct objfile objfile)
static

Definition at line 1202 of file auto-load.c.

References clear_section_scripts(), and load_auto_scripts_for_objfile().

Referenced by _initialize_auto_load().

◆ auto_load_objfile_script()

void auto_load_objfile_script ( struct objfile objfile,
const struct extension_language_defn language 
)

◆ auto_load_objfile_script_1()

static int auto_load_objfile_script_1 ( struct objfile objfile,
const char *  realname,
const struct extension_language_defn language 
)
static

◆ auto_load_pspace_data_cleanup()

static void auto_load_pspace_data_cleanup ( struct program_space pspace,
void *  arg 
)
static

◆ auto_load_safe_path_vec_update()

static void auto_load_safe_path_vec_update ( void  )
static

◆ auto_load_section_scripts()

static void auto_load_section_scripts ( struct objfile objfile,
const char *  section_name 
)
static

◆ auto_load_set_cmdlist_get()

struct cmd_list_element** auto_load_set_cmdlist_get ( void  )

◆ auto_load_show_cmdlist_get()

struct cmd_list_element** auto_load_show_cmdlist_get ( void  )

◆ clear_section_scripts()

static void clear_section_scripts ( void  )
static

◆ collect_matching_scripts()

static int collect_matching_scripts ( void **  slot,
void *  info 
)
static

◆ eq_loaded_script_entry()

static int eq_loaded_script_entry ( const void *  a,
const void *  b 
)
static

Definition at line 612 of file auto-load.c.

References loaded_script::language, and loaded_script::name.

Referenced by init_loaded_scripts_info().

◆ execute_script_contents()

static void execute_script_contents ( struct auto_load_pspace_info pspace_info,
struct objfile objfile,
const struct extension_language_defn language,
const char *  section_name,
unsigned int  offset,
const char *  script 
)
static

◆ file_is_auto_load_safe()

int file_is_auto_load_safe ( const char *  filename,
const char *  debug_fmt,
  ... 
)

◆ filename_is_in_auto_load_safe_path_vec()

static int filename_is_in_auto_load_safe_path_vec ( const char *  filename,
gdb::unique_xmalloc_ptr< char > *  filename_realp 
)
static

◆ filename_is_in_pattern()

static ATTRIBUTE_PURE int filename_is_in_pattern ( const char *  filename,
const char *  pattern 
)
static

Definition at line 407 of file auto-load.c.

References filename_is_in_pattern_1().

Referenced by filename_is_in_auto_load_safe_path_vec().

◆ filename_is_in_pattern_1()

static int filename_is_in_pattern_1 ( char *  filename,
char *  pattern 
)
static

Definition at line 342 of file auto-load.c.

References _, debug_auto_load, fprintf_unfiltered(), gdb_filename_fnmatch(), and gdb_stdlog.

Referenced by filename_is_in_pattern().

◆ get_auto_load_pspace_data()

static struct auto_load_pspace_info* get_auto_load_pspace_data ( struct program_space pspace)
static

Definition at line 584 of file auto-load.c.

References auto_load_pspace_data, and XCNEW.

Referenced by auto_load_info_scripts(), and get_auto_load_pspace_data_for_loading().

◆ get_auto_load_pspace_data_for_loading()

struct auto_load_pspace_info* get_auto_load_pspace_data_for_loading ( struct program_space pspace)

◆ hash_loaded_script_entry()

static hashval_t hash_loaded_script_entry ( const void *  data)
static

Definition at line 602 of file auto-load.c.

References loaded_script::language, and loaded_script::name.

Referenced by init_loaded_scripts_info().

◆ info_auto_load_cmd()

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

◆ info_auto_load_gdb_scripts()

static void info_auto_load_gdb_scripts ( const char *  pattern,
int  from_tty 
)
static

Definition at line 1377 of file auto-load.c.

References auto_load_info_scripts(), and extension_language_gdb.

Referenced by _initialize_auto_load().

◆ info_auto_load_local_gdbinit()

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

◆ init_loaded_scripts_info()

static void init_loaded_scripts_info ( struct auto_load_pspace_info pspace_info)
static

◆ load_auto_scripts_for_objfile()

void load_auto_scripts_for_objfile ( struct objfile objfile)

◆ maybe_add_script_file()

static int maybe_add_script_file ( struct auto_load_pspace_info pspace_info,
int  loaded,
const char *  name,
const char *  full_path,
const struct extension_language_defn language 
)
static

◆ maybe_add_script_text()

static int maybe_add_script_text ( struct auto_load_pspace_info pspace_info,
int  loaded,
const char *  name,
const struct extension_language_defn language 
)
static

◆ maybe_print_script_not_found_warning()

static void maybe_print_script_not_found_warning ( struct auto_load_pspace_info pspace_info,
struct objfile objfile,
const struct extension_language_defn language,
const char *  section_name,
unsigned  offset 
)
static

◆ maybe_print_unsupported_script_warning()

static void maybe_print_unsupported_script_warning ( struct auto_load_pspace_info pspace_info,
struct objfile objfile,
const struct extension_language_defn language,
const char *  section_name,
unsigned  offset 
)
static

◆ print_script()

static void print_script ( struct loaded_script script)
static

◆ print_scripts()

static void print_scripts ( const std::vector< loaded_script *> &  scripts)
static

Definition at line 1283 of file auto-load.c.

References print_script().

Referenced by auto_load_info_scripts().

◆ set_auto_load_cmd()

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

◆ set_auto_load_dir()

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

Definition at line 142 of file auto-load.c.

References AUTO_LOAD_DIR, auto_load_dir, and xfree().

Referenced by _initialize_auto_load().

◆ set_auto_load_safe_path()

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

◆ show_auto_load_cmd()

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

Definition at line 1493 of file auto-load.c.

References auto_load_show_cmdlist_get(), and cmd_show_list().

Referenced by auto_load_show_cmdlist_get().

◆ show_auto_load_dir()

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

Definition at line 155 of file auto-load.c.

References _, and fprintf_filtered().

Referenced by _initialize_auto_load().

◆ show_auto_load_gdb_scripts()

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

Definition at line 86 of file auto-load.c.

References _, and fprintf_filtered().

Referenced by _initialize_auto_load().

◆ show_auto_load_local_gdbinit()

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

Definition at line 126 of file auto-load.c.

References _, and fprintf_filtered().

Referenced by _initialize_auto_load().

◆ show_auto_load_safe_path()

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

Definition at line 281 of file auto-load.c.

References _, DIRNAME_SEPARATOR, and fprintf_filtered().

Referenced by _initialize_auto_load().

◆ show_debug_auto_load()

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

Definition at line 68 of file auto-load.c.

References _, and fprintf_filtered().

Referenced by _initialize_auto_load().

◆ sort_scripts_by_name()

static bool sort_scripts_by_name ( loaded_script a,
loaded_script b 
)
static

Definition at line 1269 of file auto-load.c.

References loaded_script::name.

Referenced by auto_load_info_scripts().

◆ source_script_file()

static void source_script_file ( struct auto_load_pspace_info pspace_info,
struct objfile objfile,
const struct extension_language_defn language,
const char *  section_name,
unsigned int  offset,
const char *  file 
)
static

◆ source_section_scripts()

static void source_section_scripts ( struct objfile objfile,
const char *  section_name,
const char *  start,
const char *  end 
)
static

◆ VEC()

static VEC ( char_ptr  )
static

Variable Documentation

◆ auto_load_dir

char* auto_load_dir
static

◆ auto_load_gdb_scripts

int auto_load_gdb_scripts = 1
static

Definition at line 81 of file auto-load.c.

Referenced by _initialize_auto_load(), and auto_load_gdb_scripts_enabled().

◆ auto_load_info_scripts_pattern_nl

char auto_load_info_scripts_pattern_nl[] = ""

◆ auto_load_local_gdbinit

int auto_load_local_gdbinit = 1

Definition at line 115 of file auto-load.c.

Referenced by _initialize_auto_load(), and captured_main_1().

◆ auto_load_local_gdbinit_loaded

int auto_load_local_gdbinit_loaded = 0

Definition at line 121 of file auto-load.c.

Referenced by captured_main_1(), and info_auto_load_local_gdbinit().

◆ auto_load_local_gdbinit_pathname

char* auto_load_local_gdbinit_pathname = NULL

Definition at line 118 of file auto-load.c.

Referenced by captured_main_1(), and info_auto_load_local_gdbinit().

◆ auto_load_pspace_data

const struct program_space_data* auto_load_pspace_data
static

◆ auto_load_safe_path

char* auto_load_safe_path
static

◆ debug_auto_load

int debug_auto_load = 0
static

◆ global_auto_load

int global_auto_load = 1

Definition at line 112 of file auto-load.c.

Referenced by captured_main_1(), and load_auto_scripts_for_objfile().