1## Check how obj2yaml produces YAML .stack_sizes descriptions. 2 3## Check that obj2yaml uses the "Entries" tag to describe a .stack_sizes section 4## when it can extract <address, size> pairs. 5 6# RUN: yaml2obj --docnum=1 %s -o %t1 7# RUN: obj2yaml %t1 | FileCheck %s --check-prefix=VALID 8 9# VALID: --- !ELF 10# VALID-NEXT: FileHeader: 11# VALID-NEXT: Class: ELFCLASS64 12# VALID-NEXT: Data: ELFDATA2LSB 13# VALID-NEXT: Type: ET_EXEC 14# VALID-NEXT: Sections: 15# VALID-NEXT: - Name: .stack_sizes 16# VALID-NEXT: Type: SHT_PROGBITS 17# VALID-NEXT: Entries: 18# VALID-NEXT: - Address: 0x10 19# VALID-NEXT: Size: 0x20 20# VALID-NEXT: - Address: 0x30 21# VALID-NEXT: Size: 0x40 22 23--- !ELF 24FileHeader: 25 Class: ELFCLASS64 26 Data: ELFDATA2LSB 27 Type: ET_EXEC 28Sections: 29 - Name: .stack_sizes 30 Type: SHT_PROGBITS 31 Content: "100000000000000020300000000000000040" 32 33## Check that obj2yaml uses the "Content" tag to describe a .stack_sizes section 34## when it can't extract the entries, for example, when section data is truncated. 35 36# RUN: yaml2obj --docnum=2 %s -o %t2 37# RUN: obj2yaml %t2 | FileCheck %s --check-prefix=INVALID 38 39# INVALID: --- !ELF 40# INVALID-NEXT: FileHeader: 41# INVALID-NEXT: Class: ELFCLASS64 42# INVALID-NEXT: Data: ELFDATA2LSB 43# INVALID-NEXT: Type: ET_EXEC 44# INVALID-NEXT: Sections: 45# INVALID-NEXT: - Name: .stack_sizes 46# INVALID-NEXT: Type: SHT_PROGBITS 47# INVALID-NEXT: Content: '1000000000000000203000000000000000' 48 49--- !ELF 50FileHeader: 51 Class: ELFCLASS64 52 Data: ELFDATA2LSB 53 Type: ET_EXEC 54Sections: 55 - Name: .stack_sizes 56 Type: SHT_PROGBITS 57 Content: "1000000000000000203000000000000000" 58 59## Check obj2yaml can dump empty .stack_sizes. 60 61# RUN: yaml2obj --docnum=3 %s -o %t3 62# RUN: obj2yaml %t3 | FileCheck %s --check-prefix=EMPTY 63 64# EMPTY: --- !ELF 65# EMPTY-NEXT: FileHeader: 66# EMPTY-NEXT: Class: ELFCLASS64 67# EMPTY-NEXT: Data: ELFDATA2LSB 68# EMPTY-NEXT: Type: ET_EXEC 69# EMPTY-NEXT: Sections: 70# EMPTY-NEXT: - Name: .stack_sizes 71# EMPTY-NEXT: Type: SHT_PROGBITS 72# EMPTY-NEXT: Content: '' 73 74--- !ELF 75FileHeader: 76 Class: ELFCLASS64 77 Data: ELFDATA2LSB 78 Type: ET_EXEC 79Sections: 80 - Name: .stack_sizes 81 Type: SHT_PROGBITS 82 Content: "" 83 84## Check obj2yaml can dump multiple .stack_sizes. 85 86# RUN: yaml2obj --docnum=4 %s -o %t4 87# RUN: obj2yaml %t4 | FileCheck %s --check-prefix=MULTI 88 89# MULTI: --- !ELF 90# MULTI-NEXT: FileHeader: 91# MULTI-NEXT: Class: ELFCLASS64 92# MULTI-NEXT: Data: ELFDATA2LSB 93# MULTI-NEXT: Type: ET_EXEC 94# MULTI-NEXT: Sections: 95# MULTI-NEXT: - Name: .stack_sizes 96# MULTI-NEXT: Type: SHT_PROGBITS 97# MULTI-NEXT: Entries: 98# MULTI-NEXT: - Address: 0x10 99# MULTI-NEXT: Size: 0x20 100# MULTI-NEXT: - Address: 0x30 101# MULTI-NEXT: Size: 0x40 102# MULTI-NEXT: - Name: '.stack_sizes (1)' 103# MULTI-NEXT: Type: SHT_PROGBITS 104# MULTI-NEXT: Entries: 105# MULTI-NEXT: - Address: 0x50 106# MULTI-NEXT: Size: 0x1 107# MULTI-NEXT: - Address: 0x60 108# MULTI-NEXT: Size: 0x2 109 110--- !ELF 111FileHeader: 112 Class: ELFCLASS64 113 Data: ELFDATA2LSB 114 Type: ET_EXEC 115Sections: 116 - Name: .stack_sizes 117 Type: SHT_PROGBITS 118 Entries: 119 - Address: 0x10 120 Size: 0x20 121 - Address: 0x30 122 Size: 0x40 123 - Name: '.stack_sizes (1)' 124 Type: SHT_PROGBITS 125 Entries: 126 - Address: 0x50 127 Size: 0x1 128 - Address: 0x60 129 Size: 0x2 130