Drop prelink support.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 17 Nov 2015 00:51:23 +0000 (00:51 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 17 Nov 2015 00:51:23 +0000 (00:51 +0000)
commit8dcaa9fb088aebca663b8d34a76816e6af0b34f9
treef65953e40fe3e740756ef638ac6d887b7677c92d
parent0b897129c1e1bb5da8f8eb62d7c91f8cfbe6b4be
Drop prelink support.

The way prelink used to work was

* The compiler decides if a given section only has relocations that
are know to point to the same DSO. If so, it names it
.data.rel.ro.local<something>.
* The static linker puts all of these together.
* The prelinker program assigns addresses to each library and resolves
the local relocations.

There are many problems with this:
* It is incompatible with address space randomization.
* The information passed by the compiler is redundant. The linker
knows if a given relocation is in the same DSO or not. If could sort
by that if so desired.
* There are newer ways of speeding up DSO (gnu hash for example).
* Even if we want to implement this again in the compiler, the previous
  implementation is pretty broken. It talks about relocations that are
  "resolved by the static linker". If they are resolved, there are none
  left for the prelinker. What one needs to track is if an expression
  will require only dynamic relocations that point to the same DSO.

At this point it looks like the prelinker is an historical curiosity.
For example, fedora has retired it because it failed to build for two
releases
(http://pkgs.fedoraproject.org/cgit/prelink.git/commit/?id=eb43100a8331d91c801ee3dcdb0a0bb9babfdc1f)

This patch removes support for it. That is, it stops printing the
".local" sections.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253280 91177308-0d34-0410-b5e6-96231b3b80d8
22 files changed:
include/llvm/CodeGen/MachineConstantPool.h
include/llvm/IR/Constant.h
include/llvm/MC/MCObjectFileInfo.h
include/llvm/MC/SectionKind.h
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/CodeGen/MachineFunction.cpp
lib/CodeGen/TargetLoweringObjectFileImpl.cpp
lib/IR/Constants.cpp
lib/MC/MCObjectFileInfo.cpp
lib/MC/MCParser/ELFAsmParser.cpp
lib/Target/ARM/ARMConstantPoolValue.h
lib/Target/PowerPC/PPCTargetObjectFile.cpp
lib/Target/SystemZ/SystemZConstantPoolValue.cpp
lib/Target/SystemZ/SystemZConstantPoolValue.h
lib/Target/TargetLoweringObjectFile.cpp
test/CodeGen/AArch64/emutls_generic.ll
test/CodeGen/ARM/emutls_generic.ll
test/CodeGen/Mips/emutls_generic.ll
test/CodeGen/X86/emutls-pic.ll
test/CodeGen/X86/emutls-pie.ll
test/CodeGen/X86/emutls_generic.ll
test/CodeGen/X86/rodata-relocs.ll