[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