From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1879) id EC8AA3858D20; Fri, 20 Jan 2023 19:52:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EC8AA3858D20 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1674244336; bh=Ixgm79ciZQcI/F2ssHhtDrgF49cWbOvU7F9D+WWjndg=; h=From:To:Subject:Date:From; b=to4BZgiDYviE2L2kLvngno0jBrbviPscc4DpzbsALT00UadAQ94Gi2feL14tnbxYM UyjXY0WpWmLkBD8T09em+AO0I/w7sXc3E14YLtimZuDOa1YmyMqF8AWGqSnPny3iXl VV2hP5/7wvYykC/r+OYz/7SdJi3YI1MHPUsifXXA= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Simon Marchi To: gdb-cvs@sourceware.org Subject: [binutils-gdb] gdb: move compile_instance to compile/compile.h X-Act-Checkin: binutils-gdb X-Git-Author: Simon Marchi X-Git-Refname: refs/heads/master X-Git-Oldrev: c85555b1a8676145695cf5783df4d95c509ed82f X-Git-Newrev: 6ad66f21fc6d839966abfb84738f8e992c7bb193 Message-Id: <20230120195216.EC8AA3858D20@sourceware.org> Date: Fri, 20 Jan 2023 19:52:16 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D6ad66f21fc6d= 839966abfb84738f8e992c7bb193 commit 6ad66f21fc6d839966abfb84738f8e992c7bb193 Author: Simon Marchi Date: Tue Dec 13 22:34:30 2022 -0500 gdb: move compile_instance to compile/compile.h =20 struct compile_instance needs to be visible to users, since we use std::unique. 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. =20 Change-Id: Iedffe5f1173b3de7bdc1be533ee2a68e6f6c549f Reviewed-By: Bruno Larsen Diff: --- gdb/c-lang.c | 1 - gdb/c-lang.h | 1 + gdb/compile/compile-c.h | 1 + gdb/compile/compile-cplus.h | 1 + gdb/compile/compile-internal.h | 116 -------------------------------------= ---- gdb/compile/compile.h | 116 +++++++++++++++++++++++++++++++++++++= ++++ gdb/language.c | 1 - 7 files changed, 119 insertions(+), 118 deletions(-) diff --git a/gdb/c-lang.c b/gdb/c-lang.c index ef2272e9e6b..a6d912a7be7 100644 --- a/gdb/c-lang.c +++ b/gdb/c-lang.c @@ -36,7 +36,6 @@ #include #include "gdbcore.h" #include "gdbarch.h" -#include "compile/compile-internal.h" #include "c-exp.h" =20 /* Given a C string type, STR_TYPE, return the corresponding target diff --git a/gdb/c-lang.h b/gdb/c-lang.h index 024a302b3f2..8a82606b6d0 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; =20 +#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 a6362450133..f0477742c44 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 =20 +#include "compile/compile.h" #include "gdbsupport/enum-flags.h" #include "gcc-c-plugin.h" =20 diff --git a/gdb/compile/compile-cplus.h b/gdb/compile/compile-cplus.h index 1954f7a105c..91f2e13e0bb 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 =20 +#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 c86d22bcf66..ecf7c11c120 100644 --- a/gdb/compile/compile-internal.h +++ b/gdb/compile/compile-internal.h @@ -24,122 +24,6 @@ =20 extern bool compile_debug; =20 -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 set_arguments (int argc, char **argv, - const char *regexp =3D 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 =3D -1); - - /* Set the scope type for this compile. */ - void set_scope (enum compile_i_scope_types scope) - { - m_scope =3D 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 =3D 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=3Dgnu11", "-std=3Dgnu++11" or similar. These options a= re 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. */ =20 /* 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 7ce338f3704..a3b6a18fe20 100644 --- a/gdb/compile/compile.h +++ b/gdb/compile/compile.h @@ -18,6 +18,8 @@ #ifndef COMPILE_COMPILE_H #define COMPILE_COMPILE_H =20 +#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; =20 +/* 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 set_arguments (int argc, char **argv, + const char *regexp =3D 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 =3D -1); + + /* Set the scope type for this compile. */ + void set_scope (enum compile_i_scope_types scope) + { + m_scope =3D 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 =3D 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=3Dgnu11", "-std=3Dgnu++11" or similar. These options a= re 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 5037867b256..50a53c647f5 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -46,7 +46,6 @@ #include "c-lang.h" #include #include "gdbarch.h" -#include "compile/compile-internal.h" =20 static void set_range_case (void);