Say what the strict build and the sanitizers actually establish
Three claims in the Test Manual were true enough to pass and loose enough to mislead. The headline said the two assemblers produce identical bytes and the two filesystems produce identical disks, with no qualifier. That reads as universal and is not: it is evidence about the corpus assembled and the operations performed. The detailed sections already said so; the headline now says so too, because a document arguing about what evidence is worth cannot overstate its own. "Compiles under strict ISO C" omitted -D_XOPEN_SOURCE=700. The check is strict C11 with the POSIX interfaces the code uses explicitly selected - realpath, strdup, dirname and getopt - not freestanding ISO C, and the flag is part of the check rather than a hole in it. And the sanitizer section leaned on AddressSanitizer's junk fill, which is a toolchain default this build does not configure and which buys almost nothing here anyway: there are six heap allocations in the whole repository, all in the assembler, the largest a deliberate calloc, and the machine's own memories are static arrays the sanitizers neither fill nor bound-check. That last part is the overrun blind spot seen from the other side, so it now points at it. The same claim is corrected in the makefile, where it originated. Found by ChatGPT reviewing the manual. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW
This commit is contained in:
co-authored by
Claude Opus 5
parent
8fbbeb6ec9
commit
c3c2451afe
@@ -164,9 +164,10 @@ test: $(EMU_TARGET) $(ASM_TARGET) $(DSK_TARGET) $(LINT_TARGET) strict
|
||||
# are for. Adding the three of them costs about six seconds.
|
||||
#
|
||||
# The sanitizers catch reads and writes off the end of an array, use after free,
|
||||
# leaks, and undefined arithmetic. They also fill fresh allocations with a junk
|
||||
# pattern, which is what turns a read of uninitialised memory from something that
|
||||
# quietly works into something the tests notice.
|
||||
# leaks, and undefined arithmetic. What they do NOT usefully catch here is uninitialised
|
||||
# memory: AddressSanitizer's junk fill is a toolchain default this build does not
|
||||
# configure, there are six heap allocations in the repository and the largest is a
|
||||
# deliberate calloc, and the machine's own memories are static arrays it never touches.
|
||||
#
|
||||
# If the suite fails, the sanitizer binaries are deliberately left in place so
|
||||
# that the failing case can be run again by hand. 'make' puts the normal ones back.
|
||||
|
||||
Reference in New Issue
Block a user