xref: /aosp_15_r20/external/llvm/docs/yaml2obj.rst (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Workeryaml2obj
2*9880d681SAndroid Build Coastguard Worker========
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workeryaml2obj takes a YAML description of an object file and converts it to a binary
5*9880d681SAndroid Build Coastguard Workerfile.
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker    $ yaml2obj input-file
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker.. program:: yaml2obj
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard WorkerOutputs the binary to stdout.
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard WorkerCOFF Syntax
14*9880d681SAndroid Build Coastguard Worker-----------
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard WorkerHere's a sample COFF file.
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker.. code-block:: yaml
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker  header:
21*9880d681SAndroid Build Coastguard Worker    Machine: IMAGE_FILE_MACHINE_I386 # (0x14C)
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker  sections:
24*9880d681SAndroid Build Coastguard Worker    - Name: .text
25*9880d681SAndroid Build Coastguard Worker      Characteristics: [ IMAGE_SCN_CNT_CODE
26*9880d681SAndroid Build Coastguard Worker                       , IMAGE_SCN_ALIGN_16BYTES
27*9880d681SAndroid Build Coastguard Worker                       , IMAGE_SCN_MEM_EXECUTE
28*9880d681SAndroid Build Coastguard Worker                       , IMAGE_SCN_MEM_READ
29*9880d681SAndroid Build Coastguard Worker                       ] # 0x60500020
30*9880d681SAndroid Build Coastguard Worker      SectionData:
31*9880d681SAndroid Build Coastguard Worker        "\x83\xEC\x0C\xC7\x44\x24\x08\x00\x00\x00\x00\xC7\x04\x24\x00\x00\x00\x00\xE8\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x8B\x44\x24\x08\x83\xC4\x0C\xC3" # |....D$.......$...............D$.....|
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker  symbols:
34*9880d681SAndroid Build Coastguard Worker    - Name: .text
35*9880d681SAndroid Build Coastguard Worker      Value: 0
36*9880d681SAndroid Build Coastguard Worker      SectionNumber: 1
37*9880d681SAndroid Build Coastguard Worker      SimpleType: IMAGE_SYM_TYPE_NULL # (0)
38*9880d681SAndroid Build Coastguard Worker      ComplexType: IMAGE_SYM_DTYPE_NULL # (0)
39*9880d681SAndroid Build Coastguard Worker      StorageClass: IMAGE_SYM_CLASS_STATIC # (3)
40*9880d681SAndroid Build Coastguard Worker      NumberOfAuxSymbols: 1
41*9880d681SAndroid Build Coastguard Worker      AuxiliaryData:
42*9880d681SAndroid Build Coastguard Worker        "\x24\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00" # |$.................|
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Worker    - Name: _main
45*9880d681SAndroid Build Coastguard Worker      Value: 0
46*9880d681SAndroid Build Coastguard Worker      SectionNumber: 1
47*9880d681SAndroid Build Coastguard Worker      SimpleType: IMAGE_SYM_TYPE_NULL # (0)
48*9880d681SAndroid Build Coastguard Worker      ComplexType: IMAGE_SYM_DTYPE_NULL # (0)
49*9880d681SAndroid Build Coastguard Worker      StorageClass: IMAGE_SYM_CLASS_EXTERNAL # (2)
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard WorkerHere's a simplified Kwalify_ schema with an extension to allow alternate types.
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Worker.. _Kwalify: http://www.kuwata-lab.com/kwalify/ruby/users-guide.html
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Worker.. code-block:: yaml
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Worker  type: map
58*9880d681SAndroid Build Coastguard Worker    mapping:
59*9880d681SAndroid Build Coastguard Worker      header:
60*9880d681SAndroid Build Coastguard Worker        type: map
61*9880d681SAndroid Build Coastguard Worker        mapping:
62*9880d681SAndroid Build Coastguard Worker          Machine: [ {type: str, enum:
63*9880d681SAndroid Build Coastguard Worker                                 [ IMAGE_FILE_MACHINE_UNKNOWN
64*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_AM33
65*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_AMD64
66*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_ARM
67*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_ARMNT
68*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_ARM64
69*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_EBC
70*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_I386
71*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_IA64
72*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_M32R
73*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_MIPS16
74*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_MIPSFPU
75*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_MIPSFPU16
76*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_POWERPC
77*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_POWERPCFP
78*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_R4000
79*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_SH3
80*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_SH3DSP
81*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_SH4
82*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_SH5
83*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_THUMB
84*9880d681SAndroid Build Coastguard Worker                                 , IMAGE_FILE_MACHINE_WCEMIPSV2
85*9880d681SAndroid Build Coastguard Worker                                 ]}
86*9880d681SAndroid Build Coastguard Worker                   , {type: int}
87*9880d681SAndroid Build Coastguard Worker                   ]
88*9880d681SAndroid Build Coastguard Worker          Characteristics:
89*9880d681SAndroid Build Coastguard Worker            - type: seq
90*9880d681SAndroid Build Coastguard Worker              sequence:
91*9880d681SAndroid Build Coastguard Worker                - type: str
92*9880d681SAndroid Build Coastguard Worker                  enum: [ IMAGE_FILE_RELOCS_STRIPPED
93*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_EXECUTABLE_IMAGE
94*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_LINE_NUMS_STRIPPED
95*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_LOCAL_SYMS_STRIPPED
96*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_AGGRESSIVE_WS_TRIM
97*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_LARGE_ADDRESS_AWARE
98*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_BYTES_REVERSED_LO
99*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_32BIT_MACHINE
100*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_DEBUG_STRIPPED
101*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP
102*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_NET_RUN_FROM_SWAP
103*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_SYSTEM
104*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_DLL
105*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_UP_SYSTEM_ONLY
106*9880d681SAndroid Build Coastguard Worker                        , IMAGE_FILE_BYTES_REVERSED_HI
107*9880d681SAndroid Build Coastguard Worker                        ]
108*9880d681SAndroid Build Coastguard Worker            - type: int
109*9880d681SAndroid Build Coastguard Worker      sections:
110*9880d681SAndroid Build Coastguard Worker        type: seq
111*9880d681SAndroid Build Coastguard Worker        sequence:
112*9880d681SAndroid Build Coastguard Worker          - type: map
113*9880d681SAndroid Build Coastguard Worker            mapping:
114*9880d681SAndroid Build Coastguard Worker              Name: {type: str}
115*9880d681SAndroid Build Coastguard Worker              Characteristics:
116*9880d681SAndroid Build Coastguard Worker                - type: seq
117*9880d681SAndroid Build Coastguard Worker                  sequence:
118*9880d681SAndroid Build Coastguard Worker                    - type: str
119*9880d681SAndroid Build Coastguard Worker                      enum: [ IMAGE_SCN_TYPE_NO_PAD
120*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_CNT_CODE
121*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_CNT_INITIALIZED_DATA
122*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_CNT_UNINITIALIZED_DATA
123*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_LNK_OTHER
124*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_LNK_INFO
125*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_LNK_REMOVE
126*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_LNK_COMDAT
127*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_GPREL
128*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_MEM_PURGEABLE
129*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_MEM_16BIT
130*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_MEM_LOCKED
131*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_MEM_PRELOAD
132*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_1BYTES
133*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_2BYTES
134*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_4BYTES
135*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_8BYTES
136*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_16BYTES
137*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_32BYTES
138*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_64BYTES
139*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_128BYTES
140*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_256BYTES
141*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_512BYTES
142*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_1024BYTES
143*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_2048BYTES
144*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_4096BYTES
145*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_ALIGN_8192BYTES
146*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_LNK_NRELOC_OVFL
147*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_MEM_DISCARDABLE
148*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_MEM_NOT_CACHED
149*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_MEM_NOT_PAGED
150*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_MEM_SHARED
151*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_MEM_EXECUTE
152*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_MEM_READ
153*9880d681SAndroid Build Coastguard Worker                            , IMAGE_SCN_MEM_WRITE
154*9880d681SAndroid Build Coastguard Worker                            ]
155*9880d681SAndroid Build Coastguard Worker                - type: int
156*9880d681SAndroid Build Coastguard Worker              SectionData: {type: str}
157*9880d681SAndroid Build Coastguard Worker      symbols:
158*9880d681SAndroid Build Coastguard Worker        type: seq
159*9880d681SAndroid Build Coastguard Worker        sequence:
160*9880d681SAndroid Build Coastguard Worker          - type: map
161*9880d681SAndroid Build Coastguard Worker            mapping:
162*9880d681SAndroid Build Coastguard Worker              Name: {type: str}
163*9880d681SAndroid Build Coastguard Worker              Value: {type: int}
164*9880d681SAndroid Build Coastguard Worker              SectionNumber: {type: int}
165*9880d681SAndroid Build Coastguard Worker              SimpleType: [ {type: str, enum: [ IMAGE_SYM_TYPE_NULL
166*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_VOID
167*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_CHAR
168*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_SHORT
169*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_INT
170*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_LONG
171*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_FLOAT
172*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_DOUBLE
173*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_STRUCT
174*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_UNION
175*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_ENUM
176*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_MOE
177*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_BYTE
178*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_WORD
179*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_UINT
180*9880d681SAndroid Build Coastguard Worker                                              , IMAGE_SYM_TYPE_DWORD
181*9880d681SAndroid Build Coastguard Worker                                              ]}
182*9880d681SAndroid Build Coastguard Worker                          , {type: int}
183*9880d681SAndroid Build Coastguard Worker                          ]
184*9880d681SAndroid Build Coastguard Worker              ComplexType: [ {type: str, enum: [ IMAGE_SYM_DTYPE_NULL
185*9880d681SAndroid Build Coastguard Worker                                               , IMAGE_SYM_DTYPE_POINTER
186*9880d681SAndroid Build Coastguard Worker                                               , IMAGE_SYM_DTYPE_FUNCTION
187*9880d681SAndroid Build Coastguard Worker                                               , IMAGE_SYM_DTYPE_ARRAY
188*9880d681SAndroid Build Coastguard Worker                                               ]}
189*9880d681SAndroid Build Coastguard Worker                           , {type: int}
190*9880d681SAndroid Build Coastguard Worker                           ]
191*9880d681SAndroid Build Coastguard Worker              StorageClass: [ {type: str, enum:
192*9880d681SAndroid Build Coastguard Worker                                          [ IMAGE_SYM_CLASS_END_OF_FUNCTION
193*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_NULL
194*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_AUTOMATIC
195*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_EXTERNAL
196*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_STATIC
197*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_REGISTER
198*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_EXTERNAL_DEF
199*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_LABEL
200*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_UNDEFINED_LABEL
201*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_MEMBER_OF_STRUCT
202*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_ARGUMENT
203*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_STRUCT_TAG
204*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_MEMBER_OF_UNION
205*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_UNION_TAG
206*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_TYPE_DEFINITION
207*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_UNDEFINED_STATIC
208*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_ENUM_TAG
209*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_MEMBER_OF_ENUM
210*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_REGISTER_PARAM
211*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_BIT_FIELD
212*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_BLOCK
213*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_FUNCTION
214*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_END_OF_STRUCT
215*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_FILE
216*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_SECTION
217*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_WEAK_EXTERNAL
218*9880d681SAndroid Build Coastguard Worker                                          , IMAGE_SYM_CLASS_CLR_TOKEN
219*9880d681SAndroid Build Coastguard Worker                                          ]}
220*9880d681SAndroid Build Coastguard Worker                            , {type: int}
221*9880d681SAndroid Build Coastguard Worker                            ]
222