summaryrefslogtreecommitdiff
path: root/vendor/object/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/object/src/lib.rs')
-rw-r--r--vendor/object/src/lib.rs99
1 files changed, 99 insertions, 0 deletions
diff --git a/vendor/object/src/lib.rs b/vendor/object/src/lib.rs
new file mode 100644
index 0000000..5956e06
--- /dev/null
+++ b/vendor/object/src/lib.rs
@@ -0,0 +1,99 @@
+//! # `object`
+//!
+//! The `object` crate provides a unified interface to working with object files
+//! across platforms. It supports reading relocatable object files and executable files,
+//! and writing relocatable object files and some executable files.
+//!
+//! ## Raw struct definitions
+//!
+//! Raw structs are defined for: [ELF](elf), [Mach-O](macho), [PE/COFF](pe),
+//! [XCOFF](xcoff), [archive].
+//! Types and traits for zerocopy support are defined in the [`pod`] and [`endian`] modules.
+//!
+//! ## Unified read API
+//!
+//! The [`read`] module provides a unified read API using the [`read::Object`] trait.
+//! There is an implementation of this trait for [`read::File`], which allows reading any
+//! file format, as well as implementations for each file format.
+//!
+//! ## Low level read API
+//!
+//! The [`read#modules`] submodules define helpers that operate on the raw structs.
+//! These can be used instead of the unified API, or in conjunction with it to access
+//! details that are not available via the unified API.
+//!
+//! ## Unified write API
+//!
+//! The [`mod@write`] module provides a unified write API for relocatable object files
+//! using [`write::Object`]. This does not support writing executable files.
+//!
+//! ## Low level write API
+//!
+//! The [`mod@write#modules`] submodules define helpers for writing the raw structs.
+//!
+//! ## Shared definitions
+//!
+//! The crate provides a number of definitions that are used by both the read and write
+//! APIs. These are defined at the top level module, but none of these are the main entry
+//! points of the crate.
+
+#![deny(missing_docs)]
+#![deny(missing_debug_implementations)]
+#![no_std]
+#![warn(rust_2018_idioms)]
+// Style.
+#![allow(clippy::collapsible_if)]
+#![allow(clippy::comparison_chain)]
+#![allow(clippy::manual_flatten)]
+#![allow(clippy::match_like_matches_macro)]
+#![allow(clippy::single_match)]
+#![allow(clippy::type_complexity)]
+// Occurs due to fallible iteration.
+#![allow(clippy::should_implement_trait)]
+// Unit errors are converted to other types by callers.
+#![allow(clippy::result_unit_err)]
+// Worse readability sometimes.
+#![allow(clippy::collapsible_else_if)]
+
+#[cfg(feature = "cargo-all")]
+compile_error!("'--all-features' is not supported; use '--features all' instead");
+
+#[cfg(any(feature = "read_core", feature = "write_core"))]
+#[allow(unused_imports)]
+#[macro_use]
+extern crate alloc;
+
+#[cfg(feature = "std")]
+#[allow(unused_imports)]
+#[macro_use]
+extern crate std;
+
+mod common;
+pub use common::*;
+
+#[macro_use]
+pub mod endian;
+pub use endian::*;
+
+#[macro_use]
+pub mod pod;
+pub use pod::*;
+
+#[cfg(feature = "read_core")]
+pub mod read;
+#[cfg(feature = "read_core")]
+pub use read::*;
+
+#[cfg(feature = "write_core")]
+pub mod write;
+
+#[cfg(feature = "archive")]
+pub mod archive;
+#[cfg(feature = "elf")]
+pub mod elf;
+#[cfg(feature = "macho")]
+pub mod macho;
+#[cfg(any(feature = "coff", feature = "pe"))]
+pub mod pe;
+#[cfg(feature = "xcoff")]
+pub mod xcoff;