[PowerPC] Support ELFv1/ELFv2 ABI selection via features
authorUlrich Weigand <ulrich.weigand@de.ibm.com>
Mon, 28 Jul 2014 13:09:28 +0000 (13:09 +0000)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Mon, 28 Jul 2014 13:09:28 +0000 (13:09 +0000)
commitfe7131e2d0ebd219b00764e35ff33ef0cfa6d489
treeecd4a29da50ffd32c304cf5e51488b48dae5ac97
parent12cc465b434bb8bf6805c2f66a666817fa7f1db3
[PowerPC] Support ELFv1/ELFv2 ABI selection via features

While LLVM now supports both ELFv1 and ELFv2 ABIs, their use is currently
hard-coded via the target triple: powerpc64-linux is always ELFv1, while
powerpc64le-linux is always ELFv2.

These are of course the most common scenarios, but in principle it is
possible to support the ELFv2 ABI on big-endian or the ELFv1 ABI on
little-endian systems (and GCC does support that), and there are some
special use cases for that (e.g. certain Linux kernel versions could
only be built using ELFv1 on LE).

This patch implements the LLVM side of supporting this.  As precedent
on other platforms suggests, ABI options are passed to the back-end as
features.  Thus, this patch implements two features "elfv1" and "elfv2"
that select the desired ABI if present.  (If not, the LLVM uses the
same default rules as now.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214072 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/PowerPC/PPC.td
lib/Target/PowerPC/PPCSubtarget.cpp
lib/Target/PowerPC/PPCSubtarget.h