unc_vm_compiler/
lib.rs

1//! The `unc_vm-compiler` crate provides the necessary abstractions
2//! to create a compiler.
3//!
4//! It provides an universal way of parsing a module via `wasmparser`,
5//! while giving the responsibility of compiling specific function
6//! WebAssembly bodies to the `Compiler` implementation.
7
8#![deny(missing_docs, trivial_numeric_casts, unused_extern_crates)]
9#![warn(unused_import_braces)]
10#![deny(unstable_features)]
11#![allow(clippy::new_without_default)]
12#![warn(
13    clippy::float_arithmetic,
14    clippy::mut_mut,
15    clippy::nonminimal_bool,
16    clippy::map_unwrap_or,
17    clippy::print_stdout,
18    clippy::unicode_not_nfc,
19    clippy::use_self
20)]
21
22mod lib {
23    pub mod std {
24        pub use std::{borrow, boxed, fmt, str, string, sync, vec};
25    }
26}
27
28mod address_map;
29mod compiler;
30mod error;
31mod function;
32mod jump_table;
33mod module;
34mod relocation;
35mod target;
36mod trap;
37#[macro_use]
38mod translator;
39mod section;
40mod sourceloc;
41
42pub use crate::address_map::{FunctionAddressMap, InstructionAddressMap};
43pub use crate::compiler::{Compiler, CompilerConfig, Symbol, SymbolRegistry};
44pub use crate::error::{
45    CompileError, MiddlewareError, ParseCpuFeatureError, WasmError, WasmResult,
46};
47pub use crate::function::{
48    Compilation, CompiledFunction, CompiledFunctionFrameInfo, CustomSections, Dwarf, FunctionBody,
49    FunctionBodyRef, Functions, TrampolinesSection,
50};
51pub use crate::jump_table::{JumpTable, JumpTableOffsets};
52pub use crate::module::CompileModuleInfo;
53pub use crate::relocation::{Relocation, RelocationKind, RelocationTarget, Relocations};
54pub use crate::section::{
55    CustomSection, CustomSectionProtection, CustomSectionRef, SectionBody, SectionIndex,
56};
57pub use crate::sourceloc::SourceLoc;
58pub use crate::target::{
59    Architecture, BinaryFormat, CallingConvention, CpuFeature, Endianness, OperatingSystem,
60    PointerWidth, Target, Triple,
61};
62pub use crate::translator::{
63    translate_module, wptype_to_type, FunctionBodyData, FunctionReader, ModuleEnvironment,
64    ModuleTranslationState,
65};
66pub use crate::trap::TrapInformation;
67pub use unc_vm_types::Features;
68
69/// wasmparser is exported as a module to slim compiler dependencies
70pub use wasmparser;
71
72/// Offset in bytes from the beginning of the function.
73pub type CodeOffset = u32;
74
75/// Addend to add to the symbol value.
76pub type Addend = i64;
77
78/// Version number of this crate.
79pub const VERSION: &str = env!("CARGO_PKG_VERSION");