diff options
Diffstat (limited to 'test/old-elf/sectionGroups/sectiongroup-with-globalsymbols.test')
-rw-r--r-- | test/old-elf/sectionGroups/sectiongroup-with-globalsymbols.test | 250 |
1 files changed, 250 insertions, 0 deletions
diff --git a/test/old-elf/sectionGroups/sectiongroup-with-globalsymbols.test b/test/old-elf/sectionGroups/sectiongroup-with-globalsymbols.test new file mode 100644 index 0000000000000..9f8f80c23605d --- /dev/null +++ b/test/old-elf/sectionGroups/sectiongroup-with-globalsymbols.test @@ -0,0 +1,250 @@ +# This tests that comdat weak symbol can be overridden by a global symbol. +# comdat1.s +#------------------------ +# .weak g1 +# .section .foo,"axG",@progbits,g1,comdat +#g1: +# nop +# .global g2 +#g2: +# nop +#! +# +#comdat2.s << \! +#----------------- +# .global g1 +# .section .foo,"axG",@progbits,g1,comdat +#g1: +# nop +# .global g2 +#g2: +# nop +# +#cat > g1.c << \! +#int g1() { +# return 0; +#} +# +#RUN: yaml2obj -format=elf -docnum 1 %s -o %t.comdat1.o +#RUN: yaml2obj -format=elf -docnum 2 %s -o %t.comdat2.o +#RUN: yaml2obj -format=elf -docnum 3 %s -o %t.g1.o +#RUN: lld -flavor old-gnu -target x86_64 %t.comdat1.o %t.comdat2.o \ +#RUN: %t.g1.o --noinhibit-exec --output-filetype=yaml -o %t2.out.yaml +#RUN: lld -flavor old-gnu -target x86_64 %t.comdat1.o %t.comdat2.o \ +#RUN: %t.g1.o --noinhibit-exec -o %t2.out +#RUN: FileCheck %s -check-prefix=CHECKGROUP < %t2.out.yaml +#RUN: llvm-readobj -sections %t2.out | FileCheck %s -check-prefix=CHECKGROUPSECTIONS +#RUN: llvm-readobj -symbols %t2.out | FileCheck %s -check-prefix=CHECKSYMBOLS +#CHECKGROUP: - name: g2 +#CHECKGROUP: content: [ 90 ] +#CHECKGROUP: section-choice: custom-required +#CHECKGROUP: section-name: .foo +#CHECKGROUP: - name: g1 +#CHECKGROUP: scope: global +#CHECKGROUP: content: [ 55, 48, 89, E5, 31, C0, 5D, C3 ] +#CHECKGROUP: alignment: 16 +#CHECKGROUP: section-name: .text +#CHECKGROUPSECTIONS: Name: .text +#CHECKGROUPSECTIONS: Type: SHT_PROGBITS +#CHECKGROUPSECTIONS: Flags [ +#CHECKGROUPSECTIONS: SHF_ALLOC +#CHECKGROUPSECTIONS: SHF_EXECINSTR +#CHECKGROUPSECTIONS: ] +#CHECKGROUPSECTIONS: Size: 8 +#CHECKGROUPSECTIONS: Name: .foo +#CHECKGROUPSECTIONS: Type: SHT_PROGBITS +#CHECKGROUPSECTIONS: Flags [ +#CHECKGROUPSECTIONS: SHF_ALLOC +#CHECKGROUPSECTIONS: SHF_EXECINSTR +#CHECKGROUPSECTIONS: ] +#CHECKGROUPSECTIONS: Size: 2 +#CHECKSYMBOLS: Name: g2 +#CHECKSYMBOLS: Section: .foo +#CHECKSYMBOLS: Name: g1 +#CHECKSYMBOLS: Section: .text +--- +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + OSABI: ELFOSABI_GNU + Type: ET_REL + Machine: EM_X86_64 +Sections: + - Name: .group + Type: SHT_GROUP + Link: .symtab + AddressAlign: 0x0000000000000004 + Info: g1 + Members: + - SectionOrType: GRP_COMDAT + - SectionOrType: .foo + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x0000000000000004 + Content: '' + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + AddressAlign: 0x0000000000000004 + Content: '' + - Name: .bss + Type: SHT_NOBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + AddressAlign: 0x0000000000000004 + - Name: .foo + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ] + AddressAlign: 0x0000000000000001 + Content: '9090' +Symbols: + Local: + - Name: .text + Type: STT_SECTION + Section: .text + - Name: .data + Type: STT_SECTION + Section: .data + - Name: .bss + Type: STT_SECTION + Section: .bss + - Name: .foo + Type: STT_SECTION + Section: .foo + Global: + - Name: g2 + Section: .foo + Value: 0x0000000000000001 + Weak: + - Name: g1 + Section: .foo +... +--- +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + OSABI: ELFOSABI_GNU + Type: ET_REL + Machine: EM_X86_64 +Sections: + - Name: .group + Type: SHT_GROUP + Link: .symtab + AddressAlign: 0x0000000000000004 + Info: g1 + Members: + - SectionOrType: GRP_COMDAT + - SectionOrType: .foo + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x0000000000000004 + Content: '' + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + AddressAlign: 0x0000000000000004 + Content: '' + - Name: .bss + Type: SHT_NOBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + AddressAlign: 0x0000000000000004 + - Name: .foo + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ] + AddressAlign: 0x0000000000000001 + Content: '9090' +Symbols: + Local: + - Name: .text + Type: STT_SECTION + Section: .text + - Name: .data + Type: STT_SECTION + Section: .data + - Name: .bss + Type: STT_SECTION + Section: .bss + - Name: .foo + Type: STT_SECTION + Section: .foo + Global: + - Name: g1 + Section: .foo + - Name: g2 + Section: .foo + Value: 0x0000000000000001 +... +--- +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + OSABI: ELFOSABI_GNU + Type: ET_REL + Machine: EM_X86_64 +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x0000000000000010 + Content: 554889E531C05DC3 + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + AddressAlign: 0x0000000000000004 + Content: '' + - Name: .bss + Type: SHT_NOBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + AddressAlign: 0x0000000000000004 + - Name: .comment + Type: SHT_PROGBITS + Flags: [ SHF_MERGE, SHF_STRINGS ] + AddressAlign: 0x0000000000000001 + Content: 00636C616E672076657273696F6E20332E372E3020287472756E6B203232393535372920286C6C766D2F7472756E6B203232393536332900 + - Name: .note.GNU-stack + Type: SHT_PROGBITS + AddressAlign: 0x0000000000000001 + Content: '' + - Name: .eh_frame + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + AddressAlign: 0x0000000000000008 + Content: 1400000000000000037A5200017810011B0C0708900100001C0000001C000000000000000800000000410E108602430D0600000000000000 + - Name: .rela.eh_frame + Type: SHT_RELA + Link: .symtab + AddressAlign: 0x0000000000000008 + Info: .eh_frame + Relocations: + - Offset: 0x0000000000000020 + Symbol: .text + Type: R_X86_64_PC32 +Symbols: + Local: + - Name: g1.c + Type: STT_FILE + - Name: .text + Type: STT_SECTION + Section: .text + - Name: .data + Type: STT_SECTION + Section: .data + - Name: .bss + Type: STT_SECTION + Section: .bss + - Name: .comment + Type: STT_SECTION + Section: .comment + - Name: .note.GNU-stack + Type: STT_SECTION + Section: .note.GNU-stack + - Name: .eh_frame + Type: STT_SECTION + Section: .eh_frame + Global: + - Name: g1 + Type: STT_FUNC + Section: .text + Size: 0x0000000000000008 +... |