## Check how obj2yaml dumps SHT_NOTE sections. ## We can dump the Name, Desc and Type fields when the note section is valid. # RUN: yaml2obj --docnum=1 %s -o %t1 # RUN: obj2yaml %t1 | FileCheck %s --check-prefix=VALID # VALID: - Name: .note.foo # VALID-NEXT: Type: SHT_NOTE # VALID-NEXT: Notes: # VALID-NEXT: - Name: '' # VALID-NEXT: Desc: '' # VALID-NEXT: Type: 0x0 # VALID-NEXT: - Name: .note.bar # VALID-NEXT: Type: SHT_NOTE # VALID-NEXT: Notes: # VALID-NEXT: - Name: ABC # VALID-NEXT: Desc: '001122' # VALID-NEXT: Type: 0xAABBCCDD --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_DYN Sections: - Name: .note.foo Type: SHT_NOTE Size: 12 - Name: .note.bar Type: SHT_NOTE Notes: - Name: ABC Desc: '001122' Type: 0xAABBCCDD ## Check we dump hex digit pairs if the note section is invalid. # RUN: yaml2obj --docnum=2 %s -o %t2 # RUN: obj2yaml %t2 | FileCheck %s --check-prefix=INVALID # INVALID: - Name: .note.tooShortNote # INVALID-NEXT: Type: SHT_NOTE # INVALID-NEXT: Content: '0000000000000000000000' # INVALID-NEXT: - Name: .note.tooLongNameSize # INVALID-NEXT: Type: SHT_NOTE # INVALID-NEXT: Content: 0100000000000000FF00000000 # INVALID-NEXT: - Name: .note.tooLongDescSize # INVALID-NEXT: Type: SHT_NOTE # INVALID-NEXT: Content: 0000000001000000FF00000000 --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_DYN Sections: ## Content is less than 12 bytes in size. ## (12 is the size of n_namesz, n_descsz and n_type 4-bytes fields that must always present). - Name: .note.tooShortNote Type: SHT_NOTE Size: 11 ## We can't dump the Name, Desc and Type fields when the ## content is shorter than the computed size. ## ## Too long name size. - Name: .note.tooLongNameSize Type: SHT_NOTE Content: "0100000000000000ff00000000" ## Too long description size. - Name: .note.tooLongDescSize Type: SHT_NOTE Content: "0000000001000000ff00000000" ## Check we do not crash when dumping a description that has bytes ## on its bounds that do not fit into signed byte. ## This is a completely normal case, but we had a crash before. # RUN: yaml2obj --docnum=3 %s -o %t3 # RUN: obj2yaml %t3 | FileCheck %s --check-prefix=HEX-DESC # HEX-DESC: Desc: FE0000FE --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2MSB Type: ET_DYN Sections: - Name: .note.tag Type: SHT_NOTE Flags: [ SHF_ALLOC ] Notes: - Desc: 'FE0000FE' Type: 0