| ## Check we are able to describe the content of a section |
| ## using the ContentArray key. |
| |
| ## Check we are able to use ContentArray to create multi-line descriptions |
| ## of section contents with comments on the same line. |
| # RUN: yaml2obj --docnum=1 %s -o %t1 |
| # RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s |
| |
| # CHECK: Section { |
| # CHECK: Index: 1 |
| # CHECK-NEXT: Name: .foo |
| # CHECK-NEXT: Type: SHT_PROGBITS |
| # CHECK-NEXT: Flags [ |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Address: 0x0 |
| # CHECK-NEXT: Offset: 0x40 |
| # CHECK-NEXT: Size: 16 |
| # CHECK-NEXT: Link: 0 |
| # CHECK-NEXT: Info: 0 |
| # CHECK-NEXT: AddressAlignment: 0 |
| # CHECK-NEXT: EntrySize: 0 |
| # CHECK-NEXT: SectionData ( |
| # CHECK-NEXT: 0000: 11223344 55667788 99AABBCC DDEEFF00 |
| # CHECK-NEXT: ) |
| # CHECK-NEXT: } |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .foo |
| Type: SHT_PROGBITS |
| ContentArray: [ 0x11, 0x22, 0x33, 0x44, ## .long 11223344 |
| 0x55, 0x66, ## .short 5566. |
| 0x77, ## .byte 0x77 |
| 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x00 ] ## .quad 0x8899aabbccddeeff00 |
| |
| ## Check we do not allow using 'Content' and 'ContentArray' at the same time. |
| # RUN: not yaml2obj --docnum=2 %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=BOTH |
| # BOTH: error: Content and ContentArray can't be used together |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .foo |
| Type: SHT_PROGBITS |
| Content: [ 0x0 ] |
| ContentArray: [ 0x1 ] |
| |
| ## Check how the "Size" and the "ContentArray" keys can be used together. |
| |
| ## Case A: check that we report an error when the the value of "Size" is less than the content size. |
| # RUN: not yaml2obj --docnum=3 -DSIZE=1 %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=SIZE-LESS |
| # SIZE-LESS: error: Section size must be greater than or equal to the content size |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .foo |
| Type: SHT_PROGBITS |
| ContentArray: [ 0x11, 0x22 ] |
| Size: [[SIZE]] |
| |
| ## Case B: check we are able to produce an output when the value of "Size" is equal |
| ## to the content size. In this case the "Size" key has no effect. |
| # RUN: yaml2obj --docnum=3 -DSIZE=2 %s -o %t3.eq |
| # RUN: llvm-readobj --sections --section-data %t3.eq | FileCheck %s --check-prefix=SIZE-EQ |
| |
| # SIZE-EQ: Name: .foo |
| # SIZE-EQ: SectionData ( |
| # SIZE-EQ-NEXT: 0000: 1122 | |
| # SIZE-EQ-NEXT: ) |
| |
| ## Case C: check we are able to produce an output when the value of "Size" is greater |
| ## than the content size. In this case zeroes are added as padding after the |
| ## specified content. |
| # RUN: yaml2obj --docnum=3 -DSIZE=3 %s -o %t4.gr |
| # RUN: llvm-readobj --sections --section-data %t4.gr | FileCheck %s --check-prefix=SIZE-GR |
| |
| # SIZE-GR: Name: .foo |
| # SIZE-GR: SectionData ( |
| # SIZE-GR-NEXT: 0000: 112200 | |
| # SIZE-GR-NEXT: ) |