You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
3.1 KiB
92 lines
3.1 KiB
4 months ago
|
## 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
|
||
|
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
|
||
|
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
|
||
|
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: )
|