diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2018-10-06 00:11:39 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-10-06 00:11:39 -0400 |
| commit | d40c4e7c896c5dfed9dd35e8c0d2117f7cf5c53c (patch) | |
| tree | 07f7204287159ca5c9926e797144ef91ab35cdb6 /src-self-hosted | |
| parent | 5b84192f07d5e4b3f5ebcd3e08d79852710c04f4 (diff) | |
| parent | 2d2734172484871eb56705e77acca50a8c83d8ae (diff) | |
| download | zig-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.zig | 4 | ||||
| -rw-r--r-- | src-self-hosted/link.zig | 4 | ||||
| -rw-r--r-- | src-self-hosted/target.zig | 44 |
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, |
