| { | |
| /* Symbols to be exported are selected based on mangled names rather than */ | |
| /* the demangled names provided by the `extern "C++"` matcher because it is */ | |
| /* easy to express "export everything defined in the sycl namespace" using */ | |
| /* the former. Matching demangled names is more complicated in the presence */ | |
| /* of examples like: */ | |
| /* "vtable for sycl::foo" (should be exported) */ | |
| /* "vtable for std::__internal<sycl::foo>" (should not be exported) */ | |
| global: | |
| /* Export everything from sycl namespace */ | |
| _ZNK4sycl*; /* function */ | |
| _ZN4sycl*; /* function */ | |
| _ZTIN4sycl*; /* typeinfo */ | |
| _ZTSN4sycl*; /* typeinfo name */ | |
| _ZTVN4sycl*; /* vtable */ | |
| /* Export offload image hooks */ | |
| __sycl_register_lib; | |
| __sycl_unregister_lib; | |
| local: | |
| *; | |
| }; |