LLVM: lib/Target/ARM/ARMTargetObjectFile.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

22#include

23

24using namespace llvm;

25using namespace dwarf;

26

27

28

29

30

35 bool genExecuteOnly =

37

40

41 if (isAAPCS_ABI) {

43 }

44

45

46 if (genExecuteOnly) {

48 unsigned Flags =

50

51

52

54 Ctx.getELFSection(".text", Type, Flags, 0, "", false, 0U, nullptr);

55 }

56}

57

59

68}

69

74}

75

81 GV, Encoding, TM, MMI, Streamer);

82

84

87}

88

93}

94

97 if (const Function *F = dyn_cast(GO))

98 if (TM.getSubtarget<ARMSubtarget>(*F).genExecuteOnly() && SK.isText())

99 return true;

100 return false;

101}

102

105

108

110}

111

114

117

119}

static bool isExecuteOnlyFunction(const GlobalObject *GO, SectionKind SK, const TargetMachine &TM)

This file contains constants used for implementing Dwarf debug support.

assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())

enum llvm::ARMBaseTargetMachine::ARMABI TargetABI

MCSection * SelectSectionForGlobal(const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const override

const MCExpr * getDebugThreadLocalSymbol(const MCSymbol *Sym) const override

Describe a TLS variable address within debug info.

MCRegister getStaticBase() const override

Returns the register used as static base in RWPI variants.

MCSection * getExplicitSectionGlobal(const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const override

Targets should implement this method to assign a section to globals with an explicit section specfied...

const MCExpr * getIndirectSymViaGOTPCRel(const GlobalValue *GV, const MCSymbol *Sym, const MCValue &MV, int64_t Offset, MachineModuleInfo *MMI, MCStreamer &Streamer) const override

Get the target specific PC relative GOT entry relocation.

const MCExpr * getIndirectSymViaRWPI(const MCSymbol *Sym) const override

Get the target specific RWPI relocation.

const MCExpr * getTTypeGlobalReference(const GlobalValue *GV, unsigned Encoding, const TargetMachine &TM, MachineModuleInfo *MMI, MCStreamer &Streamer) const override

Return an MCExpr to use for a reference to the specified type info global variable from exception han...

void Initialize(MCContext &Ctx, const TargetMachine &TM) override

This method must be called before any actual lowering is done.

ExceptionHandling getExceptionHandlingType() const

static const MCBinaryExpr * createAdd(const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)

static const MCConstantExpr * create(int64_t Value, MCContext &Ctx, bool PrintInHex=false, unsigned SizeInBytes=0)

Context object for machine code objects.

MCSectionELF * getELFSection(const Twine &Section, unsigned Type, unsigned Flags)

Base class for the full range of assembler expressions which are needed for parsing.

MCSection * TextSection

Section directive for standard text.

MCSection * LSDASection

If exception handling is supported by the target, this is the section the Language Specific Data Area...

MCContext & getContext() const

Wrapper class representing physical registers. Should be passed by value.

Instances of this class represent a uniqued identifier for a section in the current translation unit.

Streaming machine code generation interface.

bool hasFeature(unsigned Feature) const

static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx)

MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...

This represents an "assembler immediate".

int64_t getConstant() const

This class contains meta information specific to a module.

SectionKind - This is a simple POD value that classifies the properties of a section.

static SectionKind getExecuteOnly()

void Initialize(MCContext &Ctx, const TargetMachine &TM) override

This method must be called before any actual lowering is done.

const MCExpr * getTTypeGlobalReference(const GlobalValue *GV, unsigned Encoding, const TargetMachine &TM, MachineModuleInfo *MMI, MCStreamer &Streamer) const override

Return an MCExpr to use for a reference to the specified type info global variable from exception han...

MCSection * SelectSectionForGlobal(const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const override

void InitializeELF(bool UseInitArray_)

MCSection * getExplicitSectionGlobal(const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const override

Targets should implement this method to assign a section to globals with an explicit section specfied...

Primary interface to the complete machine description for the target machine.

const MCSubtargetInfo * getMCSubtargetInfo() const

MCSymbol * getSymbol(const GlobalValue *GV) const

const MCAsmInfo * getMCAsmInfo() const

Return target specific asm information.

The instances of the Type class are immutable: once they are created, they are never changed.

This is an optimization pass for GlobalISel generic memory operations.