1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#[allow(unused_imports)]
use super::super::value::{read_half,Elf_Half};
build_enum!{
    @INT
        read_half;
        Elf_Half => usize;
    @ENUM Arch {
        None,
        M32,
        Sparc,
        Intel386,
        Motorola68k,
        Motorola88k,
        INTEL486,
        INTEL860,
        MIPS,
        PaRISC,
        SPARC32PLUS,
        PowerPC,
        PowerPC64,
        CellBESPU,
        ARM,
        SuperH,
        SPARCv9,
        H8300,
        IntelHP64,
        AMD64,
        IBMS390,
        CRIS,
        RenesasM32R,
        MEIMN10300AM33,
        OpenRISC,
        BlackFin,
        AlteraNOIS2,
        TIC6xDPS,
        Aarch64,
        TilePRO,
        MicroBlaze,
        TileGX,
        LinuxBPF,
        FRV,
        AtmelAVR32,
        Alpha,
        CygnusM32R,
        OLDS390,
        CygnusMN10300
    }
    @TOFUNC to_endian => Arch {
        0 => Arch::None,
        1 => Arch::M32,
        2 => Arch::Sparc,
        3 => Arch::Intel386,
        4 => Arch::Motorola68k,
        5 => Arch::Motorola88k,
        6 => Arch::INTEL486,
        7 => Arch::INTEL860,
        8 => Arch::MIPS,
        15 => Arch::PaRISC,
        18 => Arch::SPARC32PLUS,
        20 => Arch::PowerPC,
        21 => Arch::PowerPC64,
        23 => Arch::CellBESPU,
        40 => Arch::ARM,
        42 => Arch::SuperH,
        43 => Arch::SPARCv9,
        46 => Arch::H8300,
        50 => Arch::IntelHP64,
        62 => Arch::AMD64,
        22 => Arch::IBMS390,
        76 => Arch::CRIS,
        88 => Arch::RenesasM32R,
        89 => Arch::MEIMN10300AM33,
        92 => Arch::OpenRISC,
        106 => Arch::BlackFin,
        113 => Arch::AlteraNOIS2,
        140 => Arch::TIC6xDPS,
        183 => Arch::Aarch64,
        188 => Arch::TilePRO,
        189 => Arch::MicroBlaze,
        191 => Arch::TileGX,
        247 => Arch::LinuxBPF,
        0x5441 => Arch::FRV,
        0x18AD => Arch::AtmelAVR32,
        0x9026 => Arch::Alpha,
        0x9041 => Arch::CygnusM32R,
        0xA390 => Arch::OLDS390,
        0xBEEF => Arch::CygnusMN10300
        ;
        "\n\nValue {:?} is non-standard for E_MACHINE\n\n"
    }
    @PUB read_arch
}