xref: /llvm-project/llvm/test/tools/llvm-dwarfdump/X86/locstats-bytes-overflow.yaml (revision 40c2bdf6d191fa475a968692f317e660d6425be6)
1# RUN: yaml2obj %s -o %t.o
2# RUN: llvm-dwarfdump --statistics %t.o 2>&1 | FileCheck %s
3# RUN: rm %t.o
4
5## Check that we are covering the situation when a stat field overflows.
6##
7## The yaml represents this DWARF:
8##
9## DW_TAG_compile_unit
10##   DW_AT_low_pc (0x0000000000000000)
11##   DW_AT_high_pc  (0x000000000000000b)
12##
13##   DW_TAG_subprogram
14##     DW_AT_low_pc (0x0000000000000000)
15##     DW_AT_high_pc  (0xffffffffffffffff)
16##       DW_TAG_variable
17##         DW_AT_location (0x00000023:
18##            [0x0000000000000003, 0x0000000000000005): DW_OP_reg2 RCX)
19##   DW_TAG_subprogram
20##     DW_AT_low_pc    (0x0000000000000000)
21##     DW_AT_high_pc   (0xffffffffffffffff)
22##     DW_TAG_variable
23##       DW_AT_location        (0x00000023:
24##             [0x0000000000000003, 0x0000000000000005): DW_OP_reg2 RCX)
25
26# CHECK: "sum_all_variables(#bytes in parent scope)": "overflowed"
27
28--- !ELF
29FileHeader:
30  Class:   ELFCLASS[[BITS=64]]
31  Data:    ELFDATA2LSB
32  Type:    ET_EXEC
33  Machine: EM_X86_64
34Sections:
35  - Name:         .debug_loc
36    Type:         SHT_PROGBITS
37    AddressAlign: 0x01
38    Content:      '00000000000000000600000000000000010055000000000000000000000000000000000300000000000000050000000000000001005200000000000000000000000000000000'
39  - Name:         .debug_ranges
40    Type:         SHT_PROGBITS
41    AddressAlign: 0x01
42    Content:      '000000000000000003000000000000000500000000000000080000000000000000000000000000000000000000000000'
43DWARF:
44  debug_abbrev:
45    - Table:
46      - Code:     1
47        Tag:      DW_TAG_compile_unit
48        Children: DW_CHILDREN_yes
49        Attributes:
50          - Attribute: DW_AT_low_pc
51            Form:      DW_FORM_addr
52          - Attribute: DW_AT_high_pc
53            Form:      DW_FORM_data8
54      - Code:     2
55        Tag:      DW_TAG_subprogram
56        Children: DW_CHILDREN_yes
57        Attributes:
58          - Attribute: DW_AT_low_pc
59            Form:      DW_FORM_addr
60          - Attribute: DW_AT_high_pc
61            Form:      DW_FORM_data8
62      - Code:     3
63        Tag:      DW_TAG_variable
64        Children: DW_CHILDREN_no
65        Attributes:
66          - Attribute: DW_AT_location
67            Form:      DW_FORM_sec_offset
68  debug_info:
69    - Version:    4
70      AbbrOffset: 0x00
71      Entries:
72        - AbbrCode: 1 ## DW_TAG_compile_unit
73          Values:
74            - Value: 0x00 ## DW_AT_low_pc
75            - Value: 0x0b ## DW_AT_high_pc
76        - AbbrCode: 2 ## DW_TAG_subprogram
77          Values:
78            - Value: 0x00 ## DW_AT_low_pc
79            - Value: 0xFFFFFFFFFFFFFFFF ## DW_AT_high_pc
80        - AbbrCode: 3 ## DW_TAG_variable
81          Values:
82            - Value: 0x23 ## DW_AT_sec_offset
83        - AbbrCode: 0 ## NULL
84        - AbbrCode: 2 ## DW_TAG_subprogram
85          Values:
86            - Value: 0x00 ## DW_AT_low_pc
87            - Value: 0xFFFFFFFFFFFFFFFF ## DW_AT_high_pc
88        - AbbrCode: 3 ## DW_TAG_variable
89          Values:
90            - Value: 0x23 ## DW_AT_sec_offset
91        - AbbrCode: 0 ## NULL
92        - AbbrCode: 0 ## NULL
93