Index: lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h =================================================================== --- lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h +++ lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h @@ -23,18 +23,20 @@ class MCAssembler; struct MCFixupKindInfo; -class Target; class MCObjectWriter; +class MCRegisterInfo; +class Target; class MipsAsmBackend : public MCAsmBackend { - Triple::OSType OSType; + Triple TheTriple; bool IsLittle; // Big or little endian - bool Is64Bit; // 32 or 64 bit words public: - MipsAsmBackend(const Target &T, Triple::OSType OSType, bool IsLittle, - bool Is64Bit) - : MCAsmBackend(), OSType(OSType), IsLittle(IsLittle), Is64Bit(Is64Bit) {} + MipsAsmBackend(const Target &T, const MCRegisterInfo &MRI, const Triple &TT, + StringRef CPU) + : MCAsmBackend(), TheTriple(TT), + IsLittle(TT.getArch() == Triple::mipsel || + TT.getArch() == Triple::mips64el) {} MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override; Index: lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp =================================================================== --- lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp +++ lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp @@ -205,8 +205,9 @@ MCObjectWriter * MipsAsmBackend::createObjectWriter(raw_pwrite_stream &OS) const { - return createMipsELFObjectWriter(OS, - MCELFObjectTargetWriter::getOSABI(OSType), IsLittle, Is64Bit); + return createMipsELFObjectWriter( + OS, TheTriple, MCELFObjectTargetWriter::getOSABI(TheTriple.getOS()), + IsLittle); } // Little-endian fixup data byte ordering: @@ -478,31 +479,3 @@ // (recordRelocation() overwrites it with it's own calculation). (void)adjustFixupValue(Fixup, Value, &Asm.getContext()); } - -// MCAsmBackend -MCAsmBackend *llvm::createMipsAsmBackendEL32(const Target &T, - const MCRegisterInfo &MRI, - const Triple &TT, StringRef CPU) { - return new MipsAsmBackend(T, TT.getOS(), /*IsLittle*/ true, - /*Is64Bit*/ false); -} - -MCAsmBackend *llvm::createMipsAsmBackendEB32(const Target &T, - const MCRegisterInfo &MRI, - const Triple &TT, StringRef CPU) { - return new MipsAsmBackend(T, TT.getOS(), /*IsLittle*/ false, - /*Is64Bit*/ false); -} - -MCAsmBackend *llvm::createMipsAsmBackendEL64(const Target &T, - const MCRegisterInfo &MRI, - const Triple &TT, StringRef CPU) { - return new MipsAsmBackend(T, TT.getOS(), /*IsLittle*/ true, /*Is64Bit*/ true); -} - -MCAsmBackend *llvm::createMipsAsmBackendEB64(const Target &T, - const MCRegisterInfo &MRI, - const Triple &TT, StringRef CPU) { - return new MipsAsmBackend(T, TT.getOS(), /*IsLittle*/ false, - /*Is64Bit*/ true); -} Index: lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp =================================================================== --- lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp +++ lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp @@ -50,7 +50,7 @@ class MipsELFObjectWriter : public MCELFObjectTargetWriter { public: - MipsELFObjectWriter(bool _is64Bit, uint8_t OSABI, bool _isN64, + MipsELFObjectWriter(uint8_t OSABI, bool HasRelocationAddend, bool IsN64_, bool IsLittleEndian); ~MipsELFObjectWriter() override; @@ -204,11 +204,11 @@ } // end anonymous namespace -MipsELFObjectWriter::MipsELFObjectWriter(bool _is64Bit, uint8_t OSABI, - bool _isN64, bool IsLittleEndian) - : MCELFObjectTargetWriter(_is64Bit, OSABI, ELF::EM_MIPS, - /*HasRelocationAddend*/ _isN64, - /*IsN64*/ _isN64) {} +MipsELFObjectWriter::MipsELFObjectWriter(uint8_t OSABI, + bool HasRelocationAddend, bool IsN64_, + bool IsLittleEndian) + : MCELFObjectTargetWriter(IsN64_, OSABI, ELF::EM_MIPS, HasRelocationAddend, + IsN64_) {} MipsELFObjectWriter::~MipsELFObjectWriter() {} @@ -634,10 +634,16 @@ } MCObjectWriter *llvm::createMipsELFObjectWriter(raw_pwrite_stream &OS, - uint8_t OSABI, - bool IsLittleEndian, - bool Is64Bit) { + const Triple &TT, uint8_t OSABI, + bool IsLittleEndian) { + bool HasRelocationAddend = TT.getEnvironment() == Triple::ABIN32 || + TT.getEnvironment() == Triple::ABI64 || + TT.getEnvironment() == Triple::GNUABIN32 || + TT.getEnvironment() == Triple::GNUABI64 || + TT.getEnvironment() == Triple::AndroidABI64; + bool IsN64 = TT.getEnvironment() == Triple::ABI64 || + TT.getEnvironment() == Triple::GNUABI64; MCELFObjectTargetWriter *MOTW = - new MipsELFObjectWriter(Is64Bit, OSABI, Is64Bit, IsLittleEndian); + new MipsELFObjectWriter(OSABI, HasRelocationAddend, IsN64, IsLittleEndian); return createELFObjectWriter(MOTW, OS, IsLittleEndian); } Index: lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h =================================================================== --- lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h +++ lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h @@ -42,21 +42,9 @@ const MCRegisterInfo &MRI, MCContext &Ctx); -MCAsmBackend *createMipsAsmBackendEB32(const Target &T, - const MCRegisterInfo &MRI, - const Triple &TT, StringRef CPU); -MCAsmBackend *createMipsAsmBackendEL32(const Target &T, - const MCRegisterInfo &MRI, - const Triple &TT, StringRef CPU); -MCAsmBackend *createMipsAsmBackendEB64(const Target &T, - const MCRegisterInfo &MRI, - const Triple &TT, StringRef CPU); -MCAsmBackend *createMipsAsmBackendEL64(const Target &T, - const MCRegisterInfo &MRI, - const Triple &TT, StringRef CPU); - -MCObjectWriter *createMipsELFObjectWriter(raw_pwrite_stream &OS, uint8_t OSABI, - bool IsLittleEndian, bool Is64Bit); +MCObjectWriter *createMipsELFObjectWriter(raw_pwrite_stream &OS, + const Triple &TT, uint8_t OSABI, + bool IsLittleEndian); namespace MIPS_MC { StringRef selectMipsCPU(const Triple &TT, StringRef CPU); Index: lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp =================================================================== --- lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp +++ lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp @@ -13,6 +13,7 @@ #include "MipsMCTargetDesc.h" #include "InstPrinter/MipsInstPrinter.h" +#include "MipsAsmBackend.h" #include "MipsELFStreamer.h" #include "MipsMCAsmInfo.h" #include "MipsMCNaCl.h" @@ -192,6 +193,9 @@ TargetRegistry::RegisterObjectTargetStreamer( *T, createMipsObjectTargetStreamer); + + // Register the asm backend. + RegisterMCAsmBackend Y(*T); } // Register the MC Code Emitter @@ -200,15 +204,4 @@ for (Target *T : {&TheMipselTarget, &TheMips64elTarget}) TargetRegistry::RegisterMCCodeEmitter(*T, createMipsMCCodeEmitterEL); - - // Register the asm backend. - TargetRegistry::RegisterMCAsmBackend(TheMipsTarget, - createMipsAsmBackendEB32); - TargetRegistry::RegisterMCAsmBackend(TheMipselTarget, - createMipsAsmBackendEL32); - TargetRegistry::RegisterMCAsmBackend(TheMips64Target, - createMipsAsmBackendEB64); - TargetRegistry::RegisterMCAsmBackend(TheMips64elTarget, - createMipsAsmBackendEL64); - } Index: test/MC/Mips/cpsetup.s =================================================================== --- test/MC/Mips/cpsetup.s +++ test/MC/Mips/cpsetup.s @@ -32,10 +32,10 @@ # NXX-NEXT: sd $gp, 8($sp) # NXX-NEXT: lui $gp, 0 -# N32-NEXT: R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N32-NEXT: R_MIPS_HI16 __gnu_local_gp # N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 __cerror # NXX-NEXT: addiu $gp, $gp, 0 -# N32-NEXT: R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N32-NEXT: R_MIPS_LO16 __gnu_local_gp # N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 __cerror # N64-NEXT: daddu $gp, $gp, $25 @@ -60,10 +60,10 @@ # NXX-NEXT: move $2, $gp # NXX-NEXT: lui $gp, 0 -# N32-NEXT: R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N32-NEXT: R_MIPS_HI16 __gnu_local_gp # N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 __cerror # NXX-NEXT: addiu $gp, $gp, 0 -# N32-NEXT: R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N32-NEXT: R_MIPS_LO16 __gnu_local_gp # N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 __cerror # N64-NEXT: daddu $gp, $gp, $25 @@ -96,10 +96,10 @@ # NXX-NEXT: move $2, $gp # NXX-NEXT: lui $gp, 0 -# N32-NEXT: {{^ *0+}}38: R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N32-NEXT: {{^ *0+}}38: R_MIPS_HI16 __gnu_local_gp # N64-NEXT: {{^ *0+}}40: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 .text # NXX-NEXT: addiu $gp, $gp, 0 -# N32-NEXT: {{^ *0+}}3c: R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N32-NEXT: {{^ *0+}}3c: R_MIPS_LO16 __gnu_local_gp # N64-NEXT: {{^ *0+}}44: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 .text # N64-NEXT: daddu $gp, $gp, $25 # NXX-NEXT: nop @@ -149,10 +149,10 @@ # NXX-NEXT: sd $gp, 8($sp) # NXX-NEXT: lui $gp, 0 -# N32-NEXT: R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N32-NEXT: R_MIPS_HI16 __gnu_local_gp # N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 __cerror # NXX-NEXT: addiu $gp, $gp, 0 -# N32-NEXT: R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE __gnu_local_gp +# N32-NEXT: R_MIPS_LO16 __gnu_local_gp # N64-NEXT: R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 __cerror # N64-NEXT: daddu $gp, $gp, $25 Index: test/MC/Mips/elf_eflags.s =================================================================== --- test/MC/Mips/elf_eflags.s +++ /dev/null @@ -1,130 +0,0 @@ -# These *MUST* match the output of 'gcc -c' compiled with the same triple and -# corresponding options (-mcpu=mips32 -> -mips32 for example). - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r6 -mabi=n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R6 %s -# MIPSEL-MIPS64R6: Flags [ (0xA0000406) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r6 -mabi=n64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R6-NAN2008 %s -# MIPSEL-MIPS64R6-NAN2008: Flags [ (0xA0000406) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -mabi=n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2 %s -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r3 -mabi=n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2 %s -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r5 -mabi=n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2 %s -# MIPSEL-MIPS64R2: Flags [ (0x80000006) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -mabi=n64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2-NAN2008 %s -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r3 -mabi=n64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2-NAN2008 %s -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r5 -mabi=n64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64R2-NAN2008 %s -# MIPSEL-MIPS64R2-NAN2008: Flags [ (0x80000406) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64 -mabi=n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64 %s -# MIPSEL-MIPS64: Flags [ (0x60000006) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64 -mabi=n64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS64-NAN2008 %s -# MIPSEL-MIPS64-NAN2008: Flags [ (0x60000406) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r6 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R6 %s -# MIPSEL-MIPS32R6: Flags [ (0x90001404) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r6 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R6-NAN2008 %s -# MIPSEL-MIPS32R6-NAN2008: Flags [ (0x90001404) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r2 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R2 %s -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r3 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R2 %s -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r5 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R2 %s -# MIPSEL-MIPS32R2: Flags [ (0x70001004) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R2-NAN2008 %s -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r3 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R2-NAN2008 %s -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r5 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32R2-NAN2008 %s -# MIPSEL-MIPS32R2-NAN2008: Flags [ (0x70001404) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32 %s -# MIPSEL-MIPS32: Flags [ (0x50001004) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32-NAN2008 %s -# MIPSEL-MIPS32-NAN2008: Flags [ (0x50001404) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -mabi=n32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N32 %s -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mabi=n32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N32 %s -# MIPS64EL-MIPS64R2-N32: Flags [ (0x80000024) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mabi=n32 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N32-NAN2008 %s -# MIPS64EL-MIPS64R2-N32-NAN2008: Flags [ (0x80000424) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 -mabi=n32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N32 %s -# MIPS64EL-MIPS64-N32: Flags [ (0x60000024) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 -mabi=n32 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N32-NAN2008 %s -# MIPS64EL-MIPS64-N32-NAN2008: Flags [ (0x60000424) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mabi=n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N64 %s -# MIPS64EL-MIPS64R2-N64: Flags [ (0x80000006) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mabi=n64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N64-NAN2008 %s -# MIPS64EL-MIPS64R2-N64-NAN2008: Flags [ (0x80000406) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mabi=n64 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N64 %s -# MIPS64EL-MIPS64-N64: Flags [ (0x60000006) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mabi=n64 -mattr=+nan2008 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N64-NAN2008 %s -# MIPS64EL-MIPS64-N64-NAN2008: Flags [ (0x60000406) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mabi=o32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-O32 %s -# MIPS64EL-MIPS64R2-O32: Flags [ (0x80001104) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mabi=o32 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-O32-NAN2008 %s -# MIPS64EL-MIPS64R2-O32-NAN2008: Flags [ (0x80001504) - -# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips5 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS5 %s -# MIPS5: Flags [ (0x40000006) - - # RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips5 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS5-NAN2008 %s -# MIPS5-NAN2008: Flags [ (0x40000406) - -# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips4 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS4 %s -# MIPS4: Flags [ (0x30000006) - - # RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips4 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS4-NAN2008 %s -# MIPS4-NAN2008: Flags [ (0x30000406) - -# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips3 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS3 %s -# MIPS3: Flags [ (0x20000006) - - # RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips3 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS3-NAN2008 %s -# MIPS3-NAN2008: Flags [ (0x20000406) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips2 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS2 %s -# MIPSEL-MIPS2: Flags [ (0x10001004) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips2 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS2-NAN2008 %s -# MIPSEL-MIPS2-NAN2008: Flags [ (0x10001404) - -# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips1 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS1 %s -# MIPS1: Flags [ (0x1004) - - # RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips1 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS1-NAN2008 %s -# MIPS1-NAN2008: Flags [ (0x1404) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mabi=o32 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-O32 %s -# MIPS64EL-MIPS64-O32: Flags [ (0x60001104) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mabi=o32 -mattr=+nan2008 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-O32-NAN2008 %s -# MIPS64EL-MIPS64-O32-NAN2008: Flags [ (0x60001504) - -# Default ABI for MIPS64 is N64 as opposed to GCC/GAS (N32) -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2 %s -# MIPS64EL-MIPS64R2: Flags [ (0x80000006) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-NAN2008 %s -# MIPS64EL-MIPS64R2-NAN2008: Flags [ (0x80000406) - -# Default ABI for MIPS64 is N64 as opposed to GCC/GAS (N32) -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64 %s -# MIPS64EL-MIPS64: Flags [ (0x60000006) - -# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-NAN2008 %s -# MIPS64EL-MIPS64-NAN2008: Flags [ (0x60000406) - -# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=octeon -mabi=n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-OCTEON %s -# MIPSEL-OCTEON: Flags [ (0x808B0006) Index: test/MC/Mips/elf_header.s =================================================================== --- /dev/null +++ test/MC/Mips/elf_header.s @@ -0,0 +1,133 @@ +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips1 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=O32 --check-prefix=MIPS1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips2 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=O32 --check-prefix=MIPS2 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips3 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=O32 --check-prefix=MIPS3 --check-prefix=NAN1985 --check-prefix=32BITMODE %s +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips4 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=O32 --check-prefix=MIPS4 --check-prefix=NAN1985 --check-prefix=32BITMODE %s +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips5 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=O32 --check-prefix=MIPS5 --check-prefix=NAN1985 --check-prefix=32BITMODE %s +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=O32 --check-prefix=MIPS32R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r2 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R2 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r3 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R3 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r5 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R5 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R2 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r3 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R3 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r5 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R5 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32r6 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R6 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips1 -mabi=o32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=O32 --check-prefix=MIPS1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips2 -mabi=o32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=O32 --check-prefix=MIPS2 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips3 -mabi=o32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=O32 --check-prefix=MIPS3 --check-prefix=NAN1985 --check-prefix=32BITMODE %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips4 -mabi=o32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=O32 --check-prefix=MIPS4 --check-prefix=NAN1985 --check-prefix=32BITMODE %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips5 -mabi=o32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=O32 --check-prefix=MIPS5 --check-prefix=NAN1985 --check-prefix=32BITMODE %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mabi=o32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=O32 --check-prefix=MIPS32R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mabi=o32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mabi=o32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips32r2 -mabi=o32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R2 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips32r3 -mabi=o32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R3 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips32r5 -mabi=o32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R5 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips32r2 -mabi=o32 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R2 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips32r3 -mabi=o32 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R3 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips32r5 -mabi=o32 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R5 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips32r6 -mabi=o32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=O32 --check-prefix=MIPS32R6 --check-prefix=NAN2008 %s + +# Default ABI for MIPS64 is N64 as opposed to GCC/GAS (N32) +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips3 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=N32 --check-prefix=MIPS3 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips4 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=N32 --check-prefix=MIPS4 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips5 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=N32 --check-prefix=MIPS5 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=N32 --check-prefix=MIPS64R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R2 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r3 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R3 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r5 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R5 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -mabi=n32 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R2 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r3 -mabi=n32 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R3 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r5 -mabi=n32 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R5 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r6 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R6 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips3 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=N32 --check-prefix=MIPS3 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips4 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=N32 --check-prefix=MIPS4 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips5 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=N32 --check-prefix=MIPS5 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=BE --check-prefix=N32 --check-prefix=MIPS64R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R2 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r3 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R3 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r5 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R5 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mabi=n32 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R2 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r3 -mabi=n32 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R3 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r5 -mabi=n32 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R5 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r6 -mabi=n32 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF32 --check-prefix=LE --check-prefix=N32 --check-prefix=MIPS64R6 --check-prefix=NAN2008 %s + +# Default ABI for MIPS64 is N64 as opposed to GCC/GAS (N32) +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips3 -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=BE --check-prefix=N64 --check-prefix=MIPS3 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips4 -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=BE --check-prefix=N64 --check-prefix=MIPS4 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips5 -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=BE --check-prefix=N64 --check-prefix=MIPS5 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=BE --check-prefix=N64 --check-prefix=MIPS64R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R2 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r3 -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R3 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r5 -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R5 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -mabi=n64 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R2 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r3 -mabi=n64 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R3 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r5 -mabi=n64 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R5 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r6 -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R6 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips3 -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=BE --check-prefix=N64 --check-prefix=MIPS3 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips4 -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=BE --check-prefix=N64 --check-prefix=MIPS4 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips5 -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=BE --check-prefix=N64 --check-prefix=MIPS5 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=BE --check-prefix=N64 --check-prefix=MIPS64R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R1 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R2 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r3 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R3 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r5 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R5 --check-prefix=NAN1985 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R2 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r3 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R3 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r5 -mattr=+nan2008 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R5 --check-prefix=NAN2008 %s +# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r6 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=MIPS64R6 --check-prefix=NAN2008 %s + +# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=octeon -mabi=n64 %s -o - | llvm-readobj -h | FileCheck --check-prefix=ALL --check-prefix=ELF64 --check-prefix=LE --check-prefix=N64 --check-prefix=OCTEON --check-prefix=NAN1985 %s + +# ALL: ElfHeader { +# ALL-NEXT: Ident { +# ALL-NEXT: Magic: (7F 45 4C 46) +# ELF32-NEXT: Class: 32-bit (0x1) +# ELF64-NEXT: Class: 64-bit (0x2) +# LE-NEXT: DataEncoding: LittleEndian (0x1) +# BE-NEXT: DataEncoding: BigEndian (0x2) +# ALL-NEXT: FileVersion: 1 +# ALL-NEXT: OS/ABI: SystemV (0x0) +# ALL-NEXT: ABIVersion: 0 +# ALL-NEXT: Unused: (00 00 00 00 00 00 00) +# ALL-NEXT: } +# ALL-NEXT: Type: Relocatable (0x1) +# ALL-NEXT: Machine: EM_MIPS (0x8) +# ALL-NEXT: Version: 1 +# ALL-NEXT: Entry: 0x0 +# ALL-NEXT: ProgramHeaderOffset: 0x0 +# ALL-NEXT: SectionHeaderOffset: +# ALL-NEXT: Flags [ +# 32BITMODE-NEXT: EF_MIPS_32BITMODE (0x100) +# N32-NEXT: EF_MIPS_ABI2 (0x20) +# O32-NEXT: EF_MIPS_ABI_O32 (0x1000) + +# MIPS2-NEXT: EF_MIPS_ARCH_2 (0x10000000) +# MIPS3-NEXT: EF_MIPS_ARCH_3 (0x20000000) +# MIPS4-NEXT: EF_MIPS_ARCH_4 (0x30000000) +# MIPS5-NEXT: EF_MIPS_ARCH_5 (0x40000000) +# MIPS32R1-NEXT: EF_MIPS_ARCH_32 (0x50000000) +# MIPS32R2-NEXT: EF_MIPS_ARCH_32R2 (0x70000000) +# The R2 flag is reused for R3 and R5. +# MIPS32R3-NEXT: EF_MIPS_ARCH_32R2 (0x70000000) +# MIPS32R5-NEXT: EF_MIPS_ARCH_32R2 (0x70000000) +# MIPS32R6-NEXT: EF_MIPS_ARCH_32R6 (0x90000000) +# MIPS64R1-NEXT: EF_MIPS_ARCH_64 (0x60000000) +# MIPS64R2-NEXT: EF_MIPS_ARCH_64R2 (0x80000000) +# The R2 flag is reused for R3 and R5. +# MIPS64R3-NEXT: EF_MIPS_ARCH_64R2 (0x80000000) +# MIPS64R5-NEXT: EF_MIPS_ARCH_64R2 (0x80000000) +# MIPS64R6-NEXT: EF_MIPS_ARCH_64R6 (0xA0000000) +# OCTEON-NEXT: EF_MIPS_ARCH_64R2 (0x80000000) + +# ALL-NEXT: EF_MIPS_CPIC (0x4) + +# OCTEON-NEXT: EF_MIPS_MACH_OCTEON (0x8B0000) + +# NAN2008-NEXT: EF_MIPS_NAN2008 (0x400) +# N64-NEXT: EF_MIPS_PIC (0x2) +# ALL-NEXT: ] Index: test/MC/Mips/reloc-directive.s =================================================================== --- test/MC/Mips/reloc-directive.s +++ test/MC/Mips/reloc-directive.s @@ -33,20 +33,14 @@ # OBJ-O32: 0x8 R_MIPS_32 .text 0x0 # OBJ-O32: 0xC R_MIPS_NONE - 0x0 -# FIXME: We can't get N32 correct at the moment. If we use a mips-* triple then -# we incorrectly drop the addend. If we use a mips64-* triple then we -# incorrectly use the 3-reloc encoding (and ELF64). mips64-* triples -# are closest to being correct so we use them for now. -# This should be corrected once the triple bugfixes allow us to be ABI -# dependent rather than triple dependent. # OBJ-N32-LABEL: Name: .text # 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: 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 +# OBJ-N32: 0x0 R_MIPS_NONE .text 0x4 +# OBJ-N32: 0x4 R_MIPS_NONE .text 0x0 +# OBJ-N32: 0x8 R_MIPS_32 .text 0x8 +# OBJ-N32: 0xC R_MIPS_NONE - 0x0 # OBJ-N64-LABEL: Name: .text # OBJ-N64: 0000: 00000000 00000000 00000000