86 lines
2.6 KiB
ArmAsm
86 lines
2.6 KiB
ArmAsm
|
# Test handling of DWARF5 DW_FORM_implicit_const as used by GCC.
|
||
|
|
||
|
# RUN: llvm-mc -filetype=obj -o %t -triple x86_64-pc-linux %s
|
||
|
# RUN: %lldb %t -o "expression -T -- variable_implicit_const" \
|
||
|
# RUN: -o exit | FileCheck %s
|
||
|
|
||
|
# Failing case was:
|
||
|
# error: need to add support for DW_TAG_base_type 'int' encoded with DW_ATE = 0x5, bit_size = 0
|
||
|
# CHECK: (int) $0 = 0
|
||
|
|
||
|
.bss
|
||
|
.globl variable_implicit_const
|
||
|
.type variable_implicit_const, @object
|
||
|
.size variable_implicit_const, 4
|
||
|
variable_implicit_const:
|
||
|
.long 0
|
||
|
.Lvariable_implicit_const_end:
|
||
|
.section .debug_info,"",@progbits
|
||
|
.Ldebug_info0:
|
||
|
.long .Ldebug_info0_end - .Ldebug_info0_start # Length of Compilation Unit Info
|
||
|
.Ldebug_info0_start:
|
||
|
.value 0x5 # DWARF version number
|
||
|
.byte 0x1 # DW_UT_compile
|
||
|
.byte 0x8 # Pointer Size (in bytes)
|
||
|
.long .Ldebug_abbrev0 # Offset Into Abbrev. Section
|
||
|
.uleb128 0x1 # (DIE DW_TAG_compile_unit)
|
||
|
# DW_AT_producer
|
||
|
.string "GNU C17 11.0.0 20210210 (Red Hat 11.0.0-0) -mtune=generic -march=x86-64 -g"
|
||
|
.byte 0x1d # DW_AT_language
|
||
|
# DW_AT_name
|
||
|
.string "var4.c"
|
||
|
.uleb128 0x2 # (DIE DW_TAG_variable)
|
||
|
# DW_AT_name
|
||
|
.string "variable_implicit_const"
|
||
|
.long .Ltype_int - .Ldebug_info0 # DW_AT_type
|
||
|
# DW_AT_external
|
||
|
.uleb128 0x9 # DW_AT_location
|
||
|
.byte 0x3 # DW_OP_addr
|
||
|
.quad variable_implicit_const
|
||
|
.Ltype_int:
|
||
|
.uleb128 0x3 # (DIE DW_TAG_base_type)
|
||
|
# DW_AT_byte_size
|
||
|
.byte 0x5 # DW_AT_encoding
|
||
|
.ascii "int\0" # DW_AT_name
|
||
|
.byte 0 # end of children of DIE DW_TAG_compile_unit
|
||
|
.Ldebug_info0_end:
|
||
|
.section .debug_abbrev,"",@progbits
|
||
|
.Ldebug_abbrev0:
|
||
|
.uleb128 0x1 # (abbrev code)
|
||
|
.uleb128 0x11 # (TAG: DW_TAG_compile_unit)
|
||
|
.byte 0x1 # DW_children_yes
|
||
|
.uleb128 0x25 # (DW_AT_producer)
|
||
|
.uleb128 0x8 # (DW_FORM_string)
|
||
|
.uleb128 0x13 # (DW_AT_language)
|
||
|
.uleb128 0xb # (DW_FORM_data1)
|
||
|
.uleb128 0x3 # (DW_AT_name)
|
||
|
.uleb128 0x8 # (DW_FORM_string)
|
||
|
.byte 0
|
||
|
.byte 0
|
||
|
.uleb128 0x2 # (abbrev code)
|
||
|
.uleb128 0x34 # (TAG: DW_TAG_variable)
|
||
|
.byte 0 # DW_children_no
|
||
|
.uleb128 0x3 # (DW_AT_name)
|
||
|
.uleb128 0x8 # (DW_FORM_string)
|
||
|
.uleb128 0x49 # (DW_AT_type)
|
||
|
.uleb128 0x13 # (DW_FORM_ref4)
|
||
|
.uleb128 0x3f # (DW_AT_external)
|
||
|
.uleb128 0x19 # (DW_FORM_flag_present)
|
||
|
.uleb128 0x2 # (DW_AT_location)
|
||
|
.uleb128 0x18 # (DW_FORM_exprloc)
|
||
|
.byte 0
|
||
|
.byte 0
|
||
|
.uleb128 0x3 # (abbrev code)
|
||
|
.uleb128 0x24 # (TAG: DW_TAG_base_type)
|
||
|
.byte 0 # DW_children_no
|
||
|
.uleb128 0xb # (DW_AT_byte_size)
|
||
|
.uleb128 0x21 # (DW_FORM_implicit_const)
|
||
|
.sleb128 .Lvariable_implicit_const_end - variable_implicit_const
|
||
|
.uleb128 0x3e # (DW_AT_encoding)
|
||
|
.uleb128 0xb # (DW_FORM_data1)
|
||
|
.uleb128 0x3 # (DW_AT_name)
|
||
|
.uleb128 0x8 # (DW_FORM_string)
|
||
|
.byte 0
|
||
|
.byte 0
|
||
|
.byte 0
|