https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113338
--- Comment #2 from Brad Richardson <everythingfunctional at protonmail dot com> --- The addition of CFI_cdesc_t in 2018 means it is possible to pass non-interoperable types to C so long as it doesn't need to know anything about its type (i.e. doesn't try to modify or copy it). And yes, in this example it's possible to add bind(C) to the type, but in the code I'm trying to write I can't.