|
@@ -43,6 +43,7 @@
|
|
|
#include "llvm/MC/MCSectionELF.h"
|
|
|
#include "llvm/MC/MCSectionMachO.h"
|
|
|
#include "llvm/MC/MCSectionWasm.h"
|
|
|
+#include "llvm/MC/MCSectionXCOFF.h"
|
|
|
#include "llvm/MC/MCStreamer.h"
|
|
|
#include "llvm/MC/MCSymbol.h"
|
|
|
#include "llvm/MC/MCSymbolELF.h"
|
|
@@ -1819,3 +1820,57 @@ MCSection *TargetLoweringObjectFileWasm::getStaticDtorSection(
|
|
|
llvm_unreachable("@llvm.global_dtors should have been lowered already");
|
|
|
return nullptr;
|
|
|
}
|
|
|
+
|
|
|
+//===----------------------------------------------------------------------===//
|
|
|
+// XCOFF
|
|
|
+//===----------------------------------------------------------------------===//
|
|
|
+MCSection *TargetLoweringObjectFileXCOFF::getExplicitSectionGlobal(
|
|
|
+ const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const {
|
|
|
+ llvm_unreachable("XCOFF explicit sections not yet implemented.");
|
|
|
+}
|
|
|
+
|
|
|
+MCSection *TargetLoweringObjectFileXCOFF::SelectSectionForGlobal(
|
|
|
+ const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const {
|
|
|
+ assert(!TM.getFunctionSections() && !TM.getDataSections() &&
|
|
|
+ "XCOFF unique sections not yet implemented.");
|
|
|
+
|
|
|
+ // Common symbols go into a csect with matching name which will get mapped
|
|
|
+ // into the .bss section.
|
|
|
+ if (Kind.isCommon()) {
|
|
|
+ SmallString<128> Name;
|
|
|
+ getNameWithPrefix(Name, GO, TM);
|
|
|
+ return getContext().getXCOFFSection(Name, XCOFF::XMC_RW, XCOFF::XTY_CM,
|
|
|
+ Kind, /* BeginSymbolName */ nullptr);
|
|
|
+ }
|
|
|
+
|
|
|
+ report_fatal_error("XCOFF other section types not yet implemented.");
|
|
|
+}
|
|
|
+
|
|
|
+bool TargetLoweringObjectFileXCOFF::shouldPutJumpTableInFunctionSection(
|
|
|
+ bool UsesLabelDifference, const Function &F) const {
|
|
|
+ llvm_unreachable("TLOF XCOFF not yet implemented.");
|
|
|
+}
|
|
|
+
|
|
|
+void TargetLoweringObjectFileXCOFF::Initialize(MCContext &Ctx,
|
|
|
+ const TargetMachine &TgtM) {
|
|
|
+ TargetLoweringObjectFile::Initialize(Ctx, TgtM);
|
|
|
+ TTypeEncoding = 0;
|
|
|
+ PersonalityEncoding = 0;
|
|
|
+ LSDAEncoding = 0;
|
|
|
+}
|
|
|
+
|
|
|
+MCSection *TargetLoweringObjectFileXCOFF::getStaticCtorSection(
|
|
|
+ unsigned Priority, const MCSymbol *KeySym) const {
|
|
|
+ llvm_unreachable("XCOFF ctor section not yet implemented.");
|
|
|
+}
|
|
|
+
|
|
|
+MCSection *TargetLoweringObjectFileXCOFF::getStaticDtorSection(
|
|
|
+ unsigned Priority, const MCSymbol *KeySym) const {
|
|
|
+ llvm_unreachable("XCOFF dtor section not yet implemented.");
|
|
|
+}
|
|
|
+
|
|
|
+const MCExpr *TargetLoweringObjectFileXCOFF::lowerRelativeReference(
|
|
|
+ const GlobalValue *LHS, const GlobalValue *RHS,
|
|
|
+ const TargetMachine &TM) const {
|
|
|
+ llvm_unreachable("XCOFF not yet implemented.");
|
|
|
+}
|