| ## 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-readobj -s %t1 | FileCheck %s --check-prefix=CASE1 |
| |
| # CASE1: Name: .foo1 ( |
| # CASE1: Name: .foo ( |
| # CASE1: Name: .foo ( |
| # CASE1: Name: .foo2 ( |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .foo1 |
| Type: SHT_PROGBITS |
| - Name: .foo |
| Type: SHT_PROGBITS |
| - Name: '.foo [1]' |
| 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 name: '.foo [1]' at YAML section number 2 |
| # CASE2: error: repeated section name: '.foo [1]' at YAML section number 3 |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| 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 name: '.foo' at YAML section number 2 |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| 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 |
| Machine: EM_X86_64 |
| 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 |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .group |
| Type: SHT_GROUP |
| Link: .symtab |
| Info: foo |
| Members: |
| - SectionOrType: GRP_COMDAT |
| - SectionOrType: .text.foo |
| - Name: .text.foo |
| Type: SHT_PROGBITS |
| - Name: '.group [1]' |
| Type: SHT_GROUP |
| Link: .symtab |
| 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]' |