diff --git a/llvm/lib/Object/COFFImportFile.cpp b/llvm/lib/Object/COFFImportFile.cpp index ff3dcf9e13ffa..595533ff94725 100644 --- a/llvm/lib/Object/COFFImportFile.cpp +++ b/llvm/lib/Object/COFFImportFile.cpp @@ -133,6 +133,8 @@ static uint16_t getImgRelRelocation(MachineTypes Machine) { return IMAGE_REL_ARM64_ADDR32NB; case IMAGE_FILE_MACHINE_I386: return IMAGE_REL_I386_DIR32NB; + case IMAGE_FILE_MACHINE_R4000: + return IMAGE_REL_MIPS_REFWORDNB; } } diff --git a/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp b/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp index 58ff720516f38..1782e24287860 100644 --- a/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp +++ b/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp @@ -79,6 +79,7 @@ MachineTypes getEmulation(StringRef S) { .Case("arm", IMAGE_FILE_MACHINE_ARMNT) .Case("arm64", IMAGE_FILE_MACHINE_ARM64) .Case("arm64ec", IMAGE_FILE_MACHINE_ARM64EC) + .Case("r4000", IMAGE_FILE_MACHINE_R4000) .Default(IMAGE_FILE_MACHINE_UNKNOWN); } @@ -93,6 +94,8 @@ MachineTypes getMachine(Triple T) { case Triple::aarch64: return T.isWindowsArm64EC() ? COFF::IMAGE_FILE_MACHINE_ARM64EC : COFF::IMAGE_FILE_MACHINE_ARM64; + case Triple::mipsel: + return COFF::IMAGE_FILE_MACHINE_R4000; default: return COFF::IMAGE_FILE_MACHINE_UNKNOWN; } @@ -173,7 +176,8 @@ int llvm::dlltoolDriverMain(llvm::ArrayRef ArgsArr) { (!Args.hasArgNoClaim(OPT_d) && !Args.hasArgNoClaim(OPT_l))) { Table.printHelp(outs(), "llvm-dlltool [options] file...", "llvm-dlltool", false); - llvm::outs() << "\nTARGETS: i386, i386:x86-64, arm, arm64, arm64ec\n"; + llvm::outs() + << "\nTARGETS: i386, i386:x86-64, arm, arm64, arm64ec, r4000\n"; return 1; } diff --git a/llvm/test/tools/llvm-dlltool/machine-opt.def b/llvm/test/tools/llvm-dlltool/machine-opt.def index 6dce8255a43db..fcb85299d7bee 100644 --- a/llvm/test/tools/llvm-dlltool/machine-opt.def +++ b/llvm/test/tools/llvm-dlltool/machine-opt.def @@ -6,6 +6,8 @@ ; RUN: llvm-readobj %t.a | FileCheck --check-prefix=ARM %s ; RUN: llvm-dlltool -m arm64 -d %s -l %t.a ; RUN: llvm-readobj %t.a | FileCheck --check-prefix=ARM64 %s +; RUN: llvm-dlltool -m r4000 -d %s -l %t.a +; RUN: llvm-readobj %t.a | FileCheck --check-prefix=MIPS %s LIBRARY test.dll EXPORTS @@ -15,3 +17,4 @@ TestFunction ; X86_64: Format: COFF-x86-64 ; ARM: Format: COFF-ARM{{$}} ; ARM64: Format: COFF-ARM64 +; MIPS: Format: COFF-MIPS