* Change `Symbol::flags` to a `std::atomic<uint16_t>` * Add `llvm::parallel::threadIndex` as a thread-local non-negative integer * Add `relocsVec` to part.relaDyn and part.relrDyn so that relative relocations can be added without a mutex * Arbitrarily change -z nocombreloc to move relative relocations to the end. Disable parallelism for deterministic output. MIPS and PPC64 use global states for relocation scanning. Keep serial scanning. Speed-up with mimalloc and --threads=8 on an Intel Skylake machine: * clang (Release): 1.27x as fast * clang (Debug): 1.06x as fast * chrome (default): 1.05x as fast * scylladb (default): 1.04x as fast Speed-up with glibc malloc and --threads=16 on a ThunderX2 (AArch64): * clang (Release): 1.31x as fast * scylladb (default): 1.06x as fast Reviewed By: andrewng Differential Revision: https://reviews.llvm.org/D133003
32 lines
1.1 KiB
ArmAsm
32 lines
1.1 KiB
ArmAsm
# REQUIRES: x86
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t1.o
|
|
# RUN: echo '.section .text.foo,"axG",@progbits,foo,comdat; .globl foo; foo:' |\
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64 - -o %t2.o
|
|
# RUN: echo '.weak foo; foo: .section .text.foo,"axG",@progbits,foo,comdat; .globl bar; bar:' |\
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64 - -o %t3.o
|
|
|
|
# RUN: not ld.lld --threads=1 %t2.o %t3.o %t1.o -o /dev/null 2>&1 | FileCheck %s
|
|
|
|
# CHECK: error: relocation refers to a symbol in a discarded section: bar
|
|
# CHECK-NEXT: >>> defined in {{.*}}3.o
|
|
# CHECK-NEXT: >>> section group signature: foo
|
|
# CHECK-NEXT: >>> prevailing definition is in {{.*}}2.o
|
|
# CHECK-NEXT: >>> or the symbol in the prevailing group {{.*}}
|
|
# CHECK-NEXT: >>> referenced by {{.*}}1.o:(.text+0x1)
|
|
|
|
# CHECK: error: relocation refers to a discarded section: .text.foo
|
|
# CHECK-NEXT: >>> defined in {{.*}}1.o
|
|
# CHECK-NEXT: >>> section group signature: foo
|
|
# CHECK-NEXT: >>> prevailing definition is in {{.*}}2.o
|
|
# CHECK-NEXT: >>> referenced by {{.*}}1.o:(.data+0x0)
|
|
|
|
.globl _start
|
|
_start:
|
|
jmp bar
|
|
|
|
.section .text.foo,"axG",@progbits,foo,comdat
|
|
.globl foo
|
|
foo:
|
|
.data
|
|
.quad .text.foo
|