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