forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			222 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
			
		
		
	
	
			222 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
| yaml2obj
 | |
| ========
 | |
| 
 | |
| yaml2obj takes a YAML description of an object file and converts it to a binary
 | |
| file.
 | |
| 
 | |
|     $ yaml2obj input-file
 | |
| 
 | |
| .. program:: yaml2obj
 | |
| 
 | |
| Outputs the binary to stdout.
 | |
| 
 | |
| COFF Syntax
 | |
| -----------
 | |
| 
 | |
| Here's a sample COFF file.
 | |
| 
 | |
| .. code-block:: yaml
 | |
| 
 | |
|   header:
 | |
|     Machine: IMAGE_FILE_MACHINE_I386 # (0x14C)
 | |
| 
 | |
|   sections:
 | |
|     - Name: .text
 | |
|       Characteristics: [ IMAGE_SCN_CNT_CODE
 | |
|                        , IMAGE_SCN_ALIGN_16BYTES
 | |
|                        , IMAGE_SCN_MEM_EXECUTE
 | |
|                        , IMAGE_SCN_MEM_READ
 | |
|                        ] # 0x60500020
 | |
|       SectionData:
 | |
|         "\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$.....|
 | |
| 
 | |
|   symbols:
 | |
|     - Name: .text
 | |
|       Value: 0
 | |
|       SectionNumber: 1
 | |
|       SimpleType: IMAGE_SYM_TYPE_NULL # (0)
 | |
|       ComplexType: IMAGE_SYM_DTYPE_NULL # (0)
 | |
|       StorageClass: IMAGE_SYM_CLASS_STATIC # (3)
 | |
|       NumberOfAuxSymbols: 1
 | |
|       AuxiliaryData:
 | |
|         "\x24\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00" # |$.................|
 | |
| 
 | |
|     - Name: _main
 | |
|       Value: 0
 | |
|       SectionNumber: 1
 | |
|       SimpleType: IMAGE_SYM_TYPE_NULL # (0)
 | |
|       ComplexType: IMAGE_SYM_DTYPE_NULL # (0)
 | |
|       StorageClass: IMAGE_SYM_CLASS_EXTERNAL # (2)
 | |
| 
 | |
| Here's a simplified Kwalify_ schema with an extension to allow alternate types.
 | |
| 
 | |
| .. _Kwalify: http://www.kuwata-lab.com/kwalify/ruby/users-guide.html
 | |
| 
 | |
| .. code-block:: yaml
 | |
| 
 | |
|   type: map
 | |
|     mapping:
 | |
|       header:
 | |
|         type: map
 | |
|         mapping:
 | |
|           Machine: [ {type: str, enum:
 | |
|                                  [ IMAGE_FILE_MACHINE_UNKNOWN
 | |
|                                  , IMAGE_FILE_MACHINE_AM33
 | |
|                                  , IMAGE_FILE_MACHINE_AMD64
 | |
|                                  , IMAGE_FILE_MACHINE_ARM
 | |
|                                  , IMAGE_FILE_MACHINE_ARMNT
 | |
|                                  , IMAGE_FILE_MACHINE_ARM64
 | |
|                                  , IMAGE_FILE_MACHINE_EBC
 | |
|                                  , IMAGE_FILE_MACHINE_I386
 | |
|                                  , IMAGE_FILE_MACHINE_IA64
 | |
|                                  , IMAGE_FILE_MACHINE_M32R
 | |
|                                  , IMAGE_FILE_MACHINE_MIPS16
 | |
|                                  , IMAGE_FILE_MACHINE_MIPSFPU
 | |
|                                  , IMAGE_FILE_MACHINE_MIPSFPU16
 | |
|                                  , IMAGE_FILE_MACHINE_POWERPC
 | |
|                                  , IMAGE_FILE_MACHINE_POWERPCFP
 | |
|                                  , IMAGE_FILE_MACHINE_R4000
 | |
|                                  , IMAGE_FILE_MACHINE_SH3
 | |
|                                  , IMAGE_FILE_MACHINE_SH3DSP
 | |
|                                  , IMAGE_FILE_MACHINE_SH4
 | |
|                                  , IMAGE_FILE_MACHINE_SH5
 | |
|                                  , IMAGE_FILE_MACHINE_THUMB
 | |
|                                  , IMAGE_FILE_MACHINE_WCEMIPSV2
 | |
|                                  ]}
 | |
|                    , {type: int}
 | |
|                    ]
 | |
|           Characteristics:
 | |
|             - type: seq
 | |
|               sequence:
 | |
|                 - type: str
 | |
|                   enum: [ IMAGE_FILE_RELOCS_STRIPPED
 | |
|                         , IMAGE_FILE_EXECUTABLE_IMAGE
 | |
|                         , IMAGE_FILE_LINE_NUMS_STRIPPED
 | |
|                         , IMAGE_FILE_LOCAL_SYMS_STRIPPED
 | |
|                         , IMAGE_FILE_AGGRESSIVE_WS_TRIM
 | |
|                         , IMAGE_FILE_LARGE_ADDRESS_AWARE
 | |
|                         , IMAGE_FILE_BYTES_REVERSED_LO
 | |
|                         , IMAGE_FILE_32BIT_MACHINE
 | |
|                         , IMAGE_FILE_DEBUG_STRIPPED
 | |
|                         , IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP
 | |
|                         , IMAGE_FILE_NET_RUN_FROM_SWAP
 | |
|                         , IMAGE_FILE_SYSTEM
 | |
|                         , IMAGE_FILE_DLL
 | |
|                         , IMAGE_FILE_UP_SYSTEM_ONLY
 | |
|                         , IMAGE_FILE_BYTES_REVERSED_HI
 | |
|                         ]
 | |
|             - type: int
 | |
|       sections:
 | |
|         type: seq
 | |
|         sequence:
 | |
|           - type: map
 | |
|             mapping:
 | |
|               Name: {type: str}
 | |
|               Characteristics:
 | |
|                 - type: seq
 | |
|                   sequence:
 | |
|                     - type: str
 | |
|                       enum: [ IMAGE_SCN_TYPE_NO_PAD
 | |
|                             , IMAGE_SCN_CNT_CODE
 | |
|                             , IMAGE_SCN_CNT_INITIALIZED_DATA
 | |
|                             , IMAGE_SCN_CNT_UNINITIALIZED_DATA
 | |
|                             , IMAGE_SCN_LNK_OTHER
 | |
|                             , IMAGE_SCN_LNK_INFO
 | |
|                             , IMAGE_SCN_LNK_REMOVE
 | |
|                             , IMAGE_SCN_LNK_COMDAT
 | |
|                             , IMAGE_SCN_GPREL
 | |
|                             , IMAGE_SCN_MEM_PURGEABLE
 | |
|                             , IMAGE_SCN_MEM_16BIT
 | |
|                             , IMAGE_SCN_MEM_LOCKED
 | |
|                             , IMAGE_SCN_MEM_PRELOAD
 | |
|                             , IMAGE_SCN_ALIGN_1BYTES
 | |
|                             , IMAGE_SCN_ALIGN_2BYTES
 | |
|                             , IMAGE_SCN_ALIGN_4BYTES
 | |
|                             , IMAGE_SCN_ALIGN_8BYTES
 | |
|                             , IMAGE_SCN_ALIGN_16BYTES
 | |
|                             , IMAGE_SCN_ALIGN_32BYTES
 | |
|                             , IMAGE_SCN_ALIGN_64BYTES
 | |
|                             , IMAGE_SCN_ALIGN_128BYTES
 | |
|                             , IMAGE_SCN_ALIGN_256BYTES
 | |
|                             , IMAGE_SCN_ALIGN_512BYTES
 | |
|                             , IMAGE_SCN_ALIGN_1024BYTES
 | |
|                             , IMAGE_SCN_ALIGN_2048BYTES
 | |
|                             , IMAGE_SCN_ALIGN_4096BYTES
 | |
|                             , IMAGE_SCN_ALIGN_8192BYTES
 | |
|                             , IMAGE_SCN_LNK_NRELOC_OVFL
 | |
|                             , IMAGE_SCN_MEM_DISCARDABLE
 | |
|                             , IMAGE_SCN_MEM_NOT_CACHED
 | |
|                             , IMAGE_SCN_MEM_NOT_PAGED
 | |
|                             , IMAGE_SCN_MEM_SHARED
 | |
|                             , IMAGE_SCN_MEM_EXECUTE
 | |
|                             , IMAGE_SCN_MEM_READ
 | |
|                             , IMAGE_SCN_MEM_WRITE
 | |
|                             ]
 | |
|                 - type: int
 | |
|               SectionData: {type: str}
 | |
|       symbols:
 | |
|         type: seq
 | |
|         sequence:
 | |
|           - type: map
 | |
|             mapping:
 | |
|               Name: {type: str}
 | |
|               Value: {type: int}
 | |
|               SectionNumber: {type: int}
 | |
|               SimpleType: [ {type: str, enum: [ IMAGE_SYM_TYPE_NULL
 | |
|                                               , IMAGE_SYM_TYPE_VOID
 | |
|                                               , IMAGE_SYM_TYPE_CHAR
 | |
|                                               , IMAGE_SYM_TYPE_SHORT
 | |
|                                               , IMAGE_SYM_TYPE_INT
 | |
|                                               , IMAGE_SYM_TYPE_LONG
 | |
|                                               , IMAGE_SYM_TYPE_FLOAT
 | |
|                                               , IMAGE_SYM_TYPE_DOUBLE
 | |
|                                               , IMAGE_SYM_TYPE_STRUCT
 | |
|                                               , IMAGE_SYM_TYPE_UNION
 | |
|                                               , IMAGE_SYM_TYPE_ENUM
 | |
|                                               , IMAGE_SYM_TYPE_MOE
 | |
|                                               , IMAGE_SYM_TYPE_BYTE
 | |
|                                               , IMAGE_SYM_TYPE_WORD
 | |
|                                               , IMAGE_SYM_TYPE_UINT
 | |
|                                               , IMAGE_SYM_TYPE_DWORD
 | |
|                                               ]}
 | |
|                           , {type: int}
 | |
|                           ]
 | |
|               ComplexType: [ {type: str, enum: [ IMAGE_SYM_DTYPE_NULL
 | |
|                                                , IMAGE_SYM_DTYPE_POINTER
 | |
|                                                , IMAGE_SYM_DTYPE_FUNCTION
 | |
|                                                , IMAGE_SYM_DTYPE_ARRAY
 | |
|                                                ]}
 | |
|                            , {type: int}
 | |
|                            ]
 | |
|               StorageClass: [ {type: str, enum:
 | |
|                                           [ IMAGE_SYM_CLASS_END_OF_FUNCTION
 | |
|                                           , IMAGE_SYM_CLASS_NULL
 | |
|                                           , IMAGE_SYM_CLASS_AUTOMATIC
 | |
|                                           , IMAGE_SYM_CLASS_EXTERNAL
 | |
|                                           , IMAGE_SYM_CLASS_STATIC
 | |
|                                           , IMAGE_SYM_CLASS_REGISTER
 | |
|                                           , IMAGE_SYM_CLASS_EXTERNAL_DEF
 | |
|                                           , IMAGE_SYM_CLASS_LABEL
 | |
|                                           , IMAGE_SYM_CLASS_UNDEFINED_LABEL
 | |
|                                           , IMAGE_SYM_CLASS_MEMBER_OF_STRUCT
 | |
|                                           , IMAGE_SYM_CLASS_ARGUMENT
 | |
|                                           , IMAGE_SYM_CLASS_STRUCT_TAG
 | |
|                                           , IMAGE_SYM_CLASS_MEMBER_OF_UNION
 | |
|                                           , IMAGE_SYM_CLASS_UNION_TAG
 | |
|                                           , IMAGE_SYM_CLASS_TYPE_DEFINITION
 | |
|                                           , IMAGE_SYM_CLASS_UNDEFINED_STATIC
 | |
|                                           , IMAGE_SYM_CLASS_ENUM_TAG
 | |
|                                           , IMAGE_SYM_CLASS_MEMBER_OF_ENUM
 | |
|                                           , IMAGE_SYM_CLASS_REGISTER_PARAM
 | |
|                                           , IMAGE_SYM_CLASS_BIT_FIELD
 | |
|                                           , IMAGE_SYM_CLASS_BLOCK
 | |
|                                           , IMAGE_SYM_CLASS_FUNCTION
 | |
|                                           , IMAGE_SYM_CLASS_END_OF_STRUCT
 | |
|                                           , IMAGE_SYM_CLASS_FILE
 | |
|                                           , IMAGE_SYM_CLASS_SECTION
 | |
|                                           , IMAGE_SYM_CLASS_WEAK_EXTERNAL
 | |
|                                           , IMAGE_SYM_CLASS_CLR_TOKEN
 | |
|                                           ]}
 | |
|                             , {type: int}
 | |
|                             ]
 |