31 case ELF::R_LARCH_B16:
33 case ELF::R_LARCH_B21:
35 case ELF::R_LARCH_ABS_HI20:
37 case ELF::R_LARCH_ABS_LO12:
39 case ELF::R_LARCH_ABS64_LO20:
41 case ELF::R_LARCH_ABS64_HI12:
43 case ELF::R_LARCH_PCALA_HI20:
45 case ELF::R_LARCH_PCALA_LO12:
47 case ELF::R_LARCH_PCALA64_LO20:
49 case ELF::R_LARCH_PCALA64_HI12:
51 case ELF::R_LARCH_GOT_PC_HI20:
53 case ELF::R_LARCH_GOT_PC_LO12:
55 case ELF::R_LARCH_GOT64_PC_LO20:
56 return "got64_pc_lo20";
57 case ELF::R_LARCH_GOT64_PC_HI12:
58 return "got64_pc_hi12";
59 case ELF::R_LARCH_GOT_HI20:
61 case ELF::R_LARCH_GOT_LO12:
63 case ELF::R_LARCH_GOT64_LO20:
65 case ELF::R_LARCH_GOT64_HI12:
67 case ELF::R_LARCH_TLS_LE_HI20:
69 case ELF::R_LARCH_TLS_LE_LO12:
71 case ELF::R_LARCH_TLS_LE64_LO20:
73 case ELF::R_LARCH_TLS_LE64_HI12:
75 case ELF::R_LARCH_TLS_IE_PC_HI20:
77 case ELF::R_LARCH_TLS_IE_PC_LO12:
79 case ELF::R_LARCH_TLS_IE64_PC_LO20:
80 return "ie64_pc_lo20";
81 case ELF::R_LARCH_TLS_IE64_PC_HI12:
82 return "ie64_pc_hi12";
83 case ELF::R_LARCH_TLS_IE_HI20:
85 case ELF::R_LARCH_TLS_IE_LO12:
87 case ELF::R_LARCH_TLS_IE64_LO20:
89 case ELF::R_LARCH_TLS_IE64_HI12:
91 case ELF::R_LARCH_TLS_LD_PC_HI20:
93 case ELF::R_LARCH_TLS_LD_HI20:
95 case ELF::R_LARCH_TLS_GD_PC_HI20:
97 case ELF::R_LARCH_TLS_GD_HI20:
99 case ELF::R_LARCH_CALL36:
101 case ELF::R_LARCH_TLS_DESC_PC_HI20:
102 return "desc_pc_hi20";
103 case ELF::R_LARCH_TLS_DESC_PC_LO12:
104 return "desc_pc_lo12";
105 case ELF::R_LARCH_TLS_DESC64_PC_LO20:
106 return "desc64_pc_lo20";
107 case ELF::R_LARCH_TLS_DESC64_PC_HI12:
108 return "desc64_pc_hi12";
109 case ELF::R_LARCH_TLS_DESC_HI20:
111 case ELF::R_LARCH_TLS_DESC_LO12:
113 case ELF::R_LARCH_TLS_DESC64_LO20:
114 return "desc64_lo20";
115 case ELF::R_LARCH_TLS_DESC64_HI12:
116 return "desc64_hi12";
117 case ELF::R_LARCH_TLS_DESC_LD:
119 case ELF::R_LARCH_TLS_DESC_CALL:
121 case ELF::R_LARCH_TLS_LE_HI20_R:
123 case ELF::R_LARCH_TLS_LE_ADD_R:
125 case ELF::R_LARCH_TLS_LE_LO12_R:
127 case ELF::R_LARCH_PCREL20_S2:
129 case ELF::R_LARCH_TLS_LD_PCREL20_S2:
130 return "ld_pcrel_20";
131 case ELF::R_LARCH_TLS_GD_PCREL20_S2:
132 return "gd_pcrel_20";
133 case ELF::R_LARCH_TLS_DESC_PCREL20_S2:
134 return "desc_pcrel_20";
140 .
Case(
"plt", ELF::R_LARCH_B26)
141 .
Case(
"b16", ELF::R_LARCH_B16)
142 .
Case(
"b21", ELF::R_LARCH_B21)
143 .
Case(
"b26", ELF::R_LARCH_B26)
144 .
Case(
"abs_hi20", ELF::R_LARCH_ABS_HI20)
145 .
Case(
"abs_lo12", ELF::R_LARCH_ABS_LO12)
146 .
Case(
"abs64_lo20", ELF::R_LARCH_ABS64_LO20)
147 .
Case(
"abs64_hi12", ELF::R_LARCH_ABS64_HI12)
148 .
Case(
"pc_hi20", ELF::R_LARCH_PCALA_HI20)
149 .
Case(
"pc_lo12", ELF::R_LARCH_PCALA_LO12)
150 .
Case(
"pc64_lo20", ELF::R_LARCH_PCALA64_LO20)
151 .
Case(
"pc64_hi12", ELF::R_LARCH_PCALA64_HI12)
152 .
Case(
"got_pc_hi20", ELF::R_LARCH_GOT_PC_HI20)
153 .
Case(
"got_pc_lo12", ELF::R_LARCH_GOT_PC_LO12)
154 .
Case(
"got64_pc_lo20", ELF::R_LARCH_GOT64_PC_LO20)
155 .
Case(
"got64_pc_hi12", ELF::R_LARCH_GOT64_PC_HI12)
156 .
Case(
"got_hi20", ELF::R_LARCH_GOT_HI20)
157 .
Case(
"got_lo12", ELF::R_LARCH_GOT_LO12)
158 .
Case(
"got64_lo20", ELF::R_LARCH_GOT64_LO20)
159 .
Case(
"got64_hi12", ELF::R_LARCH_GOT64_HI12)
160 .
Case(
"le_hi20", ELF::R_LARCH_TLS_LE_HI20)
161 .
Case(
"le_lo12", ELF::R_LARCH_TLS_LE_LO12)
162 .
Case(
"le64_lo20", ELF::R_LARCH_TLS_LE64_LO20)
163 .
Case(
"le64_hi12", ELF::R_LARCH_TLS_LE64_HI12)
164 .
Case(
"ie_pc_hi20", ELF::R_LARCH_TLS_IE_PC_HI20)
165 .
Case(
"ie_pc_lo12", ELF::R_LARCH_TLS_IE_PC_LO12)
166 .
Case(
"ie64_pc_lo20", ELF::R_LARCH_TLS_IE64_PC_LO20)
167 .
Case(
"ie64_pc_hi12", ELF::R_LARCH_TLS_IE64_PC_HI12)
168 .
Case(
"ie_hi20", ELF::R_LARCH_TLS_IE_HI20)
169 .
Case(
"ie_lo12", ELF::R_LARCH_TLS_IE_LO12)
170 .
Case(
"ie64_lo20", ELF::R_LARCH_TLS_IE64_LO20)
171 .
Case(
"ie64_hi12", ELF::R_LARCH_TLS_IE64_HI12)
172 .
Case(
"ld_pc_hi20", ELF::R_LARCH_TLS_LD_PC_HI20)
173 .
Case(
"ld_hi20", ELF::R_LARCH_TLS_LD_HI20)
174 .
Case(
"gd_pc_hi20", ELF::R_LARCH_TLS_GD_PC_HI20)
175 .
Case(
"gd_hi20", ELF::R_LARCH_TLS_GD_HI20)
176 .
Case(
"call36", ELF::R_LARCH_CALL36)
177 .
Case(
"desc_pc_hi20", ELF::R_LARCH_TLS_DESC_PC_HI20)
178 .
Case(
"desc_pc_lo12", ELF::R_LARCH_TLS_DESC_PC_LO12)
179 .
Case(
"desc64_pc_lo20", ELF::R_LARCH_TLS_DESC64_PC_LO20)
180 .
Case(
"desc64_pc_hi12", ELF::R_LARCH_TLS_DESC64_PC_HI12)
181 .
Case(
"desc_hi20", ELF::R_LARCH_TLS_DESC_HI20)
182 .
Case(
"desc_lo12", ELF::R_LARCH_TLS_DESC_LO12)
183 .
Case(
"desc64_lo20", ELF::R_LARCH_TLS_DESC64_LO20)
184 .
Case(
"desc64_hi12", ELF::R_LARCH_TLS_DESC64_HI12)
185 .
Case(
"desc_ld", ELF::R_LARCH_TLS_DESC_LD)
186 .
Case(
"desc_call", ELF::R_LARCH_TLS_DESC_CALL)
187 .
Case(
"le_hi20_r", ELF::R_LARCH_TLS_LE_HI20_R)
188 .
Case(
"le_add_r", ELF::R_LARCH_TLS_LE_ADD_R)
189 .
Case(
"le_lo12_r", ELF::R_LARCH_TLS_LE_LO12_R)
190 .
Case(
"pcrel_20", ELF::R_LARCH_PCREL20_S2)
191 .
Case(
"ld_pcrel_20", ELF::R_LARCH_TLS_LD_PCREL20_S2)
192 .
Case(
"gd_pcrel_20", ELF::R_LARCH_TLS_GD_PCREL20_S2)
193 .
Case(
"desc_pcrel_20", ELF::R_LARCH_TLS_DESC_PCREL20_S2)
197void LoongArchMCAsmInfo::anchor() {}
217 bool HasSpecifier = S != 0 && S != ELF::R_LARCH_B26;
This file contains constants used for implementing Dwarf debug support.
static StringRef getLoongArchSpecifierName(uint16_t S)
LoongArchMCAsmInfo(const Triple &TargetTriple)
void printSpecifierExpr(raw_ostream &OS, const MCSpecifierExpr &Expr) const override
static const LoongArchMCExpr * create(const MCExpr *Expr, uint16_t S, MCContext &Ctx, bool Hint=false)
const char * Data16bitsDirective
const char * Data8bitsDirective
These directives are used to output some unit of integer data to the current section.
const char * Data64bitsDirective
ExceptionHandling ExceptionsType
Exception handling format for the target. Defaults to None.
bool AllowDollarAtStartOfIdentifier
This is true if the assembler allows the "$" character at the start of of a string to be lexed as an ...
const char * Data32bitsDirective
void printExpr(raw_ostream &, const MCExpr &) const
bool SupportsDebugInformation
True if target supports emission of debugging information.
bool AlignmentIsInBytes
If this is true (the default) then the asmprinter emits ".align N" directives, where N is the number ...
const char * ZeroDirective
This should be set to the directive used to get some number of zero (and non-zero if supported by the...
bool DwarfRegNumForCFI
True if dwarf register numbers are printed instead of symbolic register names in ....
unsigned CodePointerSize
Code pointer size in bytes. Default is 4.
unsigned CalleeSaveStackSlotSize
Size of the stack slot reserved for callee-saved registers, in bytes.
StringRef CommentString
This indicates the comment string used by the assembler.
Context object for machine code objects.
Base class for the full range of assembler expressions which are needed for parsing.
Extension point for target-specific MCExpr subclasses with a relocation specifier,...
const MCExpr * getSubExpr() const
Spec getSpecifier() const
StringRef - Represent a constant reference to a string, i.e.
A switch()-like statement whose cases are string literals.
StringSwitch & Case(StringLiteral S, T Value)
Triple - Helper class for working with autoconf configuration names.
This class implements an extremely fast bulk output stream that can only output to a stream.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
uint16_t parseSpecifier(StringRef name)
This is an optimization pass for GlobalISel generic memory operations.
@ DwarfCFI
DWARF-like instruction based exceptions.