mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-27 16:17:17 +00:00
Initial TOC support for PowerPC64 object creation
This patch adds initial PPC64 TOC MC object creation using the small mcmodel (a single 64K TOC) adding the some TOC relocations (R_PPC64_TOC, R_PPC64_TOC16, and R_PPC64_TOC16DS). The addition of 'undefinedExplicitRelSym' hook on 'MCELFObjectTargetWriter' is meant to avoid the creation of an unreferenced ".TOC." symbol (used in the .odp creation) as well to set the R_PPC64_TOC relocation target as the temporary ".TOC." symbol. On PPC64 ABI, the R_PPC64_TOC relocation should not point to any symbol. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166677 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -54,19 +54,26 @@ PPCSubtarget::PPCSubtarget(const std::string &TT, const std::string &CPU,
|
||||
CPUName = sys::getHostCPUName();
|
||||
#endif
|
||||
|
||||
// Parse features string.
|
||||
ParseSubtargetFeatures(CPUName, FS);
|
||||
|
||||
// Initialize scheduling itinerary for the specified CPU.
|
||||
InstrItins = getInstrItineraryForCPU(CPUName);
|
||||
|
||||
// Make sure 64-bit features are available when CPUname is generic
|
||||
std::string FullFS = FS;
|
||||
|
||||
// If we are generating code for ppc64, verify that options make sense.
|
||||
if (is64Bit) {
|
||||
Has64BitSupport = true;
|
||||
// Silently force 64-bit register use on ppc64.
|
||||
Use64BitRegs = true;
|
||||
if (!FullFS.empty())
|
||||
FullFS = "+64bit," + FullFS;
|
||||
else
|
||||
FullFS = "+64bit";
|
||||
}
|
||||
|
||||
// Parse features string.
|
||||
ParseSubtargetFeatures(CPUName, FullFS);
|
||||
|
||||
// If the user requested use of 64-bit regs, but the cpu selected doesn't
|
||||
// support it, ignore.
|
||||
if (use64BitRegs() && !has64BitSupport())
|
||||
|
Reference in New Issue
Block a user