126 lines · yaml
1## Test how we dump the .debug_str section.2 3## a) Test dumping a .debug_str section with a default section header.4 5# RUN: yaml2obj --docnum=1 %s | obj2yaml | \6# RUN: FileCheck %s --check-prefix=BASIC --implicit-check-not='Name: .debug_str'7 8## b) Test dumping a .debug_str section whose section header properties are overridden.9 10## Override the sh_type field.11# RUN: yaml2obj --docnum=1 -DTYPE=STRTAB %s | obj2yaml | \12# RUN: FileCheck %s --check-prefixes=BASIC,COMMON \13# RUN: -DTYPE=STRTAB -DFLAGS="[ SHF_MERGE, SHF_STRINGS ]" -D#%x,ADDRALIGN=114 15## Override the sh_flags field.16# RUN: yaml2obj --docnum=1 -DFLAGS=[SHF_ALLOC] %s | obj2yaml | \17# RUN: FileCheck %s --check-prefixes=BASIC,COMMON \18# RUN: -DTYPE=PROGBITS -DFLAGS="[ SHF_ALLOC ]" -D#%x,ADDRALIGN=119 20## Override the sh_link field.21# RUN: yaml2obj --docnum=1 -DLINK=.sec %s | obj2yaml | \22# RUN: FileCheck %s --check-prefixes=BASIC,COMMON,LINK \23# RUN: -DTYPE=PROGBITS -DFLAGS="[ SHF_MERGE, SHF_STRINGS ]" -DLINK=.sec -D#%x,ADDRALIGN=124 25## Override the sh_addr field.26# RUN: yaml2obj --docnum=1 -DADDRESS=0x2020 %s | obj2yaml | \27# RUN: FileCheck %s --check-prefixes=BASIC,COMMON,ADDRESS \28# RUN: -DTYPE=PROGBITS -DFLAGS="[ SHF_MERGE, SHF_STRINGS ]" -D#%x,ADDRALIGN=1 -D#%x,ADDRESS=0x202029 30## Override the sh_addralign field.31# RUN: yaml2obj --docnum=1 -DADDRALIGN=3 %s | obj2yaml | \32# RUN: FileCheck %s --check-prefixes=BASIC,COMMON \33# RUN: -DTYPE=PROGBITS -DFLAGS="[ SHF_MERGE, SHF_STRINGS ]" -D#%x,ADDRALIGN=334 35## Override the sh_entsize field (sh_entsize=3).36# RUN: yaml2obj --docnum=1 -DENTSIZE=3 %s | obj2yaml | \37# RUN: FileCheck %s --check-prefixes=BASIC,COMMON,ENTSIZE \38# RUN: -DTYPE=PROGBITS -DFLAGS="[ SHF_MERGE, SHF_STRINGS ]" -D#%x,ADDRALIGN=1 -D#%x,ENTSIZE=339 40## Override the sh_entsize field (sh_entsize=0).41# RUN: yaml2obj --docnum=1 -DENTSIZE=0 %s | obj2yaml | \42# RUN: FileCheck %s --check-prefixes=BASIC,COMMON,ENTSIZE \43# RUN: -DTYPE=PROGBITS -DFLAGS="[ SHF_MERGE, SHF_STRINGS ]" -D#%x,ADDRALIGN=1 -D#%x,ENTSIZE=044 45## Override the sh_info field.46# RUN: yaml2obj --docnum=1 -DINFO=3 %s | obj2yaml | \47# RUN: FileCheck %s --check-prefixes=BASIC,COMMON,INFO \48# RUN: -DTYPE=PROGBITS -DFLAGS="[ SHF_MERGE, SHF_STRINGS ]" -D#%x,INFO=3 -D#%x,ADDRALIGN=1 -D#%x,ENTSIZE=149 50--- !ELF51FileHeader:52 Class: ELFCLASS6453 Data: ELFDATA2LSB54 Type: ET_EXEC55Sections:56 - Name: .debug_str57 Type: SHT_[[TYPE=PROGBITS]]58 Flags: [[FLAGS=<none>]]59 Link: [[LINK=<none>]]60 EntSize: [[ENTSIZE=1]]61 Info: [[INFO=<none>]]62 AddressAlign: [[ADDRALIGN=1]]63 Address: [[ADDRESS=<none>]]64 - Name: .sec65 Type: SHT_PROGBITS66DWARF:67 debug_str:68 - a69 - b70 - abc71 72# COMMON: - Name: .debug_str73# COMMON-NEXT: Type: SHT_[[TYPE]]74# COMMON-NEXT: Flags: [[FLAGS]]75# LINK-NEXT: Link: .sec76# ADDRESS-NEXT: Address: 0x[[#%x,ADDRESS]]77# COMMON-NEXT: AddressAlign: 0x[[#%x,ADDRALIGN]]78# ENTSIZE-NEXT: EntSize: 0x[[#%x,ENTSIZE]]79# INFO-NEXT: Info: 0x[[#%x,INFO]]80# BASIC: DWARF:81# BASIC-NEXT: debug_str:82# BASIC-NEXT: - a83# BASIC-NEXT: - b84# BASIC-NEXT: - abc85# BASIC-NEXT: ...86 87## c) Test dumping an empty .debug_str section.88 89# RUN: yaml2obj --docnum=2 %s | obj2yaml | FileCheck %s --check-prefix=EMPTY --implicit-check-not=Sections90 91# EMPTY: DWARF:92# EMPTY-NEXT: debug_str: []93# EMPTY-NEXT: ...94 95--- !ELF96FileHeader:97 Class: ELFCLASS6498 Data: ELFDATA2LSB99 Type: ET_EXEC100DWARF:101 debug_str: []102 103## d) Test that yaml2obj stops parsing the .debug_str section if it encounters a104## string without a null terminator. The output uses a raw content section instead of105## the DWARF tag to represent the broken .debug_str section.106 107# RUN: yaml2obj --docnum=3 %s | obj2yaml | FileCheck %s --check-prefix=NO-TERMINATOR108 109# NO-TERMINATOR-NOT: DWARF:110# NO-TERMINATOR: Sections:111# NO-TERMINATOR-NEXT: - Name: .debug_str112# NO-TERMINATOR-NEXT: Type: SHT_PROGBITS113# NO-TERMINATOR-NEXT: Flags: [ SHF_MERGE, SHF_STRINGS ]114# NO-TERMINATOR-NEXT: Content: '61626300616263'115# NO-TERMINATOR-NEXT: ...116 117--- !ELF118FileHeader:119 Class: ELFCLASS64120 Data: ELFDATA2LSB121 Type: ET_EXEC122Sections:123 - Name: .debug_str124 Type: SHT_PROGBITS125 Content: "61626300616263" ## "abc\0abc"126