204 lines · yaml
1## Test how we dump the .debug_addr section.2 3## a) Dumping address tables from various object files.4 5## Dumping address tables from a little endian 64-bit object file.6# RUN: yaml2obj --docnum=1 %s -DADDRESS=0xFFFFFFFFFFFFFFFF \7# RUN: -DADDRSIZE=4 | obj2yaml | \8# RUN: FileCheck %s --check-prefix=BASIC --implicit-check-not=Sections: \9# RUN: -DLENGTH1=0x14 -DADDRSIZE1=0x8 -DADDR=0xFFFFFFFFFFFFFFFF \10# RUN: -DLENGTH2=0xC -DADDRSIZE2=0x411 12## Dumping address tables from a big endian 64-bit object file.13# RUN: yaml2obj --docnum=1 %s -DENDIAN=MSB -DADDRESS=0xFFFFFFFFFFFFFFFF \14# RUN: -DADDRSIZE=4 | obj2yaml | \15# RUN: FileCheck %s --check-prefix=BASIC --implicit-check-not=Sections: \16# RUN: -DLENGTH1=0x14 -DADDRSIZE1=0x8 -DADDR=0xFFFFFFFFFFFFFFFF \17# RUN: -DLENGTH2=0xC -DADDRSIZE2=0x418 19## Dumping address tables from a little endian 32-bit object file.20# RUN: yaml2obj --docnum=1 %s -DBITS=32 -DADDRESS=0xFFFFFFFF \21# RUN: -DADDRSIZE=8 | obj2yaml | \22# RUN: FileCheck %s --check-prefix=BASIC --implicit-check-not=Sections: \23# RUN: -DLENGTH1=0xC -DADDRSIZE1=0x4 -DADDR=0xFFFFFFFF \24# RUN: -DLENGTH2=0x14 -DADDRSIZE2=0x825 26## Dumping address tables from a big endian 32-bit object file.27# RUN: yaml2obj --docnum=1 %s -DBITS=32 -DENDIAN=MSB -DADDRESS=0xFFFFFFFF \28# RUN: -DADDRSIZE=8 | obj2yaml | \29# RUN: FileCheck %s --check-prefix=BASIC --implicit-check-not=Sections: \30# RUN: -DLENGTH1=0xC -DADDRSIZE1=0x4 -DADDR=0xFFFFFFFF \31# RUN: -DLENGTH2=0x14 -DADDRSIZE2=0x832 33# BASIC: DWARF:34# BASIC-NEXT: debug_addr:35# BASIC-NEXT: - Length: [[LENGTH1]]36# BASIC-NEXT: Version: 0x537# BASIC-NEXT: AddressSize: [[ADDRSIZE1]]38# BASIC-NEXT: Entries:39# BASIC-NEXT: - Address: 0x123440# BASIC-NEXT: - Address: 0x567841# BASIC-NEXT: - Format: DWARF6442# BASIC-NEXT: Length: [[LENGTH1]]43# BASIC-NEXT: Version: 0x544# BASIC-NEXT: AddressSize: [[ADDRSIZE1]]45# BASIC-NEXT: Entries:46# BASIC-NEXT: - Address: 0x123447# BASIC-NEXT: - Address: [[ADDR]]48# BASIC-NEXT: - Length: [[LENGTH2]]49# BASIC-NEXT: Version: 0x550# BASIC-NEXT: AddressSize: [[ADDRSIZE2]]51# BASIC-NEXT: Entries:52# BASIC-NEXT: - Address: 0x123453# BASIC-NEXT: - Address: 0x567854# BASIC-NEXT: - Format: DWARF6455# BASIC-NEXT: Length: [[LENGTH2]]56# BASIC-NEXT: Version: 0x557# BASIC-NEXT: AddressSize: [[ADDRSIZE2]]58# BASIC-NEXT: Entries:59# BASIC-NEXT: - Address: 0x123460# BASIC-NEXT: - Address: 0x567861# BASIC-NEXT: ...62 63--- !ELF64FileHeader:65 Class: ELFCLASS[[BITS=64]]66 Data: ELFDATA2[[ENDIAN=LSB]]67 Type: ET_EXEC68DWARF:69 debug_addr:70 ## A DWARF32 address table.71 - Version: 572 Entries:73 - Address: 0x123474 - Address: 0x567875 ## A DWARF64 address table.76 - Format: DWARF6477 Version: 578 Entries:79 - Address: 0x123480 - Address: [[ADDRESS]]81 ## A DWARF32 address table with a mutable address size.82 - Version: 583 AddressSize: [[ADDRSIZE]]84 Entries:85 - Address: 0x123486 - Address: 0x567887 ## A DWARF64 address table with a mutable address size.88 - Format: DWARF6489 Version: 590 AddressSize: [[ADDRSIZE]]91 Entries:92 - Address: 0x123493 - Address: 0x567894 95## b) Test dumping a .debug_addr section whose section header properties are96## overridden.97 98## Override the sh_type field.99# RUN: yaml2obj --docnum=2 %s -DTYPE=SHT_STRTAB | obj2yaml | \100# RUN: FileCheck %s -DTYPE=SHT_STRTAB --check-prefix=COMMON101 102## Override the sh_flags field.103# RUN: yaml2obj --docnum=2 %s -DFLAGS='[ SHF_ALLOC ]' | obj2yaml | \104# RUN: FileCheck %s -DTYPE=SHT_PROGBITS --check-prefixes=COMMON,FLAGS105 106## Override the sh_link field.107# RUN: yaml2obj --docnum=2 %s -DLINK=.sec | obj2yaml | \108# RUN: FileCheck %s -DTYPE=SHT_PROGBITS --check-prefixes=COMMON,LINK109 110## Override the sh_addr field.111# RUN: yaml2obj --docnum=2 %s -DADDRESS=0x2020 | obj2yaml | \112# RUN: FileCheck %s -DTYPE=SHT_PROGBITS --check-prefixes=COMMON,ADDR113 114## Override the sh_addralign field.115# RUN: yaml2obj --docnum=2 %s -DADDRALIGN=3 | obj2yaml | \116# RUN: FileCheck %s -DTYPE=SHT_PROGBITS --check-prefixes=COMMON,ADDRALIGN117 118## Override the sh_entsize field.119# RUN: yaml2obj --docnum=2 %s -DENTSIZE=3 | obj2yaml | \120# RUN: FileCheck %s -DTYPE=SHT_PROGBITS --check-prefixes=COMMON,ENTSIZE121 122## Override the sh_info field.123# RUN: yaml2obj --docnum=2 %s -DINFO=3 | obj2yaml | \124# RUN: FileCheck %s -DTYPE=SHT_PROGBITS --check-prefixes=COMMON,INFO125 126# COMMON: Sections:127# COMMON-NEXT: - Name: .debug_addr128# COMMON-NEXT: Type: [[TYPE]]129# FLAGS-NEXT: Flags: [ SHF_ALLOC ]130# LINK-NEXT: Link: .sec131# ADDR-NEXT: Address: 0x2020132# ADDRALIGN-NEXT: AddressAlign: 0x3133# ENTSIZE-NEXT: EntSize: 0x3134# INFO-NEXT: Info: 0x3135# COMMON-NEXT: - Name: .sec136# COMMON-NEXT: Type: SHT_PROGBITS137# COMMON-NEXT: DWARF:138# COMMON-NEXT: debug_addr:139# COMMON-NEXT: - Length: 0x14140# COMMON-NEXT: Version: 0x5141# COMMON-NEXT: AddressSize: 0x8142# COMMON-NEXT: Entries:143# COMMON-NEXT: - Address: 0x1234144# COMMON-NEXT: - Address: 0x5678145# COMMON-NEXT: ...146 147--- !ELF148FileHeader:149 Class: ELFCLASS64150 Data: ELFDATA2LSB151 Type: ET_EXEC152Sections:153 - Name: .debug_addr154 Type: [[TYPE=SHT_PROGBITS]]155 Flags: [[FLAGS=<none>]]156 Link: [[LINK=<none>]]157 EntSize: [[ENTSIZE=<none>]]158 Info: [[INFO=<none>]]159 AddressAlign: [[ADDRALIGN=0]]160 Address: [[ADDRESS=<none>]]161 - Name: .sec162 Type: SHT_PROGBITS163DWARF:164 debug_addr:165 - Version: 5166 Entries:167 - Address: 0x1234168 - Address: 0x5678169 170## c) Test dumping an address table whose version isn't 5.171## This causes the DWARF parser to fail to parse it and we will dump it as a raw172## content section.173 174# RUN: yaml2obj --docnum=3 %s -DCONTENT="AABBCC" | obj2yaml | \175# RUN: FileCheck %s --check-prefix=RAW --implicit-check-not=DWARF:176 177# RAW: Sections:178# RAW-NEXT: - Name: .debug_addr179# RAW-NEXT: Type: SHT_PROGBITS180# RAW-NEXT: AddressAlign: 0x1181# RAW-NEXT: Content: AABBCC182# RAW-NEXT: ...183 184--- !ELF185FileHeader:186 Class: ELFCLASS64187 Data: ELFDATA2LSB188 Type: ET_EXEC189Sections:190 - Name: .debug_addr191 Type: SHT_PROGBITS192 AddressAlign: 1193 Size: [[SIZE=<none>]]194 Content: [[CONTENT=<none>]]195 196## d) Test dumping an empty .debug_addr section.197 198# RUN: yaml2obj --docnum=3 %s -DSIZE=0 | obj2yaml | \199# RUN: FileCheck %s --check-prefix=EMPTY --implicit-check-not=Sections:200 201# EMPTY: DWARF:202# EMPTY-NEXT: debug_addr: []203# EMPTY-NEXT: ...204