generated from erix/meta
WIP: Correct symbol-only relocation values #3
No reviewers
Labels
No labels
bug
ci
docs
duplicate
enhancement
help wanted
invalid
performance
phase-6
question
refactor
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
erix/lib-dynlink!3
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/posix-compat"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary and rationale
Correct the graph planner's x86-64 GLOB_DAT and eager JUMP_SLOT values. They now use the resolved symbol value S, regardless of the unused RELA addend. An accepted symbol at
0x40002000with addend 16 previously produced0x40002010; it now produces0x40002000. Absolute relocation remains checked S + A and relative relocation remains checked B + A.Tracking and scope
Bug: #2. Authority and quality audit: #1. Signed correction:
abd5153adf994ca40753f9650a675940a228e1d3onfeature/posix-compat. This review covers the library calculation, nine independent regression controls, inline/component documentation and warning-denied CI. The manual/API companion is erix/docs#4. Downstream source candidates and both matching automatic CI runs pass. Coherent catalog adoption and native frame acceptance remain open.Architecture, authority and failure behavior
The planner remains allocation-free, without I/O or capabilities. Caller-supplied object bytes, graph membership and writable target ranges remain the only inputs. Provider selection, checked provider-base arithmetic, weak/strong resolution, target ownership, bounds and text-relocation rejection are unchanged. No API signature, wire format, unsafe code, global lookup, object acquisition or relocation application is added. The pure calculation introduces no capability lifetime or cleanup path.
The implementation follows the primary x86-64 psABI relocation table. Signed/extreme unused addends must neither change S nor spuriously cause overflow. Genuine provider-base, S + A and B + A overflow still refuses the plan. The retained native executable and six libraries have 107 symbol-only relocations, all with zero addends; no guest failure or speedup is asserted.
Validation evidence
At the signed revision, formatting, Markdown, canonical templates and whitespace checks pass. Four default/all-feature by dev/release configurations each pass 47 unit tests, strict host/native Clippy and a warning-denied native build for
x86_64-unknown-none; private rustdoc passes with warnings denied. All code files remain below 1,000 physical lines.The same nine new controls run against the original production graph implementation: five fail and four pass. All nine pass with the correction. They cover signed/extreme addends, imported providers, missing weak/strong symbols, overflow and writable target ownership. The original two-test literal reproduction remains retained in #2.
Both matching automatic runs 30 and 31 pass at
abd5153adf994ca40753f9650a675940a228e1d3: four complete logs (36,856 bytes), 47 tests per run, strict host/native builds and private rustdoc, zero warnings.Original-source consumer candidates changing only this library selector pass four configurations each: dynlinkd 13 tests, loaderd 105 and bootloader 41, with twelve native builds, strict Clippy and private rustdoc without warnings. Their published revisions remain unchanged. Native metadata replay checks all 1,608 independently expected writes across the retained executable and six libraries. All 107 symbol-only records preserve their values for positive/negative/extreme unused addends with the fix; the original implementation fails the addend-16 control. This host calculation establishes no execution or frame acceptance.
Signed companion Docs
214b08666b8b36ad4270bcfee3b3379d8dc08a79passes 45 tests, a full 2,383-page manual, all-page bounds and four changed-page visual reviews, zero final warnings. Its matching CI 913/914 passes. Only this library's API snapshot is regenerated, from the exact signed revision. No new guest capability or runtime feature is introduced by this arithmetic correction; whole-image and existing VM regressions remain required adoption checks.Review checklist
Keep this review unfinished until its dependent acceptance checks are accounted for. No merge or release is requested.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.