## 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 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-COUNT-2: error: repeated symbol name: 'localfoo (1)' --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Symbols: - Name: 'localfoo (1)' - 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' # CASE3: error: repeated symbol name: 'localfoo' --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Symbols: - Name: localfoo - Name: localfoo - Name: localfoo ## 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: - Type: R_X86_64_NONE Symbol: foo - Offset: 0x1 Type: R_X86_64_NONE Symbol: 'foo (1)' Symbols: - Name: foo - Name: 'foo (1)'