## Check that yaml2obj is able to produce an object from YAML ## containing symbols with duplicate names (but different name suffixes). # RUN: yaml2obj --docnum=1 %s -o %t1 # RUN: llvm-readobj -t %t1 | FileCheck %s --check-prefix=CASE1 # CASE1: Name: localfoo (1) # CASE1: Name: localfoo (1) --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Symbols: - Name: localfoo - Name: 'localfoo [1]' ## Check that yaml2obj reports an error when we have ## symbols with equal names and suffixes. # RUN: not yaml2obj --docnum=2 %s 2>&1| FileCheck %s --check-prefix=CASE2 # CASE2: error: Repeated symbol name: 'localfoo [1]'. --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Symbols: - Name: 'localfoo [1]' - Name: 'localfoo [1]' ## Check that yaml2obj reports an error when 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 symbol name: 'localfoo'. --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Symbols: - Name: localfoo Section: .text.foo.1 - Name: localfoo Section: .text.foo.2 ## Check that yaml2obj can produce correct relocations that ## reference symbols with name suffixes. # RUN: yaml2obj --docnum=4 %s -o %t4 # RUN: llvm-readobj -r --expand-relocs %t4 | FileCheck %s --check-prefix=CASE4 # CASE4: Relocations [ # CASE4-NEXT: Section {{.*}} .rela.text { # CASE4-NEXT: Relocation { # CASE4-NEXT: Offset: 0x0 # CASE4-NEXT: Type: R_X86_64_NONE # CASE4-NEXT: Symbol: foo (1) # CASE4-NEXT: Addend: 0x0 # CASE4-NEXT: } # CASE4-NEXT: Relocation { # CASE4-NEXT: Offset: 0x1 # CASE4-NEXT: Type: R_X86_64_NONE # CASE4-NEXT: Symbol: foo (2) # CASE4-NEXT: Addend: 0x0 # CASE4-NEXT: } # CASE4-NEXT: } # CASE4-NEXT: ] --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS - Name: .rela.text Type: SHT_RELA Info: .text Link: .symtab Relocations: - Offset: 0x0 Type: R_X86_64_NONE Symbol: foo - Offset: 0x1 Type: R_X86_64_NONE Symbol: 'foo [1]' Symbols: - Name: foo - Name: 'foo [1]'