Commit dd2450b1b2

Andrew Kelley <andrew@ziglang.org>
2018-11-28 02:56:43
tier 2 support for freebsd
1 parent e3bf407
Changed files (5)
cmake
src
src-self-hosted
std
cmake/Findlld.cmake
@@ -8,13 +8,13 @@
 
 find_path(LLD_INCLUDE_DIRS NAMES lld/Common/Driver.h
     PATHS
-        /usr/lib/llvm-6.0/include
-        /usr/local/llvm60/include
+        /usr/lib/llvm-7.0/include
+        /usr/local/llvm70/include
         /mingw64/include)
 
-find_library(LLD_LIBRARY NAMES lld-6.0 lld60 lld
+find_library(LLD_LIBRARY NAMES lld-7.0 lld70 lld
     PATHS
-        /usr/lib/llvm-6.0/lib
+        /usr/lib/llvm-7.0/lib
         /usr/local/llvm70/lib)
 if(EXISTS ${LLD_LIBRARY})
     set(LLD_LIBRARIES ${LLD_LIBRARY})
@@ -23,7 +23,7 @@ else()
         string(TOUPPER ${_libname_} _prettylibname_)
         find_library(LLD_${_prettylibname_}_LIB NAMES ${_libname_}
             PATHS
-                /usr/lib/llvm-6.0/lib
+                /usr/lib/llvm-7.0/lib
                 /usr/local/llvm70/lib
                 /mingw64/lib
                 /c/msys64/mingw64/lib
src/util.cpp
@@ -47,7 +47,7 @@ bool ptr_eq(const void *a, const void *b) {
 // Ported from std/mem.zig.
 bool SplitIterator_isSplitByte(SplitIterator *self, uint8_t byte) {
     for (size_t i = 0; i < self->split_bytes.len; i += 1) {
-        if (byte == self->split_bytes.ptr[i] || byte == 0) {
+        if (byte == self->split_bytes.ptr[i]) {
             return true;
         }
     }
src-self-hosted/target.zig
@@ -304,154 +304,156 @@ pub const Target = union(enum) {
             builtin.Os.freebsd => {
                 return "/libexec/ld-elf.so.1";
             },
-            else => {},
-        }
-        switch (env) {
-            builtin.Environ.android => {
-                if (self.is64bit()) {
-                    return "/system/bin/linker64";
-                } else {
-                    return "/system/bin/linker";
+            builtin.Os.linux => {
+                switch (env) {
+                    builtin.Environ.android => {
+                        if (self.is64bit()) {
+                            return "/system/bin/linker64";
+                        } else {
+                            return "/system/bin/linker";
+                        }
+                    },
+                    builtin.Environ.gnux32 => {
+                        if (arch == builtin.Arch.x86_64) {
+                            return "/libx32/ld-linux-x32.so.2";
+                        }
+                    },
+                    builtin.Environ.musl,
+                    builtin.Environ.musleabi,
+                    builtin.Environ.musleabihf,
+                    => {
+                        if (arch == builtin.Arch.x86_64) {
+                            return "/lib/ld-musl-x86_64.so.1";
+                        }
+                    },
+                    else => {},
                 }
-            },
-            builtin.Environ.gnux32 => {
-                if (arch == builtin.Arch.x86_64) {
-                    return "/libx32/ld-linux-x32.so.2";
+                switch (arch) {
+                    builtin.Arch.i386,
+                    builtin.Arch.sparc,
+                    builtin.Arch.sparcel,
+                    => return "/lib/ld-linux.so.2",
+
+                    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,
+                    builtin.Arch.armv8_1a,
+                    builtin.Arch.armv8,
+                    builtin.Arch.armv8r,
+                    builtin.Arch.armv8m_baseline,
+                    builtin.Arch.armv8m_mainline,
+                    builtin.Arch.armv7,
+                    builtin.Arch.armv7em,
+                    builtin.Arch.armv7m,
+                    builtin.Arch.armv7s,
+                    builtin.Arch.armv7k,
+                    builtin.Arch.armv7ve,
+                    builtin.Arch.armv6,
+                    builtin.Arch.armv6m,
+                    builtin.Arch.armv6k,
+                    builtin.Arch.armv6t2,
+                    builtin.Arch.armv5,
+                    builtin.Arch.armv5te,
+                    builtin.Arch.armv4t,
+                    builtin.Arch.thumb,
+                    => return switch (self.getFloatAbi()) {
+                        FloatAbi.Hard => return "/lib/ld-linux-armhf.so.3",
+                        else => return "/lib/ld-linux.so.3",
+                    },
+
+                    builtin.Arch.armebv8_3a,
+                    builtin.Arch.armebv8_2a,
+                    builtin.Arch.armebv8_1a,
+                    builtin.Arch.armebv8,
+                    builtin.Arch.armebv8r,
+                    builtin.Arch.armebv8m_baseline,
+                    builtin.Arch.armebv8m_mainline,
+                    builtin.Arch.armebv7,
+                    builtin.Arch.armebv7em,
+                    builtin.Arch.armebv7m,
+                    builtin.Arch.armebv7s,
+                    builtin.Arch.armebv7k,
+                    builtin.Arch.armebv7ve,
+                    builtin.Arch.armebv6,
+                    builtin.Arch.armebv6m,
+                    builtin.Arch.armebv6k,
+                    builtin.Arch.armebv6t2,
+                    builtin.Arch.armebv5,
+                    builtin.Arch.armebv5te,
+                    builtin.Arch.armebv4t,
+                    builtin.Arch.thumbeb,
+                    => return switch (self.getFloatAbi()) {
+                        FloatAbi.Hard => return "/lib/ld-linux-armhf.so.3",
+                        else => return "/lib/ld-linux.so.3",
+                    },
+
+                    builtin.Arch.mips,
+                    builtin.Arch.mipsel,
+                    builtin.Arch.mips64,
+                    builtin.Arch.mips64el,
+                    => return null,
+
+                    builtin.Arch.powerpc => return "/lib/ld.so.1",
+                    builtin.Arch.powerpc64 => return "/lib64/ld64.so.2",
+                    builtin.Arch.powerpc64le => return "/lib64/ld64.so.2",
+                    builtin.Arch.s390x => return "/lib64/ld64.so.1",
+                    builtin.Arch.sparcv9 => return "/lib64/ld-linux.so.2",
+                    builtin.Arch.x86_64 => return "/lib64/ld-linux-x86-64.so.2",
+
+                    builtin.Arch.arc,
+                    builtin.Arch.avr,
+                    builtin.Arch.bpfel,
+                    builtin.Arch.bpfeb,
+                    builtin.Arch.hexagon,
+                    builtin.Arch.msp430,
+                    builtin.Arch.nios2,
+                    builtin.Arch.r600,
+                    builtin.Arch.amdgcn,
+                    builtin.Arch.riscv32,
+                    builtin.Arch.riscv64,
+                    builtin.Arch.tce,
+                    builtin.Arch.tcele,
+                    builtin.Arch.xcore,
+                    builtin.Arch.nvptx,
+                    builtin.Arch.nvptx64,
+                    builtin.Arch.le32,
+                    builtin.Arch.le64,
+                    builtin.Arch.amdil,
+                    builtin.Arch.amdil64,
+                    builtin.Arch.hsail,
+                    builtin.Arch.hsail64,
+                    builtin.Arch.spir,
+                    builtin.Arch.spir64,
+                    builtin.Arch.kalimbav3,
+                    builtin.Arch.kalimbav4,
+                    builtin.Arch.kalimbav5,
+                    builtin.Arch.shave,
+                    builtin.Arch.lanai,
+                    builtin.Arch.wasm32,
+                    builtin.Arch.wasm64,
+                    builtin.Arch.renderscript32,
+                    builtin.Arch.renderscript64,
+                    => return null,
                 }
             },
-            builtin.Environ.musl,
-            builtin.Environ.musleabi,
-            builtin.Environ.musleabihf,
-            => {
-                if (arch == builtin.Arch.x86_64) {
-                    return "/lib/ld-musl-x86_64.so.1";
-                }
-            },
-            else => {},
-        }
-        switch (arch) {
-            builtin.Arch.i386,
-            builtin.Arch.sparc,
-            builtin.Arch.sparcel,
-            => return "/lib/ld-linux.so.2",
-
-            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,
-            builtin.Arch.armv8_1a,
-            builtin.Arch.armv8,
-            builtin.Arch.armv8r,
-            builtin.Arch.armv8m_baseline,
-            builtin.Arch.armv8m_mainline,
-            builtin.Arch.armv7,
-            builtin.Arch.armv7em,
-            builtin.Arch.armv7m,
-            builtin.Arch.armv7s,
-            builtin.Arch.armv7k,
-            builtin.Arch.armv7ve,
-            builtin.Arch.armv6,
-            builtin.Arch.armv6m,
-            builtin.Arch.armv6k,
-            builtin.Arch.armv6t2,
-            builtin.Arch.armv5,
-            builtin.Arch.armv5te,
-            builtin.Arch.armv4t,
-            builtin.Arch.thumb,
-            => return switch (self.getFloatAbi()) {
-                FloatAbi.Hard => return "/lib/ld-linux-armhf.so.3",
-                else => return "/lib/ld-linux.so.3",
-            },
-
-            builtin.Arch.armebv8_3a,
-            builtin.Arch.armebv8_2a,
-            builtin.Arch.armebv8_1a,
-            builtin.Arch.armebv8,
-            builtin.Arch.armebv8r,
-            builtin.Arch.armebv8m_baseline,
-            builtin.Arch.armebv8m_mainline,
-            builtin.Arch.armebv7,
-            builtin.Arch.armebv7em,
-            builtin.Arch.armebv7m,
-            builtin.Arch.armebv7s,
-            builtin.Arch.armebv7k,
-            builtin.Arch.armebv7ve,
-            builtin.Arch.armebv6,
-            builtin.Arch.armebv6m,
-            builtin.Arch.armebv6k,
-            builtin.Arch.armebv6t2,
-            builtin.Arch.armebv5,
-            builtin.Arch.armebv5te,
-            builtin.Arch.armebv4t,
-            builtin.Arch.thumbeb,
-            => return switch (self.getFloatAbi()) {
-                FloatAbi.Hard => return "/lib/ld-linux-armhf.so.3",
-                else => return "/lib/ld-linux.so.3",
-            },
-
-            builtin.Arch.mips,
-            builtin.Arch.mipsel,
-            builtin.Arch.mips64,
-            builtin.Arch.mips64el,
-            => return null,
-
-            builtin.Arch.powerpc => return "/lib/ld.so.1",
-            builtin.Arch.powerpc64 => return "/lib64/ld64.so.2",
-            builtin.Arch.powerpc64le => return "/lib64/ld64.so.2",
-            builtin.Arch.s390x => return "/lib64/ld64.so.1",
-            builtin.Arch.sparcv9 => return "/lib64/ld-linux.so.2",
-            builtin.Arch.x86_64 => return "/lib64/ld-linux-x86-64.so.2",
-
-            builtin.Arch.arc,
-            builtin.Arch.avr,
-            builtin.Arch.bpfel,
-            builtin.Arch.bpfeb,
-            builtin.Arch.hexagon,
-            builtin.Arch.msp430,
-            builtin.Arch.nios2,
-            builtin.Arch.r600,
-            builtin.Arch.amdgcn,
-            builtin.Arch.riscv32,
-            builtin.Arch.riscv64,
-            builtin.Arch.tce,
-            builtin.Arch.tcele,
-            builtin.Arch.xcore,
-            builtin.Arch.nvptx,
-            builtin.Arch.nvptx64,
-            builtin.Arch.le32,
-            builtin.Arch.le64,
-            builtin.Arch.amdil,
-            builtin.Arch.amdil64,
-            builtin.Arch.hsail,
-            builtin.Arch.hsail64,
-            builtin.Arch.spir,
-            builtin.Arch.spir64,
-            builtin.Arch.kalimbav3,
-            builtin.Arch.kalimbav4,
-            builtin.Arch.kalimbav5,
-            builtin.Arch.shave,
-            builtin.Arch.lanai,
-            builtin.Arch.wasm32,
-            builtin.Arch.wasm64,
-            builtin.Arch.renderscript32,
-            builtin.Arch.renderscript64,
-            => return null,
+            else => return null,
         }
     }
 
std/os/index.zig
@@ -1731,8 +1731,8 @@ pub const Dir = struct {
     }
 
     fn nextFreebsd(self: *Dir) !?Entry {
-        self.handle.buf = try self.allocator.alloc(u8, page_size);
-        return null; // TODO
+        //self.handle.buf = try self.allocator.alloc(u8, page_size);
+        @compileError("TODO implement dirs for FreeBSD");
     }
 };
 
README.md
@@ -89,7 +89,7 @@ clarity.
 
 |        | freestanding | linux  | macosx | windows | freebsd | other  |
 |--------|--------------|--------|--------|---------|---------|--------|
-|x86_64  | Tier 2       | Tier 1 | Tier 1 | Tier 1  | Tier 3  | Tier 3 |
+|x86_64  | Tier 2       | Tier 1 | Tier 1 | Tier 1  | Tier 2  | Tier 3 |
 |i386    | Tier 2       | Tier 2 | Tier 2 | Tier 2  | Tier 3  | Tier 3 |
 |arm     | Tier 2       | Tier 3 | Tier 3 | Tier 3  | Tier 3  | Tier 3 |
 |arm64   | Tier 2       | Tier 2 | Tier 3 | Tier 3  | Tier 3  | Tier 3 |