blob: 1cb4c028c80d234a7be16d31d4937912d3223b7c [file] [log] [blame]
Tim Northover3b0846e2014-05-24 12:50:23 +00001//===-- AArch64TargetObjectFile.h - AArch64 Object Info -*- C++ ---------*-===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Tim Northover3b0846e2014-05-24 12:50:23 +00006//
7//===----------------------------------------------------------------------===//
8
Benjamin Kramera7c40ef2014-08-13 16:26:38 +00009#ifndef LLVM_LIB_TARGET_AARCH64_AARCH64TARGETOBJECTFILE_H
10#define LLVM_LIB_TARGET_AARCH64_AARCH64TARGETOBJECTFILE_H
Tim Northover3b0846e2014-05-24 12:50:23 +000011
12#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
David Blaikie6054e652018-03-23 23:58:19 +000013#include "llvm/Target/TargetLoweringObjectFile.h"
Tim Northover3b0846e2014-05-24 12:50:23 +000014
15namespace llvm {
16class AArch64TargetMachine;
17
18/// This implementation is used for AArch64 ELF targets (Linux in particular).
19class AArch64_ELFTargetObjectFile : public TargetLoweringObjectFileELF {
20 void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
21};
22
23/// AArch64_MachoTargetObjectFile - This TLOF implementation is used for Darwin.
24class AArch64_MachoTargetObjectFile : public TargetLoweringObjectFileMachO {
25public:
Bruno Cardoso Lopes52b13912015-03-06 13:48:45 +000026 AArch64_MachoTargetObjectFile();
27
Tim Northover3b0846e2014-05-24 12:50:23 +000028 const MCExpr *getTTypeGlobalReference(const GlobalValue *GV,
Eric Christopher4367c7f2016-09-16 07:33:15 +000029 unsigned Encoding,
Tim Northover3b0846e2014-05-24 12:50:23 +000030 const TargetMachine &TM,
31 MachineModuleInfo *MMI,
32 MCStreamer &Streamer) const override;
33
Eric Christopher4367c7f2016-09-16 07:33:15 +000034 MCSymbol *getCFIPersonalitySymbol(const GlobalValue *GV,
Tim Northover3b0846e2014-05-24 12:50:23 +000035 const TargetMachine &TM,
36 MachineModuleInfo *MMI) const override;
Bruno Cardoso Lopes52b13912015-03-06 13:48:45 +000037
Francis Visoiu Mistrih5b5ee612019-08-22 16:59:00 +000038 const MCExpr *getIndirectSymViaGOTPCRel(const GlobalValue *GV,
39 const MCSymbol *Sym,
Bruno Cardoso Lopes618c67a2015-03-06 13:49:05 +000040 const MCValue &MV, int64_t Offset,
41 MachineModuleInfo *MMI,
42 MCStreamer &Streamer) const override;
Tim Northover203c6f02017-05-15 21:51:38 +000043
44 void getNameWithPrefix(SmallVectorImpl<char> &OutName, const GlobalValue *GV,
45 const TargetMachine &TM) const override;
Tim Northover3b0846e2014-05-24 12:50:23 +000046};
47
Mandeep Singh Grang0c721722017-06-27 23:58:19 +000048/// This implementation is used for AArch64 COFF targets.
49class AArch64_COFFTargetObjectFile : public TargetLoweringObjectFileCOFF {};
50
Tim Northover3b0846e2014-05-24 12:50:23 +000051} // end namespace llvm
52
53#endif