ubsan: update wording

This commit is contained in:
David Rubin 2025-02-24 03:49:45 -08:00 committed by David Rubin
parent 2447b87d98
commit ca83f52fd9
3 changed files with 14 additions and 8 deletions

View file

@ -127,6 +127,7 @@ const Value = extern struct {
) !void { ) !void {
comptime assert(fmt.len == 0); comptime assert(fmt.len == 0);
// Work around x86_64 backend limitation.
if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) { if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) {
try writer.writeAll("(unknown)"); try writer.writeAll("(unknown)");
return; return;
@ -646,6 +647,7 @@ fn exportHandler(
handler: anytype, handler: anytype,
comptime sym_name: []const u8, comptime sym_name: []const u8,
) void { ) 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 linkage = if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) .internal else .weak;
const N = "__ubsan_handle_" ++ sym_name; const N = "__ubsan_handle_" ++ sym_name;
@export(handler, .{ .name = N, .linkage = linkage }); @export(handler, .{ .name = N, .linkage = linkage });
@ -656,6 +658,7 @@ fn exportHandlerWithAbort(
abort_handler: anytype, abort_handler: anytype,
comptime sym_name: []const u8, comptime sym_name: []const u8,
) void { ) 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 linkage = if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .windows) .internal else .weak;
{ {
const N = "__ubsan_handle_" ++ sym_name; const N = "__ubsan_handle_" ++ sym_name;
@ -697,12 +700,12 @@ comptime {
exportHandler(&missingReturn, "missing_return"); 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. // in the Itanium C++ ABI.
// exportHelper("dynamic_type_cache_miss", "dynamic-type-cache-miss", true); // exportHandlerWithAbort(&dynamicTypeCacheMiss, &dynamicTypeCacheMissAbort, "dynamic-type-cache-miss");
// exportHelper("vptr_type_cache", "vptr-type-cache", true); // exportHandlerWithAbort(&vptrTypeCache, &vptrTypeCacheAbort, "vptr-type-cache");
// we disable -fsanitize=function for reasons explained in src/Compilation.zig // we disable -fsanitize=function for reasons explained in src/Compilation.zig
// exportHelper("function-type-mismatch", "function_type_mismatch", true); // exportHandlerWithAbort(&functionTypeMismatch, &functionTypeMismatchAbort, "function-type-mismatch");
// exportHelper("function-type-mismatch-v1", "function_type_mismatch_v1", true); // exportHandlerWithAbort(&functionTypeMismatchV1, &functionTypeMismatchV1Abort, "function-type-mismatch-v1");
} }

View file

@ -2049,7 +2049,8 @@ fn testLargeBss(b: *Build, opts: Options) *Step {
\\} \\}
, &.{}); , &.{});
exe.linkLibC(); 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; exe.root_module.sanitize_c = false;
const run = addRunArtifact(exe); const run = addRunArtifact(exe);
@ -3554,7 +3555,8 @@ fn testTlsLargeTbss(b: *Build, opts: Options) *Step {
\\} \\}
, &.{}); , &.{});
exe.linkLibC(); 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; exe.root_module.sanitize_c = false;
const run = addRunArtifact(exe); const run = addRunArtifact(exe);

View file

@ -13,7 +13,8 @@ pub fn build(b: *std.Build) void {
}), }),
}); });
lib.entry = .disabled; 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.bundle_ubsan_rt = false;
lib.use_lld = false; lib.use_lld = false;
lib.root_module.export_symbol_names = &.{ "foo", "bar" }; lib.root_module.export_symbol_names = &.{ "foo", "bar" };