Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / tools / yaml2obj / ELF / bb-addr-map.yaml
blob73c9168084170b572d57cd76881ef5963e541295
1 ## Check how yaml2obj produces .llvm_bb_addr_map sections.
3 ## Fails on windows (https://github.com/llvm/llvm-project/issues/60013).
4 # UNSUPPORTED: system-windows
6 # RUN: yaml2obj --docnum=1 %s -o %t1
7 # RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s
9 ## Case 1: Specify content.
10 # CHECK:      Section {
11 # CHECK:        Index: 1
12 # CHECK-NEXT:   Name: .llvm_bb_addr_map (1)
13 # CHECK-NEXT:   Type: SHT_LLVM_BB_ADDR_MAP (0x6FFF4C0A)
14 # CHECK-NEXT:   Flags [ (0x0)
15 # CHECK-NEXT:   ]
16 # CHECK-NEXT:   Address: 0x0
17 # CHECK-NEXT:   Offset: 0x40
18 # CHECK-NEXT:   Size: 13
19 # CHECK-NEXT:   Link: 0
20 # CHECK-NEXT:   Info: 0
21 # CHECK-NEXT:   AddressAlignment: 0
22 # CHECK-NEXT:   EntrySize: 0
23 # CHECK-NEXT:   SectionData (
24 # CHECK-NEXT:     0000: 00000000 00000000 01010203 04
25 # CHECK-NEXT:   )
26 # CHECK-NEXT: }
28 ## Case 2: Empty.
29 # CHECK:        Name: .llvm_bb_addr_map (1)
30 # CHECK:        Size:
31 # CHECK-SAME:   {{^ 0$}}
33 ## Case 3: Specify Size only.
34 # CHECK:        Name: .llvm_bb_addr_map (1)
35 # CHECK:        SectionData (
36 # CHECK-NEXT:     0000: 00000000 00000000
37 # CHECK-NEXT:   )
39 # Case 4: Specify Entries.
40 # CHECK:        Name: .llvm_bb_addr_map (1)
41 # CHECK:        SectionData (
42 # CHECK-NEXT:     0000: 02002000 00000000 0000010B 010203
43 # CHECK-NEXT:   )
45 # Case 5: Specify Entries and omit the Address field.
46 # CHECK:        Name: .llvm_bb_addr_map (1)
47 # CHECK:        Address:
48 # CHECK-SAME:   {{^ 0x0$}}
49 # CHECK:        SectionData (
50 # CHECK-NEXT:     0000: 02000000 00000000 0000010C 010203
51 # CHECK-NEXT:   )
53 # Case 6: Override the NumBlocks field.
54 # CHECK:        Name: .llvm_bb_addr_map (1)
55 # CHECK:        SectionData (
56 # CHECK-NEXT:     0000: 02002000 00000000 0000020D 010203
57 # CHECK-NEXT:   )
59 --- !ELF
60 FileHeader:
61   Class: ELFCLASS64
62   Data:  ELFDATA2LSB
63   Type:  ET_EXEC
64 Sections:
66 ## Test the following cases:
68 ## 1) We can produce an .llvm_bb_addr_map section from a description with section
69 ##    content.
70 ##  Specify Content.
71   - Name:    '.llvm_bb_addr_map (1)'
72     Type:    SHT_LLVM_BB_ADDR_MAP
73     Content: "00000000000000000101020304"
75 ## 2) We can produce an empty .llvm_bb_addr_map section from a description
76 ##    with empty section content.
77   - Name: '.llvm_bb_addr_map (2)'
78     Type: SHT_LLVM_BB_ADDR_MAP
80 ## 3) We can produce a zero .llvm_bb_addr_map section of a specific size when
81 ##    we specify the size only.
82   - Name: '.llvm_bb_addr_map (3)'
83     Type: SHT_LLVM_BB_ADDR_MAP
84     Size: 8
86 ## 4) We can produce an .llvm_bb_addr_map section from a description with
87 ##    Entries.
88   - Name: '.llvm_bb_addr_map (4)'
89     Type: SHT_LLVM_BB_ADDR_MAP
90     Entries:
91       - Version: 2
92         Address: 0x0000000000000020
93         BBEntries:
94           - ID:            11
95             AddressOffset: 0x00000001
96             Size:          0x00000002
97             Metadata:      0x00000003
99 ## 5) When specifying the description with Entries, the 'Address' field will be
100 ##    zero when omitted.
101   - Name: '.llvm_bb_addr_map (5)'
102     Type: SHT_LLVM_BB_ADDR_MAP
103     Entries:
104       - Version: 2
105         BBEntries:
106           - ID:            12
107             AddressOffset: 0x00000001
108             Size:          0x00000002
109             Metadata:      0x00000003
111 ## 6) We can override the NumBlocks field with a value different from the
112 ##    actual number of BB Entries.
113   - Name: '.llvm_bb_addr_map (6)'
114     Type: SHT_LLVM_BB_ADDR_MAP
115     Entries:
116       - Version:   2
117         Address:   0x0000000000000020
118         NumBlocks: 2
119         BBEntries:
120           - ID:            13
121             AddressOffset: 0x00000001
122             Size:          0x00000002
123             Metadata:      0x00000003
125 ## Check we can't use Entries at the same time as either Content or Size.
126 # RUN: not yaml2obj --docnum=2 -DCONTENT="00" %s 2>&1 | FileCheck %s --check-prefix=INVALID
127 # RUN: not yaml2obj --docnum=2 -DSIZE="0" %s 2>&1 | FileCheck %s --check-prefix=INVALID
129 # INVALID: error: "Entries" cannot be used with "Content" or "Size"
131 --- !ELF
132 FileHeader:
133   Class: ELFCLASS64
134   Data:  ELFDATA2LSB
135   Type:  ET_EXEC
136 Sections:
137 ##  Specify Content and Size
138   - Name:    '.llvm_bb_addr_map'
139     Type:    SHT_LLVM_BB_ADDR_MAP
140     Entries: []
141     Content: [[CONTENT=<none>]]
142     Size:    [[SIZE=<none>]]
144 ## Check that yaml2obj generates a warning when we use unsupported versions.
145 # RUN: yaml2obj --docnum=3  %s 2>&1 | FileCheck %s --check-prefix=INVALID-VERSION
146 # INVALID-VERSION: warning: unsupported SHT_LLVM_BB_ADDR_MAP version: 3; encoding using the most recent version
148 --- !ELF
149 FileHeader:
150   Class: ELFCLASS64
151   Data:  ELFDATA2LSB
152   Type:  ET_EXEC
153 Sections:
154   - Name: '.llvm_bb_addr_map'
155     Type: SHT_LLVM_BB_ADDR_MAP
156     Entries:
157 ##  Specify unsupported version
158       - Version: 3