brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.0 KiB · 63a0e8b Raw
200 lines · yaml
1## Test how we dump the .debug_aranges section.2 3## a) Test dumping the DWARF32/64 address range table from 32/64-bit, little/big endian object files.4## The .debug_aranges should be written to the 'DWARF' entry and the 'Sections' entry should remain empty.5 6# RUN: yaml2obj --docnum=1 -DBITS=32 -DENDIAN=LSB %s | obj2yaml | \7# RUN:   FileCheck %s --check-prefix=BASIC --implicit-check-not=Sections \8# RUN:     -DLENGTH1=24 -DLENGTH2=24 -DADDRSIZE=0x4 \9# RUN:     -DVARADDR=0x1234 -DVARLEN=0x567810 11# RUN: yaml2obj --docnum=1 -DBITS=32 -DENDIAN=MSB %s | obj2yaml | \12# RUN:   FileCheck %s --check-prefix=BASIC --implicit-check-not=Sections \13# RUN:     -DLENGTH1=24 -DLENGTH2=24 -DADDRSIZE=0x4 \14# RUN:     -DVARADDR=0x1234 -DVARLEN=0x567815 16# RUN: yaml2obj --docnum=1 -DBITS=64 -DENDIAN=LSB %s | obj2yaml | \17# RUN:   FileCheck %s --check-prefix=BASIC --implicit-check-not=Sections \18# RUN:     -DLENGTH1=3C -DLENGTH2=44 -DADDRSIZE=0x8 \19# RUN:     -DVARADDR=0x1234 -DVARLEN=0x567820 21# RUN: yaml2obj --docnum=1 -DBITS=64 -DENDIAN=MSB %s | obj2yaml | \22# RUN:   FileCheck  %s --check-prefix=BASIC --implicit-check-not=Sections \23# RUN:     -DLENGTH1=3C -DLENGTH2=44 -DADDRSIZE=0x8 \24# RUN:     -DVARADDR=0x1234 -DVARLEN=0x567825 26#      BASIC: DWARF:27# BASIC-NEXT:   debug_aranges:28# BASIC-NEXT:     - Length:      0x[[LENGTH1]]29# BASIC-NEXT:       Version:     230# BASIC-NEXT:       CuOffset:    0x123431# BASIC-NEXT:       AddressSize: [[ADDRSIZE]]32# BASIC-NEXT:       Descriptors:33# BASIC-NEXT:         - Address: 0x123434# BASIC-NEXT:           Length:  0x567835# BASIC-NEXT:         - Address: 0x123436# BASIC-NEXT:           Length:  0x567837# BASIC-NEXT:     - Format:      DWARF6438# BASIC-NEXT:       Length:      0x[[LENGTH2]]39# BASIC-NEXT:       Version:     240# BASIC-NEXT:       CuOffset:    0x1234567890ABCDEF41# BASIC-NEXT:       AddressSize: [[ADDRSIZE]]42# BASIC-NEXT:       Descriptors:43# BASIC-NEXT:         - Address: [[VARADDR]]44# BASIC-NEXT:           Length:  [[VARLEN]]45# BASIC-NEXT:         - Address: 0x123446# BASIC-NEXT:           Length:  0x567847# BASIC-NEXT: ...48 49--- !ELF50FileHeader:51  Class: ELFCLASS[[BITS]]52  Data:  ELFDATA2[[ENDIAN]]53  Type:  ET_EXEC54DWARF:55  debug_aranges:56    - Version:  257      CuOffset: 0x123458      Descriptors:59        - Address: 0x123460          Length:  0x567861        - Address: 0x123462          Length:  0x567863    - Format:   DWARF6464      Version:  265      CuOffset: 0x1234567890abcdef66      Descriptors:67        - Address: [[ADDR=0x1234]]68          Length:  [[LENGTH=0x5678]]69        - Address: 0x123470          Length:  0x567871 72## b) Test dumping an .debug_aranges section whose section header properties are overridden.73 74# RUN: yaml2obj --docnum=2 -DTYPE=SHT_STRTAB %s | obj2yaml | FileCheck %s -DTYPE=STRTAB --check-prefixes=ARANGE,SHDR75# RUN: yaml2obj --docnum=2 -DFLAGS=[SHF_ALLOC] %s | obj2yaml | FileCheck %s -DTYPE=PROGBITS --check-prefixes=ARANGE,SHDR,FLAGS76# RUN: yaml2obj --docnum=2 -DLINK='.sec' %s | obj2yaml | FileCheck %s -DTYPE=PROGBITS --check-prefixes=ARANGE,SHDR,LINK77# RUN: yaml2obj --docnum=2 -DENTSIZE=3 %s | obj2yaml | FileCheck %s -DTYPE=PROGBITS --check-prefixes=ARANGE,SHDR,ENTSIZE78# RUN: yaml2obj --docnum=2 -DINFO=3 %s | obj2yaml | FileCheck %s -DTYPE=PROGBITS --check-prefixes=ARANGE,SHDR,INFO79# RUN: yaml2obj --docnum=2 -DADDRALIGN=3 %s | obj2yaml | FileCheck %s -DTYPE=PROGBITS --check-prefixes=ARANGE,SHDR,ADDRALIGN80# RUN: yaml2obj --docnum=2 -DADDRESS=0x2020 %s | obj2yaml | FileCheck %s -DTYPE=PROGBITS --check-prefixes=ARANGE,SHDR,ADDRESS81 82#           SHDR: - Name:         .debug_aranges83#      SHDR-NEXT:   Type:         SHT_[[TYPE]]84#     FLAGS-NEXT:   Flags:        [ SHF_ALLOC ]85#      LINK-NEXT:   Link:         .sec86#   ENTSIZE-NEXT:   EntSize:      0x387#      INFO-NEXT:   Info:         0x388# ADDRALIGN-NEXT:   AddressAlign: 0x389#   ADDRESS-NEXT:   Address:      0x202090 91#      ARANGE: DWARF:92# ARANGE-NEXT:   debug_aranges:93# ARANGE-NEXT:     - Length:      0x1C94# ARANGE-NEXT:       Version:     295# ARANGE-NEXT:       CuOffset:    0x123496# ARANGE-NEXT:       AddressSize: 0x897# ARANGE-NEXT: ...98 99--- !ELF100FileHeader:101  Class: ELFCLASS64102  Data:  ELFDATA2LSB103  Type:  ET_EXEC104Sections:105  - Name:         .debug_aranges106    Type:         [[TYPE=SHT_PROGBITS]]107    Flags:        [[FLAGS=<none>]]108    Link:         [[LINK=<none>]]109    EntSize:      [[ENTSIZE=<none>]]110    Info:         [[INFO=<none>]]111    AddressAlign: [[ADDRALIGN=0]]112    Address:      [[ADDRESS=<none>]]113  - Name:         .sec114    Type:         SHT_PROGBITS115DWARF:116  debug_aranges:117    - Version:  2118      CuOffset: 0x1234119 120## c) Test dumping a .debug_aranges section whose address_size doesn't match the121## object file's address size.122 123# RUN: yaml2obj --docnum=3 %s | obj2yaml | \124# RUN:   FileCheck %s -DLENGTH=0x1C -DADDRSIZE=0x4 -DADDRLEN=0x12345678 --check-prefix=ADDRSIZE125 126#      ADDRSIZE: DWARF:127# ADDRSIZE-NEXT:   debug_aranges:128# ADDRSIZE-NEXT:     - Length:      [[LENGTH]]129# ADDRSIZE-NEXT:       Version:     2130# ADDRSIZE-NEXT:       CuOffset:    0x1234131# ADDRSIZE-NEXT:       AddressSize: [[ADDRSIZE]]132# ADDRSIZE-NEXT:       Descriptors:133# ADDRSIZE-NEXT:         - Address: [[ADDRLEN]]134# ADDRSIZE-NEXT:           Length:  [[ADDRLEN]]135# ADDRSIZE-NEXT: ...136 137--- !ELF138FileHeader:139  Class: ELFCLASS[[BITS=64]]140  Data:  ELFDATA2LSB141  Type:  ET_EXEC142DWARF:143  debug_aranges:144    - Version:     2145      CuOffset:    0x1234146      AddressSize: [[ADDRSIZE=0x4]]147      Descriptors:148        - Address: [[ADDRLEN=0x12345678]]149          Length:  [[ADDRLEN=0x12345678]]150 151# RUN: yaml2obj --docnum=3 -DBITS=32 -DADDRSIZE=0x8 -DADDRLEN=0x1234567890abcdef %s | \152# RUN:   obj2yaml | \153# RUN:   FileCheck %s -DLENGTH=0x2C -DADDRSIZE=0x8 -DADDRLEN=0x1234567890ABCDEF --check-prefix=ADDRSIZE154 155## d) Test dumping a .debug_aranges section whose length field doesn't match the actual length.156## This makes the DWARF parser fail to parse it and we will dump it as a raw content section.157 158# RUN: yaml2obj --docnum=4 %s | obj2yaml | FileCheck %s --check-prefix=RAW-CONTENT159 160#      RAW-CONTENT: Sections:161# RAW-CONTENT-NEXT:   - Name:            .debug_aranges162# RAW-CONTENT-NEXT:     Type:            SHT_PROGBITS163# RAW-CONTENT-NEXT:     AddressAlign:    0x1164# RAW-CONTENT-NEXT:     Content:         '3412000002003412000008000000000000000000000000000000000000000000'165# RAW-CONTENT-NEXT: ...166 167--- !ELF168FileHeader:169  Class: ELFCLASS64170  Data:  ELFDATA2LSB171  Type:  ET_EXEC172DWARF:173  debug_aranges:174    - Length:   0x1234175      Version:  2176      CuOffset: 0x1234177 178## e) Test dumping an empty .debug_aranges section.179 180# RUN: yaml2obj --docnum=5 %s | obj2yaml | FileCheck %s --check-prefix=EMPTY-CONTENT181 182#      EMPTY-CONTENT: DWARF:183# EMPTY-CONTENT-NEXT:   debug_aranges:   []184# EMPTY-CONTENT-NEXT: ...185 186--- !ELF187FileHeader:188  Class: ELFCLASS64189  Data:  ELFDATA2LSB190  Type:  ET_EXEC191DWARF:192  debug_aranges: []193 194## f) Show that dumping a table with a premature terminator entry still uses the195## DWARF tag.196 197# RUN: yaml2obj --docnum=1 %s -DADDR=0 -DLENGTH=0 -DBITS=64 -DENDIAN=LSB | obj2yaml | \198# RUN:   FileCheck %s --check-prefix=BASIC --implicit-check-not=Sections \199# RUN:     -DLENGTH1=3C -DLENGTH2=44 -DADDRSIZE=0x8 -DVARADDR=0x0 -DVARLEN=0x0200