llvm-project/lld/test/old-elf/sectionGroups/sectiongroup-with-globalsym...

251 lines
7.6 KiB
Plaintext

# 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
...