1*8a64d80aSDavid Spickett# Test handling of DWARF5 DW_FORM_implicit_const as used by GCC. 2*8a64d80aSDavid Spickett 3*8a64d80aSDavid Spickett# RUN: llvm-mc -filetype=obj -o %t -triple x86_64-pc-linux %s 4*8a64d80aSDavid Spickett# RUN: %lldb %t -o "expression -T -- variable_implicit_const" \ 5*8a64d80aSDavid Spickett# RUN: -o exit | FileCheck %s 6*8a64d80aSDavid Spickett 7*8a64d80aSDavid Spickett# Failing case was: 8*8a64d80aSDavid Spickett# error: need to add support for DW_TAG_base_type 'int' encoded with DW_ATE = 0x5, bit_size = 0 9*8a64d80aSDavid Spickett# CHECK: (int) $0 = 0 10*8a64d80aSDavid Spickett 11*8a64d80aSDavid Spickett .bss 12*8a64d80aSDavid Spickett .globl variable_implicit_const 13*8a64d80aSDavid Spickett .type variable_implicit_const, @object 14*8a64d80aSDavid Spickett .size variable_implicit_const, 4 15*8a64d80aSDavid Spickettvariable_implicit_const: 16*8a64d80aSDavid Spickett .long 0 17*8a64d80aSDavid Spickett.Lvariable_implicit_const_end: 18*8a64d80aSDavid Spickett .section .debug_info,"",@progbits 19*8a64d80aSDavid Spickett.Ldebug_info0: 20*8a64d80aSDavid Spickett .long .Ldebug_info0_end - .Ldebug_info0_start # Length of Compilation Unit Info 21*8a64d80aSDavid Spickett.Ldebug_info0_start: 22*8a64d80aSDavid Spickett .value 0x5 # DWARF version number 23*8a64d80aSDavid Spickett .byte 0x1 # DW_UT_compile 24*8a64d80aSDavid Spickett .byte 0x8 # Pointer Size (in bytes) 25*8a64d80aSDavid Spickett .long .Ldebug_abbrev0 # Offset Into Abbrev. Section 26*8a64d80aSDavid Spickett .uleb128 0x1 # (DIE DW_TAG_compile_unit) 27*8a64d80aSDavid Spickett # DW_AT_producer 28*8a64d80aSDavid Spickett .string "GNU C17 11.0.0 20210210 (Red Hat 11.0.0-0) -mtune=generic -march=x86-64 -g" 29*8a64d80aSDavid Spickett .byte 0x1d # DW_AT_language 30*8a64d80aSDavid Spickett # DW_AT_name 31*8a64d80aSDavid Spickett .string "var4.c" 32*8a64d80aSDavid Spickett .uleb128 0x2 # (DIE DW_TAG_variable) 33*8a64d80aSDavid Spickett # DW_AT_name 34*8a64d80aSDavid Spickett .string "variable_implicit_const" 35*8a64d80aSDavid Spickett .long .Ltype_int - .Ldebug_info0 # DW_AT_type 36*8a64d80aSDavid Spickett # DW_AT_external 37*8a64d80aSDavid Spickett .uleb128 0x9 # DW_AT_location 38*8a64d80aSDavid Spickett .byte 0x3 # DW_OP_addr 39*8a64d80aSDavid Spickett .quad variable_implicit_const 40*8a64d80aSDavid Spickett.Ltype_int: 41*8a64d80aSDavid Spickett .uleb128 0x3 # (DIE DW_TAG_base_type) 42*8a64d80aSDavid Spickett # DW_AT_byte_size 43*8a64d80aSDavid Spickett .byte 0x5 # DW_AT_encoding 44*8a64d80aSDavid Spickett .ascii "int\0" # DW_AT_name 45*8a64d80aSDavid Spickett .byte 0 # end of children of DIE DW_TAG_compile_unit 46*8a64d80aSDavid Spickett.Ldebug_info0_end: 47*8a64d80aSDavid Spickett .section .debug_abbrev,"",@progbits 48*8a64d80aSDavid Spickett.Ldebug_abbrev0: 49*8a64d80aSDavid Spickett .uleb128 0x1 # (abbrev code) 50*8a64d80aSDavid Spickett .uleb128 0x11 # (TAG: DW_TAG_compile_unit) 51*8a64d80aSDavid Spickett .byte 0x1 # DW_children_yes 52*8a64d80aSDavid Spickett .uleb128 0x25 # (DW_AT_producer) 53*8a64d80aSDavid Spickett .uleb128 0x8 # (DW_FORM_string) 54*8a64d80aSDavid Spickett .uleb128 0x13 # (DW_AT_language) 55*8a64d80aSDavid Spickett .uleb128 0xb # (DW_FORM_data1) 56*8a64d80aSDavid Spickett .uleb128 0x3 # (DW_AT_name) 57*8a64d80aSDavid Spickett .uleb128 0x8 # (DW_FORM_string) 58*8a64d80aSDavid Spickett .byte 0 59*8a64d80aSDavid Spickett .byte 0 60*8a64d80aSDavid Spickett .uleb128 0x2 # (abbrev code) 61*8a64d80aSDavid Spickett .uleb128 0x34 # (TAG: DW_TAG_variable) 62*8a64d80aSDavid Spickett .byte 0 # DW_children_no 63*8a64d80aSDavid Spickett .uleb128 0x3 # (DW_AT_name) 64*8a64d80aSDavid Spickett .uleb128 0x8 # (DW_FORM_string) 65*8a64d80aSDavid Spickett .uleb128 0x49 # (DW_AT_type) 66*8a64d80aSDavid Spickett .uleb128 0x13 # (DW_FORM_ref4) 67*8a64d80aSDavid Spickett .uleb128 0x3f # (DW_AT_external) 68*8a64d80aSDavid Spickett .uleb128 0x19 # (DW_FORM_flag_present) 69*8a64d80aSDavid Spickett .uleb128 0x2 # (DW_AT_location) 70*8a64d80aSDavid Spickett .uleb128 0x18 # (DW_FORM_exprloc) 71*8a64d80aSDavid Spickett .byte 0 72*8a64d80aSDavid Spickett .byte 0 73*8a64d80aSDavid Spickett .uleb128 0x3 # (abbrev code) 74*8a64d80aSDavid Spickett .uleb128 0x24 # (TAG: DW_TAG_base_type) 75*8a64d80aSDavid Spickett .byte 0 # DW_children_no 76*8a64d80aSDavid Spickett .uleb128 0xb # (DW_AT_byte_size) 77*8a64d80aSDavid Spickett .uleb128 0x21 # (DW_FORM_implicit_const) 78*8a64d80aSDavid Spickett .sleb128 .Lvariable_implicit_const_end - variable_implicit_const 79*8a64d80aSDavid Spickett .uleb128 0x3e # (DW_AT_encoding) 80*8a64d80aSDavid Spickett .uleb128 0xb # (DW_FORM_data1) 81*8a64d80aSDavid Spickett .uleb128 0x3 # (DW_AT_name) 82*8a64d80aSDavid Spickett .uleb128 0x8 # (DW_FORM_string) 83*8a64d80aSDavid Spickett .byte 0 84*8a64d80aSDavid Spickett .byte 0 85*8a64d80aSDavid Spickett .byte 0 86