GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
auto-load.c File Reference
#include "defs.h"
#include <ctype.h>
#include "auto-load.h"
#include "progspace.h"
#include "gdbsupport/gdb_regex.h"
#include "ui-out.h"
#include "filenames.h"
#include "command.h"
#include "observable.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 "gdbsupport/filestuff.h"
#include "extension.h"
#include "gdb/section-scripts.h"
#include <algorithm>
#include "gdbsupport/pathstuff.h"
#include "cli/cli-style.h"

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"
 
#define DEBUGLINK_SECTION_NAME   ".gnu_debuglink"
 

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)
 
bool 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 std::vector< gdb::unique_xmalloc_ptr< char > > auto_load_expand_dir_vars (const char *string)
 
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)
 
bool file_is_auto_load_safe (const char *filename)
 
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 bool maybe_add_script_file (struct auto_load_pspace_info *pspace_info, bool loaded, const char *name, const char *full_path, const struct extension_language_defn *language)
 
static bool maybe_add_script_text (struct auto_load_pspace_info *pspace_info, bool loaded, const char *name, const struct extension_language_defn *language)
 
static void clear_section_scripts (program_space *pspace)
 
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 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 (program_space *pspace, const char *pattern, int from_tty, const 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)
 
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 ()
 

Variables

bool debug_auto_load = false
 
static bool auto_load_gdb_scripts = true
 
bool global_auto_load = true
 
bool auto_load_local_gdbinit = true
 
char * auto_load_local_gdbinit_pathname = NULL
 
bool auto_load_local_gdbinit_loaded = false
 
static std::string auto_load_dir = AUTO_LOAD_DIR
 
static std::string auto_load_safe_path = AUTO_LOAD_SAFE_PATH
 
static std::vector< gdb::unique_xmalloc_ptr< char > > auto_load_safe_path_vec
 
static const registry< program_space >::key< auto_load_pspace_infoauto_load_pspace_data
 
char auto_load_info_scripts_pattern_nl [] = ""
 
gdb::observers::token auto_load_new_objfile_observer_token
 

Macro Definition Documentation

◆ AUTO_SECTION_NAME

#define AUTO_SECTION_NAME   ".debug_gdb_scripts"

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

Referenced by load_auto_scripts_for_objfile().

◆ DEBUGLINK_SECTION_NAME

#define DEBUGLINK_SECTION_NAME   ".gnu_debuglink"

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

Function Documentation

◆ _initialize_auto_load()

void _initialize_auto_load ( )

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

Referenced by initialize_all_files().

◆ add_auto_load_dir()

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

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

References auto_load_dir.

◆ add_auto_load_safe_path()

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

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

References auto_load_safe_path, and auto_load_safe_path_vec_update().

◆ auto_load_expand_dir_vars()

static std::vector< gdb::unique_xmalloc_ptr< char > > auto_load_expand_dir_vars ( const char * string)
static

◆ auto_load_gdb_datadir_changed()

static void auto_load_gdb_datadir_changed ( void )
static

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

References auto_load_safe_path_vec_update().

◆ auto_load_gdb_scripts_enabled()

bool auto_load_gdb_scripts_enabled ( const struct extension_language_defn * extlang)

Definition at line 103 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 ( program_space * pspace,
const char * pattern,
int from_tty,
const extension_language_defn * language )

◆ 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_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 ( program_space * pspace)
static

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

References auto_load_pspace_data, and registry< T >::get().

◆ collect_matching_scripts()

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

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

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

Referenced by auto_load_info_scripts().

◆ eq_loaded_script_entry()

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

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

bool file_is_auto_load_safe ( const char * filename)

◆ 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 377 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 321 of file auto-load.c.

References auto_load_debug_printf, and gdb_filename_fnmatch().

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

◆ 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 560 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

◆ 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 bool maybe_add_script_file ( struct auto_load_pspace_info * pspace_info,
bool loaded,
const char * name,
const char * full_path,
const struct extension_language_defn * language )
static

◆ maybe_add_script_text()

static bool maybe_add_script_text ( struct auto_load_pspace_info * pspace_info,
bool 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 1236 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 148 of file auto-load.c.

References AUTO_LOAD_DIR, and auto_load_dir.

◆ 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_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 158 of file auto-load.c.

References gdb_printf().

◆ 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 92 of file auto-load.c.

References gdb_printf().

◆ 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 132 of file auto-load.c.

References gdb_printf().

◆ 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 266 of file auto-load.c.

References gdb_printf().

◆ 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 74 of file auto-load.c.

References gdb_printf().

◆ sort_scripts_by_name()

static bool sort_scripts_by_name ( loaded_script * a,
loaded_script * b )
static

Definition at line 1222 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

Variable Documentation

◆ auto_load_dir

std::string auto_load_dir = AUTO_LOAD_DIR
static

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

Referenced by add_auto_load_dir(), auto_load_objfile_script_1(), and set_auto_load_dir().

◆ auto_load_gdb_scripts

bool auto_load_gdb_scripts = true
static

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

Referenced by auto_load_gdb_scripts_enabled().

◆ auto_load_info_scripts_pattern_nl

char auto_load_info_scripts_pattern_nl[] = ""

◆ auto_load_local_gdbinit

bool auto_load_local_gdbinit = true

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

Referenced by captured_main_1().

◆ auto_load_local_gdbinit_loaded

bool auto_load_local_gdbinit_loaded = false

Definition at line 127 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 124 of file auto-load.c.

Referenced by captured_main_1(), and info_auto_load_local_gdbinit().

◆ auto_load_new_objfile_observer_token

gdb::observers::token auto_load_new_objfile_observer_token

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

Referenced by gdbpy_initialize_inferior().

◆ auto_load_pspace_data

const registry<program_space>::key<auto_load_pspace_info> auto_load_pspace_data
static

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

Referenced by clear_section_scripts(), and get_auto_load_pspace_data().

◆ auto_load_safe_path

std::string auto_load_safe_path = AUTO_LOAD_SAFE_PATH
static

◆ auto_load_safe_path_vec

std::vector<gdb::unique_xmalloc_ptr<char> > auto_load_safe_path_vec
static

◆ debug_auto_load

bool debug_auto_load = false

◆ global_auto_load

bool global_auto_load = true

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

Referenced by captured_main_1(), and load_auto_scripts_for_objfile().