Changes

Summary

  1. [ELF] Add -z rel and -z rela (details)
  2. [mlir][Affine] Minor clean-up of D79829 (details)
  3. [SVE] Eliminate calls to default-false VectorType::get() from Utils (details)
Commit 881c5eef98a6c3fa59907ba2eefa6e8d086394a6 by maskray
[ELF] Add -z rel and -z rela

LLD supports both REL and RELA for static relocations, but emits either
of REL and RELA for dynamic relocations. The relocation entry format is
specified by each psABI.

musl ld.so supports both REL and RELA. For such ld.so implementations,
REL (.rel.dyn .rel.plt) has size benefits even if the psABI chooses RELA:
sizeof(Elf64_Rel)=16 < sizeof(Elf64_Rela)=24.

* COPY, GLOB_DAT and J[U]MP_SLOT always have 0 addend. A ld.so
  implementation does not need to read the implicit addend.
  REL is strictly better.
* A RELATIVE has a non-zero addend. Such relocations can be packed
  compactly with the RELR relocation entry format, which is out of scope
  of this patch.
* For other dynamic relocation types (e.g. symbolic relocation R_X86_64_64),
  a ld.so implementation needs to read the implicit addend. REL may have
  minor performance impact, because reading implicit addends forces
  random access reads instead of being able to blast out a bunch of
  writes while chasing the relocation array.

This patch adds -z rel and -z rela to change the relocation entry format
for dynamic relocations. I have tested that a -z rel produced x86-64
executable works with musl ld.so

-z rela may be useful for debugging purposes on processors whose psABIs
specify REL as the canonical format: addends can be easily read by a tool.

Reviewed By: grimar, mcgrathr

Differential Revision: https://reviews.llvm.org/D80496
The file was modifiedlld/ELF/Driver.cpp
The file was addedlld/test/ELF/x86-64-zrel-zrela.s
The file was modifiedlld/docs/ld.lld.1
The file was addedlld/test/ELF/i386-zrel-zrela.s
Commit e75325cfc397c562964dd39b47198d73c9e9602a by diego.caballero
[mlir][Affine] Minor clean-up of D79829

Addressing D79829 post-commit comments. Minor changes.

Reviewed By: rriddle

Differential Revision: https://reviews.llvm.org/D80814
The file was modifiedmlir/lib/Analysis/AffineAnalysis.cpp
The file was modifiedmlir/lib/Dialect/Affine/IR/AffineMemoryOpInterfaces.cpp
The file was modifiedmlir/include/mlir/Dialect/Affine/IR/AffineMemoryOpInterfaces.td
The file was modifiedmlir/include/mlir/Dialect/Affine/IR/AffineMemoryOpInterfaces.h
The file was modifiedmlir/include/mlir/Dialect/Affine/IR/CMakeLists.txt
Commit c8f1aca316c2ee02347752079b86ba2322a6cf72 by ctetreau
[SVE] Eliminate calls to default-false VectorType::get() from Utils

Reviewers: efriedma, c-rhodes, sdesmalen, xbolva00

Reviewed By: c-rhodes

Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D80337
The file was modifiedllvm/lib/Transforms/Utils/SimplifyLibCalls.cpp