DW_OP_call_ref_dwarf64.s 1.77 KB
# RUN: llvm-mc -triple x86_64 %s -filetype=obj -o %t.o
# RUN: llvm-dwarfdump -debug-info %t.o | FileCheck %s
# RUN: llvm-dwarfdump -verify %t.o | FileCheck %s --check-prefix=VERIFY

# CHECK: DW_TAG_variable
# CHECK-NEXT: DW_AT_location (DW_OP_call_ref 0x1100223344)

# VERIFY-NOT: error: DIE contains invalid DWARF expression:
# VERIFY: No errors.

    .section .debug_abbrev,"",@progbits
    .uleb128 1                      # Abbreviation Code
    .uleb128 17                     # DW_TAG_compile_unit
    .byte 1                         # DW_CHILDREN_yes
    .byte 0                         # EOM(1)
    .byte 0                         # EOM(2)
    .uleb128 5                      # Abbreviation Code
    .uleb128 52                     # DW_TAG_variable
    .byte 0                         # DW_CHILDREN_no
    .uleb128 2                      # DW_AT_location
    .uleb128 24                     # DW_FORM_exprloc
    .byte 0                         # EOM(1)
    .byte 0                         # EOM(2)
    .byte 0                         # EOM(3)

    .section .debug_info,"",@progbits
    .long 0xffffffff                # DWARF64 mark
    .quad .Lcu_end-.Lcu_start       # Length of Unit
.Lcu_start:
    .short 5                        # DWARF version number
    .byte 1                         # DW_UT_compile
    .byte 8                         # Address Size
    .quad .debug_abbrev             # Offset Into Abbrev. Section
    .uleb128 1                      # Abbrev [1] DW_TAG_compile_unit
    .uleb128 5                      # Abbrev [5] DW_TAG_variable
    .byte .Lloc_end-.Lloc_begin     # DW_AT_location
.Lloc_begin:
    .byte 154                       # DW_OP_call_ref
    .quad 0x1100223344              # Offset
.Lloc_end:
    .byte 0                         # End Of Children Mark
.Lcu_end: