Drew T
dc4412b1de
fix(verbatim_to_stub): refuse a §179-C epilogue-less fragment
...
A function with no `jr $ra` of its own falls into a sibling's shared
epilogue. gcc-2.7.2 has no sibcall/tail-merge pass and appends an epilogue to
every C function it compiles, so no C spelling can ever match — converting one
to an INCLUDE_ASM stub just puts an unbankable target into the drawable
frontier.
I did exactly that to six functions in src/800c.c, on a `rows == 1` filter
that meant "the manifest listed one row", not "this is an independent
function" — ignoring the DECOMPILE-AS-PARENT disposition whose entire meaning
is "this row is a FRAGMENT". Three drafting agents then rediscovered §179-C
from scratch, one citing the cookbook line that names its own target.
The symptom is one grep, so nobody should pay an agent to find it again.
TWO THINGS THIS COST, both caught only by testing a known-true case:
* the first version read the function's .s — but splat stops emitting <fn>.s
for a verbatim body, so it had nothing to read and returned False: inert
for precisely the case it guards. It now reads the verbatim block itself.
* my first negative control was CloseEvent, a libapi trampoline that
genuinely has no `jr $ra` — a "false positive" that was the correct
answer. Re-controlled on VectorNormal (verbatim, has jr $ra, guard stays
silent) vs func_80047E58 (verbatim, no jr $ra, guard fires).
Census of main's verbatim blocks: 37 have jr $ra, 100 do not.
2026-09-03 15:02:50 -06:00
..
2026-08-06 13:34:50 -06:00
2026-08-25 23:50:26 -06:00
2026-07-28 14:53:47 -06:00
2026-07-02 23:32:38 -06:00
2026-08-13 17:44:20 -06:00
2026-09-02 01:29:59 -06:00
2026-06-29 12:52:39 -06:00
2026-09-03 14:20:44 -06:00
2026-08-23 00:12:07 -06:00
2026-08-23 12:59:59 -06:00
2026-08-26 01:14:36 -06:00
2026-09-02 05:38:28 -06:00
2026-09-01 14:09:38 -06:00
2026-08-14 18:06:46 -06:00
2026-08-25 11:28:51 -06:00
2026-08-06 10:55:38 -06:00
2026-08-04 21:48:57 -06:00
2026-08-06 10:57:17 -06:00
2026-07-29 00:42:40 -06:00
2026-07-31 14:18:11 -06:00
2026-06-19 10:05:58 -06:00
2026-06-21 13:12:04 -06:00
2026-06-18 23:15:31 -06:00
2026-06-21 13:06:34 -06:00
2026-07-28 19:34:00 -06:00
2026-08-06 10:57:17 -06:00
2026-07-14 21:25:19 -06:00
2026-08-16 17:21:10 -06:00
2026-07-26 23:08:07 -06:00
2026-08-31 16:34:01 -06:00
2026-07-23 19:54:19 -06:00
2026-07-14 09:22:31 -06:00
2026-07-23 11:43:28 -06:00
2026-08-26 20:19:41 -06:00
2026-08-14 23:44:03 -06:00
2026-08-07 18:57:10 -06:00
2026-07-22 15:24:59 -06:00
2026-08-26 15:02:15 -06:00
2026-06-17 00:30:45 -06:00
2026-06-20 17:12:00 -06:00
2026-07-14 19:59:56 -06:00
2026-08-05 11:05:35 -06:00
2026-09-01 17:36:57 -06:00
2026-08-14 12:08:50 -06:00
2026-09-01 20:10:51 -06:00
2026-08-07 20:36:04 -06:00
2026-09-02 01:11:52 -06:00
2026-08-10 16:01:49 -06:00
2026-08-24 13:36:58 -06:00
2026-08-24 12:43:40 -06:00
2026-08-26 00:47:38 -06:00
2026-08-18 15:44:55 -06:00
2026-08-10 10:43:44 -06:00
2026-07-14 02:50:28 -06:00
2026-09-02 22:15:20 -06:00
2026-07-24 14:25:28 -06:00
2026-08-26 15:41:20 -06:00
2026-07-16 12:07:37 -06:00
2026-07-15 18:20:55 -06:00
2026-08-06 09:51:39 -06:00
2026-08-25 00:49:24 -06:00
2026-09-03 15:02:50 -06:00
2026-09-03 14:47:46 -06:00
2026-08-07 15:07:55 -06:00
2026-06-29 16:49:11 -06:00
2026-09-02 14:54:27 -06:00
2026-07-15 18:20:55 -06:00
2026-06-30 01:46:54 -06:00
2026-08-14 19:54:57 -06:00
2026-08-14 19:59:21 -06:00
2026-08-11 13:42:40 -06:00
2026-07-14 09:40:38 -06:00
2026-09-01 17:34:21 -06:00
2026-08-31 14:24:03 -06:00
2026-08-07 22:09:05 -06:00
2026-09-01 17:36:57 -06:00
2026-08-27 12:19:36 -06:00
2026-07-23 12:42:43 -06:00
2026-08-24 23:19:47 -06:00
2026-06-30 01:46:54 -06:00
2026-08-16 21:07:03 -06:00
2026-09-03 00:12:07 -06:00
2026-08-18 11:08:29 -06:00
2026-08-24 19:08:47 -06:00
2026-09-03 13:00:16 -06:00
2026-09-03 13:20:19 -06:00
2026-09-02 20:30:22 -06:00
2026-09-02 00:39:18 -06:00
2026-08-31 13:48:56 -06:00
2026-09-01 17:37:49 -06:00
2026-06-19 10:05:58 -06:00
2026-07-14 00:08:59 -06:00
2026-06-15 23:25:00 -06:00
2026-07-02 16:56:56 -06:00
2026-07-01 21:03:08 -06:00
2026-07-31 12:26:03 -06:00
2026-09-03 14:14:11 -06:00
2026-08-23 12:59:59 -06:00
2026-07-01 23:13:29 -06:00
2026-06-25 13:09:02 -06:00
2026-08-25 15:00:31 -06:00
2026-08-07 22:09:05 -06:00
2026-06-30 11:15:11 -06:00
2026-08-26 14:04:54 -06:00
2026-08-26 14:34:32 -06:00
2026-09-02 12:02:23 -06:00
2026-09-02 20:30:22 -06:00
2026-09-02 17:15:28 -06:00
2026-09-02 22:15:20 -06:00
2026-09-02 18:11:48 -06:00
2026-08-24 12:31:14 -06:00
2026-08-26 00:29:05 -06:00
2026-09-02 23:34:01 -06:00
2026-08-31 18:59:50 -06:00
2026-09-02 01:59:46 -06:00
2026-09-02 19:34:09 -06:00
2026-08-14 19:54:57 -06:00
2026-08-14 19:54:57 -06:00
2026-07-23 19:54:19 -06:00
2026-08-05 00:37:59 -06:00
2026-06-30 15:32:56 -06:00
2026-08-10 16:01:49 -06:00
2026-09-02 23:05:27 -06:00
2026-08-26 11:05:02 -06:00
2026-08-26 15:02:15 -06:00
2026-08-29 12:56:20 -06:00
2026-07-02 23:10:54 -06:00
2026-09-03 14:17:53 -06:00
2026-08-26 15:48:50 -06:00
2026-08-31 22:08:34 -06:00
2026-08-06 12:36:49 -06:00
2026-08-06 10:59:03 -06:00
2026-07-18 20:30:43 -06:00
2026-08-31 16:50:09 -06:00
2026-08-31 01:46:16 -06:00
2026-07-31 08:41:54 -06:00
2026-09-03 14:17:53 -06:00
2026-06-22 21:22:35 -06:00
2026-09-02 19:22:16 -06:00
2026-09-02 00:19:59 -06:00
2026-06-18 23:40:17 -06:00
2026-06-18 23:15:31 -06:00
2026-08-05 15:59:27 -06:00
2026-08-26 14:29:35 -06:00
2026-09-02 20:30:22 -06:00
2026-07-07 20:20:43 -06:00
2026-07-21 15:05:56 -06:00
2026-08-14 19:42:55 -06:00
2026-08-06 10:57:17 -06:00
2026-08-18 15:32:32 -06:00
2026-09-03 00:01:11 -06:00
2026-06-15 21:00:36 -06:00
2026-08-31 17:03:50 -06:00
2026-06-15 21:00:36 -06:00
2026-06-15 21:00:36 -06:00
2026-06-15 21:00:36 -06:00
2026-08-31 18:59:50 -06:00
2026-06-19 13:03:14 -06:00
2026-09-02 13:48:00 -06:00
2026-09-02 20:30:22 -06:00
2026-08-11 21:12:44 -06:00
2026-06-26 03:06:54 -06:00
2026-09-01 11:03:06 -06:00
2026-08-24 21:33:32 -06:00
2026-08-24 22:29:29 -06:00
2026-07-27 00:06:01 -06:00
2026-09-01 20:32:12 -06:00
2026-07-28 19:34:00 -06:00
2026-09-01 11:03:06 -06:00
2026-08-31 22:24:56 -06:00
2026-09-02 00:39:18 -06:00
2026-08-31 14:24:03 -06:00
2026-08-31 14:24:03 -06:00
2026-09-03 14:25:26 -06:00
2026-08-24 22:22:12 -06:00
2026-08-26 00:29:05 -06:00
2026-08-16 18:11:32 -06:00
2026-08-11 19:07:07 -06:00
2026-08-31 01:46:16 -06:00
2026-07-28 20:15:11 -06:00
2026-09-01 13:06:27 -06:00
2026-06-30 01:46:54 -06:00
2026-08-07 18:57:10 -06:00
2026-08-14 17:48:51 -06:00
2026-07-14 15:39:07 -06:00
2026-09-02 18:11:48 -06:00
2026-09-02 19:22:16 -06:00
2026-08-31 01:46:16 -06:00
2026-08-26 14:04:54 -06:00
2026-07-28 13:20:27 -06:00
2026-08-25 10:43:10 -06:00
2026-07-24 21:30:08 -06:00
2026-08-27 12:19:36 -06:00
2026-08-31 13:48:56 -06:00
2026-08-29 15:22:14 -06:00
2026-08-27 10:25:01 -06:00
2026-07-10 00:02:55 -06:00
2026-08-24 10:42:11 -06:00
2026-08-24 12:43:40 -06:00
2026-08-07 18:50:29 -06:00
2026-07-21 15:05:56 -06:00
2026-06-29 20:07:48 -06:00
2026-07-30 22:00:32 -06:00
2026-08-31 23:53:50 -06:00
2026-09-01 14:50:26 -06:00
2026-08-29 19:14:02 -06:00
2026-07-23 20:51:42 -06:00
2026-08-23 12:59:59 -06:00
2026-09-03 12:05:37 -06:00
2026-09-03 12:05:37 -06:00
2026-09-03 15:02:50 -06:00
2026-09-01 14:50:26 -06:00
2026-07-28 13:20:27 -06:00
2026-09-02 20:30:22 -06:00
2026-08-31 19:59:27 -06:00
2026-06-19 12:13:38 -06:00
2026-08-14 19:59:21 -06:00
2026-08-31 23:53:50 -06:00
2026-08-26 20:19:41 -06:00
2026-08-26 19:35:54 -06:00
2026-08-18 15:25:49 -06:00
2026-07-14 09:22:31 -06:00
2026-09-02 00:19:59 -06:00
2026-09-01 18:59:04 -06:00
2026-07-16 02:01:15 -06:00