toolchain: banner purge + WHY-only comment sweep (rule 8)
selfhost/, cmd/, internal/ join the tree-wide sweep: every section banner dies (91 selfhost + the cmd C-style dividers -> 0); narration and stale contracts deleted (pre-#22 bundler notes, retired single-PT_LOAD and no-archive claims, superseded ABI tables); every ref/harec/qbe cite, task cite, encoding/ELF contract, and rule-10 twin pointer kept; lost lifetime/rationale lines restored where the sweep over-cut (elf_globals ownership, kwtab linear-scan). Comment- only proven: all five wwstage tool binaries byte-identical across the sweep; test-commit, test-byteid (161+1399, 0 pinned-divergent), and test-bootstrap (fixed point + 991-995 byte-id) all exit 0. The read-through banked 66 latent-bug leads (checkpoint).
This commit is contained in:
@@ -1,14 +1,3 @@
|
||||
/*
|
||||
* pass.c — resolution + relocation. After all objects are loaded:
|
||||
*
|
||||
* l_resolve : check that every symbol referenced by a relocation
|
||||
* is defined somewhere. Errors get logged.
|
||||
* l_relocate: with the final virtual base address known, walk the
|
||||
* relocation list and patch the .text bytes in place.
|
||||
*
|
||||
* Supported relocation kinds: PC32 (2), PLT32 (4). Both are PC-relative
|
||||
* 32-bit displacements; for static linking PLT32 collapses to PC32.
|
||||
*/
|
||||
#include "l.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
@@ -34,7 +23,7 @@ l_resolve(Lnk *l)
|
||||
* across runs (rels are pushed onto the head as objects load). */
|
||||
for (Lrel *r = l->rels; r; r = r->next) {
|
||||
if (r->sym == NULL || r->sym->defined) continue;
|
||||
if (r->sym->is_dyn) continue; /* already promoted */
|
||||
if (r->sym->is_dyn) continue;
|
||||
for (Lso *so = l->sos; so; so = so->next) {
|
||||
const char *ver = NULL;
|
||||
if (l_so_provides_v(so, r->sym->name, &ver)) {
|
||||
@@ -47,7 +36,6 @@ l_resolve(Lnk *l)
|
||||
}
|
||||
}
|
||||
|
||||
/* What remains undefined truly is undefined. */
|
||||
for (Lrel *r = l->rels; r; r = r->next) {
|
||||
if (r->sym == NULL) continue;
|
||||
if (!r->sym->defined && !r->sym->is_dyn) {
|
||||
@@ -90,7 +78,8 @@ l_relocate(Lnk *l, u64 text_va, u64 data_va)
|
||||
switch (r->kind) {
|
||||
case R_X86_64_PC32:
|
||||
case R_X86_64_PLT32: {
|
||||
/* PC-relative 32-bit displacement; lands in .text. */
|
||||
/* PC-relative 32-bit displacement; lands in .text.
|
||||
* For static linking PLT32 collapses to PC32. */
|
||||
u64 site = text_va + r->off;
|
||||
i64 rel = (i64)sym_va - (i64)site + r->addend;
|
||||
patch_u32(l->text + r->off, (u32)(i32)rel);
|
||||
|
||||
Reference in New Issue
Block a user