## Check how yaml2obj produces PGO Analysis Map in .llvm_bb_addr_map section.

# RUN: yaml2obj --docnum=1 %s -o %t1
# RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s

# Case 4: Specify Entries.
# CHECK:        Name: .llvm_bb_addr_map (1)
# CHECK:        SectionData (
# CHECK-NEXT:     0000: 02072000 00000000 0000010B 010203E8
# CHECK-NEXT:     0010: 07E80702 0CEEDDBB F70E0D91 A2C48801
# CHECK-NEXT:   )

# Case 7: Not including a field which is enabled in feature doesn't emit value
# CHECK:        Name: .llvm_bb_addr_map (1)
# CHECK:        SectionData (
# CHECK-NEXT:     0000: 02012000 00000000 0000020D 010203 |
# CHECK-NEXT:   )

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_EXEC
Sections:

## Test the following cases:

## 1) We can produce an .llvm_bb_addr_map section from a description with
##    Entries and PGO Analysis data.
  - Name: '.llvm_bb_addr_map (1)'
    Type: SHT_LLVM_BB_ADDR_MAP
    Entries:
      - Version: 2
        Feature: 0x7
        BBRanges:
          - BaseAddress: 0x0000000000000020
            BBEntries:
              - ID:            11
                AddressOffset: 0x00000001
                Size:          0x00000002
                Metadata:      0x00000003
    PGOAnalyses:
      - FuncEntryCount: 1000
        PGOBBEntries:
          - BBFreq:        1000
            Successors:
              - ID:        12
                BrProb:    0xeeeeeeee
              - ID:        13
                BrProb:    0x11111111

## 2) According to feature we have FuncEntryCount but none is provided in yaml
  - Name: '.llvm_bb_addr_map (2)'
    Type: SHT_LLVM_BB_ADDR_MAP
    Entries:
      - Version: 2
        Feature: 0x1
        BBRanges:
          - BaseAddress:   0x0000000000000020
            NumBlocks: 2
            BBEntries:
             - ID:            13
               AddressOffset: 0x00000001
               Size:          0x00000002
               Metadata:      0x00000003

## Check that yaml2obj generates a warning when we use unsupported feature.
# RUN: yaml2obj --docnum=2  %s 2>&1 | FileCheck %s --check-prefix=INVALID-FEATURE
# INVALID-FEATURE: warning: invalid encoding for BBAddrMap::Features: 0xff

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_EXEC
Sections:
  - Name: '.llvm_bb_addr_map'
    Type: SHT_LLVM_BB_ADDR_MAP
    Entries:
      - Version: 2
##  Specify unsupported feature
        Feature: 0xFF

