Sha256: daad9ff92b224fae0ab3553e7366675830556b146933fec6946c697d635bf48a

Contents?: true

Size: 1.16 KB

Versions: 25

Compression:

Stored size: 1.16 KB

Contents

use core::fmt;
use core::str::FromStr;
#[cfg(feature = "enable-serde")]
use serde_derive::{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

25 entries across 25 versions & 1 rubygems

Version Path
wasmtime-30.0.2 ./ext/cargo-vendor/cranelift-codegen-0.117.2/src/ir/known_symbol.rs
wasmtime-29.0.0 ./ext/cargo-vendor/cranelift-codegen-0.116.0/src/ir/known_symbol.rs
wasmtime-28.0.0 ./ext/cargo-vendor/cranelift-codegen-0.115.0/src/ir/known_symbol.rs
wasmtime-27.0.0 ./ext/cargo-vendor/cranelift-codegen-0.114.0/src/ir/known_symbol.rs
wasmtime-26.0.0 ./ext/cargo-vendor/cranelift-codegen-0.113.0/src/ir/known_symbol.rs
wasmtime-25.0.2 ./ext/cargo-vendor/cranelift-codegen-0.112.2/src/ir/known_symbol.rs
wasmtime-25.0.1 ./ext/cargo-vendor/cranelift-codegen-0.112.1/src/ir/known_symbol.rs
wasmtime-25.0.0 ./ext/cargo-vendor/cranelift-codegen-0.112.0/src/ir/known_symbol.rs
wasmtime-24.0.0 ./ext/cargo-vendor/cranelift-codegen-0.111.0/src/ir/known_symbol.rs
wasmtime-23.0.2 ./ext/cargo-vendor/cranelift-codegen-0.110.2/src/ir/known_symbol.rs
wasmtime-22.0.0 ./ext/cargo-vendor/cranelift-codegen-0.109.0/src/ir/known_symbol.rs
wasmtime-21.0.1 ./ext/cargo-vendor/cranelift-codegen-0.108.1/src/ir/known_symbol.rs
wasmtime-20.0.2 ./ext/cargo-vendor/cranelift-codegen-0.107.2/src/ir/known_symbol.rs
wasmtime-20.0.0 ./ext/cargo-vendor/cranelift-codegen-0.107.2/src/ir/known_symbol.rs
wasmtime-18.0.3 ./ext/cargo-vendor/cranelift-codegen-0.105.3/src/ir/known_symbol.rs
wasmtime-17.0.1 ./ext/cargo-vendor/cranelift-codegen-0.104.1/src/ir/known_symbol.rs
wasmtime-17.0.0 ./ext/cargo-vendor/cranelift-codegen-0.104.0/src/ir/known_symbol.rs
wasmtime-16.0.0 ./ext/cargo-vendor/cranelift-codegen-0.103.0/src/ir/known_symbol.rs
wasmtime-15.0.1 ./ext/cargo-vendor/cranelift-codegen-0.102.1/src/ir/known_symbol.rs
wasmtime-15.0.0 ./ext/cargo-vendor/cranelift-codegen-0.102.1/src/ir/known_symbol.rs