diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2022-12-13 22:34:30 -0500 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2023-01-20 14:48:56 -0500 |
commit | 6ad66f21fc6d839966abfb84738f8e992c7bb193 (patch) | |
tree | be36f3602fea8636c5a26c7a05075606e9825dfc | |
parent | c85555b1a8676145695cf5783df4d95c509ed82f (diff) | |
download | gdb-6ad66f21fc6d839966abfb84738f8e992c7bb193.zip gdb-6ad66f21fc6d839966abfb84738f8e992c7bb193.tar.gz gdb-6ad66f21fc6d839966abfb84738f8e992c7bb193.tar.bz2 |
gdb: move compile_instance to compile/compile.h
struct compile_instance needs to be visible to users, since we use
std::unique<compile_instance>. language.c and c-lang.c currently
includes compile-internal.h for this reason, which kind of defeats the
purpose of having an "internal" header file.
Change-Id: Iedffe5f1173b3de7bdc1be533ee2a68e6f6c549f
Reviewed-By: Bruno Larsen <blarsen@redhat.com>
-rw-r--r-- | gdb/c-lang.c | 1 | ||||
-rw-r--r-- | gdb/c-lang.h | 1 | ||||
-rw-r--r-- | gdb/compile/compile-c.h | 1 | ||||
-rw-r--r-- | gdb/compile/compile-cplus.h | 1 | ||||
-rw-r--r-- | gdb/compile/compile-internal.h | 116 | ||||
-rw-r--r-- | gdb/compile/compile.h | 116 | ||||
-rw-r--r-- | gdb/language.c | 1 |
7 files changed, 119 insertions, 118 deletions
diff --git a/gdb/c-lang.c b/gdb/c-lang.c index ef2272e..a6d912a 100644 --- a/gdb/c-lang.c +++ b/gdb/c-lang.c @@ -36,7 +36,6 @@ #include <ctype.h> #include "gdbcore.h" #include "gdbarch.h" -#include "compile/compile-internal.h" #include "c-exp.h" /* Given a C string type, STR_TYPE, return the corresponding target diff --git a/gdb/c-lang.h b/gdb/c-lang.h index 024a302..8a82606 100644 --- a/gdb/c-lang.h +++ b/gdb/c-lang.h @@ -26,6 +26,7 @@ struct language_arch_info; struct type_print_options; struct parser_state; +#include "compile/compile.h" #include "value.h" #include "macroexp.h" #include "gdbsupport/enum-flags.h" diff --git a/gdb/compile/compile-c.h b/gdb/compile/compile-c.h index a636245..f047774 100644 --- a/gdb/compile/compile-c.h +++ b/gdb/compile/compile-c.h @@ -17,6 +17,7 @@ #ifndef COMPILE_COMPILE_C_H #define COMPILE_COMPILE_C_H +#include "compile/compile.h" #include "gdbsupport/enum-flags.h" #include "gcc-c-plugin.h" diff --git a/gdb/compile/compile-cplus.h b/gdb/compile/compile-cplus.h index 1954f7a..91f2e13 100644 --- a/gdb/compile/compile-cplus.h +++ b/gdb/compile/compile-cplus.h @@ -17,6 +17,7 @@ #ifndef COMPILE_COMPILE_CPLUS_H #define COMPILE_COMPILE_CPLUS_H +#include "compile/compile.h" #include "gdbsupport/enum-flags.h" #include "gcc-cp-plugin.h" #include "symtab.h" diff --git a/gdb/compile/compile-internal.h b/gdb/compile/compile-internal.h index c86d22b..ecf7c11 100644 --- a/gdb/compile/compile-internal.h +++ b/gdb/compile/compile-internal.h @@ -24,122 +24,6 @@ extern bool compile_debug; -struct block; - -/* An object of this type holds state associated with a given - compilation job. */ - -class compile_instance -{ -public: - compile_instance (struct gcc_base_context *gcc_fe, const char *options); - - virtual ~compile_instance () - { - m_gcc_fe->ops->destroy (m_gcc_fe); - } - - /* Returns the GCC options to be passed during compilation. */ - const std::string &gcc_target_options () const - { - return m_gcc_target_options; - } - - /* Query the type cache for TYPE, returning the compiler's - type for it in RET. */ - bool get_cached_type (struct type *type, gcc_type *ret) const; - - /* Insert GCC_TYPE into the type cache for TYPE. - - It is ok for a given type to be inserted more than once, provided that - the exact same association is made each time. */ - void insert_type (struct type *type, gcc_type gcc_type); - - /* Associate SYMBOL with some error text. */ - void insert_symbol_error (const struct symbol *sym, const char *text); - - /* Emit the error message corresponding to SYM, if one exists, and - arrange for it not to be emitted again. */ - void error_symbol_once (const struct symbol *sym); - - /* These currently just forward to the underlying ops - vtable. */ - - /* Set the plug-in print callback. */ - void set_print_callback (void (*print_function) (void *, const char *), - void *datum); - - /* Return the plug-in's front-end version. */ - unsigned int version () const; - - /* Set the plug-in's verbosity level. Nop for GCC_FE_VERSION_0. */ - void set_verbose (int level); - - /* Set the plug-in driver program. Nop for GCC_FE_VERSION_0. */ - void set_driver_filename (const char *filename); - - /* Set the regular expression used to match the configury triplet - prefix to the compiler. Nop for GCC_FE_VERSION_0. */ - void set_triplet_regexp (const char *regexp); - - /* Set compilation arguments. REGEXP is only used for protocol - version GCC_FE_VERSION_0. */ - gdb::unique_xmalloc_ptr<char> set_arguments (int argc, char **argv, - const char *regexp = NULL); - - /* Set the filename of the program to compile. Nop for GCC_FE_VERSION_0. */ - void set_source_file (const char *filename); - - /* Compile the previously specified source file to FILENAME. - VERBOSE_LEVEL is only used for protocol version GCC_FE_VERSION_0. */ - bool compile (const char *filename, int verbose_level = -1); - - /* Set the scope type for this compile. */ - void set_scope (enum compile_i_scope_types scope) - { - m_scope = scope; - } - - /* Return the scope type. */ - enum compile_i_scope_types scope () const - { - return m_scope; - } - - /* Set the block to be used for symbol searches. */ - void set_block (const struct block *block) - { - m_block = block; - } - - /* Return the search block. */ - const struct block *block () const - { - return m_block; - } - -protected: - - /* The GCC front end. */ - struct gcc_base_context *m_gcc_fe; - - /* The "scope" of this compilation. */ - enum compile_i_scope_types m_scope; - - /* The block in which an expression is being parsed. */ - const struct block *m_block; - - /* Specify "-std=gnu11", "-std=gnu++11" or similar. These options are put - after CU's DW_AT_producer compilation options to override them. */ - std::string m_gcc_target_options; - - /* Map from gdb types to gcc types. */ - htab_up m_type_map; - - /* Map from gdb symbols to gcc error messages to emit. */ - htab_up m_symbol_err_map; -}; - /* Define header and footers for different scopes. */ /* A simple scope just declares a function named "_gdb_expr", takes no diff --git a/gdb/compile/compile.h b/gdb/compile/compile.h index 7ce338f..a3b6a18f 100644 --- a/gdb/compile/compile.h +++ b/gdb/compile/compile.h @@ -18,6 +18,8 @@ #ifndef COMPILE_COMPILE_H #define COMPILE_COMPILE_H +#include "gcc-c-interface.h" + struct ui_file; struct gdbarch; struct dwarf2_per_cu_data; @@ -25,6 +27,120 @@ struct dwarf2_per_objfile; struct symbol; struct dynamic_prop; +/* An object of this type holds state associated with a given + compilation job. */ + +class compile_instance +{ +public: + compile_instance (struct gcc_base_context *gcc_fe, const char *options); + + virtual ~compile_instance () + { + m_gcc_fe->ops->destroy (m_gcc_fe); + } + + /* Returns the GCC options to be passed during compilation. */ + const std::string &gcc_target_options () const + { + return m_gcc_target_options; + } + + /* Query the type cache for TYPE, returning the compiler's + type for it in RET. */ + bool get_cached_type (struct type *type, gcc_type *ret) const; + + /* Insert GCC_TYPE into the type cache for TYPE. + + It is ok for a given type to be inserted more than once, provided that + the exact same association is made each time. */ + void insert_type (struct type *type, gcc_type gcc_type); + + /* Associate SYMBOL with some error text. */ + void insert_symbol_error (const struct symbol *sym, const char *text); + + /* Emit the error message corresponding to SYM, if one exists, and + arrange for it not to be emitted again. */ + void error_symbol_once (const struct symbol *sym); + + /* These currently just forward to the underlying ops + vtable. */ + + /* Set the plug-in print callback. */ + void set_print_callback (void (*print_function) (void *, const char *), + void *datum); + + /* Return the plug-in's front-end version. */ + unsigned int version () const; + + /* Set the plug-in's verbosity level. Nop for GCC_FE_VERSION_0. */ + void set_verbose (int level); + + /* Set the plug-in driver program. Nop for GCC_FE_VERSION_0. */ + void set_driver_filename (const char *filename); + + /* Set the regular expression used to match the configury triplet + prefix to the compiler. Nop for GCC_FE_VERSION_0. */ + void set_triplet_regexp (const char *regexp); + + /* Set compilation arguments. REGEXP is only used for protocol + version GCC_FE_VERSION_0. */ + gdb::unique_xmalloc_ptr<char> set_arguments (int argc, char **argv, + const char *regexp = NULL); + + /* Set the filename of the program to compile. Nop for GCC_FE_VERSION_0. */ + void set_source_file (const char *filename); + + /* Compile the previously specified source file to FILENAME. + VERBOSE_LEVEL is only used for protocol version GCC_FE_VERSION_0. */ + bool compile (const char *filename, int verbose_level = -1); + + /* Set the scope type for this compile. */ + void set_scope (enum compile_i_scope_types scope) + { + m_scope = scope; + } + + /* Return the scope type. */ + enum compile_i_scope_types scope () const + { + return m_scope; + } + + /* Set the block to be used for symbol searches. */ + void set_block (const struct block *block) + { + m_block = block; + } + + /* Return the search block. */ + const struct block *block () const + { + return m_block; + } + +protected: + + /* The GCC front end. */ + struct gcc_base_context *m_gcc_fe; + + /* The "scope" of this compilation. */ + enum compile_i_scope_types m_scope; + + /* The block in which an expression is being parsed. */ + const struct block *m_block; + + /* Specify "-std=gnu11", "-std=gnu++11" or similar. These options are put + after CU's DW_AT_producer compilation options to override them. */ + std::string m_gcc_target_options; + + /* Map from gdb types to gcc types. */ + htab_up m_type_map; + + /* Map from gdb symbols to gcc error messages to emit. */ + htab_up m_symbol_err_map; +}; + /* Public function that is called from compile_control case in the expression command. GDB returns either a CMD, or a CMD_STRING, but never both. */ diff --git a/gdb/language.c b/gdb/language.c index 5037867..50a53c6 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -46,7 +46,6 @@ #include "c-lang.h" #include <algorithm> #include "gdbarch.h" -#include "compile/compile-internal.h" static void set_range_case (void); |