test(C1.4): objectMagicOk — corrupt/truncated cache entries recompile, never poison the link
This commit is contained in:
@@ -55,6 +55,15 @@ test "cSourceCacheKey: llvm version varies the key" {
|
|||||||
try std.testing.expect(baseKey() != other);
|
try std.testing.expect(baseKey() != other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test "objectMagicOk: accepts Mach-O and ELF, rejects garbage and truncation" {
|
||||||
|
try std.testing.expect(c_import.objectMagicOk(&.{ 0xcf, 0xfa, 0xed, 0xfe, 0x00 })); // Mach-O 64
|
||||||
|
try std.testing.expect(c_import.objectMagicOk(&.{ 0xce, 0xfa, 0xed, 0xfe })); // Mach-O 32
|
||||||
|
try std.testing.expect(c_import.objectMagicOk(&.{ 0x7f, 'E', 'L', 'F', 0x02 }));
|
||||||
|
try std.testing.expect(!c_import.objectMagicOk("not an object file"));
|
||||||
|
try std.testing.expect(!c_import.objectMagicOk(&.{ 0xcf, 0xfa, 0xed })); // truncated magic
|
||||||
|
try std.testing.expect(!c_import.objectMagicOk(&.{}));
|
||||||
|
}
|
||||||
|
|
||||||
test "cSourceCacheKey: triple and sysroot vary the key; absent is not empty" {
|
test "cSourceCacheKey: triple and sysroot vary the key; absent is not empty" {
|
||||||
const other_triple = c_import.cSourceCacheKey(SRC, &.{HDR}, &.{"A=1"}, &.{"-O2"}, &.{"inc"}, VER, "x86_64-apple-darwin", "/sdk");
|
const other_triple = c_import.cSourceCacheKey(SRC, &.{HDR}, &.{"A=1"}, &.{"-O2"}, &.{"inc"}, VER, "x86_64-apple-darwin", "/sdk");
|
||||||
try std.testing.expect(baseKey() != other_triple);
|
try std.testing.expect(baseKey() != other_triple);
|
||||||
|
|||||||
Reference in New Issue
Block a user