[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)
commit90a5de88a87b67668e4260ad0f69267399001714
tree30c047eb5b341fdd1efdbbc4e19d3bb4bfe94004
parent8184d66f4b98d779abb5dd5564fb14157b5949d6
[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.)

llvm-svn: 214072
llvm/lib/Target/PowerPC/PPC.td
llvm/lib/Target/PowerPC/PPCSubtarget.cpp
llvm/lib/Target/PowerPC/PPCSubtarget.h