## Test how we dump SHT_LLVM_CALL_GRAPH_PROFILE sections for 32 and 64-bit targets.

## Test we use the "Entries" property when it is possible to dump values correctly.

# RUN: yaml2obj -D BITS=64 -D ENCODE=LSB %s -o %t.le64
# RUN: obj2yaml %t.le64 | FileCheck %s --check-prefix=BASIC
# RUN: yaml2obj -D BITS=64 -D ENCODE=MSB %s -o %t.be64
# RUN: obj2yaml %t.be64 | FileCheck %s --check-prefix=BASIC
# RUN: yaml2obj -D BITS=32 -D ENCODE=LSB %s -o %t.le32
# RUN: obj2yaml %t.le32 | FileCheck %s --check-prefix=BASIC
# RUN: yaml2obj -D BITS=32 -D ENCODE=MSB %s -o %t.be32
# RUN: obj2yaml %t.be32 | FileCheck %s --check-prefix=BASIC

# BASIC:      Sections:
# BASIC-NEXT:   - Name: .llvm.call-graph-profile
# BASIC-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE
# BASIC-NEXT:     Link: .symtab
# BASIC-NEXT:     Entries:
# BASIC-NEXT:       - From:   foo
# BASIC-NEXT:         To:     bar
# BASIC-NEXT:         Weight: 89
# BASIC-NEXT:       - From:   bar
# BASIC-NEXT:         To:     foo
# BASIC-NEXT:         Weight: 98
# BASIC-NEXT: Symbols:

--- !ELF
FileHeader:
  Class: ELFCLASS[[BITS]]
  Data:  ELFDATA2[[ENCODE]]
  Type:  ET_DYN
Sections:
  - Name: .llvm.call-graph-profile
    Type: SHT_LLVM_CALL_GRAPH_PROFILE
    Entries:
      - From:   1
        To:     2
        Weight: 89
      - From:   2
        To:     1
        Weight: 98
Symbols:
  - Name: foo
  - Name: bar

## Check how we handle broken cases.

# RUN: yaml2obj --docnum=2 %s -o %t.invalid
# RUN: obj2yaml %t.invalid | FileCheck %s --check-prefix=INVALID

# INVALID:      --- !ELF
# INVALID-NEXT: FileHeader:
# INVALID-NEXT:   Class: ELFCLASS32
# INVALID-NEXT:   Data:  ELFDATA2MSB
# INVALID-NEXT:   Type:  ET_DYN
# INVALID-NEXT: Sections:
# INVALID-NEXT:   - Name: .empty
# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE
# INVALID-NEXT:     Link: .symtab
# INVALID-NEXT:   - Name: .multiple.16.valid
# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE
# INVALID-NEXT:     Link: .symtab
# INVALID-NEXT:     Entries:
# INVALID-NEXT:       - From:   foo
# INVALID-NEXT:         To:     bar
# INVALID-NEXT:         Weight: 3
# INVALID-NEXT:   - Name: .non.multiple.16
# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE
# INVALID-NEXT:     Link: .symtab
# INVALID-NEXT:     Content: '0000000100000002000000000000000300'
# INVALID-NEXT:   - Name: .multiple.16.invalid
# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE
# INVALID-NEXT:     Link: .symtab
# INVALID-NEXT:     Content: 00112233445566778899AABBCCDDEEFF
# INVALID-NEXT:   - Name: .unknown.symbol.1
# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE
# INVALID-NEXT:     Link: .symtab
# INVALID-NEXT:     Content: 000000FF000000020000000000000003
# INVALID-NEXT:   - Name: .unknown.symbol.2
# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE
# INVALID-NEXT:     Link: .symtab
# INVALID-NEXT:     Content: 00000001000000FF0000000000000003
# INVALID-NEXT:   - Name: .link.to.symtable
# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE
# INVALID-NEXT:     Link: .symtab
# INVALID-NEXT:     Entries:
# INVALID-NEXT:       - From:   foo
# INVALID-NEXT:         To:     bar
# INVALID-NEXT:         Weight: 0
# INVALID-NEXT:   - Name: .link.to.non.symtable.1
# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE
# INVALID-NEXT:     Content: '00000001000000020000000000000000'
# INVALID-NEXT:   - Name: .link.to.non.symtable.2
# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE
# INVALID-NEXT:     Link: .empty
# INVALID-NEXT:     Content: '00000001000000020000000000000000'
# INVALID-NEXT:   - Name:    .zero.entry.size
# INVALID-NEXT:     Type:    SHT_LLVM_CALL_GRAPH_PROFILE
# INVALID-NEXT:     Link:    .symtab
# INVALID-NEXT:     EntSize: 0x0
# INVALID-NEXT:     Entries:
# INVALID-NEXT:       - From:   foo
# INVALID-NEXT:         To:     bar
# INVALID-NEXT:         Weight: 0
# INVALID-NEXT:   - Name: .invalid.entry.size
# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE
# INVALID-NEXT:     Link: .symtab
# INVALID-NEXT:     EntSize: 0x1
# INVALID-NEXT:     Entries:
# INVALID-NEXT:       - From:   foo
# INVALID-NEXT:         To:     bar
# INVALID-NEXT:         Weight: 0
# INVALID-NEXT: Symbols:
# INVALID-NEXT:   - Name: foo
# INVALID-NEXT:   - Name: bar

--- !ELF
FileHeader:
  Class: ELFCLASS32
  Data:  ELFDATA2MSB
  Type:  ET_DYN
Sections:
## Case 1: Content is empty.
  - Name: .empty
    Type: SHT_LLVM_CALL_GRAPH_PROFILE
## Case 2: Check that we use the "Entries" property to dump the data when it
##         has a size that is a multiple of 16 and is valid (it is possible to match
##         symbol indexes to symbols), but fallback to dumping the whole section
##         using the "Content" property otherwise.
## TODO: Teach yaml2obj to accept 'Size' key for SHT_LLVM_CALL_GRAPH_PROFILE
##       sections and use Entries for cases below.
  - Name: .multiple.16.valid
    Type: SHT_LLVM_CALL_GRAPH_PROFILE
    Content: "00000001000000020000000000000003"
  - Name: .non.multiple.16
    Type: SHT_LLVM_CALL_GRAPH_PROFILE
    Content: "0000000100000002000000000000000300"
  - Name: .multiple.16.invalid
    Type: SHT_LLVM_CALL_GRAPH_PROFILE
    Content: "00112233445566778899AABBCCDDEEFF"
## Case 3: Check we use the "Content" property when unable to match a
##         symbol index to a symbol.
  - Name: .unknown.symbol.1
    Type: SHT_LLVM_CALL_GRAPH_PROFILE
    Entries:
      - From:   0xff
        To:     2
        Weight: 3
  - Name: .unknown.symbol.2
    Type: SHT_LLVM_CALL_GRAPH_PROFILE
    Entries:
      - From:   1
        To:     0xff
        Weight: 3
## Case 4: Check we use the "Content" property when a linked section
##         is not a symbol table.
  - Name: .link.to.symtable
    Type: SHT_LLVM_CALL_GRAPH_PROFILE
    Entries:
      - From:   1
        To:     2
        Weight: 0
  - Name: .link.to.non.symtable.1
    Type: SHT_LLVM_CALL_GRAPH_PROFILE
    Link: 0
    Entries:
      - From:   1
        To:     2
        Weight: 0
  - Name: .link.to.non.symtable.2
    Type: SHT_LLVM_CALL_GRAPH_PROFILE
    Link: 1
    Entries:
      - From:   1
        To:     2
        Weight: 0
## Case 5: Check we can dump a section that has a sh_entsize that is not a multiple of 16.
##         Check that in these cases we print the "EntSize" key.
  - Name: .zero.entry.size
    Type: SHT_LLVM_CALL_GRAPH_PROFILE
    EntSize: 0
    Entries:
      - From:   1
        To:     2
        Weight: 0
  - Name: .invalid.entry.size
    Type: SHT_LLVM_CALL_GRAPH_PROFILE
    EntSize: 1
    Entries:
      - From:   1
        To:     2
        Weight: 0
Symbols:
  - Name: foo
  - Name: bar
