pub mod linux {
use syn::Ident;
pub fn section(ident: &Ident) -> String {
format!("linkme_{}", ident)
}
pub fn section_start(ident: &Ident) -> String {
format!("__start_linkme_{}", ident)
}
pub fn section_stop(ident: &Ident) -> String {
format!("__stop_linkme_{}", ident)
}
}
pub mod freebsd {
use syn::Ident;
pub fn section(ident: &Ident) -> String {
format!("linkme_{}", ident)
}
pub fn section_start(ident: &Ident) -> String {
format!("__start_linkme_{}", ident)
}
pub fn section_stop(ident: &Ident) -> String {
format!("__stop_linkme_{}", ident)
}
}
pub mod macho {
use syn::Ident;
pub fn section(ident: &Ident) -> String {
format!(
"__DATA,__linkme{},regular,no_dead_strip",
crate::hash(ident),
)
}
pub fn section_start(ident: &Ident) -> String {
format!("\x01section$start$__DATA$__linkme{}", crate::hash(ident))
}
pub fn section_stop(ident: &Ident) -> String {
format!("\x01section$end$__DATA$__linkme{}", crate::hash(ident))
}
}
pub mod windows {
use syn::Ident;
pub fn section(ident: &Ident) -> String {
format!(".linkme_{}$b", ident)
}
pub fn section_start(ident: &Ident) -> String {
format!(".linkme_{}$a", ident)
}
pub fn section_stop(ident: &Ident) -> String {
format!(".linkme_{}$c", ident)
}
}
pub mod illumos {
use syn::Ident;
pub fn section(ident: &Ident) -> String {
format!("set_linkme_{}", ident)
}
pub fn section_start(ident: &Ident) -> String {
format!("__start_set_linkme_{}", ident)
}
pub fn section_stop(ident: &Ident) -> String {
format!("__stop_set_linkme_{}", ident)
}
}