[mips] Add support to the '.dword' directive.

The '.dword' directive accepts a list of expressions and emits
them in 8-byte chunks in successive locations.

llvm-svn: 204822
This commit is contained in:
Matheus Almeida 2014-03-26 15:44:18 +00:00
parent 597e81dea1
commit ab5633b70c
2 changed files with 41 additions and 0 deletions

View File

@ -2629,6 +2629,11 @@ bool MipsAsmParser::parseDirectiveOption() {
bool MipsAsmParser::ParseDirective(AsmToken DirectiveID) {
StringRef IDVal = DirectiveID.getString();
if (IDVal == ".dword") {
parseDataDirective(8, DirectiveID.getLoc());
return false;
}
if (IDVal == ".ent") {
// Ignore this directive for now.
Parser.Lex();

View File

@ -0,0 +1,36 @@
# RUN: llvm-mc %s -arch=mips -mcpu=mips32r2 | \
# RUN: FileCheck %s -check-prefix=CHECK-ASM
#
# RUN: llvm-mc %s -arch=mips -mcpu=mips32r2 -filetype=obj -o - | \
# RUN: llvm-readobj -sections -section-data -section-relocations - | \
# RUN: FileCheck %s -check-prefix=CHECK-OBJ
# CHECK-ASM: .4byte 3735929054
# CHECK-ASM: .8byte -2401050962867405073
# CHECK-ASM: .4byte label
# CHECK-ASM: .8byte label
# Checking if the data and reloations were correctly emitted
# CHECK-OBJ: Section {
# CHECK-OBJ: Name: .data (51)
# CHECK-OBJ: SectionData (
# CHECK-OBJ: 0000: DEADC0DE DEADC0DE DEADBEEF 00000000
# CHECK-OBJ: 0010: 00000000 00000000
# CHECK-OBJ: )
# CHECK-OBJ: }
# CHECK-OBJ: Section {
# CHECK-OBJ: Name: .rel.data (47)
# CHECK-OBJ: Relocations [
# CHECK-OBJ: 0xC R_MIPS_32 .data 0x0
# CHECK-OBJ: 0x10 R_MIPS_64 .data 0x0
# CHECK-OBJ: ]
# CHECK-OBJ: }
.data
label:
.word 0xdeadc0de
.dword 0xdeadc0dedeadbeef
.word label
.dword label