Skip to content

Commit

Permalink
[mips] Implemented the .hword directive.
Browse files Browse the repository at this point in the history
Summary:
In order to pass the tests, this required marking R_MIPS_16 relocations
as needing to point to the symbol and not the section.

Reviewers: vkalintiris, dsanders

Subscribers: dsanders, llvm-commits

Differential Revision: http://reviews.llvm.org/D17200

llvm-svn: 260896
  • Loading branch information
ScottEgerton committed Feb 15, 2016
1 parent 73f1a40 commit d1aeb05
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 3 deletions.
5 changes: 5 additions & 0 deletions llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
Expand Up @@ -6216,6 +6216,11 @@ bool MipsAsmParser::ParseDirective(AsmToken DirectiveID) {
return false;
}

if (IDVal == ".hword") {
parseDataDirective(2, DirectiveID.getLoc());
return false;
}

if (IDVal == ".option")
return parseDirectiveOption();

Expand Down
1 change: 1 addition & 0 deletions llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
Expand Up @@ -412,6 +412,7 @@ bool MipsELFObjectWriter::needsRelocateWithSymbol(const MCSymbol &Sym,
case ELF::R_MICROMIPS_LO16:
return true;

case ELF::R_MIPS_16:
case ELF::R_MIPS_32:
if (cast<MCSymbolELF>(Sym).getOther() & ELF::STO_MIPS_MICROMIPS)
return true;
Expand Down
11 changes: 8 additions & 3 deletions llvm/test/MC/Mips/mips-data-directives.s
Expand Up @@ -7,30 +7,35 @@

# CHECK-ASM: .4byte 3735929054
# CHECK-ASM: .8byte -2401050962867405073
# CHECK-ASM: .2byte 49374
# CHECK-ASM: .4byte label
# CHECK-ASM: .8byte label
# CHECK-ASM: .2byte label

# Checking if the data and reloations were correctly emitted
# CHECK-OBJ: Section {
# CHECK-OBJ: Name: .data
# CHECK-OBJ: SectionData (
# CHECK-OBJ: 0000: DEADC0DE DEADC0DE DEADBEEF 00000000
# CHECK-OBJ: 0000: DEADC0DE DEADC0DE DEADBEEF C0DE0000
# CHECK-OBJ: 0010: 00000000 00000000
# CHECK-OBJ: )
# CHECK-OBJ: }

# CHECK-OBJ: Section {
# CHECK-OBJ: Name: .rel.data
# CHECK-OBJ: Relocations [
# CHECK-OBJ: 0xC R_MIPS_32 .data 0x0
# CHECK-OBJ: 0x10 R_MIPS_64 .data 0x0
# CHECK-OBJ: 0xE R_MIPS_32 .data 0x0
# CHECK-OBJ: 0x12 R_MIPS_64 .data 0x0
# CHECK-OBJ: 0x1A R_MIPS_16 .data 0x0
# CHECK-OBJ: ]
# CHECK-OBJ: }

.data
label:
.word 0xdeadc0de
.dword 0xdeadc0dedeadbeef
.hword 0xc0de

.word label
.dword label
.hword label

0 comments on commit d1aeb05

Please sign in to comment.