freebsd-dev/contrib/llvm-project/lld
Dimitry Andric 298c3e8d6b Apply lld fixes for internal errors building perl on 32-bit PowerPC
Merge commit f457863ae345 from llvm git (by Fangrui Song):

  [ELF] Support REL-format R_AARCH64_NONE relocation

  -fprofile-use=/-fprofile-sample-use= compiles may produce REL-format
  .rel.llvm.call-graph-profile even if the prevailing format is RELA on AArch64.
  Add R_AARCH64_NONE to getImplicitAddend to fix this linker error:

  ```
  ld.lld: error: internal linker error: cannot read addend for relocation R_AARCH64_NONE
  PLEASE submit a bug report to https://crbug.com and run tools/clang/scripts/process_crashreports.py (only works inside Google) which will upload a report and include the crash backtrace.
  ```

Merge commit 53fc5d9b9a01 from llvm git (by Fangrui Song):

  [ELF] Support R_PPC_NONE/R_PPC64_NONE in getImplicitAddend

  Similar to f457863ae345d2635026501f5383e0e625869639

Merge commit 767e64fc11d7 from llvm git (by Fangrui Song):

  [ELF] Support some absolute/PC-relative relocation types for REL format

  ctfconvert seems to use REL-format `.rel.SUNW_dof` for 32-bit architectures.
  ```
  Binary file usr/ports/lang/perl5.32/work/perl-5.32.1/dtrace_mini.o matches
  [alfredo.junior@dell-a ~/tmp/llvm-bug]$ readelf -r dtrace_mini.o

  Relocation section (.rel.SUNW_dof):
  r_offset r_info   r_type              st_value st_name
  00000184 0000281a R_PPC_REL32         00000000 $dtrace1772974259.Perl_dtrace_probe_load
  ```

  Support R_PPC_REL32 to fix `ld.lld: error: drti.c:(.SUNW_dof+0x4E4): internal linker error: cannot read addend for relocation R_PPC_REL32`.
  While here, add some common relocation types for AArch64, PPC, and PPC64.
  We perform minimum tests.

  Reviewed By: adalava, arichardson

  Differential Revision: https://reviews.llvm.org/D120535

Requested by:	alfredo
MFC after:	3 days
2022-02-27 13:53:19 +01:00
..
COFF Merge llvm-project 13.0.0 release 2021-11-13 21:49:29 +01:00
Common Merge llvm-project main llvmorg-13-init-16847-g88e66fa60ae5 2021-11-13 21:39:49 +01:00
docs Merge llvm-project release/13.x llvmorg-13.0.0-rc1-97-g23ba3732246a 2021-11-13 21:42:03 +01:00
ELF Apply lld fixes for internal errors building perl on 32-bit PowerPC 2022-02-27 13:53:19 +01:00
include/lld Merge llvm-project main llvmorg-13-init-16847-g88e66fa60ae5 2021-11-13 21:39:49 +01:00
lib Merge llvm-project main llvmorg-13-init-16847-g88e66fa60ae5 2021-11-13 21:39:49 +01:00
MachO Merge llvm-project main llvmorg-13-init-16847-g88e66fa60ae5 2021-11-13 21:39:49 +01:00
tools/lld Merge llvm-project main llvmorg-13-init-16847-g88e66fa60ae5 2021-11-13 21:39:49 +01:00
.clang-format
.clang-tidy Merge llvm-project main llvmorg-13-init-16847-g88e66fa60ae5 2021-11-13 21:39:49 +01:00
.gitignore
CODE_OWNERS.TXT Merge llvm-project main llvmorg-12-init-17869-g8e464dd76bef 2021-06-13 21:37:19 +02:00
LICENSE.TXT
README.md Merge llvm-project main llvmorg-12-init-17869-g8e464dd76bef 2021-06-13 21:37:19 +02:00

LLVM Linker (lld)

This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.

lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.

Benchmarking

In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.

It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz

The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f.