1use crate::{attr, linker, private, ty};
2use proc_macro2::{Span, TokenStream};
3use quote::quote;
4use syn::parse::{Parse, ParseStream, Result};
5use syn::{bracketed, Attribute, Error, Ident, Token, Type, Visibility};
6
7struct Declaration {
8 attrs: Vec<Attribute>,
9 vis: Visibility,
10 ident: Ident,
11 ty: Type,
12}
13
14impl Parse for Declaration {
15 fn parse(input: ParseStream) -> Result<Self> {
16 let attrs = input.call(Attribute::parse_outer)?;
17 let vis: Visibility = input.parse()?;
18 input.parse::<Token![static]>()?;
19 let mut_token: Option<Token![mut]> = input.parse()?;
20 if let Some(mut_token) = mut_token {
21 return Err(Error::new_spanned(
22 mut_token,
23 "static mut is not supported by distributed_slice",
24 ));
25 }
26 let ident: Ident = input.parse()?;
27 input.parse::<Token![:]>()?;
28 let ty: Type = input.parse()?;
29
30 let eq_token: Option<Token![=]> = input.parse()?;
31 if eq_token.is_some() {
32 let content;
33 match ::syn::__private::parse_brackets(&input) {
::syn::__private::Ok(brackets) => {
content = brackets.content;
brackets.token
}
::syn::__private::Err(error) => { return ::syn::__private::Err(error); }
};bracketed!(content in input);
34 content.parse::<Token![..]>()?;
35 }
36
37 input.parse::<Token![;]>()?;
38
39 Ok(Declaration {
40 attrs,
41 vis,
42 ident,
43 ty,
44 })
45 }
46}
47
48pub fn expand(input: TokenStream) -> TokenStream {
49 let msg = "distributed_slice is not implemented for this platform";
50 let error = Error::new_spanned(&input, msg);
51 let unsupported_platform = error.to_compile_error();
52
53 let decl: Declaration = match syn::parse2(input) {
54 Ok(decl) => decl,
55 Err(err) => return err.to_compile_error(),
56 };
57
58 let mut attrs = decl.attrs;
59 let vis = decl.vis;
60 let ident = decl.ident;
61 let mut ty = decl.ty;
62 let name = ident.to_string();
63
64 let linkme_path = match attr::linkme_path(&mut attrs) {
65 Ok(path) => path,
66 Err(err) => return err.to_compile_error(),
67 };
68
69 ty::populate_static_lifetimes(&mut ty);
70
71 let used = if falsecfg!(feature = "used_linker") {
72 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "used");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "linker");
_s
});
_s
});
_s
}quote!(#[used(linker)])
73 } else {
74 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "used");
_s
});
_s
}quote!(#[used])
75 };
76
77 let linux_section = linker::linux::section(&ident);
78 let linux_section_start = linker::linux::section_start(&ident);
79 let linux_section_stop = linker::linux::section_stop(&ident);
80 let linux_dupcheck = linux_section.replacen("linkme", "linkm2", 1);
81 let linux_dupcheck_start = linux_section_start.replacen("linkme", "linkm2", 1);
82 let linux_dupcheck_stop = linux_section_stop.replacen("linkme", "linkm2", 1);
83
84 let macho_section = linker::macho::section(&ident);
85 let macho_section_start = linker::macho::section_start(&ident);
86 let macho_section_stop = linker::macho::section_stop(&ident);
87 let macho_dupcheck = macho_section.replacen("linkme", "linkm2", 1);
88 let macho_dupcheck_start = macho_section_start.replacen("linkme", "linkm2", 1);
89 let macho_dupcheck_stop = macho_section_stop.replacen("linkme", "linkm2", 1);
90
91 let windows_section = linker::windows::section(&ident);
92 let windows_section_start = linker::windows::section_start(&ident);
93 let windows_section_stop = linker::windows::section_stop(&ident);
94 let windows_dupcheck = windows_section.replacen("linkme", "linkm2", 1);
95 let windows_dupcheck_start = windows_section_start.replacen("linkme", "linkm2", 1);
96 let windows_dupcheck_stop = windows_section_stop.replacen("linkme", "linkm2", 1);
97
98 let illumos_section = linker::illumos::section(&ident);
99 let illumos_section_start = linker::illumos::section_start(&ident);
100 let illumos_section_stop = linker::illumos::section_stop(&ident);
101 let illumos_dupcheck = illumos_section.replacen("linkme", "linkm2", 1);
102 let illumos_dupcheck_start = illumos_section_start.replacen("linkme", "linkm2", 1);
103 let illumos_dupcheck_stop = illumos_section_stop.replacen("linkme", "linkm2", 1);
104
105 let bsd_section = linker::bsd::section(&ident);
106 let bsd_section_start = linker::bsd::section_start(&ident);
107 let bsd_section_stop = linker::bsd::section_stop(&ident);
108 let bsd_dupcheck = bsd_section.replacen("linkme", "linkm2", 1);
109 let bsd_dupcheck_start = bsd_section_start.replacen("linkme", "linkm2", 1);
110 let bsd_dupcheck_stop = bsd_section_stop.replacen("linkme", "linkm2", 1);
111
112 let call_site = Span::call_site();
113 let link_section_macro_str = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("_linkme_macro_{0}", ident))
})format!("_linkme_macro_{}", ident);
114 let link_section_macro = Ident::new(&link_section_macro_str, call_site);
115
116 let unsafe_extern = if falsecfg!(no_unsafe_extern_blocks) {
117 None
118 } else {
119 Some(::syn::token::UnsafeToken)
120 };
121
122 let (unsafe_attr, link_section_attr) = if falsecfg!(no_unsafe_attributes) {
123 (
125 Ident::new("cfg_attr", call_site),
126 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "all");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_section");
_s
}quote!(all(), link_section),
127 )
128 } else {
129 (Ident::new("unsafe", call_site), {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "link_section");
_s
}quote!(link_section))
131 };
132
133 {
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::ThereIsNoIteratorInRepetition;
#[allow(unused_mut)]
let (mut attrs, i) = attrs.quote_into_iter();
let has_iter = has_iter | i;
let _: ::quote::__private::HasIterator = has_iter;
while true {
let attrs =
match attrs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&attrs, &mut _s);
}
}
::quote::ToTokens::to_tokens(&vis, &mut _s);
::quote::__private::push_ident(&mut _s, "static");
::quote::ToTokens::to_tokens(&ident, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::ToTokens::to_tokens(&linkme_path, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DistributedSlice");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"none\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"linux\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"macos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"ios\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"tvos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"android\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"fuchsia\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"illumos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"freebsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"openbsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"psp\"");
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
_s
});
::quote::ToTokens::to_tokens(&unsafe_extern, &mut _s);
::quote::__private::push_ident(&mut _s, "extern");
::quote::__private::parse(&mut _s, "\"Rust\"");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"none\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"linux\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"android\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"fuchsia\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"psp\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&linux_section_start, &mut _s);
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"macos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"ios\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"tvos\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&macho_section_start, &mut _s);
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"illumos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&illumos_section_start,
&mut _s);
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"freebsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"openbsd\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&bsd_section_start, &mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "static");
::quote::__private::push_ident(&mut _s, "LINKME_START");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::ToTokens::to_tokens(&linkme_path, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&private, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Slice");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Element");
::quote::__private::push_semi(&mut _s);
::quote::__private::parse(&mut _s, "0");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"none\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"linux\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"android\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"fuchsia\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"psp\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&linux_section_stop, &mut _s);
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"macos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"ios\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"tvos\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&macho_section_stop, &mut _s);
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"illumos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&illumos_section_stop,
&mut _s);
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"freebsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"openbsd\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&bsd_section_stop, &mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "static");
::quote::__private::push_ident(&mut _s, "LINKME_STOP");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::ToTokens::to_tokens(&linkme_path, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&private, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Slice");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Element");
::quote::__private::push_semi(&mut _s);
::quote::__private::parse(&mut _s, "0");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"none\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"linux\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"android\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"fuchsia\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"psp\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&linux_dupcheck_start,
&mut _s);
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"macos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"ios\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"tvos\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&macho_dupcheck_start,
&mut _s);
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"illumos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&illumos_dupcheck_start,
&mut _s);
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"freebsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"openbsd\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&bsd_dupcheck_start, &mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "static");
::quote::__private::push_ident(&mut _s, "DUPCHECK_START");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"none\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"linux\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"android\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"fuchsia\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"psp\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&linux_dupcheck_stop, &mut _s);
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"macos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"ios\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"tvos\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&macho_dupcheck_stop, &mut _s);
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"illumos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&illumos_dupcheck_stop,
&mut _s);
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"freebsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"openbsd\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "link_name");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&bsd_dupcheck_stop, &mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "static");
::quote::__private::push_ident(&mut _s, "DUPCHECK_STOP");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"uefi\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"windows\"");
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&windows_section_start,
&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "static");
::quote::__private::push_ident(&mut _s, "LINKME_START");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::ToTokens::to_tokens(&linkme_path, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&private, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Slice");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Element");
::quote::__private::push_semi(&mut _s);
::quote::__private::parse(&mut _s, "0");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"uefi\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"windows\"");
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&windows_section_stop,
&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "static");
::quote::__private::push_ident(&mut _s, "LINKME_STOP");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::ToTokens::to_tokens(&linkme_path, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&private, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Slice");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Element");
::quote::__private::push_semi(&mut _s);
::quote::__private::parse(&mut _s, "0");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"uefi\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"windows\"");
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&windows_dupcheck_start,
&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "static");
::quote::__private::push_ident(&mut _s, "DUPCHECK_START");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"uefi\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"windows\"");
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&windows_dupcheck_stop,
&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "static");
::quote::__private::push_ident(&mut _s, "DUPCHECK_STOP");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&used, &mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"none\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"linux\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"android\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"fuchsia\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"illumos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"freebsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"openbsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"psp\"");
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"none\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"linux\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"android\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"fuchsia\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"psp\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&linux_section, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"illumos\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&illumos_section, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"freebsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"openbsd\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&bsd_section, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "static");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "LINKME_PLEASE");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::ToTokens::to_tokens(&linkme_path, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&private, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Slice");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Element");
::quote::__private::push_semi(&mut _s);
::quote::__private::parse(&mut _s, "0");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&used, &mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"none\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"linux\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"android\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"fuchsia\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"psp\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&linux_dupcheck, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"macos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"ios\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"tvos\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&macho_dupcheck, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"uefi\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"windows\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&windows_dupcheck, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"illumos\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&illumos_dupcheck, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"freebsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"openbsd\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&bsd_dupcheck, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "static");
::quote::__private::push_ident(&mut _s, "DUPCHECK");
::quote::__private::push_colon(&mut _s);
::quote::ToTokens::to_tokens(&linkme_path, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&private, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "isize");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "1");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "not");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"none\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"linux\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"macos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"ios\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"tvos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"windows\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"uefi\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"android\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"fuchsia\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"illumos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"freebsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"openbsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"psp\"");
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
_s
});
_s
});
::quote::ToTokens::to_tokens(&unsupported_platform, &mut _s);
::quote::__private::push_ident(&mut _s, "unsafe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&linkme_path, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DistributedSlice");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "private_new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&linkme_path, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&private, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ptr");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "addr_of");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "LINKME_START");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&linkme_path, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&private, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ptr");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "addr_of");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "LINKME_STOP");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&linkme_path, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&private, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ptr");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "addr_of");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "DUPCHECK_START");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&linkme_path, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&private, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ptr");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "addr_of");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "DUPCHECK_STOP");
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "hidden");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "macro_export");
_s
});
::quote::__private::push_ident(&mut _s, "macro_rules");
::quote::__private::push_bang(&mut _s);
::quote::ToTokens::to_tokens(&link_section_macro, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "linkme_macro");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "macro");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "path");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "linkme_sort_key");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "key");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "tt");
_s
});
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "item");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "item");
_s
});
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "macro");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_linux_section");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&linux_section, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "key");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_macho_section");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&macho_section, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "key");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_windows_section");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&windows_section, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "key");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_illumos_section");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&illumos_section, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "key");
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_bsd_section");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "concat");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&bsd_section, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "key");
_s
});
_s
});
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "item");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "linkme_macro");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "macro");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "path");
_s
});
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "item");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "item");
_s
});
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "macro");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_linux_section");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&linux_section, &mut _s);
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_macho_section");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&macho_section, &mut _s);
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_windows_section");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&windows_section, &mut _s);
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_illumos_section");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&illumos_section, &mut _s);
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_bsd_section");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&bsd_section, &mut _s);
_s
});
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "item");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_linux_section");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "linux_section");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "expr");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_macho_section");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "macho_section");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "expr");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_windows_section");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "windows_section");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "expr");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_illumos_section");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "illumos_section");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "expr");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"linkme_bsd_section");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "bsd_section");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "expr");
_s
});
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "item");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "item");
_s
});
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&used, &mut _s);
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"none\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"linux\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"android\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"fuchsia\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"psp\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "linux_section");
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"macos\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"ios\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"tvos\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "macho_section");
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"uefi\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"windows\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "windows_section");
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"illumos\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "illumos_section");
_s
});
_s
});
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "cfg_attr");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "any");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"freebsd\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "target_os");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "\"openbsd\"");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&unsafe_attr, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&link_section_attr, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "bsd_section");
_s
});
_s
});
_s
});
::quote::__private::parse(&mut _s, "$");
::quote::__private::push_ident(&mut _s, "item");
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "hidden");
_s
});
_s
});
::quote::ToTokens::to_tokens(&vis, &mut _s);
::quote::__private::push_ident(&mut _s, "use");
::quote::ToTokens::to_tokens(&link_section_macro, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::ToTokens::to_tokens(&ident, &mut _s);
::quote::__private::push_semi(&mut _s);
_s
}quote! {
134 #(#attrs)*
135 #vis static #ident: #linkme_path::DistributedSlice<#ty> = {
136 #[cfg(any(
137 target_os = "none",
138 target_os = "linux",
139 target_os = "macos",
140 target_os = "ios",
141 target_os = "tvos",
142 target_os = "android",
143 target_os = "fuchsia",
144 target_os = "illumos",
145 target_os = "freebsd",
146 target_os = "openbsd",
147 target_os = "psp",
148 ))]
149 #unsafe_extern extern "Rust" {
150 #[cfg_attr(any(target_os = "none", target_os = "linux", target_os = "android", target_os = "fuchsia", target_os = "psp"), link_name = #linux_section_start)]
151 #[cfg_attr(any(target_os = "macos", target_os = "ios", target_os = "tvos"), link_name = #macho_section_start)]
152 #[cfg_attr(target_os = "illumos", link_name = #illumos_section_start)]
153 #[cfg_attr(any(target_os = "freebsd", target_os = "openbsd"), link_name = #bsd_section_start)]
154 static LINKME_START: [<#ty as #linkme_path::#private::Slice>::Element; 0];
155
156 #[cfg_attr(any(target_os = "none", target_os = "linux", target_os = "android", target_os = "fuchsia", target_os = "psp"), link_name = #linux_section_stop)]
157 #[cfg_attr(any(target_os = "macos", target_os = "ios", target_os = "tvos"), link_name = #macho_section_stop)]
158 #[cfg_attr(target_os = "illumos", link_name = #illumos_section_stop)]
159 #[cfg_attr(any(target_os = "freebsd", target_os = "openbsd"), link_name = #bsd_section_stop)]
160 static LINKME_STOP: [<#ty as #linkme_path::#private::Slice>::Element; 0];
161
162 #[cfg_attr(any(target_os = "none", target_os = "linux", target_os = "android", target_os = "fuchsia", target_os = "psp"), link_name = #linux_dupcheck_start)]
163 #[cfg_attr(any(target_os = "macos", target_os = "ios", target_os = "tvos"), link_name = #macho_dupcheck_start)]
164 #[cfg_attr(target_os = "illumos", link_name = #illumos_dupcheck_start)]
165 #[cfg_attr(any(target_os = "freebsd", target_os = "openbsd"), link_name = #bsd_dupcheck_start)]
166 static DUPCHECK_START: ();
167
168 #[cfg_attr(any(target_os = "none", target_os = "linux", target_os = "android", target_os = "fuchsia", target_os = "psp"), link_name = #linux_dupcheck_stop)]
169 #[cfg_attr(any(target_os = "macos", target_os = "ios", target_os = "tvos"), link_name = #macho_dupcheck_stop)]
170 #[cfg_attr(target_os = "illumos", link_name = #illumos_dupcheck_stop)]
171 #[cfg_attr(any(target_os = "freebsd", target_os = "openbsd"), link_name = #bsd_dupcheck_stop)]
172 static DUPCHECK_STOP: ();
173 }
174
175 #[cfg(any(target_os = "uefi", target_os = "windows"))]
176 #[#unsafe_attr(#link_section_attr = #windows_section_start)]
177 static LINKME_START: [<#ty as #linkme_path::#private::Slice>::Element; 0] = [];
178
179 #[cfg(any(target_os = "uefi", target_os = "windows"))]
180 #[#unsafe_attr(#link_section_attr = #windows_section_stop)]
181 static LINKME_STOP: [<#ty as #linkme_path::#private::Slice>::Element; 0] = [];
182
183 #[cfg(any(target_os = "uefi", target_os = "windows"))]
184 #[#unsafe_attr(#link_section_attr = #windows_dupcheck_start)]
185 static DUPCHECK_START: () = ();
186
187 #[cfg(any(target_os = "uefi", target_os = "windows"))]
188 #[#unsafe_attr(#link_section_attr = #windows_dupcheck_stop)]
189 static DUPCHECK_STOP: () = ();
190
191 #used
192 #[cfg(any(
193 target_os = "none",
194 target_os = "linux",
195 target_os = "android",
196 target_os = "fuchsia",
197 target_os = "illumos",
198 target_os = "freebsd",
199 target_os = "openbsd",
200 target_os = "psp",
201 ))]
202 #[cfg_attr(any(target_os = "none", target_os = "linux", target_os = "android", target_os = "fuchsia", target_os = "psp"), #unsafe_attr(#link_section_attr = #linux_section))]
203 #[cfg_attr(target_os = "illumos", #unsafe_attr(#link_section_attr = #illumos_section))]
204 #[cfg_attr(any(target_os = "freebsd", target_os = "openbsd"), #unsafe_attr(#link_section_attr = #bsd_section))]
205 static mut LINKME_PLEASE: [<#ty as #linkme_path::#private::Slice>::Element; 0] = [];
206
207 #used
208 #[cfg_attr(any(target_os = "none", target_os = "linux", target_os = "android", target_os = "fuchsia", target_os = "psp"), #unsafe_attr(#link_section_attr = #linux_dupcheck))]
209 #[cfg_attr(any(target_os = "macos", target_os = "ios", target_os = "tvos"), #unsafe_attr(#link_section_attr = #macho_dupcheck))]
210 #[cfg_attr(any(target_os = "uefi", target_os = "windows"), #unsafe_attr(#link_section_attr = #windows_dupcheck))]
211 #[cfg_attr(target_os = "illumos", #unsafe_attr(#link_section_attr = #illumos_dupcheck))]
212 #[cfg_attr(any(target_os = "freebsd", target_os = "openbsd"), #unsafe_attr(#link_section_attr = #bsd_dupcheck))]
213 static DUPCHECK: #linkme_path::#private::isize = 1;
214
215 #[cfg(not(any(
216 target_os = "none",
217 target_os = "linux",
218 target_os = "macos",
219 target_os = "ios",
220 target_os = "tvos",
221 target_os = "windows",
222 target_os = "uefi",
223 target_os = "android",
224 target_os = "fuchsia",
225 target_os = "illumos",
226 target_os = "freebsd",
227 target_os = "openbsd",
228 target_os = "psp",
229 )))]
230 #unsupported_platform
231
232 unsafe {
233 #linkme_path::DistributedSlice::private_new(
234 #name,
235 #linkme_path::#private::ptr::addr_of!(LINKME_START),
236 #linkme_path::#private::ptr::addr_of!(LINKME_STOP),
237 #linkme_path::#private::ptr::addr_of!(DUPCHECK_START),
238 #linkme_path::#private::ptr::addr_of!(DUPCHECK_STOP),
239 )
240 }
241 };
242
243 #[doc(hidden)]
244 #[macro_export]
245 macro_rules! #link_section_macro {
246 (
247 #![linkme_macro = $macro:path]
248 #![linkme_sort_key = $key:tt]
249 $item:item
250 ) => {
251 $macro ! {
252 #![linkme_linux_section = concat!(#linux_section, $key)]
253 #![linkme_macho_section = concat!(#macho_section, $key)]
254 #![linkme_windows_section = concat!(#windows_section, $key)]
255 #![linkme_illumos_section = concat!(#illumos_section, $key)]
256 #![linkme_bsd_section = concat!(#bsd_section, $key)]
257 $item
258 }
259 };
260 (
261 #![linkme_macro = $macro:path]
262 $item:item
263 ) => {
264 $macro ! {
265 #![linkme_linux_section = #linux_section]
266 #![linkme_macho_section = #macho_section]
267 #![linkme_windows_section = #windows_section]
268 #![linkme_illumos_section = #illumos_section]
269 #![linkme_bsd_section = #bsd_section]
270 $item
271 }
272 };
273 (
274 #![linkme_linux_section = $linux_section:expr]
275 #![linkme_macho_section = $macho_section:expr]
276 #![linkme_windows_section = $windows_section:expr]
277 #![linkme_illumos_section = $illumos_section:expr]
278 #![linkme_bsd_section = $bsd_section:expr]
279 $item:item
280 ) => {
281 #used
282 #[cfg_attr(any(target_os = "none", target_os = "linux", target_os = "android", target_os = "fuchsia", target_os = "psp"), #unsafe_attr(#link_section_attr = $linux_section))]
283 #[cfg_attr(any(target_os = "macos", target_os = "ios", target_os = "tvos"), #unsafe_attr(#link_section_attr = $macho_section))]
284 #[cfg_attr(any(target_os = "uefi", target_os = "windows"), #unsafe_attr(#link_section_attr = $windows_section))]
285 #[cfg_attr(target_os = "illumos", #unsafe_attr(#link_section_attr = $illumos_section))]
286 #[cfg_attr(any(target_os = "freebsd", target_os = "openbsd"), #unsafe_attr(#link_section_attr = $bsd_section))]
287 $item
288 };
289 }
290
291 #[doc(hidden)]
292 #vis use #link_section_macro as #ident;
293 }
294}