| ## Check that obj2yaml is able to produce YAML from |
| ## an object containing symbols and sections with duplicate |
| ## names and produces same-named sections and symbols |
| ## with distinguishing suffixes. |
| |
| # RUN: yaml2obj --docnum=1 %s -o %t1 |
| # RUN: llvm-readobj -s -t %t1 | FileCheck %s |
| |
| # CHECK: Name: .foo ( |
| # CHECK: Name: .foo ( |
| # CHECK: Name: .foo ( |
| # CHECK: Name: .bar ( |
| # CHECK: Name: .bar ( |
| # CHECK: Name: .bar ( |
| |
| # CHECK: Name: localfoo ( |
| # CHECK: Name: localfoo ( |
| # CHECK: Name: localfoo ( |
| # CHECK: Name: localbar ( |
| # CHECK: Name: localbar ( |
| # CHECK: Name: localbar ( |
| |
| # RUN: obj2yaml %t1 | FileCheck %s --check-prefix=CASE1 |
| |
| # CASE1: --- !ELF |
| # CASE1-NEXT: FileHeader: |
| # CASE1-NEXT: Class: ELFCLASS64 |
| # CASE1-NEXT: Data: ELFDATA2LSB |
| # CASE1-NEXT: Type: ET_REL |
| # CASE1-NEXT: Machine: EM_X86_64 |
| # CASE1-NEXT: Sections: |
| # CASE1-NEXT: - Name: .foo |
| # CASE1-NEXT: Type: SHT_PROGBITS |
| # CASE1-NEXT: - Name: '.foo [1]' |
| # CASE1-NEXT: Type: SHT_PROGBITS |
| # CASE1-NEXT: - Name: '.foo [2]' |
| # CASE1-NEXT: Type: SHT_PROGBITS |
| # CASE1-NEXT: - Name: .bar |
| # CASE1-NEXT: Type: SHT_PROGBITS |
| # CASE1-NEXT: - Name: '.bar [1]' |
| # CASE1-NEXT: Type: SHT_PROGBITS |
| # CASE1-NEXT: - Name: '.bar [2]' |
| # CASE1-NEXT: Type: SHT_PROGBITS |
| # CASE1-NEXT: Symbols: |
| # CASE1-NEXT: - Name: localfoo |
| # CASE1-NEXT: - Name: 'localfoo [1]' |
| # CASE1-NEXT: - Name: 'localfoo [2]' |
| # CASE1-NEXT: - Name: localbar |
| # CASE1-NEXT: - Name: 'localbar [1]' |
| # CASE1-NEXT: - Name: 'localbar [2]' |
| # CASE1-NEXT: ... |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .foo |
| Type: SHT_PROGBITS |
| - Name: '.foo [555]' |
| Type: SHT_PROGBITS |
| - Name: '.foo [random_tag]' |
| Type: SHT_PROGBITS |
| - Name: .bar |
| Type: SHT_PROGBITS |
| - Name: '.bar [666]' |
| Type: SHT_PROGBITS |
| - Name: '.bar [random_tag]' |
| Type: SHT_PROGBITS |
| Symbols: |
| - Name: 'localfoo [111]' |
| - Name: 'localfoo [222]' |
| - Name: 'localfoo [random_tag]' |
| - Name: 'localbar [333]' |
| - Name: 'localbar [444]' |
| - Name: 'localbar [random_tag]' |
| |
| ## Check we can refer to symbols with the same |
| ## name from relocations. |
| |
| # RUN: yaml2obj --docnum=2 %s -o %t2 |
| # RUN: obj2yaml %t2 | FileCheck %s --check-prefix=CASE2 |
| |
| # CASE2: Relocations: |
| # CASE2-NEXT: - Offset: 0x0000000000000000 |
| # CASE2-NEXT: Symbol: 'foo [1]' |
| # CASE2-NEXT: Type: R_X86_64_PC32 |
| # CASE2-NEXT: - Offset: 0x0000000000000004 |
| # CASE2-NEXT: Symbol: foo |
| # CASE2-NEXT: Type: R_X86_64_PC32 |
| # CASE2-NEXT: Symbols: |
| # CASE2-NEXT: - Name: foo |
| # CASE2-NEXT: - Name: 'foo [1]' |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .text |
| Type: SHT_PROGBITS |
| Size: 8 |
| - Name: .rela.text |
| Type: SHT_RELA |
| Info: .text |
| Link: .symtab |
| Relocations: |
| - Type: R_X86_64_PC32 |
| Offset: 0 |
| Symbol: 'foo [1]' |
| - Type: R_X86_64_PC32 |
| Offset: 4 |
| Symbol: foo |
| Symbols: |
| - Name: foo |
| - Name: 'foo [1]' |
| |
| ## Check obj2yaml does not add a suffix to a name if the |
| ## symbol is in .symtab and .dynsym at the same time. |
| |
| # RUN: yaml2obj --docnum=3 %s -o %t3 |
| # RUN: obj2yaml %t3 | FileCheck %s --check-prefix=CASE3 |
| |
| # CASE3: --- !ELF |
| # CASE3-NEXT: FileHeader: |
| # CASE3-NEXT: Class: ELFCLASS64 |
| # CASE3-NEXT: Data: ELFDATA2LSB |
| # CASE3-NEXT: Type: ET_DYN |
| # CASE3-NEXT: Machine: EM_X86_64 |
| # CASE3-NEXT: Symbols: |
| # CASE3-NEXT: - Name: foo |
| # CASE3-NEXT: Binding: STB_GLOBAL |
| # CASE3-NEXT: DynamicSymbols: |
| # CASE3-NEXT: - Name: foo |
| # CASE3-NEXT: Binding: STB_GLOBAL |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Symbols: |
| - Name: foo |
| Binding: STB_GLOBAL |
| DynamicSymbols: |
| - Name: foo |
| Binding: STB_GLOBAL |