query: exports:<elf> — procedencia por-símbolo (puente barato de ADR 0009)

Extiende el parser ELF (parse_elf_needed→parse_elf_info): además de DT_NEEDED,
recorre .dynsym (DT_SYMTAB) y extrae los símbolos EXPORTADOS (defined +
global/weak). Nuevo término `exports:<path>` en el mini-lenguaje de queries;
fluye por el bus (query expr) sin cambios. Metadata descriptiva, fuera de
hash_inputs (misma disciplina que la evidencia de H1). Refactor: helper
vaddr_to_file_off compartido por strtab/symtab + cstr_at.

nsyms vía layout convencional (strtab sigue a symtab); best-effort → [] si no
se puede acotar con seguridad. Validado end-to-end: 2873 símbolos reales de
/lib/libc.so.6 (aguanta glibc y musl). Tests: term-parse + missing-file +
host-gated real-.so. Workspace verde (33 suites).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-03 06:10:59 -04:00
co-authored by Claude Opus 4.8
parent 236aac7c7f
commit b173630e81
2 changed files with 216 additions and 50 deletions
+5 -3
View File
@@ -63,9 +63,11 @@ de código **colapsarían en un solo espacio de nombres: el hash**.
## Consecuencias
- **Ahora (barato, sin apuesta):** cuando haya rato, extender `parse_elf_needed``parse_elf_symbols`
(exports de `.dynsym` además de `DT_NEEDED`) y exponerlo como query (`exports:<artefacto>`) y,
opcionalmente, como sidecar de metadata junto al `.hammer/recipe.toml`. Cero cambio en el build.
- **Ahora (barato, sin apuesta) — IMPLEMENTADO (2026-07-03):** `parse_elf_needed``parse_elf_info`
(exports de `.dynsym` además de `DT_NEEDED`), expuesto como query **`exports:<artefacto>`**
(`crates/hammer-core/src/query.rs`). Validado end-to-end: 2873 símbolos extraídos de
`/lib/libc.so.6`. Fluye por el bus (`query expr`) sin cambios. Cero cambio en el build ni en
`hash_inputs`. Pendiente opcional: emitirlo como sidecar de metadata junto al artefacto sellado.
- **Diferido (condicionado a verdes):** H3b (base content-addressed de funciones **wasm**), sólo
si H2b demuestra que el cómputo puro memoiza byte-idéntico. Si H3b se sostiene, *entonces* se
reabre la pregunta de colapsar los tres espacios — con evidencia, no con fe.