aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2023-07-26 16:48:37 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2024-01-16 18:56:01 +0100
commitc0763eac05f6e8adf05a1d94fc80ded1a9e14f2c (patch)
treefbb01ba1a4bb9037986247f37f1c9abf8268417c /gcc
parentb190aaeff7b4b6e3b96dfe0b5277ccc93ccb9973 (diff)
downloadgcc-c0763eac05f6e8adf05a1d94fc80ded1a9e14f2c.zip
gcc-c0763eac05f6e8adf05a1d94fc80ded1a9e14f2c.tar.gz
gcc-c0763eac05f6e8adf05a1d94fc80ded1a9e14f2c.tar.bz2
gccrs: proc_macro: Add is_available callback
Add a callback from gcc to determine wether the bridge is available or not. gcc/rust/ChangeLog: * expand/rust-proc-macro.cc (available): Add symbol registration. (load_macros_array): Likewise. libgrust/ChangeLog: * libproc_macro/proc_macro.cc (not_available): Add a function to express bridge unavailability. * libproc_macro/proc_macro.h (not_available): Likewise. * libproc_macro/registration.h: Add symbol type. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/expand/rust-proc-macro.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/rust/expand/rust-proc-macro.cc b/gcc/rust/expand/rust-proc-macro.cc
index 7843ead..b6cfe25 100644
--- a/gcc/rust/expand/rust-proc-macro.cc
+++ b/gcc/rust/expand/rust-proc-macro.cc
@@ -56,6 +56,12 @@ static_assert (
ProcMacro::from_str_function_t>::value,
"Registration callback signature not synced, check proc macro internals.");
+static bool
+available ()
+{
+ return true;
+}
+
template <typename Symbol, typename Callback>
bool
register_callback (void *handle, Symbol, std::string symbol_name,
@@ -95,6 +101,9 @@ load_macros_array (std::string path)
if (!REGISTER_CALLBACK (handle, __gccrs_proc_macro_from_str_fn,
tokenstream_from_string))
return nullptr;
+ if (!REGISTER_CALLBACK (handle, __gccrs_proc_macro_is_available_fn,
+ available))
+ return nullptr;
// FIXME: Add CrateStableId handling, right now all versions may be loaded,
// even incompatible ones.