[RFC/PATCH][1/4] New SystemZ backend: LLVM code changes


this set of patches adds SystemZ support to base LLVM. This is split up
into three patches just to simplify review; they should be committed as a
single change if approved.

The first patch adds SystemZ support to the configure logic and support for
the systemz Triple. This ought to be straightfoward.

The second patch adds changes to LLVM common code required to support the
SystemZ ELF object format, including relocation types and processing and
the runtime loader. There is one change to common code that it not solely
SystemZ related: the patch adds a new routine "getStubAlignment", which a
target can use to inform common code that JIT stubs require a certain
alignment. Note that common code will not actually perform that alignment,
but it will add enough extra space when allocating text sections to enable
platform code to align its stubs accordingly. [ This new routine will
return 1 for all existing platforms, and thus ought not to change any
existing behaviour. ]

The third patch then adds all the backend files. No further changes to
common code are required to get the LLVM backend working.

[See also LLVMdev for the full set of SystemZ patches and discussion.]


(See attached file: diff-systemz-llvm-config)(See attached file:
diff-systemz-llvm-object)(See attached file: diff-systemz-llvm-target)

diff-systemz-llvm-config (15.2 KB)

diff-systemz-llvm-object (15.8 KB)

diff-systemz-llvm-target (430 KB)

The MCJIT parts of the patch look good.