brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.8 KiB · 556473f Raw
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