[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / tools / yaml2obj / ELF / bb-addr-map.yaml
blob8318fc4df1da30929a98014fc8671b42de62b510
1 ## Check how yaml2obj produces .llvm_bb_addr_map sections.
3 # RUN: yaml2obj --docnum=1 %s -o %t1
4 # RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s
6 ## Case 1: Specify content.
7 # CHECK:      Section {
8 # CHECK:        Index: 1
9 # CHECK-NEXT:   Name: .llvm_bb_addr_map (1)
10 # CHECK-NEXT:   Type: SHT_LLVM_BB_ADDR_MAP (0x6FFF4C08)
11 # CHECK-NEXT:   Flags [ (0x0)
12 # CHECK-NEXT:   ]
13 # CHECK-NEXT:   Address: 0x0
14 # CHECK-NEXT:   Offset: 0x40
15 # CHECK-NEXT:   Size: 12
16 # CHECK-NEXT:   Link: 0
17 # CHECK-NEXT:   Info: 0
18 # CHECK-NEXT:   AddressAlignment: 0
19 # CHECK-NEXT:   EntrySize: 0
20 # CHECK-NEXT:   SectionData (
21 # CHECK-NEXT:     0000: 00000000 00000000 01010203
22 # CHECK-NEXT:   )
23 # CHECK-NEXT: }
25 ## Case 2: Empty.
26 # CHECK:        Name: .llvm_bb_addr_map (1)
27 # CHECK:        Size:
28 # CHECK-SAME:   {{^ 0$}}
30 ## Case 3: Specify Size only.
31 # CHECK:        Name: .llvm_bb_addr_map (1)
32 # CHECK:        SectionData (
33 # CHECK-NEXT:     0000: 00000000 00000000
34 # CHECK-NEXT:   )
36 # Case 4: Specify Entries.
37 # CHECK:        Name: .llvm_bb_addr_map (1)
38 # CHECK:        SectionData (
39 # CHECK-NEXT:     0000: 20000000 00000000 01010203
40 # CHECK-NEXT:   )
42 # Case 5: Specify Entries and omit the Address field.
43 # CHECK:        Name: .llvm_bb_addr_map (1)
44 # CHECK:        Address:
45 # CHECK-SAME:   {{^ 0x0$}}
46 # CHECK:        SectionData (
47 # CHECK-NEXT:     0000: 00000000 00000000 01010203
48 # CHECK-NEXT:   )
50 # Case 6: Override the NumBlocks field.
51 # CHECK:        Name: .llvm_bb_addr_map (1)
52 # CHECK:        SectionData (
53 # CHECK-NEXT:     0000: 20000000 00000000 02010203
54 # CHECK-NEXT:   )
56 --- !ELF
57 FileHeader:
58   Class: ELFCLASS64
59   Data:  ELFDATA2LSB
60   Type:  ET_EXEC
61 Sections:
63 ## Test the following cases:
65 ## 1) We can produce an .llvm_bb_addr_map section from a description with section
66 ##    content.
67 ##  Specify Content.
68   - Name:    '.llvm_bb_addr_map (1)'
69     Type:    SHT_LLVM_BB_ADDR_MAP
70     Content: "000000000000000001010203"
72 ## 2) We can produce an empty .llvm_bb_addr_map section from a description
73 ##    with empty section content.
74   - Name:    '.llvm_bb_addr_map (2)'
75     Type:    SHT_LLVM_BB_ADDR_MAP
77 ## 3) We can produce a zero .llvm_bb_addr_map section of a specific size when
78 ##    we specify the size only.
79   - Name:    '.llvm_bb_addr_map (3)'
80     Type:    SHT_LLVM_BB_ADDR_MAP
81     Size:    8
83 ## 4) We can produce an .llvm_bb_addr_map section from a description with
84 ##    Entries.
85   - Name:    '.llvm_bb_addr_map (4)'
86     Type:    SHT_LLVM_BB_ADDR_MAP
87     Entries:
88       - Address:   0x0000000000000020
89         BBEntries:
90           - AddressOffset:    0x00000001
91             Size:             0x00000002
92             Metadata:         0x00000003
94 ## 5) When specifying the description with Entries, the 'Address' field will be
95 ##    zero when omitted.
96   - Name:    '.llvm_bb_addr_map (5)'
97     Type:    SHT_LLVM_BB_ADDR_MAP
98     Entries:
99       - BBEntries:
100           - AddressOffset:    0x00000001
101             Size:             0x00000002
102             Metadata:         0x00000003
104 ## 6) We can override the NumBlocks field with a value different from the
105 ##    actual number of BB Entries.
106   - Name:    '.llvm_bb_addr_map (6)'
107     Type:    SHT_LLVM_BB_ADDR_MAP
108     Entries:
109       - Address:   0x0000000000000020
110         NumBlocks: 2
111         BBEntries:
112           - AddressOffset:    0x00000001
113             Size:             0x00000002
114             Metadata:         0x00000003
116 ## Check we can't use Entries at the same time as either Content or Size.
117 # RUN: not yaml2obj --docnum=2 -DCONTENT="00" %s 2>&1 | FileCheck %s --check-prefix=INVALID
118 # RUN: not yaml2obj --docnum=2 -DSIZE="0" %s 2>&1 | FileCheck %s --check-prefix=INVALID
120 # INVALID: error: "Entries" cannot be used with "Content" or "Size"
122 --- !ELF
123 FileHeader:
124   Class: ELFCLASS64
125   Data:  ELFDATA2LSB
126   Type:  ET_EXEC
127 Sections:
128 ##  Specify Content and Size
129   - Name:    '.llvm_bb_addr_map'
130     Type:    SHT_LLVM_BB_ADDR_MAP
131     Entries: []
132     Content: [[CONTENT=<none>]]
133     Size:    [[SIZE=<none>]]