mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
[mips][ias] N32/N64 must not sort the relocation table.
Doing so changes the evaluation order for relocation composition. Patch By: Daniel Sanders Reviewers: vkalintiris, atanasyan Differential Revision: https://reviews.llvm.org/D26401 llvm-svn: 288666
This commit is contained in:
parent
d28e448e11
commit
ec1372dab4
@ -419,6 +419,13 @@ unsigned MipsELFObjectWriter::getRelocType(MCContext &Ctx,
|
||||
/// always match using the expressions from the source.
|
||||
void MipsELFObjectWriter::sortRelocs(const MCAssembler &Asm,
|
||||
std::vector<ELFRelocationEntry> &Relocs) {
|
||||
|
||||
// We do not need to sort the relocation table for RELA relocations which
|
||||
// N32/N64 uses as the relocation addend contains the value we require,
|
||||
// rather than it being split across a pair of relocations.
|
||||
if (hasRelocationAddend())
|
||||
return;
|
||||
|
||||
if (Relocs.size() < 2)
|
||||
return;
|
||||
|
||||
|
@ -43,16 +43,24 @@ foo:
|
||||
# OBJ-N32: 0000: 00000000 00000000 00000000
|
||||
# OBJ-N32-LABEL: }
|
||||
# OBJ-N32-LABEL: Relocations [
|
||||
# OBJ-N32: 0x0 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE .text 0x4
|
||||
|
||||
# OBJ-N32: 0x4 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE .text 0x0
|
||||
# OBJ-N32: 0x0 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE .text 0x4
|
||||
# OBJ-N32: 0x8 R_MIPS_32/R_MIPS_NONE/R_MIPS_NONE .text 0x8
|
||||
# OBJ-N32: 0xC R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE - 0x0
|
||||
|
||||
# FIXME:This is the correct output for reference.
|
||||
|
||||
# OBJ-N32-FIXME: 0x4 R_MIPS_NONE .text 0x0
|
||||
# OBJ-N32-FIXME: 0x0 R_MIPS_NONE .text 0x4
|
||||
# OBJ-N32-FIXME: 0x8 R_MIPS_32 .text 0x8
|
||||
# OBJ-N32-FIXME: 0xC R_MIPS_NONE - 0x0
|
||||
|
||||
# OBJ-N64-LABEL: Name: .text
|
||||
# OBJ-N64: 0000: 00000000 00000000 00000000
|
||||
# OBJ-N64-LABEL: }
|
||||
# OBJ-N64-LABEL: Relocations [
|
||||
# OBJ-N64: 0x0 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE .text 0x4
|
||||
# OBJ-N64: 0x4 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE .text 0x0
|
||||
# OBJ-N64: 0x0 R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE .text 0x4
|
||||
# OBJ-N64: 0x8 R_MIPS_32/R_MIPS_NONE/R_MIPS_NONE .text 0x8
|
||||
# OBJ-N64: 0xC R_MIPS_NONE/R_MIPS_NONE/R_MIPS_NONE - 0x0
|
||||
|
Loading…
Reference in New Issue
Block a user