cranelift_codegen/ir/
known_symbol.rs1use core::fmt;
2use core::str::FromStr;
3#[cfg(feature = "enable-serde")]
4use serde_derive::{Deserialize, Serialize};
5
6#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
8#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]
9pub enum KnownSymbol {
10 ElfGlobalOffsetTable,
12 CoffTlsIndex,
15}
16
17impl fmt::Display for KnownSymbol {
18 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19 fmt::Debug::fmt(self, f)
20 }
21}
22
23impl FromStr for KnownSymbol {
24 type Err = ();
25
26 fn from_str(s: &str) -> Result<Self, Self::Err> {
27 match s {
28 "ElfGlobalOffsetTable" => Ok(Self::ElfGlobalOffsetTable),
29 "CoffTlsIndex" => Ok(Self::CoffTlsIndex),
30 _ => Err(()),
31 }
32 }
33}
34
35#[cfg(test)]
36mod tests {
37 use super::*;
38
39 #[test]
40 fn parsing() {
41 assert_eq!(
42 "ElfGlobalOffsetTable".parse(),
43 Ok(KnownSymbol::ElfGlobalOffsetTable)
44 );
45 assert_eq!("CoffTlsIndex".parse(), Ok(KnownSymbol::CoffTlsIndex));
46 }
47}