yaml2obj creates invalid object files even when the input was created by obj2yaml using a valid object file. On the other hand, yaml2obj is used to intentionally create invalid object files for testing purposes. This update balances using specified input values when provided and computing file offsets and sizes if necessary.
34 lines
990 B
YAML
34 lines
990 B
YAML
## Check that obj2yaml reports a suitable error when it encounters
|
|
## invalid content in Section.
|
|
|
|
## Error1: failed to get section data.
|
|
# RUN: yaml2obj %s --docnum=1 -o %t1
|
|
# RUN: not obj2yaml %t1 2>&1 | FileCheck %s -DFILE=%t1 --check-prefix=ERROR1
|
|
|
|
# ERROR1: The end of the file was unexpectedly encountered: section data with offset 0x70 and size 0x20 goes past the end of the file
|
|
|
|
--- !XCOFF
|
|
FileHeader:
|
|
MagicNumber: 0x01DF
|
|
Sections:
|
|
- SectionData: '00007400'
|
|
FileOffsetToData: 0x70
|
|
Size: 0x20
|
|
|
|
## Error2: failed to get relocations.
|
|
# RUN: yaml2obj %s --docnum=2 -o %t2
|
|
# RUN: not obj2yaml %t2 2>&1 | FileCheck %s -DFILE=%t2 --check-prefix=ERROR2
|
|
|
|
# ERROR2: The end of the file was unexpectedly encountered: relocations with offset 0x3c and size 0x1e go past the end of the file
|
|
|
|
--- !XCOFF
|
|
FileHeader:
|
|
MagicNumber: 0x01DF
|
|
Sections:
|
|
- NumberOfRelocations: 0x3
|
|
Relocations:
|
|
- Address: 0xE
|
|
Symbol: 0x12
|
|
Info: 0xF
|
|
Type: 0x3
|