Sha256: 8d6216401bda8a66b15b920d6d8952892bc561e430e8f2cb66d5aa11f0606b77

Contents?: true

Size: 1.16 KB

Versions: 14

Compression:

Stored size: 1.16 KB

Contents

use core::fmt;
use core::str::FromStr;
#[cfg(feature = "enable-serde")]
use serde::{Deserialize, Serialize};

/// A well-known symbol.
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]
pub enum KnownSymbol {
    /// ELF well-known linker symbol _GLOBAL_OFFSET_TABLE_
    ElfGlobalOffsetTable,
    /// TLS index symbol for the current thread.
    /// Used in COFF/PE file formats.
    CoffTlsIndex,
}

impl fmt::Display for KnownSymbol {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        fmt::Debug::fmt(self, f)
    }
}

impl FromStr for KnownSymbol {
    type Err = ();

    fn from_str(s: &str) -> Result<Self, Self::Err> {
        match s {
            "ElfGlobalOffsetTable" => Ok(Self::ElfGlobalOffsetTable),
            "CoffTlsIndex" => Ok(Self::CoffTlsIndex),
            _ => Err(()),
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn parsing() {
        assert_eq!(
            "ElfGlobalOffsetTable".parse(),
            Ok(KnownSymbol::ElfGlobalOffsetTable)
        );
        assert_eq!("CoffTlsIndex".parse(), Ok(KnownSymbol::CoffTlsIndex));
    }
}

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
wasmtime-12.0.1 ./ext/cargo-vendor/cranelift-codegen-0.99.1/src/ir/known_symbol.rs
wasmtime-12.0.0 ./ext/cargo-vendor/cranelift-codegen-0.99.1/src/ir/known_symbol.rs
wasmtime-11.0.0 ./ext/cargo-vendor/cranelift-codegen-0.98.1/src/ir/known_symbol.rs
wasmtime-10.0.1 ./ext/cargo-vendor/cranelift-codegen-0.97.1/src/ir/known_symbol.rs
wasmtime-10.0.0 ./ext/cargo-vendor/cranelift-codegen-0.97.1/src/ir/known_symbol.rs
wasmtime-9.0.4 ./ext/cargo-vendor/cranelift-codegen-0.96.4/src/ir/known_symbol.rs
wasmtime-9.0.1 ./ext/cargo-vendor/cranelift-codegen-0.96.1/src/ir/known_symbol.rs
wasmtime-8.0.0 ./ext/cargo-vendor/cranelift-codegen-0.95.0/src/ir/known_symbol.rs
wasmtime-7.0.0 ./ext/cargo-vendor/cranelift-codegen-0.94.0/src/ir/known_symbol.rs
wasmtime-6.0.1 ./ext/cargo-vendor/cranelift-codegen-0.93.1/src/ir/known_symbol.rs
wasmtime-6.0.0 ./ext/cargo-vendor/cranelift-codegen-0.93.0/src/ir/known_symbol.rs
wasmtime-5.0.0 ./ext/cargo-vendor/cranelift-codegen-0.92.0/src/ir/known_symbol.rs
wasmtime-0.4.1 ./ext/cargo-vendor/cranelift-codegen-0.91.0/src/ir/known_symbol.rs
wasmtime-0.4.0 ./ext/cargo-vendor/cranelift-codegen-0.91.0/src/ir/known_symbol.rs