forked from OSchip/llvm-project
251 lines
7.6 KiB
Plaintext
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
|
|
...
|