gdb: use gdb::optional instead of passing a pointer to gdb::array_view
[deliverable/binutils-gdb.git] / gdb / auto-load.h
index 2ddebc5760873f0eb0b1822b8e0c7311b81983f1..c10787f873bbe0343b0166eabd7aab93ed5834bb 100644 (file)
@@ -1,6 +1,6 @@
 /* GDB routines for supporting auto-loaded scripts.
 
-   Copyright (C) 2012-2013 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #ifndef AUTO_LOAD_H
 #define AUTO_LOAD_H 1
 
+struct objfile;
 struct program_space;
+struct auto_load_pspace_info;
+struct extension_language_defn;
 
-struct script_language
-{
-  /* The name of the language, lowercase.  */
-  const char *name;
+namespace gdb {
+namespace observers {
+struct token;
+} /* namespace observers */
+} /* namespace gdb */
 
-  /* The suffix added to objfiles to get their auto-load script.
-     E.g., "-gdb.py".  */
-  const char *suffix;
+/* Value of the 'set debug auto-load' configuration variable.  */
 
-  /* Returns non-zero if auto-loading scripts in this language is enabled.  */
-  int (*auto_load_enabled) (void);
+extern bool debug_auto_load;
 
-  /* Worker routine to load the script.  It has already been opened and
-     deemed safe to load.  */
-  void (*source_script_for_objfile) (struct objfile *objfile, FILE *file,
-                                    const char *filename);
-};
+/* Print an "auto-load" debug statement.  */
 
-extern int global_auto_load;
+#define auto_load_debug_printf(fmt, ...) \
+  debug_prefixed_printf_cond (debug_auto_load, "auto-load", fmt, ##__VA_ARGS__)
 
-extern int auto_load_local_gdbinit;
+extern bool global_auto_load;
+
+extern bool auto_load_local_gdbinit;
 extern char *auto_load_local_gdbinit_pathname;
-extern int auto_load_local_gdbinit_loaded;
+extern bool auto_load_local_gdbinit_loaded;
+
+/* Token used for the auto_load_new_objfile observer, so other observers can
+   specify it as a dependency. */
+extern gdb::observers::token auto_load_new_objfile_observer_token;
 
 extern struct auto_load_pspace_info *
   get_auto_load_pspace_data_for_loading (struct program_space *pspace);
-extern int maybe_add_script (struct auto_load_pspace_info *pspace_info,
-                            int loaded, const char *name,
-                            const char *full_path,
-                            const struct script_language *language);
+extern void auto_load_objfile_script (struct objfile *objfile,
+                                     const struct extension_language_defn *);
 extern void load_auto_scripts_for_objfile (struct objfile *objfile);
-extern int
-  script_not_found_warning_print (struct auto_load_pspace_info *pspace_info);
 extern char auto_load_info_scripts_pattern_nl[];
-extern void auto_load_info_scripts (char *pattern, int from_tty,
-                                   const struct script_language *language);
+extern void auto_load_info_scripts (const char *pattern, int from_tty,
+                                   const struct extension_language_defn *);
 
 extern struct cmd_list_element **auto_load_set_cmdlist_get (void);
 extern struct cmd_list_element **auto_load_show_cmdlist_get (void);
 extern struct cmd_list_element **auto_load_info_cmdlist_get (void);
 
-extern int file_is_auto_load_safe (const char *filename,
-                                  const char *debug_fmt, ...);
+/* Return true if FILENAME is located in one of the directories of
+   AUTO_LOAD_SAFE_PATH.  Otherwise call warning and return false.  FILENAME does
+   not have to be an absolute path.
+
+   Existence of FILENAME is not checked.  Function will still give a warning
+   even if the caller would quietly skip non-existing file in unsafe
+   directory.  */
+
+extern bool file_is_auto_load_safe (const char *filename);
+
+/* Return true if auto-loading gdb scripts is enabled.  */
+
+extern bool auto_load_gdb_scripts_enabled
+  (const struct extension_language_defn *extlang);
 
 #endif /* AUTO_LOAD_H */
This page took 0.026647 seconds and 4 git commands to generate.