diff options
| author | Shawn Landden <shawn@git.icu> | 2018-08-29 17:37:58 -0700 |
|---|---|---|
| committer | Shawn Landden <shawn@git.icu> | 2018-09-08 03:52:28 +0000 |
| commit | 342cff28f5033887ac9c2e8b02da9067e8ad2f3d (patch) | |
| tree | 1f15d22c030505bfc3002b42684c8df783581b9c /src-self-hosted | |
| parent | 4a8c992ef1e550d969ef1b26a460327fa188451c (diff) | |
| download | zig-342cff28f5033887ac9c2e8b02da9067e8ad2f3d.tar.gz zig-342cff28f5033887ac9c2e8b02da9067e8ad2f3d.zip | |
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 5e292ff8b2..5a888e4c9f 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, |
