## Check how yaml2obj produces SHT_LLVM_ADDRSIG sections.

## Check we can describe SHT_LLVM_ADDRSIG using the "Symbols" tag. We can define
## symbols either using names or indexes.

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

# SYMBOLS:      Section {
# SYMBOLS:        Index: 1
# SYMBOLS-NEXT:   Name: .llvm_addrsig
# SYMBOLS-NEXT:   Type: SHT_LLVM_ADDRSIG
# SYMBOLS-NEXT:   Flags [
# SYMBOLS-NEXT:   ]
# SYMBOLS-NEXT:   Address: 0x0
# SYMBOLS-NEXT:   Offset: 0x40
# SYMBOLS-NEXT:   Size: 4
# SYMBOLS-NEXT:   Link: 2
# SYMBOLS-NEXT:   Info: 0
# SYMBOLS-NEXT:   AddressAlignment: 0
# SYMBOLS-NEXT:   EntrySize: 0
# SYMBOLS-NEXT:   SectionData (
# SYMBOLS-NEXT:     0000: 01020102
# SYMBOLS-NEXT:   )
# SYMBOLS-NEXT: }

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig
    Type: SHT_LLVM_ADDRSIG
    Symbols:
      - Name: foo
      - Name: bar
      - Index: 1
      - Index: 2
Symbols:
  - Name:    foo
    Type:    STT_FUNC
    Binding: STB_GLOBAL
  - Name:    bar
    Type:    STT_FUNC
    Binding: STB_GLOBAL

## We can't specify both "Index" and "Name" when defining a symbol.

# RUN: not yaml2obj --docnum=2 %s 2>&1 | FileCheck %s --check-prefix=INDEX-NAME

# INDEX-NAME: error: "Index" and "Name" cannot be used together when defining a symbol

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig
    Type: SHT_LLVM_ADDRSIG
    Symbols:
      - Name: foo
        Index: 1
Symbols:
  - Name:    foo
    Type:    STT_FUNC
    Binding: STB_GLOBAL

## Check we report an error if an unknown symbol is referenced in the
## SHT_LLVM_ADDRSIG section description.

# RUN: not yaml2obj --docnum=3 %s 2>&1 | FileCheck %s --check-prefix=SYMBOL-UNKNOWN

# SYMBOL-UNKNOWN: error: unknown symbol referenced: 'foo' by YAML section '.llvm_addrsig'
# SYMBOL-UNKNOWN: error: unknown symbol referenced: 'bar' by YAML section '.llvm_addrsig'

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig
    Type: SHT_LLVM_ADDRSIG
    Symbols:
      - Name: foo
      - Name: bar

## Check we can specify any arbitrary symbol indices.

# RUN: yaml2obj --docnum=4 %s -o %t4
# RUN: llvm-readobj --sections --section-data %t4 | FileCheck %s --check-prefix=SYMBOL-INDEX

# SYMBOL-INDEX:      Type: SHT_LLVM_ADDRSIG
# SYMBOL-INDEX:      SectionData (
# SYMBOL-INDEX-NEXT:   0000: 00FF01C4 E6888901 FFFFFFFF 0F
# SYMBOL-INDEX-NEXT: )

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig
    Type: SHT_LLVM_ADDRSIG
    Symbols:
      - Index: 0
      - Index: 255
      - Index: 0x11223344
## 0xFFFFFFFF is a maximum allowed index value.
      - Index: 0xFFFFFFFF

## Check that the maximum symbol index size is 32 bits.

# RUN: not yaml2obj --docnum=5 %s 2>&1 | FileCheck %s --check-prefix=SYMBOL-INDEX-OVERFLOW

# SYMBOL-INDEX-OVERFLOW: error: out of range hex32 number

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig
    Type: SHT_LLVM_ADDRSIG
    Symbols:
      - Index: 0x1122334455

## Check we can use the "Content" tag to specify any data for SHT_LLVM_ADDRSIG sections.

# RUN: yaml2obj --docnum=6 %s -o %t6
# RUN: llvm-readobj --sections --section-data %t6 | FileCheck %s --check-prefix=CONTENT

# CONTENT:      Type: SHT_LLVM_ADDRSIG
# CONTENT:      Size:
# CONTENT-SAME: 5
# CONTENT:      SectionData (
# CONTENT-NEXT:   0000: 11223344 55
# CONTENT-NEXT: )

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig
    Type: SHT_LLVM_ADDRSIG
    Content: "1122334455"

## Either "Content" or "Symbols" must be specifed for SHT_LLVM_ADDRSIG sections.

# RUN: not yaml2obj --docnum=7 %s 2>&1 | FileCheck %s --check-prefix=NO-TAGS

# NO-TAGS: error: one of "Content", "Size" or "Symbols" must be specified

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig
    Type: SHT_LLVM_ADDRSIG

## "Content" and "Symbols" cannot be used together to describe the SHT_LLVM_ADDRSIG section.

# RUN: not yaml2obj --docnum=8 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-SYMBOLS

# CONTENT-SYMBOLS: "Symbols" cannot be used with "Content" or "Size"

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig
    Type: SHT_LLVM_ADDRSIG
    Content: ""
    Symbols:

## Check we can set an arbitrary sh_link value for SHT_LLVM_ADDRSIG sections.

# RUN: yaml2obj --docnum=9 %s -o %t9
# RUN: llvm-readobj --sections %t9 | FileCheck %s --check-prefix=LINK

# LINK:      Name: .llvm_addrsig
# LINK:      Link:
# LINK-SAME:       123{{$}}

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig
    Type: SHT_LLVM_ADDRSIG
    Link: 123
    Content: ""

## Check we can use only "Size" to create a SHT_LLVM_ADDRSIG section.

# RUN: yaml2obj --docnum=10 %s -o %t10
# RUN: llvm-readobj --sections --section-data %t10 | FileCheck %s --check-prefix=SIZE

# SIZE:      Name: .llvm_addrsig
# SIZE:      Size:
# SIZE-SAME: 17
# SIZE:      SectionData (
# SIZE-NEXT:  0000: 00000000 00000000 00000000 00000000  |
# SIZE-NEXT:  0010: 00                                   |
# SIZE-NEXT: )

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig
    Type: SHT_LLVM_ADDRSIG
    Size: 0x11

## Check we can use "Size" and "Content" together to create a SHT_LLVM_ADDRSIG section.

# RUN: yaml2obj --docnum=11 %s -o %t11
# RUN: llvm-readobj --sections --section-data %t11 | FileCheck %s --check-prefix=SIZE-CONTENT

# SIZE-CONTENT:      Name: .llvm_addrsig_sizegr
# SIZE-CONTENT:      Size:
# SIZE-CONTENT-SAME: 5
# SIZE-CONTENT:      SectionData (
# SIZE-CONTENT-NEXT:  0000: 11223300 00 |
# SIZE-CONTENT-NEXT: )

# SIZE-CONTENT:      Name: .llvm_addrsig_sizeeq
# SIZE-CONTENT:      Size:
# SIZE-CONTENT-SAME: 3
# SIZE-CONTENT:      SectionData (
# SIZE-CONTENT-NEXT:  0000: 112233 |
# SIZE-CONTENT-NEXT: )

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig_sizegr
    Type: SHT_LLVM_ADDRSIG
    Size: 0x5
    Content: "112233"
  - Name: .llvm_addrsig_sizeeq
    Type: SHT_LLVM_ADDRSIG
    Size: 0x3
    Content: "112233"

## Check that when "Size" and "Content" are used together, the size
## must be greater than or equal to the content size.

# RUN: not yaml2obj --docnum=12 %s 2>&1 | FileCheck %s --check-prefix=SIZE-CONTENT-ERR

# SIZE-CONTENT-ERR: error: "Size" must be greater than or equal to the content size

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig
    Type: SHT_LLVM_ADDRSIG
    Size: 0x1
    Content: "1122"

## Check we can't use "Size" and "Symbols" tags together.

# RUN: not yaml2obj --docnum=13 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-SYMBOLS

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name: .llvm_addrsig
    Type: SHT_LLVM_ADDRSIG
    Size: 0x1
    Symbols: [ ]
