aboutsummaryrefslogtreecommitdiff
path: root/include/gcc-c-interface.h
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2024-02-26 18:21:03 -0700
committerTom Tromey <tom@tromey.com>2024-02-29 08:50:06 -0700
commitbc0e18a960f9dff3e740f4d0cb5b25b3f68d920a (patch)
tree172401564fb0380b8dfc80a9c78b7353b40b53f8 /include/gcc-c-interface.h
parent54137725cfb968803be0f5fa76906839d79a3067 (diff)
downloadgcc-bc0e18a960f9dff3e740f4d0cb5b25b3f68d920a.zip
gcc-bc0e18a960f9dff3e740f4d0cb5b25b3f68d920a.tar.gz
gcc-bc0e18a960f9dff3e740f4d0cb5b25b3f68d920a.tar.bz2
Fix PR libcc1/113977
PR libcc1/113977 points out a case where a simple expression is rejected with a compiler error message. The bug here is that gdb does not inform the plugin of the correct alignment -- in fact, there is no way to do that. This patch adds a new method to allow the alignment to be set, and bumps the C front end protocol version. It also includes some updates to various comments in 'include', done here to simplify the merge to binutils-gdb. include * gcc-cp-interface.h (gcc_cp_fe_context_function): Update comment. * gcc-c-interface.h (enum gcc_c_api_version) <GCC_C_FE_VERSION_2>: New constant. (gcc_c_fe_context_function): Update comment. * gcc-c-fe.def (finish_record_with_alignment): New method. Update documentation. libcc1 PR libcc1/113977 * libcc1plugin.cc (plugin_finish_record_or_union): New function. (plugin_finish_record_or_union): Rewrite. (plugin_init): Use GCC_C_FE_VERSION_2. * libcc1.cc (c_vtable): Use GCC_C_FE_VERSION_2. (gcc_c_fe_context): Check for GCC_C_FE_VERSION_2.
Diffstat (limited to 'include/gcc-c-interface.h')
-rw-r--r--include/gcc-c-interface.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/include/gcc-c-interface.h b/include/gcc-c-interface.h
index feece1e..700d748 100644
--- a/include/gcc-c-interface.h
+++ b/include/gcc-c-interface.h
@@ -45,7 +45,10 @@ enum gcc_c_api_version
/* Added char_type. Added new version of int_type and float_type,
deprecated int_type_v0 and float_type_v0. */
- GCC_C_FE_VERSION_1 = 1
+ GCC_C_FE_VERSION_1 = 1,
+
+ /* Added finish_record_with_alignment method. */
+ GCC_C_FE_VERSION_2 = 2,
};
/* Qualifiers. */
@@ -198,7 +201,11 @@ struct gcc_c_context
/* The type of the initialization function. The caller passes in the
desired base version and desired C-specific version. If the
request can be satisfied, a compatible gcc_context object will be
- returned. Otherwise, the function returns NULL. */
+ returned. In particular, this may return a context object with a higher
+ actual version number than was requested, provided the higher version is
+ fully compatible. (As of GCC_C_FE_VERSION_2, this is always true.)
+
+ Otherwise, the function returns NULL. */
typedef struct gcc_c_context *gcc_c_fe_context_function
(enum gcc_base_api_version,