Commit 01f40c7
committed
docs(record): three vendors measured at current versions, and Android execution is conditional
Documentation only. The design record's section 3.1 measured NDK r27,
Emscripten 4.0.19 and guessed about Apple. All three were re-measured while
the payloads were built, and none of the three guesses held.
TWO OF THE THREE VENDORS NOW SHIP THE `import std` SURFACE THEMSELVES.
NDK r30 133 files ships it _LIBCPP_VERSION 210000
Emscripten 6.0.9 134 files ships it 220108
iPhoneOS 26.5 0 files does not 210106
So the generation machinery the section describes at length is needed for one
target rather than three, and what a recipe owes instead is narrower: pin the
value measured and refuse a change. For Android that is all it can be -- r30's
libc++ comes from an AOSP mirror revision (`r574158c`) with no upstream tag to
compare against. Emscripten's numbers in the record were two releases stale;
the lesson it drew from them -- match the LIBRARY, not the compiler -- is
right, which is why the correction is to the numbers and not to the argument.
APPLE WAS THE LARGEST CORRECTION AND WAS RECORDED SEPARATELY: iOS CAN be
measured from a Linux host, Apple's libc++ IS a build of a public revision, and
the surface is absent but derivable. An `import std` Mach-O arm64 binary was
linked here.
ANDROID EXECUTION IS CONDITIONAL, AND THE CONDITION DECIDES THE TIER.
x86_64-linux-android static: runs directly dynamic: does not
aarch64-linux-android static: runs under qemu dynamic: does not
Dynamic fails for two independent reasons and neither is a missing flag. The
artifact's `PT_INTERP` names `/system/bin/linker64`, which exists nowhere in
the 2.3 GB NDK -- `-L` and `QEMU_LD_PREFIX` affect library SEARCH, not the
interpreter path. And bionic's `libc.so` is inert: 1147 exported functions in
9176 bytes of `.text`, every one inspected disassembling to `bti c; ret`. That
is the documented stub shape; the bodies come from the device. For contrast
`libc++_shared.so` is real code at 724 KB, because it is the one runtime the
NDK owns.
So the honest claim is "runnable only when statically linked", and the tier
follows from the DEFAULT configuration rather than from the best case. The rows
carry `defaultStatic = false` and that is correct about the platform: a real
Android application links dynamically against the device's bionic. Setting the
flag true to make an execution check pass would misdescribe the platform to
flatter the measurement.
A `--no-default-config` finding is recorded with the Apple work because that is
where it surfaced, but it is a property of the `xim:llvm` payload and applies to
any non-Linux cross target driven through it: `bin/clang++.cfg` injects the
host's glibc and libc++ unconditionally, `-nostdinc++` does not displace them,
and the criterion is `clang -v`'s search list rather than whether the compile
succeeds.
Section 8 names the pattern the corrections share rather than only listing
them: every wrong guess was about what a vendor had done, and every one was
cheap to check and was not checked.1 parent 51dff99 commit 01f40c7
1 file changed
Lines changed: 94 additions & 7 deletions
Lines changed: 94 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
386 | 386 | | |
387 | 387 | | |
388 | 388 | | |
389 | | - | |
390 | | - | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
391 | 477 | | |
392 | 478 | | |
393 | 479 | | |
394 | | - | |
395 | | - | |
396 | | - | |
397 | | - | |
398 | | - | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
399 | 486 | | |
400 | 487 | | |
401 | 488 | | |
| |||
0 commit comments