112 lines
5.5 KiB
ArmAsm
112 lines
5.5 KiB
ArmAsm
## Test llvm-dwarfdump detects and reports invalid DWARF format of the file.
|
|
|
|
# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj --defsym=CUEND=1 \
|
|
# RUN: | llvm-dwarfdump - 2>&1 | FileCheck --check-prefix=CUEND %s
|
|
# CUEND: warning: DWARF unit from offset 0x0000000c incl. to offset 0x0000002b excl. tries to read DIEs at offset 0x0000002b
|
|
|
|
# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj --defsym=ABBREVSETINVALID=1 \
|
|
# RUN: | llvm-dwarfdump - 2>&1 | FileCheck --check-prefix=ABBREVSETINVALID %s
|
|
# ABBREVSETINVALID: warning: DWARF unit at offset 0x0000000c contains invalid abbreviation set offset 0x0
|
|
|
|
# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj --defsym=ABBREVNO=2 \
|
|
# RUN: | llvm-dwarfdump - 2>&1 | FileCheck --check-prefix=ABBREVNO %s
|
|
# ABBREVNO: warning: DWARF unit at offset 0x0000000c contains invalid abbreviation 2 at offset 0x00000018, valid abbreviations are 1, 5, 3-4
|
|
|
|
# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj --defsym=FORMNO=0xdead \
|
|
# RUN: | llvm-dwarfdump - 2>&1 | FileCheck --check-prefix=FORMNO %s
|
|
# FORMNO: warning: DWARF unit at offset 0x0000000c contains invalid FORM_* 0xdead at offset 0x00000018
|
|
|
|
# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj --defsym=SHORTINITLEN=1 \
|
|
# RUN: | llvm-dwarfdump - 2>&1 | FileCheck --check-prefix=SHORTINITLEN %s
|
|
# SHORTINITLEN: warning: DWARF unit at 0x0000002c cannot be parsed:
|
|
# SHORTINITLEN-NEXT: warning: unexpected end of data at offset 0x2d while reading [0x2c, 0x30)
|
|
|
|
# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj --defsym=BADTYPEUNIT=1 \
|
|
# RUN: | llvm-dwarfdump - 2>&1 | FileCheck --check-prefix=BADTYPEUNITBEFORE %s
|
|
# BADTYPEUNITBEFORE: warning: DWARF type unit at offset 0x0000002c has its relocated type_offset 0x0000002d pointing inside the header
|
|
|
|
# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj --defsym=BADTYPEUNIT=0x100 \
|
|
# RUN: | llvm-dwarfdump - 2>&1 | FileCheck --check-prefix=BADTYPEUNITAFTER %s
|
|
# BADTYPEUNITAFTER: warning: DWARF type unit from offset 0x0000002c incl. to offset 0x00000045 excl. has its relocated type_offset 0x0000012c pointing past the unit end
|
|
|
|
# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj --defsym=TOOLONG=1 \
|
|
# RUN: | llvm-dwarfdump - 2>&1 | FileCheck --check-prefix=TOOLONG %s
|
|
# TOOLONG: warning: DWARF unit from offset 0x0000000c incl. to offset 0x0000002d excl. extends past section size 0x0000002c
|
|
|
|
.section .debug_abbrev,"",@progbits
|
|
.ifndef ABBREVSETINVALID
|
|
.uleb128 1 # Abbreviation Code
|
|
.uleb128 17 # DW_TAG_compile_unit
|
|
.uleb128 1 # DW_CHILDREN_yes
|
|
.uleb128 37 # DW_AT_producer
|
|
.ifndef FORMNO
|
|
.uleb128 8 # DW_FORM_string
|
|
.else
|
|
.uleb128 FORMNO
|
|
.endif
|
|
.uleb128 0 # end abbrev 1 DW_AT_*
|
|
.uleb128 0 # end abbrev 1 DW_FORM_*
|
|
.uleb128 5 # Abbreviation Code
|
|
.uleb128 10 # DW_TAG_label
|
|
.uleb128 0 # DW_CHILDREN_no
|
|
.uleb128 0 # end abbrev 4 DW_AT_*
|
|
.uleb128 0 # end abbrev 4 DW_FORM_*
|
|
.uleb128 3 # Abbreviation Code
|
|
.uleb128 10 # DW_TAG_label
|
|
.uleb128 0 # DW_CHILDREN_no
|
|
.uleb128 0 # end abbrev 3 DW_AT_*
|
|
.uleb128 0 # end abbrev 3 DW_FORM_*
|
|
.uleb128 4 # Abbreviation Code
|
|
.uleb128 10 # DW_TAG_label
|
|
.uleb128 0 # DW_CHILDREN_no
|
|
.uleb128 0 # end abbrev 4 DW_AT_*
|
|
.uleb128 0 # end abbrev 4 DW_FORM_*
|
|
.uleb128 0 # end abbrevs section
|
|
.endif
|
|
|
|
.section .debug_info,"",@progbits
|
|
## The first CU is here to shift the next CU being really tested to non-zero CU
|
|
## offset to check more for error messages.
|
|
.long .Lcu_endp-.Lcu_startp # Length of Unit
|
|
.Lcu_startp:
|
|
.short 4 # DWARF version number
|
|
.long .debug_abbrev # Offset Into Abbrev. Section
|
|
.byte 8 # Address Size (in bytes)
|
|
.uleb128 0 # End Of Children Mark
|
|
.Lcu_endp:
|
|
|
|
.ifndef TOOLONG
|
|
.equ TOOLONG, 0
|
|
.endif
|
|
.long .Lcu_end0-.Lcu_start0 + TOOLONG # Length of Unit
|
|
.Lcu_start0:
|
|
.short 4 # DWARF version number
|
|
.long .debug_abbrev # Offset Into Abbrev. Section
|
|
.byte 8 # Address Size (in bytes)
|
|
.ifndef ABBREVNO
|
|
.uleb128 1 # Abbrev [1] DW_TAG_compile_unit
|
|
.else
|
|
.uleb128 ABBREVNO
|
|
.endif
|
|
.asciz "hand-written DWARF" # DW_AT_producer
|
|
.ifndef CUEND
|
|
.uleb128 0 # End Of Children Mark
|
|
.endif
|
|
.Lcu_end0:
|
|
|
|
.ifdef SHORTINITLEN
|
|
.byte 0x55 # Too short Length of Unit
|
|
.endif
|
|
.ifdef BADTYPEUNIT
|
|
.long .Lcu_end1-.Lcu_start1 # Length of Unit
|
|
.Lcu_start1:
|
|
.short 5 # DWARF version number
|
|
.byte 2 # DW_UT_type
|
|
.byte 8 # Address Size (in bytes)
|
|
.long .debug_abbrev # Offset Into Abbrev. Section
|
|
.quad 0xbaddefacedfacade # Type Signature
|
|
.long BADTYPEUNIT # Type DIE Offset
|
|
.uleb128 0 # End Of Children Mark
|
|
.Lcu_end1:
|
|
.endif
|