Commit 9840ca9
committed
fix(toolchain): one payload is an answer; two are a question
CI still had no runtime binding, and therefore no loader on the link line:
-o bin/mcpp --sysroot=<...>/subos/default -B<...>/binutils/bin -static-libstdc++
Every compatibility source is something an earlier mechanism wrote -- gcc's
specs, clang's cfg, and now the compiler's PT_INTERP -- and a machine can
legitimately have none of them. Recorded loader paths can also name a subos
VIEW rather than the payload; those carry no version at all, so they are
canonicalised first (R6: artifacts bind the payload, never the view).
The last resort is the installed payload set, and only when it is a singleton.
This is not the rule the design removed: that one asked a directory for "the
glibc" and took whatever readdir yielded first -- a choice, made by something
unrelated to what the artifact loads, silently wrong as soon as a dependency's
`>=` floor installed a second payload. Where exactly one glibc exists there is
no choice to make; it is the only runtime any artifact from this toolchain
could bind. Two or more and this stays silent, which is precisely the case the
incident was and the case the subos has to settle.
Verified under conditions this machine had to be forced into: gcc's specs file
moved aside AND gcc's own PT_INTERP repointed at the host loader. The binding
still resolves and the artifact still takes the payload loader.
tests/unit/test_runtime_binding_fallback.cpp +51 parent 7e3fd66 commit 9840ca9
2 files changed
Lines changed: 110 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
597 | 597 | | |
598 | 598 | | |
599 | 599 | | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
600 | 608 | | |
601 | 609 | | |
602 | 610 | | |
| |||
643 | 651 | | |
644 | 652 | | |
645 | 653 | | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
646 | 687 | | |
647 | 688 | | |
648 | 689 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
0 commit comments