]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix version negotiation in libcc1 plugins
authorTom Tromey <tom@tromey.com>
Fri, 23 Feb 2024 02:36:53 +0000 (19:36 -0700)
committerTom Tromey <tom@tromey.com>
Thu, 29 Feb 2024 15:50:06 +0000 (08:50 -0700)
This fixes version negotiation in the libcc1 plugins.  It's done in a
simple way: the version number from the context object is now passed
to base_gdb_plugin.

The idea behind this is that when the client (gdb) requests version N,
the plugin should respond with the newest version that it knows of
that is backward compatible to N.  That is, the connection can be
upgraded.  Note that the protocol does not change much, and no
backward incompatibilities have ever been needed.

The C plugin is also changed to advertise GCC_C_FE_VERSION_1.

The version negotiation approach should of course be documented, but I
did that in a subsequent patch, in order to only have one patch
touching the 'include' directory and thus needing a merge to
binutils-gdb.

libcc1

* libcp1.cc (libcp1::libcp1): Use FE version number from context.
* libcc1.cc (libcc1::libcc1): Use FE version number from context.
(c_vtable): Use GCC_C_FE_VERSION_1.

libcc1/libcc1.cc
libcc1/libcp1.cc

index 8d4ddc5ddfe1eafb16c7eab506ea4ebdef205495..992181e8fdc991215a00ba76bf6da3134bff6e4a 100644 (file)
@@ -54,7 +54,7 @@ struct libcc1 : public cc1_plugin::base_gdb_plugin<gcc_c_context>
 libcc1::libcc1 (const gcc_c_fe_vtable *cv)
   : cc1_plugin::base_gdb_plugin<gcc_c_context> ("libcc1plugin",
                                                C_COMPILER_NAME,
-                                               GCC_C_FE_VERSION_1)
+                                               cv->c_version)
 {
   c_ops = cv;
 }
@@ -108,7 +108,7 @@ set_callbacks (struct gcc_c_context *s,
 
 static const struct gcc_c_fe_vtable c_vtable =
 {
-  GCC_C_FE_VERSION_0,
+  GCC_C_FE_VERSION_1,
   set_callbacks,
 
 #define GCC_METHOD0(R, N) \
index ec3eec2c606153e6162026345ddb7a27c8c10ef4..cc2915d30afa898ee26ab71473623bb5e7419406 100644 (file)
@@ -55,7 +55,7 @@ struct libcp1 : public cc1_plugin::base_gdb_plugin<gcc_cp_context>
 libcp1::libcp1 (const gcc_cp_fe_vtable *cv)
   : cc1_plugin::base_gdb_plugin<gcc_cp_context> ("libcp1plugin",
                                                 CP_COMPILER_NAME,
-                                                GCC_CP_FE_VERSION_0)
+                                                cv->cp_version)
 {
   cp_ops = cv;
 }