From 88eee58846e9cae26dce57d625d2dd7478a4533e Mon Sep 17 00:00:00 2001 From: David Rubin Date: Mon, 24 Feb 2025 03:49:45 -0800 Subject: [PATCH] ubsan: update wording --- lib/ubsan_rt.zig | 13 ++++++++----- test/link/elf.zig | 6 ++++-- test/link/wasm/export-data/build.zig | 3 ++- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/ubsan_rt.zig b/lib/ubsan_rt.zig index 08c3e6b18005..20b0cc294223 100644 --- a/lib/ubsan_rt.zig +++ b/lib/ubsan_rt.zig @@ -127,6 +127,7 @@ const Value = extern struct { ) !void { comptime assert(fmt.len == 0); + // Work around x86_64 backend limitation. if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) { try writer.writeAll("(unknown)"); return; @@ -646,6 +647,7 @@ fn exportHandler( handler: anytype, comptime sym_name: []const u8, ) void { + // Work around x86_64 backend limitation. const linkage = if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) .internal else .weak; const N = "__ubsan_handle_" ++ sym_name; @export(handler, .{ .name = N, .linkage = linkage }); @@ -656,6 +658,7 @@ fn exportHandlerWithAbort( abort_handler: anytype, comptime sym_name: []const u8, ) void { + // Work around x86_64 backend limitation. const linkage = if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) .internal else .weak; { const N = "__ubsan_handle_" ++ sym_name; @@ -697,12 +700,12 @@ comptime { exportHandler(&missingReturn, "missing_return"); } - // these checks are nearly impossible to duplicate in zig, as they rely on nuances + // these checks are nearly impossible to replicate in zig, as they rely on nuances // in the Itanium C++ ABI. - // exportHelper("dynamic_type_cache_miss", "dynamic-type-cache-miss", true); - // exportHelper("vptr_type_cache", "vptr-type-cache", true); + // exportHandlerWithAbort(&dynamicTypeCacheMiss, &dynamicTypeCacheMissAbort, "dynamic-type-cache-miss"); + // exportHandlerWithAbort(&vptrTypeCache, &vptrTypeCacheAbort, "vptr-type-cache"); // we disable -fsanitize=function for reasons explained in src/Compilation.zig - // exportHelper("function-type-mismatch", "function_type_mismatch", true); - // exportHelper("function-type-mismatch-v1", "function_type_mismatch_v1", true); + // exportHandlerWithAbort(&functionTypeMismatch, &functionTypeMismatchAbort, "function-type-mismatch"); + // exportHandlerWithAbort(&functionTypeMismatchV1, &functionTypeMismatchV1Abort, "function-type-mismatch-v1"); } diff --git a/test/link/elf.zig b/test/link/elf.zig index 11286af455a0..60203f0a7834 100644 --- a/test/link/elf.zig +++ b/test/link/elf.zig @@ -2049,7 +2049,8 @@ fn testLargeBss(b: *Build, opts: Options) *Step { \\} , &.{}); exe.linkLibC(); - // Disabled to work around an ELF linker bug. + // Disabled to work around the ELF linker crashing. + // Can be reproduced on a x86_64-linux host by commenting out the line below. exe.root_module.sanitize_c = false; const run = addRunArtifact(exe); @@ -3554,7 +3555,8 @@ fn testTlsLargeTbss(b: *Build, opts: Options) *Step { \\} , &.{}); exe.linkLibC(); - // Disabled to work around an ELF linker bug. + // Disabled to work around the ELF linker crashing. + // Can be reproduced on a x86_64-linux host by commenting out the line below. exe.root_module.sanitize_c = false; const run = addRunArtifact(exe); diff --git a/test/link/wasm/export-data/build.zig b/test/link/wasm/export-data/build.zig index 80ca1ebeea51..1cddde208d42 100644 --- a/test/link/wasm/export-data/build.zig +++ b/test/link/wasm/export-data/build.zig @@ -13,7 +13,8 @@ pub fn build(b: *std.Build) void { }), }); lib.entry = .disabled; - // Disabling due to self-hosted wasm linker bug. + // Disabled to work around the Wasm linker crashing. + // Can be reproduced by commenting out the line below. lib.bundle_ubsan_rt = false; lib.use_lld = false; lib.root_module.export_symbol_names = &.{ "foo", "bar" };