[PATCH] [yaml2obj][ELF] Add an optional `Size` field to the YAML section declaration
Simon Atanasyan
simon at atanasyan.com
Thu May 15 12:16:44 PDT 2014
Hi silvas, Bigcheese,
Now the only method to configure ELF section's content and size is to assign a hexadecimal string to the `Content` field. Unfortunately this way is completely useless when you need to declare a really large section.
To solve this problem this patch adds one more optional field `Size` to the `RawContentSection` structure. When yaml2obj generates an ELF file it uses the following algorithm:
1. If both `Content` and `Size` fields are missed create an empty section.
2. If only `Content` field is missed take section length from the `Size` field and fill the section by zero.
3. If only `Size` field is missed create a section using data from the `Content` field.
4. If both `Content` and `Size` fields are provided validate that the `Size` value is not less than size of `Content` data. Than take section length
from the `Size`, fill beginning of the section by `Content` and the rest by zero.
**Examples**
* Create a section 0x10000 bytes long filled by zero
Name: .data
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC ]
Size: 0x10000
* Create a section 0x10000 bytes long starting from 'CA' 'FE' 'BA' 'BE'
Name: .data
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC ]
Content: CAFEBABE
Size: 0x10000
http://reviews.llvm.org/D3791
Files:
include/llvm/Object/ELFYAML.h
lib/Object/ELFYAML.cpp
test/Object/yaml2obj-elf-section-basic.yaml
test/Object/yaml2obj-elf-section-invalid-size.yaml
tools/obj2yaml/elf2yaml.cpp
tools/yaml2obj/yaml2elf.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D3791.9451.patch
Type: text/x-patch
Size: 5146 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140515/e333f954/attachment.bin>
More information about the llvm-commits
mailing list