diff --git a/build.zig b/build.zig index a0d0162658..c7987cb677 100644 --- a/build.zig +++ b/build.zig @@ -476,8 +476,8 @@ pub fn build(b: *std.Build) !void { .test_target_filters = test_target_filters, .test_extra_targets = test_extra_targets, .root_src = "lib/c.zig", - .name = "universal-libc", - .desc = "Run the universal libc tests", + .name = "zigc", + .desc = "Run the zigc tests", .optimize_modes = optimization_modes, .include_paths = &.{}, .skip_single_threaded = true, diff --git a/lib/c.zig b/lib/c.zig index bbb79eadab..156f471573 100644 --- a/lib/c.zig +++ b/lib/c.zig @@ -1,180 +1,33 @@ //! This is Zig's multi-target implementation of libc. -//! When builtin.link_libc is true, we need to export all the functions and -//! provide an entire C API. +//! +//! When `builtin.link_libc` is true, we need to export all the functions and +//! provide a libc API compatible with the target (e.g. musl, wasi-libc, ...). -const std = @import("std"); const builtin = @import("builtin"); -const math = std.math; -const isNan = std.math.isNan; -const maxInt = std.math.maxInt; -const native_os = builtin.os.tag; -const native_arch = builtin.cpu.arch; -const native_abi = builtin.abi; +const std = @import("std"); -const linkage: std.builtin.GlobalLinkage = if (builtin.is_test) .internal else .strong; - -const is_wasm = switch (native_arch) { - .wasm32, .wasm64 => true, - else => false, -}; -const is_freestanding = switch (native_os) { - .freestanding, .other => true, - else => false, -}; +// Avoid dragging in the runtime safety mechanisms into this .o file, unless +// we're trying to test zigc. +pub const panic = if (builtin.is_test) + std.debug.FullPanic(std.debug.defaultPanic) +else + std.debug.no_panic; comptime { - if (is_freestanding and is_wasm and builtin.link_libc) { - @export(&wasm_start, .{ .name = "_start", .linkage = .strong }); + if (builtin.target.isMuslLibC() or builtin.target.isWasiLibC()) { + // Files specific to musl and wasi-libc. + _ = @import("c/string.zig"); } - if (builtin.link_libc) { - @export(&strcmp, .{ .name = "strcmp", .linkage = linkage }); - @export(&strncmp, .{ .name = "strncmp", .linkage = linkage }); - @export(&strerror, .{ .name = "strerror", .linkage = linkage }); - @export(&strlen, .{ .name = "strlen", .linkage = linkage }); - @export(&strcpy, .{ .name = "strcpy", .linkage = linkage }); - @export(&strncpy, .{ .name = "strncpy", .linkage = linkage }); - @export(&strcat, .{ .name = "strcat", .linkage = linkage }); - @export(&strncat, .{ .name = "strncat", .linkage = linkage }); - } -} - -// Avoid dragging in the runtime safety mechanisms into this .o file, -// unless we're trying to test this file. -pub fn panic(msg: []const u8, error_return_trace: ?*std.builtin.StackTrace, _: ?usize) noreturn { - @branchHint(.cold); - _ = error_return_trace; - if (builtin.is_test) { - std.debug.panic("{s}", .{msg}); - } - switch (native_os) { - .freestanding, .other, .amdhsa, .amdpal => while (true) {}, - else => std.os.abort(), - } -} - -extern fn main(argc: c_int, argv: [*:null]?[*:0]u8) c_int; -fn wasm_start() callconv(.c) void { - _ = main(0, undefined); -} - -fn strcpy(dest: [*:0]u8, src: [*:0]const u8) callconv(.c) [*:0]u8 { - var i: usize = 0; - while (src[i] != 0) : (i += 1) { - dest[i] = src[i]; - } - dest[i] = 0; - - return dest; -} - -test "strcpy" { - var s1: [9:0]u8 = undefined; - - s1[0] = 0; - _ = strcpy(&s1, "foobarbaz"); - try std.testing.expectEqualSlices(u8, "foobarbaz", std.mem.sliceTo(&s1, 0)); -} - -fn strncpy(dest: [*:0]u8, src: [*:0]const u8, n: usize) callconv(.c) [*:0]u8 { - var i: usize = 0; - while (i < n and src[i] != 0) : (i += 1) { - dest[i] = src[i]; - } - while (i < n) : (i += 1) { - dest[i] = 0; + if (builtin.target.isMuslLibC()) { + // Files specific to musl. } - return dest; -} - -test "strncpy" { - var s1: [9:0]u8 = undefined; - - s1[0] = 0; - _ = strncpy(&s1, "foobarbaz", @sizeOf(@TypeOf(s1))); - try std.testing.expectEqualSlices(u8, "foobarbaz", std.mem.sliceTo(&s1, 0)); -} - -fn strcat(dest: [*:0]u8, src: [*:0]const u8) callconv(.c) [*:0]u8 { - var dest_end: usize = 0; - while (dest[dest_end] != 0) : (dest_end += 1) {} - - var i: usize = 0; - while (src[i] != 0) : (i += 1) { - dest[dest_end + i] = src[i]; + if (builtin.target.isWasiLibC()) { + // Files specific to wasi-libc. } - dest[dest_end + i] = 0; - return dest; -} - -test "strcat" { - var s1: [9:0]u8 = undefined; - - s1[0] = 0; - _ = strcat(&s1, "foo"); - _ = strcat(&s1, "bar"); - _ = strcat(&s1, "baz"); - try std.testing.expectEqualSlices(u8, "foobarbaz", std.mem.sliceTo(&s1, 0)); -} - -fn strncat(dest: [*:0]u8, src: [*:0]const u8, avail: usize) callconv(.c) [*:0]u8 { - var dest_end: usize = 0; - while (dest[dest_end] != 0) : (dest_end += 1) {} - - var i: usize = 0; - while (i < avail and src[i] != 0) : (i += 1) { - dest[dest_end + i] = src[i]; + if (builtin.target.isMinGW()) { + // Files specific to MinGW-w64. } - dest[dest_end + i] = 0; - - return dest; -} - -test "strncat" { - var s1: [9:0]u8 = undefined; - - s1[0] = 0; - _ = strncat(&s1, "foo1111", 3); - _ = strncat(&s1, "bar1111", 3); - _ = strncat(&s1, "baz1111", 3); - try std.testing.expectEqualSlices(u8, "foobarbaz", std.mem.sliceTo(&s1, 0)); -} - -fn strcmp(s1: [*:0]const u8, s2: [*:0]const u8) callconv(.c) c_int { - return switch (std.mem.orderZ(u8, s1, s2)) { - .lt => -1, - .eq => 0, - .gt => 1, - }; -} - -fn strlen(s: [*:0]const u8) callconv(.c) usize { - return std.mem.len(s); -} - -fn strncmp(_l: [*:0]const u8, _r: [*:0]const u8, _n: usize) callconv(.c) c_int { - if (_n == 0) return 0; - var l = _l; - var r = _r; - var n = _n - 1; - while (l[0] != 0 and r[0] != 0 and n != 0 and l[0] == r[0]) { - l += 1; - r += 1; - n -= 1; - } - return @as(c_int, l[0]) - @as(c_int, r[0]); -} - -fn strerror(errnum: c_int) callconv(.c) [*:0]const u8 { - _ = errnum; - return "TODO strerror implementation"; -} - -test "strncmp" { - try std.testing.expect(strncmp("a", "b", 1) < 0); - try std.testing.expect(strncmp("a", "c", 1) < 0); - try std.testing.expect(strncmp("b", "a", 1) > 0); - try std.testing.expect(strncmp("\xff", "\x02", 1) > 0); } diff --git a/lib/c/common.zig b/lib/c/common.zig new file mode 100644 index 0000000000..e9536f63b4 --- /dev/null +++ b/lib/c/common.zig @@ -0,0 +1,15 @@ +const builtin = @import("builtin"); +const std = @import("std"); + +pub const linkage: std.builtin.GlobalLinkage = if (builtin.is_test) + .internal +else + .strong; + +/// Determines the symbol's visibility to other objects. +/// For WebAssembly this allows the symbol to be resolved to other modules, but will not +/// export it to the host runtime. +pub const visibility: std.builtin.SymbolVisibility = if (builtin.cpu.arch.isWasm() and linkage != .internal) + .hidden +else + .default; diff --git a/lib/c/string.zig b/lib/c/string.zig new file mode 100644 index 0000000000..0633f7e654 --- /dev/null +++ b/lib/c/string.zig @@ -0,0 +1,45 @@ +const builtin = @import("builtin"); +const std = @import("std"); +const common = @import("common.zig"); + +comptime { + @export(&strcmp, .{ .name = "strcmp", .linkage = common.linkage, .visibility = common.visibility }); + @export(&strlen, .{ .name = "strlen", .linkage = common.linkage, .visibility = common.visibility }); + @export(&strncmp, .{ .name = "strncmp", .linkage = common.linkage, .visibility = common.visibility }); +} + +fn strcmp(s1: [*:0]const c_char, s2: [*:0]const c_char) callconv(.c) c_int { + // We need to perform unsigned comparisons. + return switch (std.mem.orderZ(u8, @ptrCast(s1), @ptrCast(s2))) { + .lt => -1, + .eq => 0, + .gt => 1, + }; +} + +fn strncmp(s1: [*:0]const c_char, s2: [*:0]const c_char, n: usize) callconv(.c) c_int { + if (n == 0) return 0; + + var l: [*:0]const u8 = @ptrCast(s1); + var r: [*:0]const u8 = @ptrCast(s2); + var i = n - 1; + + while (l[0] != 0 and r[0] != 0 and i != 0 and l[0] == r[0]) { + l += 1; + r += 1; + i -= 1; + } + + return @as(c_int, l[0]) - @as(c_int, r[0]); +} + +test strncmp { + try std.testing.expect(strncmp(@ptrCast("a"), @ptrCast("b"), 1) < 0); + try std.testing.expect(strncmp(@ptrCast("a"), @ptrCast("c"), 1) < 0); + try std.testing.expect(strncmp(@ptrCast("b"), @ptrCast("a"), 1) > 0); + try std.testing.expect(strncmp(@ptrCast("\xff"), @ptrCast("\x02"), 1) > 0); +} + +fn strlen(s: [*:0]const c_char) callconv(.c) usize { + return std.mem.len(s); +} diff --git a/lib/libc/musl/src/string/strcmp.c b/lib/libc/musl/src/string/strcmp.c deleted file mode 100644 index 808bd8370d..0000000000 --- a/lib/libc/musl/src/string/strcmp.c +++ /dev/null @@ -1,7 +0,0 @@ -#include - -int strcmp(const char *l, const char *r) -{ - for (; *l==*r && *l; l++, r++); - return *(unsigned char *)l - *(unsigned char *)r; -} diff --git a/lib/libc/musl/src/string/strlen.c b/lib/libc/musl/src/string/strlen.c deleted file mode 100644 index 309990f029..0000000000 --- a/lib/libc/musl/src/string/strlen.c +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include -#include - -#define ALIGN (sizeof(size_t)) -#define ONES ((size_t)-1/UCHAR_MAX) -#define HIGHS (ONES * (UCHAR_MAX/2+1)) -#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS) - -size_t strlen(const char *s) -{ - const char *a = s; -#ifdef __GNUC__ - typedef size_t __attribute__((__may_alias__)) word; - const word *w; - for (; (uintptr_t)s % ALIGN; s++) if (!*s) return s-a; - for (w = (const void *)s; !HASZERO(*w); w++); - s = (const void *)w; -#endif - for (; *s; s++); - return s-a; -} diff --git a/lib/libc/musl/src/string/strncmp.c b/lib/libc/musl/src/string/strncmp.c deleted file mode 100644 index e228843f0b..0000000000 --- a/lib/libc/musl/src/string/strncmp.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -int strncmp(const char *_l, const char *_r, size_t n) -{ - const unsigned char *l=(void *)_l, *r=(void *)_r; - if (!n--) return 0; - for (; *l && *r && n && *l == *r ; l++, r++, n--); - return *l - *r; -} diff --git a/lib/tsan/builtins/assembly.h b/lib/libtsan/builtins/assembly.h similarity index 100% rename from lib/tsan/builtins/assembly.h rename to lib/libtsan/builtins/assembly.h diff --git a/lib/tsan/interception/interception.h b/lib/libtsan/interception/interception.h similarity index 100% rename from lib/tsan/interception/interception.h rename to lib/libtsan/interception/interception.h diff --git a/lib/tsan/interception/interception_linux.cpp b/lib/libtsan/interception/interception_linux.cpp similarity index 100% rename from lib/tsan/interception/interception_linux.cpp rename to lib/libtsan/interception/interception_linux.cpp diff --git a/lib/tsan/interception/interception_linux.h b/lib/libtsan/interception/interception_linux.h similarity index 100% rename from lib/tsan/interception/interception_linux.h rename to lib/libtsan/interception/interception_linux.h diff --git a/lib/tsan/interception/interception_mac.cpp b/lib/libtsan/interception/interception_mac.cpp similarity index 100% rename from lib/tsan/interception/interception_mac.cpp rename to lib/libtsan/interception/interception_mac.cpp diff --git a/lib/tsan/interception/interception_mac.h b/lib/libtsan/interception/interception_mac.h similarity index 100% rename from lib/tsan/interception/interception_mac.h rename to lib/libtsan/interception/interception_mac.h diff --git a/lib/tsan/interception/interception_type_test.cpp b/lib/libtsan/interception/interception_type_test.cpp similarity index 100% rename from lib/tsan/interception/interception_type_test.cpp rename to lib/libtsan/interception/interception_type_test.cpp diff --git a/lib/tsan/interception/interception_win.cpp b/lib/libtsan/interception/interception_win.cpp similarity index 100% rename from lib/tsan/interception/interception_win.cpp rename to lib/libtsan/interception/interception_win.cpp diff --git a/lib/tsan/interception/interception_win.h b/lib/libtsan/interception/interception_win.h similarity index 100% rename from lib/tsan/interception/interception_win.h rename to lib/libtsan/interception/interception_win.h diff --git a/lib/tsan/sanitizer_common/sancov_flags.h b/lib/libtsan/sanitizer_common/sancov_flags.h similarity index 100% rename from lib/tsan/sanitizer_common/sancov_flags.h rename to lib/libtsan/sanitizer_common/sancov_flags.h diff --git a/lib/tsan/sanitizer_common/sancov_flags.inc b/lib/libtsan/sanitizer_common/sancov_flags.inc similarity index 100% rename from lib/tsan/sanitizer_common/sancov_flags.inc rename to lib/libtsan/sanitizer_common/sancov_flags.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_addrhashmap.h b/lib/libtsan/sanitizer_common/sanitizer_addrhashmap.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_addrhashmap.h rename to lib/libtsan/sanitizer_common/sanitizer_addrhashmap.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator.cpp b/lib/libtsan/sanitizer_common/sanitizer_allocator.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator.cpp rename to lib/libtsan/sanitizer_common/sanitizer_allocator.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator.h b/lib/libtsan/sanitizer_common/sanitizer_allocator.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_checks.cpp b/lib/libtsan/sanitizer_common/sanitizer_allocator_checks.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_checks.cpp rename to lib/libtsan/sanitizer_common/sanitizer_allocator_checks.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_checks.h b/lib/libtsan/sanitizer_common/sanitizer_allocator_checks.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_checks.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator_checks.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_combined.h b/lib/libtsan/sanitizer_common/sanitizer_allocator_combined.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_combined.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator_combined.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_dlsym.h b/lib/libtsan/sanitizer_common/sanitizer_allocator_dlsym.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_dlsym.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator_dlsym.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_interface.h b/lib/libtsan/sanitizer_common/sanitizer_allocator_interface.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_interface.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator_interface.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_internal.h b/lib/libtsan/sanitizer_common/sanitizer_allocator_internal.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_internal.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator_internal.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_local_cache.h b/lib/libtsan/sanitizer_common/sanitizer_allocator_local_cache.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_local_cache.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator_local_cache.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_primary32.h b/lib/libtsan/sanitizer_common/sanitizer_allocator_primary32.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_primary32.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator_primary32.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_primary64.h b/lib/libtsan/sanitizer_common/sanitizer_allocator_primary64.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_primary64.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator_primary64.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_report.cpp b/lib/libtsan/sanitizer_common/sanitizer_allocator_report.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_report.cpp rename to lib/libtsan/sanitizer_common/sanitizer_allocator_report.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_report.h b/lib/libtsan/sanitizer_common/sanitizer_allocator_report.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_report.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator_report.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_secondary.h b/lib/libtsan/sanitizer_common/sanitizer_allocator_secondary.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_secondary.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator_secondary.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_size_class_map.h b/lib/libtsan/sanitizer_common/sanitizer_allocator_size_class_map.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_size_class_map.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator_size_class_map.h diff --git a/lib/tsan/sanitizer_common/sanitizer_allocator_stats.h b/lib/libtsan/sanitizer_common/sanitizer_allocator_stats.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_allocator_stats.h rename to lib/libtsan/sanitizer_common/sanitizer_allocator_stats.h diff --git a/lib/tsan/sanitizer_common/sanitizer_array_ref.h b/lib/libtsan/sanitizer_common/sanitizer_array_ref.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_array_ref.h rename to lib/libtsan/sanitizer_common/sanitizer_array_ref.h diff --git a/lib/tsan/sanitizer_common/sanitizer_asm.h b/lib/libtsan/sanitizer_common/sanitizer_asm.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_asm.h rename to lib/libtsan/sanitizer_common/sanitizer_asm.h diff --git a/lib/tsan/sanitizer_common/sanitizer_atomic.h b/lib/libtsan/sanitizer_common/sanitizer_atomic.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_atomic.h rename to lib/libtsan/sanitizer_common/sanitizer_atomic.h diff --git a/lib/tsan/sanitizer_common/sanitizer_atomic_clang.h b/lib/libtsan/sanitizer_common/sanitizer_atomic_clang.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_atomic_clang.h rename to lib/libtsan/sanitizer_common/sanitizer_atomic_clang.h diff --git a/lib/tsan/sanitizer_common/sanitizer_atomic_msvc.h b/lib/libtsan/sanitizer_common/sanitizer_atomic_msvc.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_atomic_msvc.h rename to lib/libtsan/sanitizer_common/sanitizer_atomic_msvc.h diff --git a/lib/tsan/sanitizer_common/sanitizer_bitvector.h b/lib/libtsan/sanitizer_common/sanitizer_bitvector.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_bitvector.h rename to lib/libtsan/sanitizer_common/sanitizer_bitvector.h diff --git a/lib/tsan/sanitizer_common/sanitizer_bvgraph.h b/lib/libtsan/sanitizer_common/sanitizer_bvgraph.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_bvgraph.h rename to lib/libtsan/sanitizer_common/sanitizer_bvgraph.h diff --git a/lib/tsan/sanitizer_common/sanitizer_chained_origin_depot.cpp b/lib/libtsan/sanitizer_common/sanitizer_chained_origin_depot.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_chained_origin_depot.cpp rename to lib/libtsan/sanitizer_common/sanitizer_chained_origin_depot.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_chained_origin_depot.h b/lib/libtsan/sanitizer_common/sanitizer_chained_origin_depot.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_chained_origin_depot.h rename to lib/libtsan/sanitizer_common/sanitizer_chained_origin_depot.h diff --git a/lib/tsan/sanitizer_common/sanitizer_common.cpp b/lib/libtsan/sanitizer_common/sanitizer_common.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common.cpp rename to lib/libtsan/sanitizer_common/sanitizer_common.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_common.h b/lib/libtsan/sanitizer_common/sanitizer_common.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common.h rename to lib/libtsan/sanitizer_common/sanitizer_common.h diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interceptors.inc b/lib/libtsan/sanitizer_common/sanitizer_common_interceptors.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interceptors.inc rename to lib/libtsan/sanitizer_common/sanitizer_common_interceptors.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interceptors_format.inc b/lib/libtsan/sanitizer_common/sanitizer_common_interceptors_format.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interceptors_format.inc rename to lib/libtsan/sanitizer_common/sanitizer_common_interceptors_format.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/lib/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc rename to lib/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc b/lib/libtsan/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc rename to lib/libtsan/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interceptors_netbsd_compat.inc b/lib/libtsan/sanitizer_common/sanitizer_common_interceptors_netbsd_compat.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interceptors_netbsd_compat.inc rename to lib/libtsan/sanitizer_common/sanitizer_common_interceptors_netbsd_compat.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S b/lib/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S rename to lib/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_arm.inc.S b/lib/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_arm.inc.S similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_arm.inc.S rename to lib/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_arm.inc.S diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S b/lib/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S rename to lib/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_loongarch64.inc.S b/lib/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_loongarch64.inc.S similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_loongarch64.inc.S rename to lib/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_loongarch64.inc.S diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_riscv64.inc.S b/lib/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_riscv64.inc.S similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_riscv64.inc.S rename to lib/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_riscv64.inc.S diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S b/lib/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S rename to lib/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interface.inc b/lib/libtsan/sanitizer_common/sanitizer_common_interface.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interface.inc rename to lib/libtsan/sanitizer_common/sanitizer_common_interface.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_common_interface_posix.inc b/lib/libtsan/sanitizer_common/sanitizer_common_interface_posix.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_interface_posix.inc rename to lib/libtsan/sanitizer_common/sanitizer_common_interface_posix.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_common_libcdep.cpp b/lib/libtsan/sanitizer_common/sanitizer_common_libcdep.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_libcdep.cpp rename to lib/libtsan/sanitizer_common/sanitizer_common_libcdep.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_common_nolibc.cpp b/lib/libtsan/sanitizer_common/sanitizer_common_nolibc.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_nolibc.cpp rename to lib/libtsan/sanitizer_common/sanitizer_common_nolibc.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_common_syscalls.inc b/lib/libtsan/sanitizer_common/sanitizer_common_syscalls.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_common_syscalls.inc rename to lib/libtsan/sanitizer_common/sanitizer_common_syscalls.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_coverage_interface.inc b/lib/libtsan/sanitizer_common/sanitizer_coverage_interface.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_coverage_interface.inc rename to lib/libtsan/sanitizer_common/sanitizer_coverage_interface.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_dbghelp.h b/lib/libtsan/sanitizer_common/sanitizer_dbghelp.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_dbghelp.h rename to lib/libtsan/sanitizer_common/sanitizer_dbghelp.h diff --git a/lib/tsan/sanitizer_common/sanitizer_deadlock_detector.h b/lib/libtsan/sanitizer_common/sanitizer_deadlock_detector.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_deadlock_detector.h rename to lib/libtsan/sanitizer_common/sanitizer_deadlock_detector.h diff --git a/lib/tsan/sanitizer_common/sanitizer_deadlock_detector1.cpp b/lib/libtsan/sanitizer_common/sanitizer_deadlock_detector1.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_deadlock_detector1.cpp rename to lib/libtsan/sanitizer_common/sanitizer_deadlock_detector1.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_deadlock_detector2.cpp b/lib/libtsan/sanitizer_common/sanitizer_deadlock_detector2.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_deadlock_detector2.cpp rename to lib/libtsan/sanitizer_common/sanitizer_deadlock_detector2.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_deadlock_detector_interface.h b/lib/libtsan/sanitizer_common/sanitizer_deadlock_detector_interface.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_deadlock_detector_interface.h rename to lib/libtsan/sanitizer_common/sanitizer_deadlock_detector_interface.h diff --git a/lib/tsan/sanitizer_common/sanitizer_dense_map.h b/lib/libtsan/sanitizer_common/sanitizer_dense_map.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_dense_map.h rename to lib/libtsan/sanitizer_common/sanitizer_dense_map.h diff --git a/lib/tsan/sanitizer_common/sanitizer_dense_map_info.h b/lib/libtsan/sanitizer_common/sanitizer_dense_map_info.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_dense_map_info.h rename to lib/libtsan/sanitizer_common/sanitizer_dense_map_info.h diff --git a/lib/tsan/sanitizer_common/sanitizer_dl.cpp b/lib/libtsan/sanitizer_common/sanitizer_dl.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_dl.cpp rename to lib/libtsan/sanitizer_common/sanitizer_dl.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_dl.h b/lib/libtsan/sanitizer_common/sanitizer_dl.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_dl.h rename to lib/libtsan/sanitizer_common/sanitizer_dl.h diff --git a/lib/tsan/sanitizer_common/sanitizer_errno.cpp b/lib/libtsan/sanitizer_common/sanitizer_errno.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_errno.cpp rename to lib/libtsan/sanitizer_common/sanitizer_errno.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_errno.h b/lib/libtsan/sanitizer_common/sanitizer_errno.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_errno.h rename to lib/libtsan/sanitizer_common/sanitizer_errno.h diff --git a/lib/tsan/sanitizer_common/sanitizer_errno_codes.h b/lib/libtsan/sanitizer_common/sanitizer_errno_codes.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_errno_codes.h rename to lib/libtsan/sanitizer_common/sanitizer_errno_codes.h diff --git a/lib/tsan/sanitizer_common/sanitizer_file.cpp b/lib/libtsan/sanitizer_common/sanitizer_file.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_file.cpp rename to lib/libtsan/sanitizer_common/sanitizer_file.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_file.h b/lib/libtsan/sanitizer_common/sanitizer_file.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_file.h rename to lib/libtsan/sanitizer_common/sanitizer_file.h diff --git a/lib/tsan/sanitizer_common/sanitizer_flag_parser.cpp b/lib/libtsan/sanitizer_common/sanitizer_flag_parser.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_flag_parser.cpp rename to lib/libtsan/sanitizer_common/sanitizer_flag_parser.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_flag_parser.h b/lib/libtsan/sanitizer_common/sanitizer_flag_parser.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_flag_parser.h rename to lib/libtsan/sanitizer_common/sanitizer_flag_parser.h diff --git a/lib/tsan/sanitizer_common/sanitizer_flags.cpp b/lib/libtsan/sanitizer_common/sanitizer_flags.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_flags.cpp rename to lib/libtsan/sanitizer_common/sanitizer_flags.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_flags.h b/lib/libtsan/sanitizer_common/sanitizer_flags.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_flags.h rename to lib/libtsan/sanitizer_common/sanitizer_flags.h diff --git a/lib/tsan/sanitizer_common/sanitizer_flags.inc b/lib/libtsan/sanitizer_common/sanitizer_flags.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_flags.inc rename to lib/libtsan/sanitizer_common/sanitizer_flags.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_flat_map.h b/lib/libtsan/sanitizer_common/sanitizer_flat_map.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_flat_map.h rename to lib/libtsan/sanitizer_common/sanitizer_flat_map.h diff --git a/lib/tsan/sanitizer_common/sanitizer_fuchsia.cpp b/lib/libtsan/sanitizer_common/sanitizer_fuchsia.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_fuchsia.cpp rename to lib/libtsan/sanitizer_common/sanitizer_fuchsia.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_fuchsia.h b/lib/libtsan/sanitizer_common/sanitizer_fuchsia.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_fuchsia.h rename to lib/libtsan/sanitizer_common/sanitizer_fuchsia.h diff --git a/lib/tsan/sanitizer_common/sanitizer_getauxval.h b/lib/libtsan/sanitizer_common/sanitizer_getauxval.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_getauxval.h rename to lib/libtsan/sanitizer_common/sanitizer_getauxval.h diff --git a/lib/tsan/sanitizer_common/sanitizer_glibc_version.h b/lib/libtsan/sanitizer_common/sanitizer_glibc_version.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_glibc_version.h rename to lib/libtsan/sanitizer_common/sanitizer_glibc_version.h diff --git a/lib/tsan/sanitizer_common/sanitizer_hash.h b/lib/libtsan/sanitizer_common/sanitizer_hash.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_hash.h rename to lib/libtsan/sanitizer_common/sanitizer_hash.h diff --git a/lib/tsan/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc b/lib/libtsan/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc rename to lib/libtsan/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_interface_internal.h b/lib/libtsan/sanitizer_common/sanitizer_interface_internal.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_interface_internal.h rename to lib/libtsan/sanitizer_common/sanitizer_interface_internal.h diff --git a/lib/tsan/sanitizer_common/sanitizer_internal_defs.h b/lib/libtsan/sanitizer_common/sanitizer_internal_defs.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_internal_defs.h rename to lib/libtsan/sanitizer_common/sanitizer_internal_defs.h diff --git a/lib/tsan/sanitizer_common/sanitizer_leb128.h b/lib/libtsan/sanitizer_common/sanitizer_leb128.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_leb128.h rename to lib/libtsan/sanitizer_common/sanitizer_leb128.h diff --git a/lib/tsan/sanitizer_common/sanitizer_lfstack.h b/lib/libtsan/sanitizer_common/sanitizer_lfstack.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_lfstack.h rename to lib/libtsan/sanitizer_common/sanitizer_lfstack.h diff --git a/lib/tsan/sanitizer_common/sanitizer_libc.cpp b/lib/libtsan/sanitizer_common/sanitizer_libc.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_libc.cpp rename to lib/libtsan/sanitizer_common/sanitizer_libc.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_libc.h b/lib/libtsan/sanitizer_common/sanitizer_libc.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_libc.h rename to lib/libtsan/sanitizer_common/sanitizer_libc.h diff --git a/lib/tsan/sanitizer_common/sanitizer_libignore.cpp b/lib/libtsan/sanitizer_common/sanitizer_libignore.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_libignore.cpp rename to lib/libtsan/sanitizer_common/sanitizer_libignore.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_libignore.h b/lib/libtsan/sanitizer_common/sanitizer_libignore.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_libignore.h rename to lib/libtsan/sanitizer_common/sanitizer_libignore.h diff --git a/lib/tsan/sanitizer_common/sanitizer_linux.cpp b/lib/libtsan/sanitizer_common/sanitizer_linux.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_linux.cpp rename to lib/libtsan/sanitizer_common/sanitizer_linux.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_linux.h b/lib/libtsan/sanitizer_common/sanitizer_linux.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_linux.h rename to lib/libtsan/sanitizer_common/sanitizer_linux.h diff --git a/lib/tsan/sanitizer_common/sanitizer_linux_libcdep.cpp b/lib/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_linux_libcdep.cpp rename to lib/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_linux_s390.cpp b/lib/libtsan/sanitizer_common/sanitizer_linux_s390.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_linux_s390.cpp rename to lib/libtsan/sanitizer_common/sanitizer_linux_s390.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_list.h b/lib/libtsan/sanitizer_common/sanitizer_list.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_list.h rename to lib/libtsan/sanitizer_common/sanitizer_list.h diff --git a/lib/tsan/sanitizer_common/sanitizer_local_address_space_view.h b/lib/libtsan/sanitizer_common/sanitizer_local_address_space_view.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_local_address_space_view.h rename to lib/libtsan/sanitizer_common/sanitizer_local_address_space_view.h diff --git a/lib/tsan/sanitizer_common/sanitizer_lzw.h b/lib/libtsan/sanitizer_common/sanitizer_lzw.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_lzw.h rename to lib/libtsan/sanitizer_common/sanitizer_lzw.h diff --git a/lib/tsan/sanitizer_common/sanitizer_mac.cpp b/lib/libtsan/sanitizer_common/sanitizer_mac.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_mac.cpp rename to lib/libtsan/sanitizer_common/sanitizer_mac.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_mac.h b/lib/libtsan/sanitizer_common/sanitizer_mac.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_mac.h rename to lib/libtsan/sanitizer_common/sanitizer_mac.h diff --git a/lib/tsan/sanitizer_common/sanitizer_mac_libcdep.cpp b/lib/libtsan/sanitizer_common/sanitizer_mac_libcdep.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_mac_libcdep.cpp rename to lib/libtsan/sanitizer_common/sanitizer_mac_libcdep.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_mallinfo.h b/lib/libtsan/sanitizer_common/sanitizer_mallinfo.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_mallinfo.h rename to lib/libtsan/sanitizer_common/sanitizer_mallinfo.h diff --git a/lib/tsan/sanitizer_common/sanitizer_malloc_mac.inc b/lib/libtsan/sanitizer_common/sanitizer_malloc_mac.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_malloc_mac.inc rename to lib/libtsan/sanitizer_common/sanitizer_malloc_mac.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_mutex.cpp b/lib/libtsan/sanitizer_common/sanitizer_mutex.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_mutex.cpp rename to lib/libtsan/sanitizer_common/sanitizer_mutex.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_mutex.h b/lib/libtsan/sanitizer_common/sanitizer_mutex.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_mutex.h rename to lib/libtsan/sanitizer_common/sanitizer_mutex.h diff --git a/lib/tsan/sanitizer_common/sanitizer_netbsd.cpp b/lib/libtsan/sanitizer_common/sanitizer_netbsd.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_netbsd.cpp rename to lib/libtsan/sanitizer_common/sanitizer_netbsd.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_placement_new.h b/lib/libtsan/sanitizer_common/sanitizer_placement_new.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_placement_new.h rename to lib/libtsan/sanitizer_common/sanitizer_placement_new.h diff --git a/lib/tsan/sanitizer_common/sanitizer_platform.h b/lib/libtsan/sanitizer_common/sanitizer_platform.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_platform.h rename to lib/libtsan/sanitizer_common/sanitizer_platform.h diff --git a/lib/tsan/sanitizer_common/sanitizer_platform_interceptors.h b/lib/libtsan/sanitizer_common/sanitizer_platform_interceptors.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_platform_interceptors.h rename to lib/libtsan/sanitizer_common/sanitizer_platform_interceptors.h diff --git a/lib/tsan/sanitizer_common/sanitizer_platform_limits_freebsd.cpp b/lib/libtsan/sanitizer_common/sanitizer_platform_limits_freebsd.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_platform_limits_freebsd.cpp rename to lib/libtsan/sanitizer_common/sanitizer_platform_limits_freebsd.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_platform_limits_freebsd.h b/lib/libtsan/sanitizer_common/sanitizer_platform_limits_freebsd.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_platform_limits_freebsd.h rename to lib/libtsan/sanitizer_common/sanitizer_platform_limits_freebsd.h diff --git a/lib/tsan/sanitizer_common/sanitizer_platform_limits_linux.cpp b/lib/libtsan/sanitizer_common/sanitizer_platform_limits_linux.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_platform_limits_linux.cpp rename to lib/libtsan/sanitizer_common/sanitizer_platform_limits_linux.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_platform_limits_netbsd.cpp b/lib/libtsan/sanitizer_common/sanitizer_platform_limits_netbsd.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_platform_limits_netbsd.cpp rename to lib/libtsan/sanitizer_common/sanitizer_platform_limits_netbsd.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_platform_limits_netbsd.h b/lib/libtsan/sanitizer_common/sanitizer_platform_limits_netbsd.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_platform_limits_netbsd.h rename to lib/libtsan/sanitizer_common/sanitizer_platform_limits_netbsd.h diff --git a/lib/tsan/sanitizer_common/sanitizer_platform_limits_posix.cpp b/lib/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_platform_limits_posix.cpp rename to lib/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_platform_limits_posix.h b/lib/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_platform_limits_posix.h rename to lib/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h diff --git a/lib/tsan/sanitizer_common/sanitizer_platform_limits_solaris.cpp b/lib/libtsan/sanitizer_common/sanitizer_platform_limits_solaris.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_platform_limits_solaris.cpp rename to lib/libtsan/sanitizer_common/sanitizer_platform_limits_solaris.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_platform_limits_solaris.h b/lib/libtsan/sanitizer_common/sanitizer_platform_limits_solaris.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_platform_limits_solaris.h rename to lib/libtsan/sanitizer_common/sanitizer_platform_limits_solaris.h diff --git a/lib/tsan/sanitizer_common/sanitizer_posix.cpp b/lib/libtsan/sanitizer_common/sanitizer_posix.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_posix.cpp rename to lib/libtsan/sanitizer_common/sanitizer_posix.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_posix.h b/lib/libtsan/sanitizer_common/sanitizer_posix.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_posix.h rename to lib/libtsan/sanitizer_common/sanitizer_posix.h diff --git a/lib/tsan/sanitizer_common/sanitizer_posix_libcdep.cpp b/lib/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_posix_libcdep.cpp rename to lib/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_printf.cpp b/lib/libtsan/sanitizer_common/sanitizer_printf.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_printf.cpp rename to lib/libtsan/sanitizer_common/sanitizer_printf.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_procmaps.h b/lib/libtsan/sanitizer_common/sanitizer_procmaps.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_procmaps.h rename to lib/libtsan/sanitizer_common/sanitizer_procmaps.h diff --git a/lib/tsan/sanitizer_common/sanitizer_procmaps_bsd.cpp b/lib/libtsan/sanitizer_common/sanitizer_procmaps_bsd.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_procmaps_bsd.cpp rename to lib/libtsan/sanitizer_common/sanitizer_procmaps_bsd.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_procmaps_common.cpp b/lib/libtsan/sanitizer_common/sanitizer_procmaps_common.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_procmaps_common.cpp rename to lib/libtsan/sanitizer_common/sanitizer_procmaps_common.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_procmaps_fuchsia.cpp b/lib/libtsan/sanitizer_common/sanitizer_procmaps_fuchsia.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_procmaps_fuchsia.cpp rename to lib/libtsan/sanitizer_common/sanitizer_procmaps_fuchsia.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_procmaps_linux.cpp b/lib/libtsan/sanitizer_common/sanitizer_procmaps_linux.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_procmaps_linux.cpp rename to lib/libtsan/sanitizer_common/sanitizer_procmaps_linux.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_procmaps_mac.cpp b/lib/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_procmaps_mac.cpp rename to lib/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_procmaps_solaris.cpp b/lib/libtsan/sanitizer_common/sanitizer_procmaps_solaris.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_procmaps_solaris.cpp rename to lib/libtsan/sanitizer_common/sanitizer_procmaps_solaris.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_ptrauth.h b/lib/libtsan/sanitizer_common/sanitizer_ptrauth.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_ptrauth.h rename to lib/libtsan/sanitizer_common/sanitizer_ptrauth.h diff --git a/lib/tsan/sanitizer_common/sanitizer_quarantine.h b/lib/libtsan/sanitizer_common/sanitizer_quarantine.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_quarantine.h rename to lib/libtsan/sanitizer_common/sanitizer_quarantine.h diff --git a/lib/tsan/sanitizer_common/sanitizer_range.cpp b/lib/libtsan/sanitizer_common/sanitizer_range.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_range.cpp rename to lib/libtsan/sanitizer_common/sanitizer_range.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_range.h b/lib/libtsan/sanitizer_common/sanitizer_range.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_range.h rename to lib/libtsan/sanitizer_common/sanitizer_range.h diff --git a/lib/tsan/sanitizer_common/sanitizer_redefine_builtins.h b/lib/libtsan/sanitizer_common/sanitizer_redefine_builtins.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_redefine_builtins.h rename to lib/libtsan/sanitizer_common/sanitizer_redefine_builtins.h diff --git a/lib/tsan/sanitizer_common/sanitizer_report_decorator.h b/lib/libtsan/sanitizer_common/sanitizer_report_decorator.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_report_decorator.h rename to lib/libtsan/sanitizer_common/sanitizer_report_decorator.h diff --git a/lib/tsan/sanitizer_common/sanitizer_ring_buffer.h b/lib/libtsan/sanitizer_common/sanitizer_ring_buffer.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_ring_buffer.h rename to lib/libtsan/sanitizer_common/sanitizer_ring_buffer.h diff --git a/lib/tsan/sanitizer_common/sanitizer_signal_interceptors.inc b/lib/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_signal_interceptors.inc rename to lib/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_solaris.cpp b/lib/libtsan/sanitizer_common/sanitizer_solaris.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_solaris.cpp rename to lib/libtsan/sanitizer_common/sanitizer_solaris.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_solaris.h b/lib/libtsan/sanitizer_common/sanitizer_solaris.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_solaris.h rename to lib/libtsan/sanitizer_common/sanitizer_solaris.h diff --git a/lib/tsan/sanitizer_common/sanitizer_stack_store.cpp b/lib/libtsan/sanitizer_common/sanitizer_stack_store.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stack_store.cpp rename to lib/libtsan/sanitizer_common/sanitizer_stack_store.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_stack_store.h b/lib/libtsan/sanitizer_common/sanitizer_stack_store.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stack_store.h rename to lib/libtsan/sanitizer_common/sanitizer_stack_store.h diff --git a/lib/tsan/sanitizer_common/sanitizer_stackdepot.cpp b/lib/libtsan/sanitizer_common/sanitizer_stackdepot.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stackdepot.cpp rename to lib/libtsan/sanitizer_common/sanitizer_stackdepot.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_stackdepot.h b/lib/libtsan/sanitizer_common/sanitizer_stackdepot.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stackdepot.h rename to lib/libtsan/sanitizer_common/sanitizer_stackdepot.h diff --git a/lib/tsan/sanitizer_common/sanitizer_stackdepotbase.h b/lib/libtsan/sanitizer_common/sanitizer_stackdepotbase.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stackdepotbase.h rename to lib/libtsan/sanitizer_common/sanitizer_stackdepotbase.h diff --git a/lib/tsan/sanitizer_common/sanitizer_stacktrace.cpp b/lib/libtsan/sanitizer_common/sanitizer_stacktrace.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stacktrace.cpp rename to lib/libtsan/sanitizer_common/sanitizer_stacktrace.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_stacktrace.h b/lib/libtsan/sanitizer_common/sanitizer_stacktrace.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stacktrace.h rename to lib/libtsan/sanitizer_common/sanitizer_stacktrace.h diff --git a/lib/tsan/sanitizer_common/sanitizer_stacktrace_libcdep.cpp b/lib/libtsan/sanitizer_common/sanitizer_stacktrace_libcdep.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stacktrace_libcdep.cpp rename to lib/libtsan/sanitizer_common/sanitizer_stacktrace_libcdep.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_stacktrace_printer.cpp b/lib/libtsan/sanitizer_common/sanitizer_stacktrace_printer.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stacktrace_printer.cpp rename to lib/libtsan/sanitizer_common/sanitizer_stacktrace_printer.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_stacktrace_printer.h b/lib/libtsan/sanitizer_common/sanitizer_stacktrace_printer.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stacktrace_printer.h rename to lib/libtsan/sanitizer_common/sanitizer_stacktrace_printer.h diff --git a/lib/tsan/sanitizer_common/sanitizer_stacktrace_sparc.cpp b/lib/libtsan/sanitizer_common/sanitizer_stacktrace_sparc.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stacktrace_sparc.cpp rename to lib/libtsan/sanitizer_common/sanitizer_stacktrace_sparc.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_stoptheworld.h b/lib/libtsan/sanitizer_common/sanitizer_stoptheworld.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stoptheworld.h rename to lib/libtsan/sanitizer_common/sanitizer_stoptheworld.h diff --git a/lib/tsan/sanitizer_common/sanitizer_stoptheworld_fuchsia.cpp b/lib/libtsan/sanitizer_common/sanitizer_stoptheworld_fuchsia.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stoptheworld_fuchsia.cpp rename to lib/libtsan/sanitizer_common/sanitizer_stoptheworld_fuchsia.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_stoptheworld_fuchsia.h b/lib/libtsan/sanitizer_common/sanitizer_stoptheworld_fuchsia.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stoptheworld_fuchsia.h rename to lib/libtsan/sanitizer_common/sanitizer_stoptheworld_fuchsia.h diff --git a/lib/tsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp b/lib/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp rename to lib/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp b/lib/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp rename to lib/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp b/lib/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp rename to lib/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_stoptheworld_win.cpp b/lib/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_stoptheworld_win.cpp rename to lib/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_suppressions.cpp b/lib/libtsan/sanitizer_common/sanitizer_suppressions.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_suppressions.cpp rename to lib/libtsan/sanitizer_common/sanitizer_suppressions.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_suppressions.h b/lib/libtsan/sanitizer_common/sanitizer_suppressions.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_suppressions.h rename to lib/libtsan/sanitizer_common/sanitizer_suppressions.h diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer.cpp b/lib/libtsan/sanitizer_common/sanitizer_symbolizer.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer.cpp rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer.h b/lib/libtsan/sanitizer_common/sanitizer_symbolizer.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer.h rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer.h diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_internal.h b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_internal.h rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_libbacktrace.h b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_libbacktrace.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_libbacktrace.h rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_libbacktrace.h diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_mac.cpp b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_mac.cpp rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_mac.h b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_mac.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_mac.h rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_mac.h diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_markup.cpp b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_markup.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_markup.cpp rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_markup.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_markup.h b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_markup.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_markup.h rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_markup.h diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_markup_constants.h b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_markup_constants.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_markup_constants.h rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_markup_constants.h diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_markup_fuchsia.cpp b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_markup_fuchsia.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_markup_fuchsia.cpp rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_markup_fuchsia.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_report.cpp b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_report.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_report.cpp rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_report.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_report_fuchsia.cpp b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_report_fuchsia.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_report_fuchsia.cpp rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_report_fuchsia.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_symbolizer_win.cpp b/lib/libtsan/sanitizer_common/sanitizer_symbolizer_win.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_symbolizer_win.cpp rename to lib/libtsan/sanitizer_common/sanitizer_symbolizer_win.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_syscall_generic.inc b/lib/libtsan/sanitizer_common/sanitizer_syscall_generic.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_syscall_generic.inc rename to lib/libtsan/sanitizer_common/sanitizer_syscall_generic.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_syscall_linux_aarch64.inc b/lib/libtsan/sanitizer_common/sanitizer_syscall_linux_aarch64.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_syscall_linux_aarch64.inc rename to lib/libtsan/sanitizer_common/sanitizer_syscall_linux_aarch64.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_syscall_linux_arm.inc b/lib/libtsan/sanitizer_common/sanitizer_syscall_linux_arm.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_syscall_linux_arm.inc rename to lib/libtsan/sanitizer_common/sanitizer_syscall_linux_arm.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_syscall_linux_hexagon.inc b/lib/libtsan/sanitizer_common/sanitizer_syscall_linux_hexagon.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_syscall_linux_hexagon.inc rename to lib/libtsan/sanitizer_common/sanitizer_syscall_linux_hexagon.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_syscall_linux_loongarch64.inc b/lib/libtsan/sanitizer_common/sanitizer_syscall_linux_loongarch64.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_syscall_linux_loongarch64.inc rename to lib/libtsan/sanitizer_common/sanitizer_syscall_linux_loongarch64.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_syscall_linux_riscv64.inc b/lib/libtsan/sanitizer_common/sanitizer_syscall_linux_riscv64.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_syscall_linux_riscv64.inc rename to lib/libtsan/sanitizer_common/sanitizer_syscall_linux_riscv64.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_syscall_linux_x86_64.inc b/lib/libtsan/sanitizer_common/sanitizer_syscall_linux_x86_64.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_syscall_linux_x86_64.inc rename to lib/libtsan/sanitizer_common/sanitizer_syscall_linux_x86_64.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_syscalls_netbsd.inc b/lib/libtsan/sanitizer_common/sanitizer_syscalls_netbsd.inc similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_syscalls_netbsd.inc rename to lib/libtsan/sanitizer_common/sanitizer_syscalls_netbsd.inc diff --git a/lib/tsan/sanitizer_common/sanitizer_termination.cpp b/lib/libtsan/sanitizer_common/sanitizer_termination.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_termination.cpp rename to lib/libtsan/sanitizer_common/sanitizer_termination.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_thread_arg_retval.cpp b/lib/libtsan/sanitizer_common/sanitizer_thread_arg_retval.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_thread_arg_retval.cpp rename to lib/libtsan/sanitizer_common/sanitizer_thread_arg_retval.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_thread_arg_retval.h b/lib/libtsan/sanitizer_common/sanitizer_thread_arg_retval.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_thread_arg_retval.h rename to lib/libtsan/sanitizer_common/sanitizer_thread_arg_retval.h diff --git a/lib/tsan/sanitizer_common/sanitizer_thread_history.cpp b/lib/libtsan/sanitizer_common/sanitizer_thread_history.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_thread_history.cpp rename to lib/libtsan/sanitizer_common/sanitizer_thread_history.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_thread_history.h b/lib/libtsan/sanitizer_common/sanitizer_thread_history.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_thread_history.h rename to lib/libtsan/sanitizer_common/sanitizer_thread_history.h diff --git a/lib/tsan/sanitizer_common/sanitizer_thread_registry.cpp b/lib/libtsan/sanitizer_common/sanitizer_thread_registry.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_thread_registry.cpp rename to lib/libtsan/sanitizer_common/sanitizer_thread_registry.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_thread_registry.h b/lib/libtsan/sanitizer_common/sanitizer_thread_registry.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_thread_registry.h rename to lib/libtsan/sanitizer_common/sanitizer_thread_registry.h diff --git a/lib/tsan/sanitizer_common/sanitizer_thread_safety.h b/lib/libtsan/sanitizer_common/sanitizer_thread_safety.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_thread_safety.h rename to lib/libtsan/sanitizer_common/sanitizer_thread_safety.h diff --git a/lib/tsan/sanitizer_common/sanitizer_tls_get_addr.cpp b/lib/libtsan/sanitizer_common/sanitizer_tls_get_addr.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_tls_get_addr.cpp rename to lib/libtsan/sanitizer_common/sanitizer_tls_get_addr.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_tls_get_addr.h b/lib/libtsan/sanitizer_common/sanitizer_tls_get_addr.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_tls_get_addr.h rename to lib/libtsan/sanitizer_common/sanitizer_tls_get_addr.h diff --git a/lib/tsan/sanitizer_common/sanitizer_type_traits.cpp b/lib/libtsan/sanitizer_common/sanitizer_type_traits.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_type_traits.cpp rename to lib/libtsan/sanitizer_common/sanitizer_type_traits.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_type_traits.h b/lib/libtsan/sanitizer_common/sanitizer_type_traits.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_type_traits.h rename to lib/libtsan/sanitizer_common/sanitizer_type_traits.h diff --git a/lib/tsan/sanitizer_common/sanitizer_unwind_fuchsia.cpp b/lib/libtsan/sanitizer_common/sanitizer_unwind_fuchsia.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_unwind_fuchsia.cpp rename to lib/libtsan/sanitizer_common/sanitizer_unwind_fuchsia.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp b/lib/libtsan/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp rename to lib/libtsan/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_unwind_win.cpp b/lib/libtsan/sanitizer_common/sanitizer_unwind_win.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_unwind_win.cpp rename to lib/libtsan/sanitizer_common/sanitizer_unwind_win.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_vector.h b/lib/libtsan/sanitizer_common/sanitizer_vector.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_vector.h rename to lib/libtsan/sanitizer_common/sanitizer_vector.h diff --git a/lib/tsan/sanitizer_common/sanitizer_win.cpp b/lib/libtsan/sanitizer_common/sanitizer_win.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_win.cpp rename to lib/libtsan/sanitizer_common/sanitizer_win.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_win.h b/lib/libtsan/sanitizer_common/sanitizer_win.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_win.h rename to lib/libtsan/sanitizer_common/sanitizer_win.h diff --git a/lib/tsan/sanitizer_common/sanitizer_win_defs.h b/lib/libtsan/sanitizer_common/sanitizer_win_defs.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_win_defs.h rename to lib/libtsan/sanitizer_common/sanitizer_win_defs.h diff --git a/lib/tsan/sanitizer_common/sanitizer_win_immortalize.h b/lib/libtsan/sanitizer_common/sanitizer_win_immortalize.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_win_immortalize.h rename to lib/libtsan/sanitizer_common/sanitizer_win_immortalize.h diff --git a/lib/tsan/sanitizer_common/sanitizer_win_interception.cpp b/lib/libtsan/sanitizer_common/sanitizer_win_interception.cpp similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_win_interception.cpp rename to lib/libtsan/sanitizer_common/sanitizer_win_interception.cpp diff --git a/lib/tsan/sanitizer_common/sanitizer_win_interception.h b/lib/libtsan/sanitizer_common/sanitizer_win_interception.h similarity index 100% rename from lib/tsan/sanitizer_common/sanitizer_win_interception.h rename to lib/libtsan/sanitizer_common/sanitizer_win_interception.h diff --git a/lib/tsan/tsan_debugging.cpp b/lib/libtsan/tsan_debugging.cpp similarity index 100% rename from lib/tsan/tsan_debugging.cpp rename to lib/libtsan/tsan_debugging.cpp diff --git a/lib/tsan/tsan_defs.h b/lib/libtsan/tsan_defs.h similarity index 100% rename from lib/tsan/tsan_defs.h rename to lib/libtsan/tsan_defs.h diff --git a/lib/tsan/tsan_dense_alloc.h b/lib/libtsan/tsan_dense_alloc.h similarity index 100% rename from lib/tsan/tsan_dense_alloc.h rename to lib/libtsan/tsan_dense_alloc.h diff --git a/lib/tsan/tsan_dispatch_defs.h b/lib/libtsan/tsan_dispatch_defs.h similarity index 100% rename from lib/tsan/tsan_dispatch_defs.h rename to lib/libtsan/tsan_dispatch_defs.h diff --git a/lib/tsan/tsan_external.cpp b/lib/libtsan/tsan_external.cpp similarity index 100% rename from lib/tsan/tsan_external.cpp rename to lib/libtsan/tsan_external.cpp diff --git a/lib/tsan/tsan_fd.cpp b/lib/libtsan/tsan_fd.cpp similarity index 100% rename from lib/tsan/tsan_fd.cpp rename to lib/libtsan/tsan_fd.cpp diff --git a/lib/tsan/tsan_fd.h b/lib/libtsan/tsan_fd.h similarity index 100% rename from lib/tsan/tsan_fd.h rename to lib/libtsan/tsan_fd.h diff --git a/lib/tsan/tsan_flags.cpp b/lib/libtsan/tsan_flags.cpp similarity index 100% rename from lib/tsan/tsan_flags.cpp rename to lib/libtsan/tsan_flags.cpp diff --git a/lib/tsan/tsan_flags.h b/lib/libtsan/tsan_flags.h similarity index 100% rename from lib/tsan/tsan_flags.h rename to lib/libtsan/tsan_flags.h diff --git a/lib/tsan/tsan_flags.inc b/lib/libtsan/tsan_flags.inc similarity index 100% rename from lib/tsan/tsan_flags.inc rename to lib/libtsan/tsan_flags.inc diff --git a/lib/tsan/tsan_ignoreset.cpp b/lib/libtsan/tsan_ignoreset.cpp similarity index 100% rename from lib/tsan/tsan_ignoreset.cpp rename to lib/libtsan/tsan_ignoreset.cpp diff --git a/lib/tsan/tsan_ignoreset.h b/lib/libtsan/tsan_ignoreset.h similarity index 100% rename from lib/tsan/tsan_ignoreset.h rename to lib/libtsan/tsan_ignoreset.h diff --git a/lib/tsan/tsan_ilist.h b/lib/libtsan/tsan_ilist.h similarity index 100% rename from lib/tsan/tsan_ilist.h rename to lib/libtsan/tsan_ilist.h diff --git a/lib/tsan/tsan_interceptors.h b/lib/libtsan/tsan_interceptors.h similarity index 100% rename from lib/tsan/tsan_interceptors.h rename to lib/libtsan/tsan_interceptors.h diff --git a/lib/tsan/tsan_interceptors_mac.cpp b/lib/libtsan/tsan_interceptors_mac.cpp similarity index 100% rename from lib/tsan/tsan_interceptors_mac.cpp rename to lib/libtsan/tsan_interceptors_mac.cpp diff --git a/lib/tsan/tsan_interceptors_mach_vm.cpp b/lib/libtsan/tsan_interceptors_mach_vm.cpp similarity index 100% rename from lib/tsan/tsan_interceptors_mach_vm.cpp rename to lib/libtsan/tsan_interceptors_mach_vm.cpp diff --git a/lib/tsan/tsan_interceptors_memintrinsics.cpp b/lib/libtsan/tsan_interceptors_memintrinsics.cpp similarity index 100% rename from lib/tsan/tsan_interceptors_memintrinsics.cpp rename to lib/libtsan/tsan_interceptors_memintrinsics.cpp diff --git a/lib/tsan/tsan_interceptors_posix.cpp b/lib/libtsan/tsan_interceptors_posix.cpp similarity index 100% rename from lib/tsan/tsan_interceptors_posix.cpp rename to lib/libtsan/tsan_interceptors_posix.cpp diff --git a/lib/tsan/tsan_interface.cpp b/lib/libtsan/tsan_interface.cpp similarity index 100% rename from lib/tsan/tsan_interface.cpp rename to lib/libtsan/tsan_interface.cpp diff --git a/lib/tsan/tsan_interface.h b/lib/libtsan/tsan_interface.h similarity index 100% rename from lib/tsan/tsan_interface.h rename to lib/libtsan/tsan_interface.h diff --git a/lib/tsan/tsan_interface.inc b/lib/libtsan/tsan_interface.inc similarity index 100% rename from lib/tsan/tsan_interface.inc rename to lib/libtsan/tsan_interface.inc diff --git a/lib/tsan/tsan_interface_ann.cpp b/lib/libtsan/tsan_interface_ann.cpp similarity index 100% rename from lib/tsan/tsan_interface_ann.cpp rename to lib/libtsan/tsan_interface_ann.cpp diff --git a/lib/tsan/tsan_interface_ann.h b/lib/libtsan/tsan_interface_ann.h similarity index 100% rename from lib/tsan/tsan_interface_ann.h rename to lib/libtsan/tsan_interface_ann.h diff --git a/lib/tsan/tsan_interface_atomic.cpp b/lib/libtsan/tsan_interface_atomic.cpp similarity index 100% rename from lib/tsan/tsan_interface_atomic.cpp rename to lib/libtsan/tsan_interface_atomic.cpp diff --git a/lib/tsan/tsan_interface_java.cpp b/lib/libtsan/tsan_interface_java.cpp similarity index 100% rename from lib/tsan/tsan_interface_java.cpp rename to lib/libtsan/tsan_interface_java.cpp diff --git a/lib/tsan/tsan_interface_java.h b/lib/libtsan/tsan_interface_java.h similarity index 100% rename from lib/tsan/tsan_interface_java.h rename to lib/libtsan/tsan_interface_java.h diff --git a/lib/tsan/tsan_malloc_mac.cpp b/lib/libtsan/tsan_malloc_mac.cpp similarity index 100% rename from lib/tsan/tsan_malloc_mac.cpp rename to lib/libtsan/tsan_malloc_mac.cpp diff --git a/lib/tsan/tsan_md5.cpp b/lib/libtsan/tsan_md5.cpp similarity index 100% rename from lib/tsan/tsan_md5.cpp rename to lib/libtsan/tsan_md5.cpp diff --git a/lib/tsan/tsan_mman.cpp b/lib/libtsan/tsan_mman.cpp similarity index 100% rename from lib/tsan/tsan_mman.cpp rename to lib/libtsan/tsan_mman.cpp diff --git a/lib/tsan/tsan_mman.h b/lib/libtsan/tsan_mman.h similarity index 100% rename from lib/tsan/tsan_mman.h rename to lib/libtsan/tsan_mman.h diff --git a/lib/tsan/tsan_mutexset.cpp b/lib/libtsan/tsan_mutexset.cpp similarity index 100% rename from lib/tsan/tsan_mutexset.cpp rename to lib/libtsan/tsan_mutexset.cpp diff --git a/lib/tsan/tsan_mutexset.h b/lib/libtsan/tsan_mutexset.h similarity index 100% rename from lib/tsan/tsan_mutexset.h rename to lib/libtsan/tsan_mutexset.h diff --git a/lib/tsan/tsan_new_delete.cpp b/lib/libtsan/tsan_new_delete.cpp similarity index 100% rename from lib/tsan/tsan_new_delete.cpp rename to lib/libtsan/tsan_new_delete.cpp diff --git a/lib/tsan/tsan_platform.h b/lib/libtsan/tsan_platform.h similarity index 100% rename from lib/tsan/tsan_platform.h rename to lib/libtsan/tsan_platform.h diff --git a/lib/tsan/tsan_platform_linux.cpp b/lib/libtsan/tsan_platform_linux.cpp similarity index 100% rename from lib/tsan/tsan_platform_linux.cpp rename to lib/libtsan/tsan_platform_linux.cpp diff --git a/lib/tsan/tsan_platform_mac.cpp b/lib/libtsan/tsan_platform_mac.cpp similarity index 100% rename from lib/tsan/tsan_platform_mac.cpp rename to lib/libtsan/tsan_platform_mac.cpp diff --git a/lib/tsan/tsan_platform_posix.cpp b/lib/libtsan/tsan_platform_posix.cpp similarity index 100% rename from lib/tsan/tsan_platform_posix.cpp rename to lib/libtsan/tsan_platform_posix.cpp diff --git a/lib/tsan/tsan_platform_windows.cpp b/lib/libtsan/tsan_platform_windows.cpp similarity index 100% rename from lib/tsan/tsan_platform_windows.cpp rename to lib/libtsan/tsan_platform_windows.cpp diff --git a/lib/tsan/tsan_ppc_regs.h b/lib/libtsan/tsan_ppc_regs.h similarity index 100% rename from lib/tsan/tsan_ppc_regs.h rename to lib/libtsan/tsan_ppc_regs.h diff --git a/lib/tsan/tsan_preinit.cpp b/lib/libtsan/tsan_preinit.cpp similarity index 100% rename from lib/tsan/tsan_preinit.cpp rename to lib/libtsan/tsan_preinit.cpp diff --git a/lib/tsan/tsan_report.cpp b/lib/libtsan/tsan_report.cpp similarity index 100% rename from lib/tsan/tsan_report.cpp rename to lib/libtsan/tsan_report.cpp diff --git a/lib/tsan/tsan_report.h b/lib/libtsan/tsan_report.h similarity index 100% rename from lib/tsan/tsan_report.h rename to lib/libtsan/tsan_report.h diff --git a/lib/tsan/tsan_rtl.cpp b/lib/libtsan/tsan_rtl.cpp similarity index 100% rename from lib/tsan/tsan_rtl.cpp rename to lib/libtsan/tsan_rtl.cpp diff --git a/lib/tsan/tsan_rtl.h b/lib/libtsan/tsan_rtl.h similarity index 100% rename from lib/tsan/tsan_rtl.h rename to lib/libtsan/tsan_rtl.h diff --git a/lib/tsan/tsan_rtl_aarch64.S b/lib/libtsan/tsan_rtl_aarch64.S similarity index 100% rename from lib/tsan/tsan_rtl_aarch64.S rename to lib/libtsan/tsan_rtl_aarch64.S diff --git a/lib/tsan/tsan_rtl_access.cpp b/lib/libtsan/tsan_rtl_access.cpp similarity index 100% rename from lib/tsan/tsan_rtl_access.cpp rename to lib/libtsan/tsan_rtl_access.cpp diff --git a/lib/tsan/tsan_rtl_amd64.S b/lib/libtsan/tsan_rtl_amd64.S similarity index 100% rename from lib/tsan/tsan_rtl_amd64.S rename to lib/libtsan/tsan_rtl_amd64.S diff --git a/lib/tsan/tsan_rtl_loongarch64.S b/lib/libtsan/tsan_rtl_loongarch64.S similarity index 100% rename from lib/tsan/tsan_rtl_loongarch64.S rename to lib/libtsan/tsan_rtl_loongarch64.S diff --git a/lib/tsan/tsan_rtl_mips64.S b/lib/libtsan/tsan_rtl_mips64.S similarity index 100% rename from lib/tsan/tsan_rtl_mips64.S rename to lib/libtsan/tsan_rtl_mips64.S diff --git a/lib/tsan/tsan_rtl_mutex.cpp b/lib/libtsan/tsan_rtl_mutex.cpp similarity index 100% rename from lib/tsan/tsan_rtl_mutex.cpp rename to lib/libtsan/tsan_rtl_mutex.cpp diff --git a/lib/tsan/tsan_rtl_ppc64.S b/lib/libtsan/tsan_rtl_ppc64.S similarity index 100% rename from lib/tsan/tsan_rtl_ppc64.S rename to lib/libtsan/tsan_rtl_ppc64.S diff --git a/lib/tsan/tsan_rtl_proc.cpp b/lib/libtsan/tsan_rtl_proc.cpp similarity index 100% rename from lib/tsan/tsan_rtl_proc.cpp rename to lib/libtsan/tsan_rtl_proc.cpp diff --git a/lib/tsan/tsan_rtl_report.cpp b/lib/libtsan/tsan_rtl_report.cpp similarity index 100% rename from lib/tsan/tsan_rtl_report.cpp rename to lib/libtsan/tsan_rtl_report.cpp diff --git a/lib/tsan/tsan_rtl_riscv64.S b/lib/libtsan/tsan_rtl_riscv64.S similarity index 100% rename from lib/tsan/tsan_rtl_riscv64.S rename to lib/libtsan/tsan_rtl_riscv64.S diff --git a/lib/tsan/tsan_rtl_s390x.S b/lib/libtsan/tsan_rtl_s390x.S similarity index 100% rename from lib/tsan/tsan_rtl_s390x.S rename to lib/libtsan/tsan_rtl_s390x.S diff --git a/lib/tsan/tsan_rtl_thread.cpp b/lib/libtsan/tsan_rtl_thread.cpp similarity index 100% rename from lib/tsan/tsan_rtl_thread.cpp rename to lib/libtsan/tsan_rtl_thread.cpp diff --git a/lib/tsan/tsan_shadow.h b/lib/libtsan/tsan_shadow.h similarity index 100% rename from lib/tsan/tsan_shadow.h rename to lib/libtsan/tsan_shadow.h diff --git a/lib/tsan/tsan_stack_trace.cpp b/lib/libtsan/tsan_stack_trace.cpp similarity index 100% rename from lib/tsan/tsan_stack_trace.cpp rename to lib/libtsan/tsan_stack_trace.cpp diff --git a/lib/tsan/tsan_stack_trace.h b/lib/libtsan/tsan_stack_trace.h similarity index 100% rename from lib/tsan/tsan_stack_trace.h rename to lib/libtsan/tsan_stack_trace.h diff --git a/lib/tsan/tsan_suppressions.cpp b/lib/libtsan/tsan_suppressions.cpp similarity index 100% rename from lib/tsan/tsan_suppressions.cpp rename to lib/libtsan/tsan_suppressions.cpp diff --git a/lib/tsan/tsan_suppressions.h b/lib/libtsan/tsan_suppressions.h similarity index 100% rename from lib/tsan/tsan_suppressions.h rename to lib/libtsan/tsan_suppressions.h diff --git a/lib/tsan/tsan_symbolize.cpp b/lib/libtsan/tsan_symbolize.cpp similarity index 100% rename from lib/tsan/tsan_symbolize.cpp rename to lib/libtsan/tsan_symbolize.cpp diff --git a/lib/tsan/tsan_symbolize.h b/lib/libtsan/tsan_symbolize.h similarity index 100% rename from lib/tsan/tsan_symbolize.h rename to lib/libtsan/tsan_symbolize.h diff --git a/lib/tsan/tsan_sync.cpp b/lib/libtsan/tsan_sync.cpp similarity index 100% rename from lib/tsan/tsan_sync.cpp rename to lib/libtsan/tsan_sync.cpp diff --git a/lib/tsan/tsan_sync.h b/lib/libtsan/tsan_sync.h similarity index 100% rename from lib/tsan/tsan_sync.h rename to lib/libtsan/tsan_sync.h diff --git a/lib/tsan/tsan_trace.h b/lib/libtsan/tsan_trace.h similarity index 100% rename from lib/tsan/tsan_trace.h rename to lib/libtsan/tsan_trace.h diff --git a/lib/tsan/tsan_vector_clock.cpp b/lib/libtsan/tsan_vector_clock.cpp similarity index 100% rename from lib/tsan/tsan_vector_clock.cpp rename to lib/libtsan/tsan_vector_clock.cpp diff --git a/lib/tsan/tsan_vector_clock.h b/lib/libtsan/tsan_vector_clock.h similarity index 100% rename from lib/tsan/tsan_vector_clock.h rename to lib/libtsan/tsan_vector_clock.h diff --git a/lib/tsan/ubsan/ubsan_flags.h b/lib/libtsan/ubsan/ubsan_flags.h similarity index 100% rename from lib/tsan/ubsan/ubsan_flags.h rename to lib/libtsan/ubsan/ubsan_flags.h diff --git a/lib/tsan/ubsan/ubsan_flags.inc b/lib/libtsan/ubsan/ubsan_flags.inc similarity index 100% rename from lib/tsan/ubsan/ubsan_flags.inc rename to lib/libtsan/ubsan/ubsan_flags.inc diff --git a/lib/tsan/ubsan/ubsan_init.h b/lib/libtsan/ubsan/ubsan_init.h similarity index 100% rename from lib/tsan/ubsan/ubsan_init.h rename to lib/libtsan/ubsan/ubsan_init.h diff --git a/lib/tsan/ubsan/ubsan_platform.h b/lib/libtsan/ubsan/ubsan_platform.h similarity index 100% rename from lib/tsan/ubsan/ubsan_platform.h rename to lib/libtsan/ubsan/ubsan_platform.h diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index 81a3013b34..5ddc3432f9 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -411,6 +411,11 @@ pub fn resolveTargetQuery(query: Target.Query) DetectError!Target { if (result.cpu.arch.isArm() and result.abi.float() == .soft) { result.cpu.features.removeFeature(@intFromEnum(Target.arm.Feature.vfp2)); } + + // https://github.com/llvm/llvm-project/issues/135283 + if (result.cpu.arch.isMIPS() and result.abi.float() == .soft) { + result.cpu.features.addFeature(@intFromEnum(Target.mips.Feature.soft_float)); + } } // It's possible that we detect the native ABI, but fail to detect the OS version or were told diff --git a/src/Compilation.zig b/src/Compilation.zig index e245feb9bf..c1d6ef70c8 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -235,7 +235,7 @@ ubsan_rt_lib: ?CrtFile = null, ubsan_rt_obj: ?CrtFile = null, /// Populated when we build the libc static library. A Job to build this is placed in the queue /// and resolved before calling linker.flush(). -libc_static_lib: ?CrtFile = null, +zigc_static_lib: ?CrtFile = null, /// Populated when we build the libcompiler_rt static library. A Job to build this is indicated /// by setting `queued_jobs.compiler_rt_lib` and resolved before calling linker.flush(). compiler_rt_lib: ?CrtFile = null, @@ -307,7 +307,7 @@ const QueuedJobs = struct { libcxx: bool = false, libcxxabi: bool = false, libtsan: bool = false, - zig_libc: bool = false, + zigc_lib: bool = false, }; pub const default_stack_protector_buffer_size = target_util.default_stack_protector_buffer_size; @@ -801,7 +801,7 @@ pub const MiscTask = enum { libfuzzer, wasi_libc_crt_file, compiler_rt, - zig_libc, + libzigc, analyze_mod, docs_copy, docs_wasm, @@ -1759,7 +1759,6 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil const target = comp.root_mod.resolved_target.result; const capable_of_building_compiler_rt = canBuildLibCompilerRt(target, comp.config.use_llvm); - const capable_of_building_zig_libc = canBuildZigLibC(target, comp.config.use_llvm); // Add a `CObject` for each `c_source_files`. try comp.c_object_table.ensureTotalCapacity(gpa, options.c_source_files.len); @@ -1891,12 +1890,17 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil // When linking mingw-w64 there are some import libs we always need. try comp.windows_libs.ensureUnusedCapacity(gpa, mingw.always_link_libs.len); for (mingw.always_link_libs) |name| comp.windows_libs.putAssumeCapacity(name, {}); - } else if (target.os.tag == .freestanding and capable_of_building_zig_libc) { - comp.queued_jobs.zig_libc = true; - comp.remaining_prelink_tasks += 1; } else { return error.LibCUnavailable; } + + if ((target.isMuslLibC() and comp.config.link_mode == .static) or + target.isWasiLibC() or + target.isMinGW()) + { + comp.queued_jobs.zigc_lib = true; + comp.remaining_prelink_tasks += 1; + } } // Generate Windows import libs. @@ -2010,7 +2014,7 @@ pub fn destroy(comp: *Compilation) void { crt_file.deinit(gpa); } - if (comp.libc_static_lib) |*crt_file| { + if (comp.zigc_static_lib) |*crt_file| { crt_file.deinit(gpa); } @@ -3761,23 +3765,23 @@ fn performAllTheWorkInner( // compiler-rt due to LLD bugs as well, e.g.: // // https://github.com/llvm/llvm-project/issues/43698#issuecomment-2542660611 - comp.link_task_wait_group.spawnManager(buildRt, .{ comp, "compiler_rt.zig", .compiler_rt, .Lib, false, &comp.compiler_rt_lib, main_progress_node }); + comp.link_task_wait_group.spawnManager(buildRt, .{ comp, "compiler_rt.zig", "compiler_rt", .compiler_rt, .Lib, false, &comp.compiler_rt_lib, main_progress_node }); } if (comp.queued_jobs.compiler_rt_obj and comp.compiler_rt_obj == null) { - comp.link_task_wait_group.spawnManager(buildRt, .{ comp, "compiler_rt.zig", .compiler_rt, .Obj, false, &comp.compiler_rt_obj, main_progress_node }); + comp.link_task_wait_group.spawnManager(buildRt, .{ comp, "compiler_rt.zig", "compiler_rt", .compiler_rt, .Obj, false, &comp.compiler_rt_obj, main_progress_node }); } if (comp.queued_jobs.fuzzer_lib and comp.fuzzer_lib == null) { - comp.link_task_wait_group.spawnManager(buildRt, .{ comp, "fuzzer.zig", .libfuzzer, .Lib, true, &comp.fuzzer_lib, main_progress_node }); + comp.link_task_wait_group.spawnManager(buildRt, .{ comp, "fuzzer.zig", "fuzzer", .libfuzzer, .Lib, true, &comp.fuzzer_lib, main_progress_node }); } if (comp.queued_jobs.ubsan_rt_lib and comp.ubsan_rt_lib == null) { - comp.link_task_wait_group.spawnManager(buildRt, .{ comp, "ubsan_rt.zig", .libubsan, .Lib, false, &comp.ubsan_rt_lib, main_progress_node }); + comp.link_task_wait_group.spawnManager(buildRt, .{ comp, "ubsan_rt.zig", "ubsan_rt", .libubsan, .Lib, false, &comp.ubsan_rt_lib, main_progress_node }); } if (comp.queued_jobs.ubsan_rt_obj and comp.ubsan_rt_obj == null) { - comp.link_task_wait_group.spawnManager(buildRt, .{ comp, "ubsan_rt.zig", .libubsan, .Obj, false, &comp.ubsan_rt_obj, main_progress_node }); + comp.link_task_wait_group.spawnManager(buildRt, .{ comp, "ubsan_rt.zig", "ubsan_rt", .libubsan, .Obj, false, &comp.ubsan_rt_obj, main_progress_node }); } if (comp.queued_jobs.glibc_shared_objects) { @@ -3800,8 +3804,8 @@ fn performAllTheWorkInner( comp.link_task_wait_group.spawnManager(buildLibTsan, .{ comp, main_progress_node }); } - if (comp.queued_jobs.zig_libc and comp.libc_static_lib == null) { - comp.link_task_wait_group.spawnManager(buildZigLibc, .{ comp, main_progress_node }); + if (comp.queued_jobs.zigc_lib and comp.zigc_static_lib == null) { + comp.link_task_wait_group.spawnManager(buildLibZigC, .{ comp, main_progress_node }); } for (0..@typeInfo(musl.CrtFile).@"enum".fields.len) |i| { @@ -4764,6 +4768,7 @@ fn workerUpdateWin32Resource( fn buildRt( comp: *Compilation, root_source_name: []const u8, + root_name: []const u8, misc_task: MiscTask, output_mode: std.builtin.OutputMode, allow_lto: bool, @@ -4772,6 +4777,7 @@ fn buildRt( ) void { comp.buildOutputFromZig( root_source_name, + root_name, output_mode, allow_lto, out, @@ -4877,17 +4883,18 @@ fn buildLibTsan(comp: *Compilation, prog_node: std.Progress.Node) void { } } -fn buildZigLibc(comp: *Compilation, prog_node: std.Progress.Node) void { +fn buildLibZigC(comp: *Compilation, prog_node: std.Progress.Node) void { comp.buildOutputFromZig( "c.zig", + "zigc", .Lib, true, - &comp.libc_static_lib, - .zig_libc, + &comp.zigc_static_lib, + .libzigc, prog_node, ) catch |err| switch (err) { error.SubCompilationFailed => return, // error reported already - else => comp.lockAndSetMiscFailure(.zig_libc, "unable to build zig's multitarget libc: {s}", .{@errorName(err)}), + else => comp.lockAndSetMiscFailure(.libzigc, "unable to build libzigc: {s}", .{@errorName(err)}), }; } @@ -6511,25 +6518,6 @@ fn canBuildLibCompilerRt(target: std.Target, use_llvm: bool) bool { }; } -/// Not to be confused with canBuildLibC, which builds musl, glibc, and similar. -/// This one builds lib/c.zig. -fn canBuildZigLibC(target: std.Target, use_llvm: bool) bool { - switch (target.os.tag) { - .plan9 => return false, - else => {}, - } - switch (target.cpu.arch) { - .spirv, .spirv32, .spirv64 => return false, - else => {}, - } - return switch (target_util.zigBackend(target, use_llvm)) { - .stage2_llvm => true, - .stage2_riscv64 => true, - .stage2_x86_64 => if (target.ofmt == .elf or target.ofmt == .macho) true else build_options.have_llvm, - else => build_options.have_llvm, - }; -} - pub fn getZigBackend(comp: Compilation) std.builtin.CompilerBackend { const target = comp.root_mod.resolved_target.result; return target_util.zigBackend(target, comp.config.use_llvm); @@ -6570,6 +6558,7 @@ pub fn updateSubCompilation( fn buildOutputFromZig( comp: *Compilation, src_basename: []const u8, + root_name: []const u8, output_mode: std.builtin.OutputMode, allow_lto: bool, out: *?CrtFile, @@ -6633,7 +6622,6 @@ fn buildOutputFromZig( .builtin_mod = null, .builtin_modules = null, // there is only one module in this compilation }); - const root_name = src_basename[0 .. src_basename.len - std.fs.path.extension(src_basename).len]; const target = comp.getTarget(); const bin_basename = try std.zig.binNameAlloc(arena, .{ .root_name = root_name, diff --git a/src/libtsan.zig b/src/libtsan.zig index 22c425582b..6f36fb5c8d 100644 --- a/src/libtsan.zig +++ b/src/libtsan.zig @@ -124,7 +124,7 @@ pub fn buildTsan(comp: *Compilation, prog_node: std.Progress.Node) BuildError!vo var c_source_files = std.ArrayList(Compilation.CSourceFile).init(arena); try c_source_files.ensureUnusedCapacity(tsan_sources.len); - const tsan_include_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{"tsan"}); + const tsan_include_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{"libtsan"}); for (tsan_sources) |tsan_src| { var cflags = std.ArrayList([]const u8).init(arena); @@ -134,7 +134,7 @@ pub fn buildTsan(comp: *Compilation, prog_node: std.Progress.Node) BuildError!vo try addCcArgs(target, &cflags); c_source_files.appendAssumeCapacity(.{ - .src_path = try comp.zig_lib_directory.join(arena, &.{ "tsan", tsan_src }), + .src_path = try comp.zig_lib_directory.join(arena, &.{ "libtsan", tsan_src }), .extra_flags = cflags.items, .owner = root_mod, }); @@ -155,7 +155,7 @@ pub fn buildTsan(comp: *Compilation, prog_node: std.Progress.Node) BuildError!vo try addCcArgs(target, &cflags); c_source_files.appendAssumeCapacity(.{ - .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ "tsan", tsan_src }), + .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libtsan", tsan_src }), .extra_flags = cflags.items, .owner = root_mod, }); @@ -179,7 +179,7 @@ pub fn buildTsan(comp: *Compilation, prog_node: std.Progress.Node) BuildError!vo try cflags.append("-DNDEBUG"); c_source_files.appendAssumeCapacity(.{ - .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ "tsan", asm_source }), + .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libtsan", asm_source }), .extra_flags = cflags.items, .owner = root_mod, }); @@ -187,7 +187,7 @@ pub fn buildTsan(comp: *Compilation, prog_node: std.Progress.Node) BuildError!vo try c_source_files.ensureUnusedCapacity(sanitizer_common_sources.len); const sanitizer_common_include_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ - "tsan", "sanitizer_common", + "libtsan", "sanitizer_common", }); for (sanitizer_common_sources) |common_src| { var cflags = std.ArrayList([]const u8).init(arena); @@ -201,7 +201,7 @@ pub fn buildTsan(comp: *Compilation, prog_node: std.Progress.Node) BuildError!vo c_source_files.appendAssumeCapacity(.{ .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ - "tsan", "sanitizer_common", common_src, + "libtsan", "sanitizer_common", common_src, }), .extra_flags = cflags.items, .owner = root_mod, @@ -225,7 +225,7 @@ pub fn buildTsan(comp: *Compilation, prog_node: std.Progress.Node) BuildError!vo c_source_files.appendAssumeCapacity(.{ .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ - "tsan", "sanitizer_common", c_src, + "libtsan", "sanitizer_common", c_src, }), .extra_flags = cflags.items, .owner = root_mod, @@ -243,7 +243,7 @@ pub fn buildTsan(comp: *Compilation, prog_node: std.Progress.Node) BuildError!vo c_source_files.appendAssumeCapacity(.{ .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ - "tsan", "sanitizer_common", c_src, + "libtsan", "sanitizer_common", c_src, }), .extra_flags = cflags.items, .owner = root_mod, @@ -269,7 +269,7 @@ pub fn buildTsan(comp: *Compilation, prog_node: std.Progress.Node) BuildError!vo c_source_files.appendAssumeCapacity(.{ .src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{ - "tsan", "interception", c_src, + "libtsan", "interception", c_src, }), .extra_flags = cflags.items, .owner = root_mod, diff --git a/src/link/Coff.zig b/src/link/Coff.zig index da27c5c076..4b20ba99dd 100644 --- a/src/link/Coff.zig +++ b/src/link/Coff.zig @@ -2147,6 +2147,12 @@ fn linkWithLLD(coff: *Coff, arena: Allocator, tid: Zcu.PerThread.Id, prog_node: }, } + if (comp.config.link_libc and link_in_crt) { + if (comp.zigc_static_lib) |zigc| { + try argv.append(try zigc.full_object_path.toString(arena)); + } + } + // libc++ dep if (comp.config.link_libcpp) { try argv.append(try comp.libcxxabi_static_lib.?.full_object_path.toString(arena)); @@ -2172,11 +2178,6 @@ fn linkWithLLD(coff: *Coff, arena: Allocator, tid: Zcu.PerThread.Id, prog_node: } if (is_exe_or_dyn_lib and !comp.skip_linker_dependencies) { - if (!comp.config.link_libc) { - if (comp.libc_static_lib) |lib| { - try argv.append(try lib.full_object_path.toString(arena)); - } - } // MSVC compiler_rt is missing some stuff, so we build it unconditionally but // and rely on weak linkage to allow MSVC compiler_rt functions to override ours. if (comp.compiler_rt_obj) |obj| try argv.append(try obj.full_object_path.toString(arena)); diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 53f88101b1..00bd940500 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -1984,16 +1984,6 @@ fn linkWithLLD(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id, prog_node: s try argv.append(try p.toString(arena)); } - // libc - if (is_exe_or_dyn_lib and - !comp.skip_linker_dependencies and - !comp.config.link_libc) - { - if (comp.libc_static_lib) |lib| { - try argv.append(try lib.full_object_path.toString(arena)); - } - } - // Shared libraries. if (is_exe_or_dyn_lib) { // Worst-case, we need an --as-needed argument for every lib, as well @@ -2071,6 +2061,10 @@ fn linkWithLLD(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id, prog_node: s } else { diags.flags.missing_libc = true; } + + if (comp.zigc_static_lib) |zigc| { + try argv.append(try zigc.full_object_path.toString(arena)); + } } } diff --git a/src/link/MachO.zig b/src/link/MachO.zig index 2b4bc3e557..2043be3e7b 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -454,6 +454,17 @@ pub fn flushModule( system_libs.appendAssumeCapacity(.{ .path = comp.libcxx_static_lib.?.full_object_path }); } + const is_exe_or_dyn_lib = comp.config.output_mode == .Exe or + (comp.config.output_mode == .Lib and comp.config.link_mode == .dynamic); + + if (comp.config.link_libc and is_exe_or_dyn_lib) { + if (comp.zigc_static_lib) |zigc| { + const path = zigc.full_object_path; + self.classifyInputFile(try link.openArchiveInput(diags, path, false, false)) catch |err| + diags.addParseError(path, "failed to parse archive: {s}", .{@errorName(err)}); + } + } + // libc/libSystem dep self.resolveLibSystem(arena, comp, &system_libs) catch |err| switch (err) { error.MissingLibSystem => {}, // already reported @@ -831,6 +842,7 @@ fn dumpArgv(self: *MachO, comp: *Compilation) !void { try argv.append("-lSystem"); + if (comp.zigc_static_lib) |lib| try argv.append(try lib.full_object_path.toString(arena)); if (comp.compiler_rt_lib) |lib| try argv.append(try lib.full_object_path.toString(arena)); if (comp.compiler_rt_obj) |obj| try argv.append(try obj.full_object_path.toString(arena)); if (comp.ubsan_rt_lib) |lib| try argv.append(try lib.full_object_path.toString(arena)); diff --git a/src/link/Wasm.zig b/src/link/Wasm.zig index 0d996aff15..466d4aa6bb 100644 --- a/src/link/Wasm.zig +++ b/src/link/Wasm.zig @@ -4100,10 +4100,11 @@ fn linkWithLLD(wasm: *Wasm, arena: Allocator, tid: Zcu.PerThread.Id, prog_node: try argv.append("-mwasm64"); } - if (target.os.tag == .wasi) { - const is_exe_or_dyn_lib = comp.config.output_mode == .Exe or - (comp.config.output_mode == .Lib and comp.config.link_mode == .dynamic); - if (is_exe_or_dyn_lib) { + const is_exe_or_dyn_lib = comp.config.output_mode == .Exe or + (comp.config.output_mode == .Lib and comp.config.link_mode == .dynamic); + + if (comp.config.link_libc and is_exe_or_dyn_lib) { + if (target.os.tag == .wasi) { for (comp.wasi_emulated_libs) |crt_file| { try argv.append(try comp.crtFileAsString( arena, @@ -4111,18 +4112,20 @@ fn linkWithLLD(wasm: *Wasm, arena: Allocator, tid: Zcu.PerThread.Id, prog_node: )); } - if (comp.config.link_libc) { - try argv.append(try comp.crtFileAsString( - arena, - wasi_libc.execModelCrtFileFullName(comp.config.wasi_exec_model), - )); - try argv.append(try comp.crtFileAsString(arena, "libc.a")); - } + try argv.append(try comp.crtFileAsString( + arena, + wasi_libc.execModelCrtFileFullName(comp.config.wasi_exec_model), + )); + try argv.append(try comp.crtFileAsString(arena, "libc.a")); + } - if (comp.config.link_libcpp) { - try argv.append(try comp.libcxx_static_lib.?.full_object_path.toString(arena)); - try argv.append(try comp.libcxxabi_static_lib.?.full_object_path.toString(arena)); - } + if (comp.zigc_static_lib) |zigc| { + try argv.append(try zigc.full_object_path.toString(arena)); + } + + if (comp.config.link_libcpp) { + try argv.append(try comp.libcxx_static_lib.?.full_object_path.toString(arena)); + try argv.append(try comp.libcxxabi_static_lib.?.full_object_path.toString(arena)); } } @@ -4157,10 +4160,6 @@ fn linkWithLLD(wasm: *Wasm, arena: Allocator, tid: Zcu.PerThread.Id, prog_node: try argv.append(p); } - if (comp.libc_static_lib) |crt_file| { - try argv.append(try crt_file.full_object_path.toString(arena)); - } - if (compiler_rt_path) |p| { try argv.append(try p.toString(arena)); } diff --git a/src/musl.zig b/src/musl.zig index 12159e8cd2..93e5cc74f0 100644 --- a/src/musl.zig +++ b/src/musl.zig @@ -1859,17 +1859,14 @@ const src_files = [_][]const u8{ "musl/src/string/strcat.c", "musl/src/string/strchr.c", "musl/src/string/strchrnul.c", - "musl/src/string/strcmp.c", "musl/src/string/strcpy.c", "musl/src/string/strcspn.c", "musl/src/string/strdup.c", "musl/src/string/strerror_r.c", "musl/src/string/strlcat.c", "musl/src/string/strlcpy.c", - "musl/src/string/strlen.c", "musl/src/string/strncasecmp.c", "musl/src/string/strncat.c", - "musl/src/string/strncmp.c", "musl/src/string/strncpy.c", "musl/src/string/strndup.c", "musl/src/string/strnlen.c", diff --git a/src/wasi_libc.zig b/src/wasi_libc.zig index 7f1094c81e..33c03e8068 100644 --- a/src/wasi_libc.zig +++ b/src/wasi_libc.zig @@ -1061,17 +1061,14 @@ const libc_top_half_src_files = [_][]const u8{ "musl/src/string/strcat.c", "musl/src/string/strchr.c", "musl/src/string/strchrnul.c", - "musl/src/string/strcmp.c", "musl/src/string/strcpy.c", "musl/src/string/strcspn.c", "musl/src/string/strdup.c", "musl/src/string/strerror_r.c", "musl/src/string/strlcat.c", "musl/src/string/strlcpy.c", - "musl/src/string/strlen.c", "musl/src/string/strncasecmp.c", "musl/src/string/strncat.c", - "musl/src/string/strncmp.c", "musl/src/string/strncpy.c", "musl/src/string/strndup.c", "musl/src/string/strnlen.c", diff --git a/test/tests.zig b/test/tests.zig index 60623c2574..5b930a622c 100644 --- a/test/tests.zig +++ b/test/tests.zig @@ -145,7 +145,7 @@ const test_targets = blk: { }) catch unreachable, .use_llvm = false, .use_lld = false, - .skip_modules = &.{ "c-import", "universal-libc", "std" }, + .skip_modules = &.{ "c-import", "zigc", "std" }, }, // https://github.com/ziglang/zig/issues/13623 //.{ @@ -1463,9 +1463,9 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step { test_target.use_llvm == false and mem.eql(u8, options.name, "compiler-rt")) continue; - // TODO get universal-libc tests passing for other self-hosted backends. + // TODO get zigc tests passing for other self-hosted backends. if (target.cpu.arch != .x86_64 and - test_target.use_llvm == false and mem.eql(u8, options.name, "universal-libc")) + test_target.use_llvm == false and mem.eql(u8, options.name, "zigc")) continue; // TODO get std lib tests passing for other self-hosted backends.