mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-10 05:41:40 +00:00
[MSP430] Add support for .refsym directive
Introduces support for '.refsym' assembler directive. From GCC docs (for MSP430): '.refsym' - This directive instructs assembler to add an undefined reference to the symbol following the directive. No relocation is created for this symbol; it will exist purely for pulling in object files from archives. Patch by Kristina Bessonova! Differential Revision: https://reviews.llvm.org/D54618 llvm-svn: 347041
This commit is contained in:
parent
dd107226b3
commit
9b1cbb8f4a
@ -51,6 +51,7 @@ class MSP430AsmParser : public MCTargetAsmParser {
|
||||
SMLoc NameLoc, OperandVector &Operands) override;
|
||||
|
||||
bool ParseDirective(AsmToken DirectiveID) override;
|
||||
bool ParseDirectiveRefSym(AsmToken DirectiveID);
|
||||
|
||||
unsigned validateTargetOperandClass(MCParsedAsmOperand &Op,
|
||||
unsigned Kind) override;
|
||||
@ -407,6 +408,16 @@ bool MSP430AsmParser::ParseInstruction(ParseInstructionInfo &Info,
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MSP430AsmParser::ParseDirectiveRefSym(AsmToken DirectiveID) {
|
||||
StringRef Name;
|
||||
if (getParser().parseIdentifier(Name))
|
||||
return TokError("expected identifier in directive");
|
||||
|
||||
MCSymbol *Sym = getContext().getOrCreateSymbol(Name);
|
||||
getStreamer().EmitSymbolAttribute(Sym, MCSA_Global);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MSP430AsmParser::ParseDirective(AsmToken DirectiveID) {
|
||||
StringRef IDVal = DirectiveID.getIdentifier();
|
||||
if (IDVal.lower() == ".long") {
|
||||
@ -415,6 +426,8 @@ bool MSP430AsmParser::ParseDirective(AsmToken DirectiveID) {
|
||||
ParseLiteralValues(2, DirectiveID.getLoc());
|
||||
} else if (IDVal.lower() == ".byte") {
|
||||
ParseLiteralValues(1, DirectiveID.getLoc());
|
||||
} else if (IDVal.lower() == ".refsym") {
|
||||
return ParseDirectiveRefSym(DirectiveID);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
14
test/MC/MSP430/refsym.s
Normal file
14
test/MC/MSP430/refsym.s
Normal file
@ -0,0 +1,14 @@
|
||||
# RUN: llvm-mc -filetype=obj -triple=msp430 %s | llvm-readobj -t - | FileCheck %s
|
||||
|
||||
foo:
|
||||
.refsym __hook
|
||||
|
||||
; CHECK: Symbol {
|
||||
; CHECK: Name: __hook (30)
|
||||
; CHECK-NEXT: Value: 0x0
|
||||
; CHECK-NEXT: Size: 0
|
||||
; CHECK-NEXT: Binding: Global (0x1)
|
||||
; CHECK-NEXT: Type: None (0x0)
|
||||
; CHECK-NEXT: Other: 0
|
||||
; CHECK-NEXT: Section: Undefined (0x0)
|
||||
; CHECK-NEXT: }
|
Loading…
Reference in New Issue
Block a user