aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLemonBoy <thatlemon@gmail.com>2021-03-08 09:48:19 +0100
committerAndrew Kelley <andrew@ziglang.org>2021-03-09 18:20:34 -0500
commit1a5d0cea15963437af68bbb7a50354a378cf4efd (patch)
treed321e4715a321049e8719df20f62fd80447d181f /src
parenta033735c8d2faf4ecd42b9d736d8ea61d22d3fcb (diff)
downloadzig-1a5d0cea15963437af68bbb7a50354a378cf4efd.tar.gz
zig-1a5d0cea15963437af68bbb7a50354a378cf4efd.zip
stage2: Use correct ELF emulation for mips64
The n32 ABI requires a different emulation string than n64.
Diffstat (limited to 'src')
-rw-r--r--src/link/Elf.zig16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
index bbbc9e25ed..314e443f3a 100644
--- a/src/link/Elf.zig
+++ b/src/link/Elf.zig
@@ -3230,8 +3230,20 @@ fn getLDMOption(target: std.Target) ?[]const u8 {
.sparcv9 => return "elf64_sparc",
.mips => return "elf32btsmip",
.mipsel => return "elf32ltsmip",
- .mips64 => return "elf64btsmip",
- .mips64el => return "elf64ltsmip",
+ .mips64 => {
+ if (target.abi == .gnuabin32) {
+ return "elf32btsmipn32";
+ } else {
+ return "elf64btsmip";
+ }
+ },
+ .mips64el => {
+ if (target.abi == .gnuabin32) {
+ return "elf32ltsmipn32";
+ } else {
+ return "elf64ltsmip";
+ }
+ },
.s390x => return "elf64_s390",
.x86_64 => {
if (target.abi == .gnux32) {