xref: /OK3568_Linux_fs/yocto/poky/meta/lib/oe/elf.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#
2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun
5*4882a593Smuzhiyundef machine_dict(d):
6*4882a593Smuzhiyun#           TARGET_OS  TARGET_ARCH   MACHINE, OSABI, ABIVERSION, Little Endian, 32bit?
7*4882a593Smuzhiyun    machdata = {
8*4882a593Smuzhiyun            "darwin9" : {
9*4882a593Smuzhiyun                        "arm" :       (40,     0,    0,          True,          32),
10*4882a593Smuzhiyun                      },
11*4882a593Smuzhiyun            "eabi" : {
12*4882a593Smuzhiyun                        "arm" :       (40,     0,    0,          True,          32),
13*4882a593Smuzhiyun                      },
14*4882a593Smuzhiyun            "elf" : {
15*4882a593Smuzhiyun                        "aarch64" :   (183,    0,    0,          True,          64),
16*4882a593Smuzhiyun                        "aarch64_be" :(183,    0,    0,          False,         64),
17*4882a593Smuzhiyun                        "i586" :      (3,      0,    0,          True,          32),
18*4882a593Smuzhiyun                        "i686" :      (3,      0,    0,          True,          32),
19*4882a593Smuzhiyun                        "x86_64":     (62,     0,    0,          True,          64),
20*4882a593Smuzhiyun                        "epiphany":   (4643,   0,    0,          True,          32),
21*4882a593Smuzhiyun                        "lm32":       (138,    0,    0,          False,         32),
22*4882a593Smuzhiyun                        "mips":       ( 8,     0,    0,          False,         32),
23*4882a593Smuzhiyun                        "mipsel":     ( 8,     0,    0,          True,          32),
24*4882a593Smuzhiyun                        "microblaze":  (189,   0,    0,          False,         32),
25*4882a593Smuzhiyun                        "microblazeel":(189,   0,    0,          True,          32),
26*4882a593Smuzhiyun                        "powerpc":    (20,     0,    0,          False,         32),
27*4882a593Smuzhiyun                        "riscv32":    (243,    0,    0,          True,          32),
28*4882a593Smuzhiyun                        "riscv64":    (243,    0,    0,          True,          64),
29*4882a593Smuzhiyun                      },
30*4882a593Smuzhiyun            "linux" : {
31*4882a593Smuzhiyun                        "aarch64" :   (183,    0,    0,          True,          64),
32*4882a593Smuzhiyun                        "aarch64_be" :(183,    0,    0,          False,         64),
33*4882a593Smuzhiyun                        "arm" :       (40,    97,    0,          True,          32),
34*4882a593Smuzhiyun                        "armeb":      (40,    97,    0,          False,         32),
35*4882a593Smuzhiyun                        "powerpc":    (20,     0,    0,          False,         32),
36*4882a593Smuzhiyun                        "powerpc64":  (21,     0,    0,          False,         64),
37*4882a593Smuzhiyun                        "powerpc64le":  (21,     0,    0,          True,         64),
38*4882a593Smuzhiyun                        "i386":       ( 3,     0,    0,          True,          32),
39*4882a593Smuzhiyun                        "i486":       ( 3,     0,    0,          True,          32),
40*4882a593Smuzhiyun                        "i586":       ( 3,     0,    0,          True,          32),
41*4882a593Smuzhiyun                        "i686":       ( 3,     0,    0,          True,          32),
42*4882a593Smuzhiyun                        "x86_64":     (62,     0,    0,          True,          64),
43*4882a593Smuzhiyun                        "ia64":       (50,     0,    0,          True,          64),
44*4882a593Smuzhiyun                        "alpha":      (36902,  0,    0,          True,          64),
45*4882a593Smuzhiyun                        "hppa":       (15,     3,    0,          False,         32),
46*4882a593Smuzhiyun                        "m68k":       ( 4,     0,    0,          False,         32),
47*4882a593Smuzhiyun                        "mips":       ( 8,     0,    0,          False,         32),
48*4882a593Smuzhiyun                        "mipsel":     ( 8,     0,    0,          True,          32),
49*4882a593Smuzhiyun                        "mips64":     ( 8,     0,    0,          False,         64),
50*4882a593Smuzhiyun                        "mips64el":   ( 8,     0,    0,          True,          64),
51*4882a593Smuzhiyun                        "mipsisa32r6":   ( 8,  0,    0,          False,         32),
52*4882a593Smuzhiyun                        "mipsisa32r6el": ( 8,  0,    0,          True,          32),
53*4882a593Smuzhiyun                        "mipsisa64r6":   ( 8,  0,    0,          False,         64),
54*4882a593Smuzhiyun                        "mipsisa64r6el": ( 8,  0,    0,          True,          64),
55*4882a593Smuzhiyun                        "nios2":      (113,    0,    0,          True,          32),
56*4882a593Smuzhiyun                        "riscv32":    (243,    0,    0,          True,          32),
57*4882a593Smuzhiyun                        "riscv64":    (243,    0,    0,          True,          64),
58*4882a593Smuzhiyun                        "s390":       (22,     0,    0,          False,         32),
59*4882a593Smuzhiyun                        "sh4":        (42,     0,    0,          True,          32),
60*4882a593Smuzhiyun                        "sparc":      ( 2,     0,    0,          False,         32),
61*4882a593Smuzhiyun                        "microblaze":  (189,   0,    0,          False,         32),
62*4882a593Smuzhiyun                        "microblazeel":(189,   0,    0,          True,          32),
63*4882a593Smuzhiyun                      },
64*4882a593Smuzhiyun            "linux-android" : {
65*4882a593Smuzhiyun                        "aarch64" :   (183,    0,    0,          True,          64),
66*4882a593Smuzhiyun                        "i686":       ( 3,     0,    0,          True,          32),
67*4882a593Smuzhiyun                        "x86_64":     (62,     0,    0,          True,          64),
68*4882a593Smuzhiyun                      },
69*4882a593Smuzhiyun            "linux-androideabi" : {
70*4882a593Smuzhiyun                        "arm" :       (40,    97,    0,          True,          32),
71*4882a593Smuzhiyun                      },
72*4882a593Smuzhiyun            "linux-musl" : {
73*4882a593Smuzhiyun                        "aarch64" :   (183,    0,    0,            True,          64),
74*4882a593Smuzhiyun                        "aarch64_be" :(183,    0,    0,            False,         64),
75*4882a593Smuzhiyun                        "arm" :       (  40,    97,    0,          True,          32),
76*4882a593Smuzhiyun                        "armeb":      (  40,    97,    0,          False,         32),
77*4882a593Smuzhiyun                        "powerpc":    (  20,     0,    0,          False,         32),
78*4882a593Smuzhiyun                        "powerpc64":  (  21,     0,    0,          False,         64),
79*4882a593Smuzhiyun                        "powerpc64le":  (21,     0,    0,          True,         64),
80*4882a593Smuzhiyun                        "i386":       (   3,     0,    0,          True,          32),
81*4882a593Smuzhiyun                        "i486":       (   3,     0,    0,          True,          32),
82*4882a593Smuzhiyun                        "i586":       (   3,     0,    0,          True,          32),
83*4882a593Smuzhiyun                        "i686":       (   3,     0,    0,          True,          32),
84*4882a593Smuzhiyun                        "x86_64":     (  62,     0,    0,          True,          64),
85*4882a593Smuzhiyun                        "mips":       (   8,     0,    0,          False,         32),
86*4882a593Smuzhiyun                        "mipsel":     (   8,     0,    0,          True,          32),
87*4882a593Smuzhiyun                        "mips64":     (   8,     0,    0,          False,         64),
88*4882a593Smuzhiyun                        "mips64el":   (   8,     0,    0,          True,          64),
89*4882a593Smuzhiyun                        "microblaze":  (189,     0,    0,          False,         32),
90*4882a593Smuzhiyun                        "microblazeel":(189,     0,    0,          True,          32),
91*4882a593Smuzhiyun                        "riscv32":    (243,      0,    0,          True,          32),
92*4882a593Smuzhiyun                        "riscv64":    (243,      0,    0,          True,          64),
93*4882a593Smuzhiyun                        "sh4":        (  42,     0,    0,          True,          32),
94*4882a593Smuzhiyun                      },
95*4882a593Smuzhiyun            "uclinux-uclibc" : {
96*4882a593Smuzhiyun                        "bfin":       ( 106,     0,    0,          True,         32),
97*4882a593Smuzhiyun                      },
98*4882a593Smuzhiyun            "linux-gnueabi" : {
99*4882a593Smuzhiyun                        "arm" :       (40,     0,    0,          True,          32),
100*4882a593Smuzhiyun                        "armeb" :     (40,     0,    0,          False,         32),
101*4882a593Smuzhiyun                      },
102*4882a593Smuzhiyun            "linux-musleabi" : {
103*4882a593Smuzhiyun                        "arm" :       (40,     0,    0,          True,          32),
104*4882a593Smuzhiyun                        "armeb" :     (40,     0,    0,          False,         32),
105*4882a593Smuzhiyun                      },
106*4882a593Smuzhiyun            "linux-gnuspe" : {
107*4882a593Smuzhiyun                        "powerpc":    (20,     0,    0,          False,         32),
108*4882a593Smuzhiyun                      },
109*4882a593Smuzhiyun            "linux-muslspe" : {
110*4882a593Smuzhiyun                        "powerpc":    (20,     0,    0,          False,         32),
111*4882a593Smuzhiyun                      },
112*4882a593Smuzhiyun            "linux-gnu" :       {
113*4882a593Smuzhiyun                        "powerpc":    (20,     0,    0,          False,         32),
114*4882a593Smuzhiyun                        "sh4":        (42,     0,    0,          True,          32),
115*4882a593Smuzhiyun                      },
116*4882a593Smuzhiyun            "linux-gnu_ilp32" :     {
117*4882a593Smuzhiyun                        "aarch64" :   (183,    0,    0,          True,          32),
118*4882a593Smuzhiyun                      },
119*4882a593Smuzhiyun            "linux-gnux32" :       {
120*4882a593Smuzhiyun                        "x86_64":     (62,     0,    0,          True,          32),
121*4882a593Smuzhiyun                      },
122*4882a593Smuzhiyun            "linux-muslx32" :       {
123*4882a593Smuzhiyun                        "x86_64":     (62,     0,    0,          True,          32),
124*4882a593Smuzhiyun                      },
125*4882a593Smuzhiyun            "linux-gnun32" :       {
126*4882a593Smuzhiyun                        "mips64":       ( 8,     0,    0,          False,         32),
127*4882a593Smuzhiyun                        "mips64el":     ( 8,     0,    0,          True,          32),
128*4882a593Smuzhiyun                        "mipsisa64r6":  ( 8,     0,    0,          False,         32),
129*4882a593Smuzhiyun                        "mipsisa64r6el":( 8,     0,    0,          True,          32),
130*4882a593Smuzhiyun                      },
131*4882a593Smuzhiyun        }
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun    # Add in any extra user supplied data which may come from a BSP layer, removing the
134*4882a593Smuzhiyun    # need to always change this class directly
135*4882a593Smuzhiyun    extra_machdata = (d and d.getVar("PACKAGEQA_EXTRA_MACHDEFFUNCS" or None) or "").split()
136*4882a593Smuzhiyun    for m in extra_machdata:
137*4882a593Smuzhiyun        call = m + "(machdata, d)"
138*4882a593Smuzhiyun        locs = { "machdata" : machdata, "d" : d}
139*4882a593Smuzhiyun        machdata = bb.utils.better_eval(call, locs)
140*4882a593Smuzhiyun
141*4882a593Smuzhiyun    return machdata
142