LLVM: lib/Target/M68k/MCTargetDesc/M68kELFObjectWriter.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

17

25

26using namespace llvm;

27

28namespace {

30public:

31 M68kELFObjectWriter(uint8_t OSABI);

32

33 ~M68kELFObjectWriter() override;

34

35protected:

36 unsigned getRelocType(const MCFixup &, const MCValue &,

37 bool IsPCRel) const override;

38};

39}

40

41M68kELFObjectWriter::M68kELFObjectWriter(uint8_t OSABI)

43

44M68kELFObjectWriter::~M68kELFObjectWriter() {}

45

47

49 bool &IsPCRel) {

50 switch (Kind) {

57 }

59}

60

61unsigned M68kELFObjectWriter::getRelocType(const MCFixup &Fixup,

62 const MCValue &Target,

63 bool IsPCRel) const {

67 switch (Specifier) {

73 if (auto *SA = const_cast<MCSymbol *>(Target.getAddSym()))

74 static_cast<MCSymbolELF *>(SA)->setType(ELF::STT_TLS);

75 break;

76 default:

77 break;

78 }

79

80 switch (Specifier) {

81 default:

83

85 switch (Type) {

87 return ELF::R_68K_TLS_GD32;

89 return ELF::R_68K_TLS_GD16;

91 return ELF::R_68K_TLS_GD8;

92 }

95 switch (Type) {

97 return ELF::R_68K_TLS_LDM32;

99 return ELF::R_68K_TLS_LDM16;

101 return ELF::R_68K_TLS_LDM8;

102 }

105 switch (Type) {

107 return ELF::R_68K_TLS_LDO32;

109 return ELF::R_68K_TLS_LDO16;

111 return ELF::R_68K_TLS_LDO8;

112 }

115 switch (Type) {

117 return ELF::R_68K_TLS_IE32;

119 return ELF::R_68K_TLS_IE16;

121 return ELF::R_68K_TLS_IE8;

122 }

125 switch (Type) {

127 return ELF::R_68K_TLS_LE32;

129 return ELF::R_68K_TLS_LE16;

131 return ELF::R_68K_TLS_LE8;

132 }

135 switch (Type) {

137 return IsPCRel ? ELF::R_68K_PC32 : ELF::R_68K_32;

139 return IsPCRel ? ELF::R_68K_PC16 : ELF::R_68K_16;

141 return IsPCRel ? ELF::R_68K_PC8 : ELF::R_68K_8;

142 }

145 switch (Type) {

147 return ELF::R_68K_GOTPCREL32;

149 return ELF::R_68K_GOTPCREL16;

151 return ELF::R_68K_GOTPCREL8;

152 }

156 switch (Type) {

158 return ELF::R_68K_GOTOFF32;

160 return ELF::R_68K_GOTOFF16;

162 return ELF::R_68K_GOTOFF8;

163 }

166 switch (Type) {

168 return ELF::R_68K_PLT32;

170 return ELF::R_68K_PLT16;

172 return ELF::R_68K_PLT8;

173 }

175 }

176}

177

178std::unique_ptr

180 return std::make_unique(OSABI);

181}

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

M68kRelType

Definition M68kELFObjectWriter.cpp:46

@ RT_8

Definition M68kELFObjectWriter.cpp:46

@ RT_16

Definition M68kELFObjectWriter.cpp:46

@ RT_32

Definition M68kELFObjectWriter.cpp:46

This file contains M68k specific fixup entries.

This file contains the declarations of the M68k MCAsmInfo properties.

This file provides M68k specific target descriptions.

PowerPC TLS Dynamic Call Fixup

static SymbolRef::Type getType(const Symbol *Sym)

#define llvm_unreachable(msg)

Marks that the current location is not supposed to be reachable.

This is an optimization pass for GlobalISel generic memory operations.

std::unique_ptr< MCObjectTargetWriter > createM68kELFObjectWriter(uint8_t OSABI)

Construct an M68k ELF object writer.

Definition M68kELFObjectWriter.cpp:179

@ FK_Data_1

A one-byte fixup.

@ FK_Data_4

A four-byte fixup.

@ FK_Data_2

A two-byte fixup.