commit c8e4108c5b822af0cc99d35baea108c1738d55ff (tree)
parent a9be62f0858749ae479d05167392c7cf965da3ce
Author: LemonBoy <thatlemon@gmail.com>
Date: Thu, 26 Sep 2019 17:13:57 +0200
Export _start as __start for MIPS targets
Diffstat:
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/lib/std/special/start.zig b/lib/std/special/start.zig
@@ -13,6 +13,11 @@ const is_wasm = switch (builtin.arch) {
else => false,
};
+const is_mips = switch (builtin.arch) {
+ .mips, .mipsel, .mips64, .mips64el => true,
+ else => false,
+};
+
comptime {
if (builtin.link_libc) {
@export("main", main, .Strong);
@@ -22,6 +27,8 @@ comptime {
@export("_start", wasm_freestanding_start, .Strong);
} else if (builtin.os == .uefi) {
@export("EfiMain", EfiMain, .Strong);
+ } else if (is_mips) {
+ if (!@hasDecl(root, "__start")) @export("__start", _start, .Strong);
} else {
if (!@hasDecl(root, "_start")) @export("_start", _start, .Strong);
}
diff --git a/src/link.cpp b/src/link.cpp
@@ -1813,14 +1813,9 @@ static void construct_linker_job_elf(LinkJob *lj) {
lj->args.append("--allow-shlib-undefined");
}
- // MIPS entry point name is __start instead of _start, force the linker to
- // use the latter
- if (target_is_mips(g->zig_target) || g->zig_target->os == OsZen) {
+ if (g->zig_target->os == OsZen) {
lj->args.append("-e");
lj->args.append("_start");
- }
-
- if (g->zig_target->os == OsZen) {
lj->args.append("--image-base=0x10000000");
}
}