aboutsummaryrefslogtreecommitdiff
path: root/src-self-hosted
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-10-06 00:11:39 -0400
committerGitHub <noreply@github.com>2018-10-06 00:11:39 -0400
commitd40c4e7c896c5dfed9dd35e8c0d2117f7cf5c53c (patch)
tree07f7204287159ca5c9926e797144ef91ab35cdb6 /src-self-hosted
parent5b84192f07d5e4b3f5ebcd3e08d79852710c04f4 (diff)
parent2d2734172484871eb56705e77acca50a8c83d8ae (diff)
downloadzig-d40c4e7c896c5dfed9dd35e8c0d2117f7cf5c53c.tar.gz
zig-d40c4e7c896c5dfed9dd35e8c0d2117f7cf5c53c.zip
Merge pull request #1429 from shawnl/arm64
initial arm64 support
Diffstat (limited to 'src-self-hosted')
-rw-r--r--src-self-hosted/libc_installation.zig4
-rw-r--r--src-self-hosted/link.zig4
-rw-r--r--src-self-hosted/target.zig44
3 files changed, 43 insertions, 9 deletions
diff --git a/src-self-hosted/libc_installation.zig b/src-self-hosted/libc_installation.zig
index bbfc0125f4..9f603fd9e8 100644
--- a/src-self-hosted/libc_installation.zig
+++ b/src-self-hosted/libc_installation.zig
@@ -280,7 +280,7 @@ pub const LibCInstallation = struct {
switch (builtin.arch) {
builtin.Arch.i386 => try stream.write("x86"),
builtin.Arch.x86_64 => try stream.write("x64"),
- builtin.Arch.aarch64 => try stream.write("arm"),
+ builtin.Arch.aarch64v8 => try stream.write("arm"),
else => return error.UnsupportedArchitecture,
}
const ucrt_lib_path = try std.os.path.join(loop.allocator, result_buf.toSliceConst(), "ucrt.lib");
@@ -355,7 +355,7 @@ pub const LibCInstallation = struct {
switch (builtin.arch) {
builtin.Arch.i386 => try stream.write("x86\\"),
builtin.Arch.x86_64 => try stream.write("x64\\"),
- builtin.Arch.aarch64 => try stream.write("arm\\"),
+ builtin.Arch.aarch64v8 => try stream.write("arm\\"),
else => return error.UnsupportedArchitecture,
}
const kernel32_path = try std.os.path.join(loop.allocator, result_buf.toSliceConst(), "kernel32.lib");
diff --git a/src-self-hosted/link.zig b/src-self-hosted/link.zig
index 90f08b7305..1b32533ebc 100644
--- a/src-self-hosted/link.zig
+++ b/src-self-hosted/link.zig
@@ -330,7 +330,7 @@ fn constructLinkerArgsCoff(ctx: *Context) !void {
switch (ctx.comp.target.getArch()) {
builtin.Arch.i386 => try ctx.args.append(c"-MACHINE:X86"),
builtin.Arch.x86_64 => try ctx.args.append(c"-MACHINE:X64"),
- builtin.Arch.aarch64 => try ctx.args.append(c"-MACHINE:ARM"),
+ builtin.Arch.aarch64v8 => try ctx.args.append(c"-MACHINE:ARM"),
else => return error.UnsupportedLinkArchitecture,
}
@@ -556,7 +556,7 @@ fn constructLinkerArgsMachO(ctx: *Context) !void {
}
},
DarwinPlatform.Kind.IPhoneOS => {
- if (ctx.comp.target.getArch() == builtin.Arch.aarch64) {
+ if (ctx.comp.target.getArch() == builtin.Arch.aarch64v8) {
// iOS does not need any crt1 files for arm64
} else if (platform.versionLessThan(3, 1)) {
try ctx.args.append(c"-lcrt1.o");
diff --git a/src-self-hosted/target.zig b/src-self-hosted/target.zig
index 0cc8d02a62..6fe589ae52 100644
--- a/src-self-hosted/target.zig
+++ b/src-self-hosted/target.zig
@@ -250,8 +250,20 @@ pub const Target = union(enum) {
builtin.Arch.renderscript32,
=> return 32,
- builtin.Arch.aarch64,
- builtin.Arch.aarch64_be,
+ builtin.Arch.aarch64v8_3a,
+ builtin.Arch.aarch64v8_2a,
+ builtin.Arch.aarch64v8_1a,
+ builtin.Arch.aarch64v8,
+ builtin.Arch.aarch64v8r,
+ builtin.Arch.aarch64v8m_baseline,
+ builtin.Arch.aarch64v8m_mainline,
+ builtin.Arch.aarch64_bev8_3a,
+ builtin.Arch.aarch64_bev8_2a,
+ builtin.Arch.aarch64_bev8_1a,
+ builtin.Arch.aarch64_bev8,
+ builtin.Arch.aarch64_bev8r,
+ builtin.Arch.aarch64_bev8m_baseline,
+ builtin.Arch.aarch64_bev8m_mainline,
builtin.Arch.mips64,
builtin.Arch.mips64el,
builtin.Arch.powerpc64,
@@ -316,8 +328,23 @@ pub const Target = union(enum) {
builtin.Arch.sparcel,
=> return "/lib/ld-linux.so.2",
- builtin.Arch.aarch64 => return "/lib/ld-linux-aarch64.so.1",
- builtin.Arch.aarch64_be => return "/lib/ld-linux-aarch64_be.so.1",
+ builtin.Arch.aarch64v8_3a,
+ builtin.Arch.aarch64v8_2a,
+ builtin.Arch.aarch64v8_1a,
+ builtin.Arch.aarch64v8,
+ builtin.Arch.aarch64v8r,
+ builtin.Arch.aarch64v8m_baseline,
+ builtin.Arch.aarch64v8m_mainline,
+ => return "/lib/ld-linux-aarch64.so.1",
+
+ builtin.Arch.aarch64_bev8_3a,
+ builtin.Arch.aarch64_bev8_2a,
+ builtin.Arch.aarch64_bev8_1a,
+ builtin.Arch.aarch64_bev8,
+ builtin.Arch.aarch64_bev8r,
+ builtin.Arch.aarch64_bev8m_baseline,
+ builtin.Arch.aarch64_bev8m_mainline,
+ => return "/lib/ld-linux-aarch64_be.so.1",
builtin.Arch.armv8_3a,
builtin.Arch.armv8_2a,
@@ -530,7 +557,14 @@ pub const Target = union(enum) {
pub fn getDarwinArchString(self: Target) []const u8 {
const arch = self.getArch();
switch (arch) {
- builtin.Arch.aarch64 => return "arm64",
+ builtin.Arch.aarch64v8_3a,
+ builtin.Arch.aarch64v8_2a,
+ builtin.Arch.aarch64v8_1a,
+ builtin.Arch.aarch64v8,
+ builtin.Arch.aarch64v8r,
+ builtin.Arch.aarch64v8m_baseline,
+ builtin.Arch.aarch64v8m_mainline,
+ => return "arm64",
builtin.Arch.thumb,
builtin.Arch.armv8_3a,
builtin.Arch.armv8_2a,