enum Sections {
    Header,
    Code,
    Data,
    Debug,
    Config,
    Metadata,
}

// 64 byte header
#[repr(packed)]
struct AbleOsExecutableHeader {
    magic_number: [u8; 3],
    executable_version: u32,

    code_length:     u64,
    data_length:     u64,
    debug_length:    u64,
    config_length:   u64,
    metadata_length: u64,
}

impl AbleOsExecutableHeader {
    fn new() -> Self {
        Self {
            magic_number: [0x15, 0x91, 0xD2],
            executable_version: 0,
            code_length: 0,
            config_length: 0,
            data_length: 0,
            debug_length: 0,
            metadata_length: 0,
        }
    }
}