]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Synchronize GCC compile plugin headers
authorTom Tromey <tom@tromey.com>
Wed, 21 Feb 2024 00:15:03 +0000 (17:15 -0700)
committerTom Tromey <tom@tromey.com>
Thu, 29 Feb 2024 22:34:38 +0000 (15:34 -0700)
This patch copies some changes to the compile headers from GCC's
include/ directory.  It is the gdb equivalent of the GCC commit
bc0e18a9 -- however, while that commit also necessarily touched
libcc1, this one of course does not.

Tested by rebuilding and also running the gdb.compile tests.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31397

include/gcc-c-fe.def
include/gcc-c-interface.h
include/gcc-cp-interface.h

index 36a765484a7b30fa01e13c621d7bcaeae80ee654..cb7cf1975256fc1f9c0a678d4c81e9a0800da308 100644 (file)
@@ -89,7 +89,10 @@ GCC_METHOD5 (int /* bool */, build_add_field,
 
 /* After all the fields have been added to a struct or union, the
    struct or union type must be "finished".  This does some final
-   cleanups in GCC.  */
+   cleanups in GCC.
+
+   Note that when using GCC_C_FE_VERSION_2, it is preferable to call
+   finish_record_with_alignment instead.  */
 
 GCC_METHOD2 (int /* bool */, finish_record_or_union,
             gcc_type,                     /* Argument RECORD_OR_UNION_TYPE. */
@@ -220,3 +223,11 @@ GCC_METHOD2 (gcc_type, float_type,
             unsigned long,                /* Argument SIZE_IN_BYTES.  */
             const char *)                 /* Argument BUILTIN_NAME.  */
 
+/* New in GCC_FE_VERSION_2.  Like finish_record_or_union but the caller also
+   supplies the alignment.  If the alignment is 0, this acts identically to
+   finish_record_or_union.  */
+
+GCC_METHOD3 (int /* bool */, finish_record_with_alignment,
+            gcc_type,                     /* Argument RECORD_OR_UNION_TYPE. */
+            unsigned long,                /* Argument SIZE_IN_BYTES.  */
+            unsigned long)                /* Argument ALIGNMENT.  */
index feece1e38a21be7485fd1ad9b0054230edc119bc..700d7483a4a09ccc2a5ab24a1e4a2883788c6e56 100644 (file)
@@ -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,
index 2f950729b9bae7978ab0c94c032a3f8fa3e182b0..15b911cb216ee0c8dc73ce9e0a2f69e8ef34f392 100644 (file)
@@ -483,7 +483,11 @@ struct gcc_cp_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.
+
+   Otherwise, the function returns NULL.  */
 
 typedef struct gcc_cp_context *gcc_cp_fe_context_function
     (enum gcc_base_api_version,