lane T2: record the rule-17 hit -- the caller's real body runs 0x48 bytes past Ghidra's reported end, and a clipped sweep would have found no caller at all
This commit is contained in:
parent
214e00186d
commit
90c665a3be
1 changed files with 10 additions and 0 deletions
|
|
@ -88,6 +88,16 @@ exist.
|
||||||
**before** either turn driver, in the host's command-application step — the same bracket
|
**before** either turn driver, in the host's command-application step — the same bracket
|
||||||
`phase_catalog.h` already calls `Driver::Host`.
|
`phase_catalog.h` already calls `Driver::Host`.
|
||||||
|
|
||||||
|
**Rule 17, a fifth time: that call site is 0x1c bytes past Ghidra's reported end of its own caller.**
|
||||||
|
Ghidra sizes `ApplyTurnCommands` at 2965 bytes, ending 0x007b2445; the real body runs to `ret 0x10` at
|
||||||
|
**0x007b248d**, 0x48 bytes further, and the call to 0x007898c0 sits inside that tail. A sweep clipped at
|
||||||
|
`fva + size` would have found **no caller at all** for this function and concluded it was dead. The
|
||||||
|
surrounding instructions corroborate the identification independently: the call is the last real statement
|
||||||
|
of `ApplyTurnCommands`, its three stack arguments are three locals at `[ebp-0x344]`, `[ebp-0x34c]`,
|
||||||
|
`[ebp-0x348]`, and it is immediately followed by `FUN_007acb50(S, <0x00a24f9c>)` — the function
|
||||||
|
`strategic-turn-internals.md` §5.2 already names as the one that "dumps the Alliances / Non Aggression /
|
||||||
|
Cease fires tables to the log".
|
||||||
|
|
||||||
`void __thiscall (StrategyServer* S, vector<uint>* allianceBroken, vector<uint>* napBroken,
|
`void __thiscall (StrategyServer* S, vector<uint>* allianceBroken, vector<uint>* napBroken,
|
||||||
vector<uint>* cfBroken)`, `ret 0xc`, 700 B. `this` is the **`S` frame** — `[edi+0x54]`/`[edi+0x58]` is the
|
vector<uint>* cfBroken)`, `ret 0xc`, 700 B. `this` is the **`S` frame** — `[edi+0x54]`/`[edi+0x58]` is the
|
||||||
`vector<ServerPlayer*> Players` and `[edi+0xc]` is `Frame`, both `S`-frame offsets lane T and lane Z
|
`vector<ServerPlayer*> Players` and `[edi+0xc]` is `Frame`, both `S`-frame offsets lane T and lane Z
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue