commit 71f06498a9a5b3f6eafdd71b49d3bed19615bc6a
parent 30d33c176ededa9a33f7bcd0e8c13473ff10ff46
Author: Ryan Sepassi <rsepassi@gmail.com>
Date: Wed, 10 Jun 2026 06:54:41 -0700
doc(TODO): drop 5 entries already fixed in prior cleanup waves
B.5 (register_at_public), C.4 (rv32 reloc/PLT), C.5 (RISC-V float-abi
e_flags), F.2 (ELF strtab builder), F.4 (dist path-join) were all
completed in commits 30d33c17 / cb415ed9 but their backlog entries were
never removed. Verified against current code.
Diffstat:
1 file changed, 0 insertions(+), 15 deletions(-)
diff --git a/doc/plan/TODO.md b/doc/plan/TODO.md
@@ -106,17 +106,6 @@ Add new deferred fixes below as they are discovered.
unify, behavior and add miscompile risk in a hot path. Do **A.3** first (make the three
staging policies identical), then a shared `native_asm_bind_optimizer_operands` becomes
safe. (The -O0 direct path is already shared via `native_asm_bind_direct_operands`.)
-- **B.5 — `register_at_public` dedup.** The three arch `register_at_public` wrappers are
- near-identical (differ only by the per-arch `register_iter_get` callee), but the clean
- shared home needs `src/arch/arch.h` (the `ArchImpl.register_at` field signature) +
- `include/kit/arch.h` (`KitArchReg`). (`backend_make`/`semantic_target_new` already
- deduped into `cg/native_direct_target`.)
-- **C.4 — rv32 ELF reloc map / PLT clone rv64.** `src/obj/elf/reloc_riscv32.c` clones the
- rv64 reloc map (only ~3 cases differ); the rv32 PLT/IPLT emitters clone rv64 (one
- LW-vs-LD instruction). Parameterize on word size.
-- **C.5 — RISC-V float-ABI → `e_flags` mapping** is inlined in both the ET_REL writer
- (`src/obj/elf/emit.c:698-710`) and the ET_EXEC writer (`src/obj/elf/link.c:1556`).
- Extract one helper; don't encode arch direction in the format-generic ELF layer.
- **E.3 — OS-neutral env code duplicated** between `driver/env/posix.c` and `windows.c`
(stdio writer + thunks, `env→{context,jit_host,dbg_host}` trio, dir-handle structs +
read/close, `read_stdin` grow/shrink). Move to `driver/env/common.c`. **Blocked on a
@@ -125,15 +114,11 @@ Add new deferred fixes below as they are discovered.
(`cc_default_obj_path_for_name`, `cc_dep_default_target`, `build_default_obj_name`); its
home is the driver util layer (`driver/`), not `link_inputs.c`. (The link pipeline +
flag-parse blocks were assessed and are not byte-identical — different option structs.)
-- **F.2 — ELF strtab builder.** `objbb_append_str`'s dedup strtab builder is reimplemented
- as `StrBuilder`/`strtab_add` ~4× in `src/obj/elf/link.c`. Use the shared builder.
- **F.3 — dwarf attr-skip.** The `dw_skip_die_attrs` loop is inlined ~6× in the dwarf
reader (`src/debug/dwarf_open.c` / `dwarf_die.c`); collapse the pure-skip sites onto
the existing helper (leave the read+skip two-pass sites alone). (The LEB128 fork is
done: `form_uleb_inline`/`form_sleb_inline` in `debug_form.c` now back the exprloc
builder in `debug_emit.c`.)
-- **F.4 — path-join triplicated** (2 copies in one `src/dist/` file). (The `ctx->diag`
- varargs wrapper part of this finding is done — now `kit_ctx_diagf` in `core/diag`.)
- **G.4 — RV disassembler dispatches sub-format by `strcmp`** on the mnemonic display
string (`src/arch/riscv/disasm.c`) rather than an encoding tag.
- **I.1 — C parser shadow stack** is a 3-array struct-of-arrays