diff options
author | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-07-26 11:04:46 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2025-03-19 15:32:01 +0100 |
commit | c53ff58924fa162cef5a444dcc35db7da8037249 (patch) | |
tree | d44a6b728380bf822394bb1998fcf494f677dd01 /gcc/rust/checks/errors | |
parent | 4d6b34b669c4d274ce80baeedc7b29b4e719efdc (diff) | |
download | gcc-c53ff58924fa162cef5a444dcc35db7da8037249.zip gcc-c53ff58924fa162cef5a444dcc35db7da8037249.tar.gz gcc-c53ff58924fa162cef5a444dcc35db7da8037249.tar.bz2 |
gccrs: ffi-polonius: Remove usage of extern types.
This will allow us to revert our dependency on extern types, which would
help our godbolt build as well as our various builders.
gcc/rust/ChangeLog:
* checks/errors/borrowck/ffi-polonius/src/gccrs_ffi.rs: Remove extern
type feature.
* checks/errors/borrowck/ffi-polonius/src/lib.rs: Define FFIVector
per the nomicon's recommendation
https://doc.rust-lang.org/nomicon/ffi.html#representing-opaque-structs
Diffstat (limited to 'gcc/rust/checks/errors')
-rw-r--r-- | gcc/rust/checks/errors/borrowck/ffi-polonius/src/gccrs_ffi.rs | 11 | ||||
-rw-r--r-- | gcc/rust/checks/errors/borrowck/ffi-polonius/src/lib.rs | 2 |
2 files changed, 8 insertions, 5 deletions
diff --git a/gcc/rust/checks/errors/borrowck/ffi-polonius/src/gccrs_ffi.rs b/gcc/rust/checks/errors/borrowck/ffi-polonius/src/gccrs_ffi.rs index 0cb85078..7377e3a 100644 --- a/gcc/rust/checks/errors/borrowck/ffi-polonius/src/gccrs_ffi.rs +++ b/gcc/rust/checks/errors/borrowck/ffi-polonius/src/gccrs_ffi.rs @@ -30,11 +30,16 @@ // ``` include!("gccrs_ffi_generated.rs"); +use std::marker::{PhantomData, PhantomPinned}; + use crate::GccrsAtom; -// Using opqaue types -extern "C" { - pub type FFIVector; +// We define an opaque C type per the nomicon's recommendation: +// https://doc.rust-lang.org/nomicon/ffi.html#representing-opaque-structs +#[repr(C)] +pub struct FFIVector { + _empty: [u8; 0], + marker: PhantomData<(*mut u8, PhantomPinned)>, } impl<T1, T2> Into<(GccrsAtom, GccrsAtom)> for Pair<T1, T2> diff --git a/gcc/rust/checks/errors/borrowck/ffi-polonius/src/lib.rs b/gcc/rust/checks/errors/borrowck/ffi-polonius/src/lib.rs index 782a63f..c5c0ae9 100644 --- a/gcc/rust/checks/errors/borrowck/ffi-polonius/src/lib.rs +++ b/gcc/rust/checks/errors/borrowck/ffi-polonius/src/lib.rs @@ -16,8 +16,6 @@ // along with GCC; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. -#![feature(extern_types)] - mod gccrs_ffi; use gccrs_ffi::FFIVector; |