From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id CBAD538378D8 for ; Wed, 14 Dec 2022 03:34:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CBAD538378D8 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=polymtl.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=polymtl.ca Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 2BE3YhBP029133 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 13 Dec 2022 22:34:48 -0500 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 2BE3YhBP029133 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=polymtl.ca; s=default; t=1670988888; bh=4Oo15Ry25x8pQQCpf04OzoXiTQP6YCbKpXrSzT7Mxkk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sf3XBSxFs2XF6bzdwhz6vDJCLmLmiHuOQ62drGaCrmxNjOnZrnn6JTkLUv2agaCRa d+RS/Rq3/jwFuuwHCkxuyC6wt/NVu73OmkkwINpz8wRJXdgE43l9jnO7alBuM4wbpz MBocxVrPX4+Rc5sd4lvm4CaE0aSbGWNrJZOqgwzo= Received: from simark.localdomain (unknown [217.28.27.60]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 4FA051E126; Tue, 13 Dec 2022 22:34:43 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH v2 02/13] gdb: move compile_instance to compile/compile.h Date: Tue, 13 Dec 2022 22:34:30 -0500 Message-Id: <20221214033441.499512-3-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221214033441.499512-1-simon.marchi@polymtl.ca> References: <20221214033441.499512-1-simon.marchi@polymtl.ca> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Wed, 14 Dec 2022 03:34:43 +0000 X-Spam-Status: No, score=-3189.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: From: Simon Marchi 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. Change-Id: Iedffe5f1173b3de7bdc1be533ee2a68e6f6c549f --- 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 46c0da0ff797..0a10619f38fe 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" /* Given a C string type, STR_TYPE, return the corresponding target diff --git a/gdb/c-lang.h b/gdb/c-lang.h index 652f147f6569..c2db16e0bf07 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 4f7e5205eb7e..db17d5eedeb6 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 4f633e3eb585..b17f1c9c40a6 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 0d3fcd76f0c0..4607f33738cc 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 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 d517660dd40a..877509544787 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 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 3962ee8fa246..df4a06cbcc2a 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" static void set_range_case (void); -- 2.38.1