This is an archive of the discontinued LLVM Phabricator instance.

[yaml2obj][ELF] Add an optional `Size` field to the YAML section declaration
ClosedPublic

Authored by atanasyan on May 15 2014, 12:16 PM.

Details

Reviewers
silvas
Bigcheese
Summary

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

Diff Detail

Event Timeline

atanasyan updated this revision to Diff 9451.May 15 2014, 12:16 PM
atanasyan retitled this revision from to [yaml2obj][ELF] Add an optional `Size` field to the YAML section declaration.
atanasyan updated this object.
atanasyan edited the test plan for this revision. (Show Details)
atanasyan added reviewers: silvas, Bigcheese.
atanasyan added a subscriber: Unknown Object (MLST).
Bigcheese accepted this revision.May 15 2014, 2:37 PM
Bigcheese edited edge metadata.

lgtm.

This revision is now accepted and ready to land.May 15 2014, 2:37 PM
atanasyan closed this revision.May 16 2014, 9:17 AM

Thanks for review.

Closed by commit rL208995.