2022-02-05 05:59:18 +08:00
|
|
|
# RUN: yaml2obj -DMACHINE=AARCH64 %s -o %t.o
|
2022-02-05 05:20:49 +08:00
|
|
|
# RUN: ld.lld --gc-sections %t.o -o %t
|
|
|
|
# RUN: llvm-readelf -S -r %t | FileCheck %s
|
|
|
|
|
2022-02-05 05:59:18 +08:00
|
|
|
## Test that we discard R_*_NONE, but respect the references it creates
|
2022-02-05 05:20:49 +08:00
|
|
|
## among sections.
|
|
|
|
|
|
|
|
# CHECK: .data
|
|
|
|
# CHECK: There are no relocations in this file.
|
|
|
|
|
|
|
|
# RUN: ld.lld -r %t.o -o %t
|
|
|
|
# RUN: llvm-readobj -r %t | FileCheck --check-prefix=RELOC %s
|
|
|
|
|
2022-02-05 05:59:18 +08:00
|
|
|
# RUN: yaml2obj -DBITS=32 -DMACHINE=ARM %s -o %t.o
|
|
|
|
# RUN: ld.lld -r %t.o -o %t
|
|
|
|
# RUN: llvm-readobj -r %t | FileCheck --check-prefix=RELOC %s
|
|
|
|
|
2022-02-05 07:13:37 +08:00
|
|
|
# RUN: yaml2obj -DBITS=32 -DMACHINE=PPC %s -o %t.o
|
|
|
|
# RUN: ld.lld -r %t.o -o %t
|
|
|
|
# RUN: llvm-readobj -r %t | FileCheck --check-prefix=RELOC %s
|
|
|
|
|
|
|
|
# RUN: yaml2obj -DMACHINE=PPC64 %s -o %t.o
|
|
|
|
# RUN: ld.lld -r %t.o -o %t
|
|
|
|
# RUN: llvm-readobj -r %t | FileCheck --check-prefix=RELOC %s
|
|
|
|
|
2022-02-05 05:59:18 +08:00
|
|
|
# RUN: yaml2obj -DMACHINE=RISCV %s -o %t.o
|
|
|
|
# RUN: ld.lld -r %t.o -o %t
|
|
|
|
# RUN: llvm-readobj -r %t | FileCheck --check-prefix=RELOC %s
|
|
|
|
|
|
|
|
# RUN: yaml2obj -DBITS=32 -DMACHINE=386 %s -o %t.o
|
|
|
|
# RUN: ld.lld -r %t.o -o %t
|
|
|
|
# RUN: llvm-readobj -r %t | FileCheck --check-prefix=RELOC %s
|
|
|
|
|
|
|
|
# RUN: yaml2obj -DMACHINE=X86_64 %s -o %t.o
|
|
|
|
# RUN: ld.lld -r %t.o -o %t
|
|
|
|
# RUN: llvm-readobj -r %t | FileCheck --check-prefix=RELOC %s
|
|
|
|
|
2022-02-05 05:20:49 +08:00
|
|
|
## Both REL and RELA are supported. .rel.llvm.call-graph-profile uses REL even
|
|
|
|
## if the prevailing format is RELA.
|
|
|
|
# RELOC: Section ({{.*}}) .rela.text {
|
2022-02-05 05:59:18 +08:00
|
|
|
# RELOC-NEXT: 0x0 R_{{.*}}_NONE .data 0x0
|
2022-02-05 05:20:49 +08:00
|
|
|
# RELOC-NEXT: }
|
|
|
|
# RELOC: Section ({{.*}}) .rel.nonalloc1 {
|
2022-02-05 05:59:18 +08:00
|
|
|
# RELOC-NEXT: 0x0 R_{{.*}}_NONE .data
|
2022-02-05 05:20:49 +08:00
|
|
|
# RELOC-NEXT: }
|
|
|
|
# RELOC: Section ({{.*}}) .rela.nonalloc2 {
|
2022-02-05 05:59:18 +08:00
|
|
|
# RELOC-NEXT: 0x0 R_{{.*}}_NONE .data 0x0
|
2022-02-05 05:20:49 +08:00
|
|
|
# RELOC-NEXT: }
|
|
|
|
|
|
|
|
--- !ELF
|
|
|
|
FileHeader:
|
2022-02-05 05:59:18 +08:00
|
|
|
Class: ELFCLASS[[BITS=64]]
|
2022-02-05 05:20:49 +08:00
|
|
|
Data: ELFDATA2LSB
|
|
|
|
Type: ET_REL
|
2022-02-05 05:59:18 +08:00
|
|
|
Machine: EM_[[MACHINE]]
|
2022-02-05 05:20:49 +08:00
|
|
|
Sections:
|
|
|
|
- Name: .text
|
|
|
|
Type: SHT_PROGBITS
|
|
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
|
|
- Name: .data
|
|
|
|
Type: SHT_PROGBITS
|
|
|
|
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
|
|
|
- Name: .nonalloc1
|
|
|
|
Type: SHT_PROGBITS
|
|
|
|
- Name: .nonalloc2
|
|
|
|
Type: SHT_PROGBITS
|
|
|
|
- Name: .rela.text
|
|
|
|
Type: SHT_RELA
|
|
|
|
Info: .text
|
|
|
|
Relocations:
|
|
|
|
- Symbol: .data
|
2022-02-05 05:59:18 +08:00
|
|
|
Type: R_[[MACHINE]]_NONE
|
2022-02-05 05:20:49 +08:00
|
|
|
- Name: .rel.nonalloc1
|
|
|
|
Type: SHT_REL
|
|
|
|
Info: .nonalloc1
|
|
|
|
Relocations:
|
|
|
|
- Symbol: .data
|
2022-02-05 05:59:18 +08:00
|
|
|
Type: R_[[MACHINE]]_NONE
|
2022-02-05 05:20:49 +08:00
|
|
|
- Name: .rela.nonalloc2
|
|
|
|
Type: SHT_RELA
|
|
|
|
Info: .nonalloc2
|
|
|
|
Relocations:
|
|
|
|
- Symbol: .data
|
2022-02-05 05:59:18 +08:00
|
|
|
Type: R_[[MACHINE]]_NONE
|
2022-02-05 05:20:49 +08:00
|
|
|
Symbols:
|
|
|
|
- Name: .data
|
|
|
|
Type: STT_SECTION
|
|
|
|
Section: .data
|
|
|
|
- Name: _start
|
|
|
|
Section: .text
|
|
|
|
Binding: STB_GLOBAL
|
|
|
|
...
|