aboutsummaryrefslogtreecommitdiff
path: root/vendor/gimli/src/common.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gimli/src/common.rs')
-rw-r--r--vendor/gimli/src/common.rs391
1 files changed, 0 insertions, 391 deletions
diff --git a/vendor/gimli/src/common.rs b/vendor/gimli/src/common.rs
deleted file mode 100644
index fc6693d..0000000
--- a/vendor/gimli/src/common.rs
+++ /dev/null
@@ -1,391 +0,0 @@
-/// Whether the format of a compilation unit is 32- or 64-bit.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub enum Format {
- /// 64-bit DWARF
- Dwarf64 = 8,
- /// 32-bit DWARF
- Dwarf32 = 4,
-}
-
-impl Format {
- /// Return the serialized size of an initial length field for the format.
- #[inline]
- pub fn initial_length_size(self) -> u8 {
- match self {
- Format::Dwarf32 => 4,
- Format::Dwarf64 => 12,
- }
- }
-
- /// Return the natural word size for the format
- #[inline]
- pub fn word_size(self) -> u8 {
- match self {
- Format::Dwarf32 => 4,
- Format::Dwarf64 => 8,
- }
- }
-}
-
-/// Which vendor extensions to support.
-#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-#[non_exhaustive]
-pub enum Vendor {
- /// A default set of extensions, including some common GNU extensions.
- Default,
- /// AAarch64 extensions.
- AArch64,
-}
-
-/// Encoding parameters that are commonly used for multiple DWARF sections.
-///
-/// This is intended to be small enough to pass by value.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-// `address_size` and `format` are used more often than `version`, so keep
-// them first.
-#[repr(C)]
-pub struct Encoding {
- /// The size of an address.
- pub address_size: u8,
-
- // The size of a segment selector.
- // TODO: pub segment_size: u8,
- /// Whether the DWARF format is 32- or 64-bit.
- pub format: Format,
-
- /// The DWARF version of the header.
- pub version: u16,
-}
-
-/// Encoding parameters for a line number program.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub struct LineEncoding {
- /// The size in bytes of the smallest target machine instruction.
- pub minimum_instruction_length: u8,
-
- /// The maximum number of individual operations that may be encoded in an
- /// instruction.
- pub maximum_operations_per_instruction: u8,
-
- /// The initial value of the `is_stmt` register.
- pub default_is_stmt: bool,
-
- /// The minimum value which a special opcode can add to the line register.
- pub line_base: i8,
-
- /// The range of values which a special opcode can add to the line register.
- pub line_range: u8,
-}
-
-impl Default for LineEncoding {
- fn default() -> Self {
- // Values from LLVM.
- LineEncoding {
- minimum_instruction_length: 1,
- maximum_operations_per_instruction: 1,
- default_is_stmt: true,
- line_base: -5,
- line_range: 14,
- }
- }
-}
-
-/// A DWARF register number.
-///
-/// The meaning of this value is ABI dependent. This is generally encoded as
-/// a ULEB128, but supported architectures need 16 bits at most.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
-pub struct Register(pub u16);
-
-/// An offset into the `.debug_abbrev` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub struct DebugAbbrevOffset<T = usize>(pub T);
-
-/// An offset to a set of entries in the `.debug_addr` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DebugAddrBase<T = usize>(pub T);
-
-/// An index into a set of addresses in the `.debug_addr` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DebugAddrIndex<T = usize>(pub T);
-
-/// An offset into the `.debug_aranges` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DebugArangesOffset<T = usize>(pub T);
-
-/// An offset into the `.debug_info` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Ord, PartialOrd, Hash)]
-pub struct DebugInfoOffset<T = usize>(pub T);
-
-/// An offset into the `.debug_line` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DebugLineOffset<T = usize>(pub T);
-
-/// An offset into the `.debug_line_str` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DebugLineStrOffset<T = usize>(pub T);
-
-/// An offset into either the `.debug_loc` section or the `.debug_loclists` section,
-/// depending on the version of the unit the offset was contained in.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub struct LocationListsOffset<T = usize>(pub T);
-
-/// An offset to a set of location list offsets in the `.debug_loclists` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DebugLocListsBase<T = usize>(pub T);
-
-/// An index into a set of location list offsets in the `.debug_loclists` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DebugLocListsIndex<T = usize>(pub T);
-
-/// An offset into the `.debug_macinfo` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub struct DebugMacinfoOffset<T = usize>(pub T);
-
-/// An offset into the `.debug_macro` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub struct DebugMacroOffset<T = usize>(pub T);
-
-/// An offset into either the `.debug_ranges` section or the `.debug_rnglists` section,
-/// depending on the version of the unit the offset was contained in.
-///
-/// If this is from a DWARF 4 DWO file, then it must additionally be offset by the
-/// value of `DW_AT_GNU_ranges_base`. You can use `Dwarf::ranges_offset_from_raw` to do this.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub struct RawRangeListsOffset<T = usize>(pub T);
-
-/// An offset into either the `.debug_ranges` section or the `.debug_rnglists` section,
-/// depending on the version of the unit the offset was contained in.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub struct RangeListsOffset<T = usize>(pub T);
-
-/// An offset to a set of range list offsets in the `.debug_rnglists` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DebugRngListsBase<T = usize>(pub T);
-
-/// An index into a set of range list offsets in the `.debug_rnglists` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DebugRngListsIndex<T = usize>(pub T);
-
-/// An offset into the `.debug_str` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DebugStrOffset<T = usize>(pub T);
-
-/// An offset to a set of entries in the `.debug_str_offsets` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DebugStrOffsetsBase<T = usize>(pub T);
-
-/// An index into a set of entries in the `.debug_str_offsets` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DebugStrOffsetsIndex<T = usize>(pub T);
-
-/// An offset into the `.debug_types` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Ord, PartialOrd, Hash)]
-pub struct DebugTypesOffset<T = usize>(pub T);
-
-/// A type signature as used in the `.debug_types` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub struct DebugTypeSignature(pub u64);
-
-/// An offset into the `.debug_frame` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub struct DebugFrameOffset<T = usize>(pub T);
-
-impl<T> From<T> for DebugFrameOffset<T> {
- #[inline]
- fn from(o: T) -> Self {
- DebugFrameOffset(o)
- }
-}
-
-/// An offset into the `.eh_frame` section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub struct EhFrameOffset<T = usize>(pub T);
-
-impl<T> From<T> for EhFrameOffset<T> {
- #[inline]
- fn from(o: T) -> Self {
- EhFrameOffset(o)
- }
-}
-
-/// An offset into the `.debug_info` or `.debug_types` sections.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Ord, PartialOrd, Hash)]
-pub enum UnitSectionOffset<T = usize> {
- /// An offset into the `.debug_info` section.
- DebugInfoOffset(DebugInfoOffset<T>),
- /// An offset into the `.debug_types` section.
- DebugTypesOffset(DebugTypesOffset<T>),
-}
-
-impl<T> From<DebugInfoOffset<T>> for UnitSectionOffset<T> {
- fn from(offset: DebugInfoOffset<T>) -> Self {
- UnitSectionOffset::DebugInfoOffset(offset)
- }
-}
-
-impl<T> From<DebugTypesOffset<T>> for UnitSectionOffset<T> {
- fn from(offset: DebugTypesOffset<T>) -> Self {
- UnitSectionOffset::DebugTypesOffset(offset)
- }
-}
-
-impl<T> UnitSectionOffset<T>
-where
- T: Clone,
-{
- /// Returns the `DebugInfoOffset` inside, or `None` otherwise.
- pub fn as_debug_info_offset(&self) -> Option<DebugInfoOffset<T>> {
- match self {
- UnitSectionOffset::DebugInfoOffset(offset) => Some(offset.clone()),
- UnitSectionOffset::DebugTypesOffset(_) => None,
- }
- }
- /// Returns the `DebugTypesOffset` inside, or `None` otherwise.
- pub fn as_debug_types_offset(&self) -> Option<DebugTypesOffset<T>> {
- match self {
- UnitSectionOffset::DebugInfoOffset(_) => None,
- UnitSectionOffset::DebugTypesOffset(offset) => Some(offset.clone()),
- }
- }
-}
-
-/// An identifier for a DWARF section.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Ord, PartialOrd, Hash)]
-pub enum SectionId {
- /// The `.debug_abbrev` section.
- DebugAbbrev,
- /// The `.debug_addr` section.
- DebugAddr,
- /// The `.debug_aranges` section.
- DebugAranges,
- /// The `.debug_cu_index` section.
- DebugCuIndex,
- /// The `.debug_frame` section.
- DebugFrame,
- /// The `.eh_frame` section.
- EhFrame,
- /// The `.eh_frame_hdr` section.
- EhFrameHdr,
- /// The `.debug_info` section.
- DebugInfo,
- /// The `.debug_line` section.
- DebugLine,
- /// The `.debug_line_str` section.
- DebugLineStr,
- /// The `.debug_loc` section.
- DebugLoc,
- /// The `.debug_loclists` section.
- DebugLocLists,
- /// The `.debug_macinfo` section.
- DebugMacinfo,
- /// The `.debug_macro` section.
- DebugMacro,
- /// The `.debug_pubnames` section.
- DebugPubNames,
- /// The `.debug_pubtypes` section.
- DebugPubTypes,
- /// The `.debug_ranges` section.
- DebugRanges,
- /// The `.debug_rnglists` section.
- DebugRngLists,
- /// The `.debug_str` section.
- DebugStr,
- /// The `.debug_str_offsets` section.
- DebugStrOffsets,
- /// The `.debug_tu_index` section.
- DebugTuIndex,
- /// The `.debug_types` section.
- DebugTypes,
-}
-
-impl SectionId {
- /// Returns the ELF section name for this kind.
- pub fn name(self) -> &'static str {
- match self {
- SectionId::DebugAbbrev => ".debug_abbrev",
- SectionId::DebugAddr => ".debug_addr",
- SectionId::DebugAranges => ".debug_aranges",
- SectionId::DebugCuIndex => ".debug_cu_index",
- SectionId::DebugFrame => ".debug_frame",
- SectionId::EhFrame => ".eh_frame",
- SectionId::EhFrameHdr => ".eh_frame_hdr",
- SectionId::DebugInfo => ".debug_info",
- SectionId::DebugLine => ".debug_line",
- SectionId::DebugLineStr => ".debug_line_str",
- SectionId::DebugLoc => ".debug_loc",
- SectionId::DebugLocLists => ".debug_loclists",
- SectionId::DebugMacinfo => ".debug_macinfo",
- SectionId::DebugMacro => ".debug_macro",
- SectionId::DebugPubNames => ".debug_pubnames",
- SectionId::DebugPubTypes => ".debug_pubtypes",
- SectionId::DebugRanges => ".debug_ranges",
- SectionId::DebugRngLists => ".debug_rnglists",
- SectionId::DebugStr => ".debug_str",
- SectionId::DebugStrOffsets => ".debug_str_offsets",
- SectionId::DebugTuIndex => ".debug_tu_index",
- SectionId::DebugTypes => ".debug_types",
- }
- }
-
- /// Returns the ELF section name for this kind, when found in a .dwo or .dwp file.
- pub fn dwo_name(self) -> Option<&'static str> {
- Some(match self {
- SectionId::DebugAbbrev => ".debug_abbrev.dwo",
- SectionId::DebugCuIndex => ".debug_cu_index",
- SectionId::DebugInfo => ".debug_info.dwo",
- SectionId::DebugLine => ".debug_line.dwo",
- // The debug_loc section can be present in the dwo when using the
- // GNU split-dwarf extension to DWARF4.
- SectionId::DebugLoc => ".debug_loc.dwo",
- SectionId::DebugLocLists => ".debug_loclists.dwo",
- SectionId::DebugMacro => ".debug_macro.dwo",
- SectionId::DebugRngLists => ".debug_rnglists.dwo",
- SectionId::DebugStr => ".debug_str.dwo",
- SectionId::DebugStrOffsets => ".debug_str_offsets.dwo",
- SectionId::DebugTuIndex => ".debug_tu_index",
- SectionId::DebugTypes => ".debug_types.dwo",
- _ => return None,
- })
- }
-
- /// Returns the XCOFF section name for this kind.
- pub fn xcoff_name(self) -> Option<&'static str> {
- Some(match self {
- SectionId::DebugAbbrev => ".dwabrev",
- SectionId::DebugAranges => ".dwarnge",
- SectionId::DebugFrame => ".dwframe",
- SectionId::DebugInfo => ".dwinfo",
- SectionId::DebugLine => ".dwline",
- SectionId::DebugLoc => ".dwloc",
- SectionId::DebugMacinfo => ".dwmac",
- SectionId::DebugPubNames => ".dwpbnms",
- SectionId::DebugPubTypes => ".dwpbtyp",
- SectionId::DebugRanges => ".dwrnges",
- SectionId::DebugStr => ".dwstr",
- _ => return None,
- })
- }
-}
-
-/// An optionally-provided implementation-defined compilation unit ID to enable
-/// split DWARF and linking a split compilation unit back together.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub struct DwoId(pub u64);
-
-/// The "type" of file with DWARF debugging information. This determines, among other things,
-/// which files DWARF sections should be loaded from.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub enum DwarfFileType {
- /// A normal executable or object file.
- Main,
- /// A .dwo split DWARF file.
- Dwo,
- // TODO: Supplementary files, .dwps?
-}
-
-impl Default for DwarfFileType {
- fn default() -> Self {
- DwarfFileType::Main
- }
-}