gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gdb / extension-priv.h
index 49ae6c32cae22e7e1a473b622b62754b1f6fdb62..8596e0a95f5216366547874edf4f6a7a33f9d9de 100644 (file)
@@ -1,7 +1,7 @@
 /* Private implementation details of interface between gdb and its
    extension languages.
 
-   Copyright (C) 2013 Free Software Foundation, Inc.
+   Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #define EXTENSION_PRIV_H
 
 #include "extension.h"
-
-/* The return code for some API calls.  */
-
-enum ext_lang_rc
-  {
-    /* The operation completed successfully.  */
-    EXT_LANG_RC_OK,
-
-    /* The operation was not performed (e.g., no pretty-printer).  */
-    EXT_LANG_RC_NOP,
-
-    /* There was an error (e.g., Python error while printing a value).
-       When an error occurs no further extension languages are tried.
-       This is to preserve existing behaviour, and because it's convenient
-       for Python developers.
-       Note: This is different than encountering a memory error trying to read
-       a value for pretty-printing.  Here we're referring to, e.g., programming
-       errors that trigger an exception in the extension language.  */
-    EXT_LANG_RC_ERROR
-  };
+#include <signal.h>
+#include "cli/cli-script.h"
 
 /* High level description of an extension/scripting language.
    An entry for each is compiled into GDB regardless of whether the support
@@ -86,7 +68,10 @@ struct extension_language_defn
 
 /* The interface for loading scripts from external extension languages,
    as well as GDB's own scripting language.
-   All of these methods are required to be implemented.  */
+   All of these methods are required to be implemented.
+
+   By convention all of these functions take a pseudo-this parameter
+   as the first argument.  */
 
 struct extension_language_script_ops
 {
@@ -100,6 +85,11 @@ struct extension_language_script_ops
      but is not required to, throw an error.  */
   objfile_script_sourcer_func *objfile_script_sourcer;
 
+  /* Execute a script attached to an objfile.
+     If there's an error while processing the script this function may,
+     but is not required to, throw an error.  */
+  objfile_script_executor_func *objfile_script_executor;
+
   /* Return non-zero if auto-loading scripts in this extension language
      is enabled.  */
   int (*auto_load_enabled) (const struct extension_language_defn *);
@@ -112,7 +102,10 @@ struct extension_language_script_ops
    makes no use of these.  There is no (current) intention to split
    extension_language_ops up any further.
    All of these methods are optional and may be NULL, except where
-   otherwise indicated.  */
+   otherwise indicated.
+
+   By convention all of these functions take a pseudo-this parameter
+   as the first argument.  */
 
 struct extension_language_ops
 {
@@ -159,19 +152,14 @@ struct extension_language_ops
   void (*free_type_printers) (const struct extension_language_defn *,
                              struct ext_lang_type_printers *);
 
-  /* Try to pretty-print a value of type TYPE located at VALADDR
-     + EMBEDDED_OFFSET, which came from the inferior at address ADDRESS
-     + EMBEDDED_OFFSET, onto stdio stream STREAM according to OPTIONS.
-     VAL is the whole object that came from ADDRESS.  VALADDR must point to
-     the head of VAL's contents buffer.
-     Returns EXT_LANG_RC_OK upon success, EXT_LANG_RC_NOP if the value
-     is not recognized, and EXT_LANG_RC_ERROR if an error was encountered.  */
+  /* Try to pretty-print a value, onto stdio stream STREAM according
+     to OPTIONS.  VAL is the object to print.  Returns EXT_LANG_RC_OK
+     upon success, EXT_LANG_RC_NOP if the value is not recognized, and
+     EXT_LANG_RC_ERROR if an error was encountered.  */
   enum ext_lang_rc (*apply_val_pretty_printer)
     (const struct extension_language_defn *,
-     struct type *type, const gdb_byte *valaddr,
-     int embedded_offset, CORE_ADDR address,
-     struct ui_file *stream, int recurse,
-     const struct value *val, const struct value_print_options *options,
+     struct value *val, struct ui_file *stream, int recurse,
+     const struct value_print_options *options,
      const struct language_defn *language);
 
   /* GDB access to the "frame filter" feature.
@@ -190,7 +178,8 @@ struct extension_language_ops
      or SCR_BT_COMPLETED on success.  */
   enum ext_lang_bt_status (*apply_frame_filter)
     (const struct extension_language_defn *,
-     struct frame_info *frame, int flags, enum ext_lang_frame_args args_type,
+     struct frame_info *frame, frame_filter_flags flags,
+     enum ext_lang_frame_args args_type,
      struct ui_out *out, int frame_low, int frame_high);
 
   /* Update values held by the extension language when OBJFILE is discarded.
@@ -220,7 +209,7 @@ struct extension_language_ops
   enum ext_lang_bp_stop (*breakpoint_cond_says_stop)
     (const struct extension_language_defn *, struct breakpoint *);
 
-  /* The next three are used to connect GDB's SIGINT handling with the
+  /* The next two are used to connect GDB's SIGINT handling with the
      extension language's.
 
      Terminology: If an extension language can use GDB's SIGINT handling then
@@ -230,9 +219,6 @@ struct extension_language_ops
      These need not be implemented, but if one of them is implemented
      then they all must be.  */
 
-  /* Clear the SIGINT indicator.  */
-  void (*clear_quit_flag) (const struct extension_language_defn *);
-
   /* Set the SIGINT indicator.
      This is called by GDB's SIGINT handler and must be async-safe.  */
   void (*set_quit_flag) (const struct extension_language_defn *);
@@ -250,6 +236,26 @@ struct extension_language_ops
      changed or an error occurs no further languages are called.  */
   enum ext_lang_rc (*before_prompt) (const struct extension_language_defn *,
                                     const char *current_gdb_prompt);
+
+  /* Return a vector of matching xmethod workers defined in this
+     extension language.  The workers service methods with name
+     METHOD_NAME on objects of type OBJ_TYPE.  The vector is returned
+     in DM_VEC.
+
+     This field may be NULL if the extension language does not support
+     xmethods.  */
+  enum ext_lang_rc (*get_matching_xmethod_workers)
+    (const struct extension_language_defn *extlang,
+     struct type *obj_type,
+     const char *method_name,
+     std::vector<xmethod_worker_up> *dm_vec);
+
+  /* Colorize a source file.  NAME is the source file's name, and
+     CONTENTS is the contents of the file.  This should either return
+     colorized (using ANSI terminal escapes) version of the contents,
+     or an empty option.  */
+  gdb::optional<std::string> (*colorize) (const std::string &name,
+                                         const std::string &contents);
 };
 
 /* State necessary to restore a signal handler to its previous value.  */
@@ -260,11 +266,11 @@ struct signal_handler
   int handler_saved;
 
   /* The signal handler.  */
-  RETSIGTYPE (*handler) ();
+  sighandler_t handler;
 };
 
 /* State necessary to restore the currently active extension language
-   to is previous value.  */
+   to its previous value.  */
 
 struct active_ext_lang_state
 {
This page took 0.037897 seconds and 4 git commands to generate.