## Check that yaml2obj is able to produce an object from YAML
## containing sections with duplicate names (but different name suffixes).

# RUN: yaml2obj --docnum=1 %s -o %t1
# RUN: llvm-readelf -sections %t1 | FileCheck %s --check-prefix=CASE1

# CASE1:      [Nr] Name    Type
# CASE1:      [ 1] .foo1   PROGBITS
# CASE1-NEXT: [ 2] .foo    PROGBITS
# CASE1-NEXT: [ 3] .foo    PROGBITS
# CASE1-NEXT: [ 4] .foo2   PROGBITS
# CASE1-NEXT: [ 5] .foo2 ( PROGBITS
# CASE1-NEXT: [ 6] .foo2 ) PROGBITS
# CASE1-NEXT: [ 7] .foo2   PROGBITS

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
Sections:
  - Name: .foo1
    Type: SHT_PROGBITS
  - Name: .foo
    Type: SHT_PROGBITS
  - Name: '.foo (1)'
    Type: SHT_PROGBITS
  - Name: .foo2
    Type: SHT_PROGBITS
  - Name: '.foo2 ('
    Type: SHT_PROGBITS
  - Name: '.foo2 )'
    Type: SHT_PROGBITS
  - Name: '.foo2 ()'
    Type: SHT_PROGBITS

## Check that yaml2obj reports an error in case we have
## sections with equal names and suffixes.

# RUN: not yaml2obj --docnum=2 %s 2>&1 | FileCheck %s --check-prefix=CASE2
# CASE2: error: repeated section/fill name: '.foo (1)' at YAML section/fill number 2
# CASE2: error: repeated section/fill name: '.foo (1)' at YAML section/fill number 3

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
Sections:
  - Name: '.foo (1)'
    Type: SHT_PROGBITS
  - Name: '.foo (1)'
    Type: SHT_PROGBITS
  - Name: '.foo (1)'
    Type: SHT_PROGBITS

## Check that yaml2obj reports an error in case we have
## symbols without suffixes in the names and their
## names are equal.

# RUN: not yaml2obj --docnum=3 %s 2>&1 | FileCheck %s --check-prefix=CASE3
# CASE3: error: repeated section/fill name: '.foo' at YAML section/fill number 2

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
Sections:
  - Name: .foo
    Type: SHT_PROGBITS
  - Name: .foo
    Type: SHT_PROGBITS

## Check that yaml2obj can produce an object when symbols are defined
## relative to sections with duplicate names (but different name suffixes).

# RUN: yaml2obj --docnum=4 %s -o %t4
# RUN: llvm-readobj -s -t %t4 | FileCheck %s --check-prefix=CASE4

# CASE4:      Section {
# CASE4:       Index: 1
# CASE4-NEXT:  Name: .foo
# CASE4:       Index: 2
# CASE4-NEXT:  Name: .foo

# CASE4:      Symbol {
# CASE4:       Name: foo
# CASE4-NEXT:  Value:
# CASE4-NEXT:  Size:
# CASE4-NEXT:  Binding:
# CASE4-NEXT:  Type:
# CASE4-NEXT:  Other:
# CASE4-NEXT:  Section: .foo (0x1)
# CASE4:       Name: bar
# CASE4-NEXT:  Value:
# CASE4-NEXT:  Size:
# CASE4-NEXT:  Binding:
# CASE4-NEXT:  Type:
# CASE4-NEXT:  Other:
# CASE4-NEXT:  Section: .foo (0x2)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
Sections:
  - Name: .foo
    Type: SHT_PROGBITS
  - Name: '.foo (1)'
    Type: SHT_PROGBITS
Symbols:
  - Name:    foo
    Section: .foo
  - Name:    bar
    Section: '.foo (1)'

## Check that yaml2obj can produce SHT_GROUP sections that
## reference sections and symbols with name suffixes.

# RUN: yaml2obj --docnum=5 %s -o %t5
# RUN: llvm-readobj --elf-section-groups %t5 | FileCheck %s --check-prefix=CASE5

# CASE5:      Groups {
# CASE5-NEXT:   Group {
# CASE5-NEXT:     Name: .group (1)
# CASE5-NEXT:     Index: 1
# CASE5-NEXT:     Link: 5
# CASE5-NEXT:     Info: 1
# CASE5-NEXT:     Type: COMDAT (0x1)
# CASE5-NEXT:     Signature: foo
# CASE5-NEXT:     Section(s) in group [
# CASE5-NEXT:       .text.foo (2)
# CASE5-NEXT:     ]
# CASE5-NEXT:   }
# CASE5-NEXT:   Group {
# CASE5-NEXT:     Name: .group (1)
# CASE5-NEXT:     Index: 3
# CASE5-NEXT:     Link: 5
# CASE5-NEXT:     Info: 2
# CASE5-NEXT:     Type: COMDAT (0x1)
# CASE5-NEXT:     Signature: foo
# CASE5-NEXT:     Section(s) in group [
# CASE5-NEXT:       .text.foo (4)
# CASE5-NEXT:     ]
# CASE5-NEXT:   }
# CASE5-NEXT: }

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
Sections:
  - Name: .group
    Type: SHT_GROUP
    Info: foo
    Members:
      - SectionOrType: GRP_COMDAT
      - SectionOrType: .text.foo
  - Name: .text.foo
    Type: SHT_PROGBITS
  - Name: '.group (1)'
    Type: SHT_GROUP
    Info: 'foo (1)'
    Members:
      - SectionOrType: GRP_COMDAT
      - SectionOrType: '.text.foo (1)'
  - Name: '.text.foo (1)'
    Type: SHT_PROGBITS
Symbols:
  - Name:    foo
    Section: .text.foo
  - Name:    'foo (1)'
    Section: '.text.foo (1)'
