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