# 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