gdbstub_arch 0.3.3

Implementations of `gdbstub::arch::Arch` for various architectures.
Documentation
//! Implementation for the [AArch64](https://developer.arm.com/documentation/102374)
//! ARM architecture.
//!
//! See PR [#109](https://github.com/daniel5151/gdbstub/pull/109) for more info.
//!
//! *Note*: doesn't support the AArch32 execution mode.
//! *Note*: the target XML currently advertises all system registers to the GDB
//! client.

use gdbstub::arch::Arch;

pub mod reg;

/// Implements `Arch` for ARM AArch64.
pub struct AArch64 {}

impl Arch for AArch64 {
    type Usize = u64;
    type Registers = reg::AArch64CoreRegs;
    type RegId = reg::id::AArch64RegId;
    type BreakpointKind = usize;

    fn target_description_xml() -> Option<&'static str> {
        static DESCRIPTION_XML: &str = concat!(
            r#"<target version="1.0">"#,
            "<architecture>aarch64</architecture>",
            include_str!("core.xml"), // feature "org.gnu.gdb.aarch64.core"
            include_str!("fpu.xml"),  // feature "org.gnu.gdb.aarch64.fpu"
            include_str!("sysregs.xml"),
            "</target>",
        );

        Some(DESCRIPTION_XML)
    }
}