9.2 KiB
Struct twins
tools/type_census.py --check-structs reads this file (TWINS_DOC). G62: layout twins without evidence stay apart.
## Twins: one### <lhash>section per tier-2 duplicate row (plain or<lhash>:opaque) kept as separate types, with anames:line (the row's names, as a set) and acause:line naming at least one address (8 hex digits or0x…). A listed row does not count indup_classes. An absent lhash, a name-set mismatch or an addressless cause counts intwins_stale.## Dead kept:- Name — causebullets; a listed canon name does not count indead. A name that is not dead or no longer defined in the canonical headers counts intwins_stale.
Twins
f1dcb3a42fc8
names: Rec_801825D8, Rec_80184FF8, S8012C658, S8017FF9C_sp cause: 4 names (20 B, all members placeholders) bound to 5 distinct objects, none bound to two names: ov_SC02_011/0x801890C8:sp, ov_SC04_003/0x8017FF9C:sp, ov_SC06_029/0x801825D8:rec, ov_SC06_029/0x80184FF8:rec, shared/ov/0x8012C658:sp; full list: tools/struct_twins.py --show f1dcb3a42fc8
Rec_801825D8: 1 obj — ov_SC06_029/0x801825D8:recRec_80184FF8: 1 obj — ov_SC06_029/0x80184FF8:recS8012C658: 2 obj — ov_SC02_011/0x801890C8:sp, shared/ov/0x8012C658:spS8017FF9C_sp: 1 obj — ov_SC04_003/0x8017FF9C:sp
b519bad67107:opaque
names: Local_8017EE34, Local_80181C84, Local_801870E8 cause: 3 names (20 B, all members placeholders) bound to 4 distinct objects, none bound to two names: ov_SC03_105/0x8017EE34:local, ov_SC03_105/0x80181C84:local, ov_SC03_105/0x80183D38:local, ov_SC03_105/0x801870E8:local; full list: tools/struct_twins.py --show b519bad67107:opaque
Local_8017EE34: 2 obj — ov_SC03_105/0x8017EE34:local, ov_SC03_105/0x80183D38:localLocal_80181C84: 1 obj — ov_SC03_105/0x80181C84:localLocal_801870E8: 1 obj — ov_SC03_105/0x801870E8:local
c80fac242f04
names: Mat801A8E34, Mat_80183C9C, Mtx_A8CE0 cause: 3 names (32 B, all members placeholders) bound to 4 distinct objects, none bound to two names: md_SC07_004/0x801A8CE0:mtx, md_SC07_004/0x801A8E34:buf, ov_SC06_000/0x80183C9C:mat; full list: tools/struct_twins.py --show c80fac242f04
Mat801A8E34: 1 obj — md_SC07_004/0x801A8E34:bufMat_80183C9C: 1 obj — ov_SC06_000/0x80183C9C:matMtx_A8CE0: 2 obj — md_SC07_004/0x801A8CE0:mtx, attribute(ret)
9ba0ae408dd4
names: Drv_8017E330, Drv_8017E550, Drv_8017E878 cause: 3 names (56 B, all members placeholders) bound to 6 distinct objects, none bound to two names: 0x801F80E4, ov_SC06_006/0x8017E330:p, ov_SC06_006/0x8017E550:a0, ov_SC06_006/0x8017E550:p, ov_SC06_006/0x8017E878:a0, ov_SC06_006/0x8017E878:p; full list: tools/struct_twins.py --show 9ba0ae408dd4
Drv_8017E330: 2 obj — 0x801F80E4, ov_SC06_006/0x8017E330:pDrv_8017E550: 2 obj — ov_SC06_006/0x8017E550:a0, ov_SC06_006/0x8017E550:pDrv_8017E878: 2 obj — ov_SC06_006/0x8017E878:a0, ov_SC06_006/0x8017E878:p
8944ddcbe454:opaque
names: Blk36_800296F8, Blob36, SW20 cause: 3 names (36 B, all members placeholders) bound to 6 distinct objects, none bound to two names: 0x800298BC(arg0), 0x80078E50, 0x80079204, 0x800D4B70, main/0x800296F8:arg0, src/resident/0x800D185C:arg0; full list: tools/struct_twins.py --show 8944ddcbe454:opaque
Blk36_800296F8: 3 obj — 0x800298BC(arg0), 0x80079204, main/0x800296F8:arg0Blob36: 2 obj — 0x80078E50, src/resident/0x800D185C:arg0SW20: 1 obj — 0x800D4B70
c2ba48790859
names: W8, W8_, func_8002EE64_b cause: 3 names (1 B, all members placeholders) bound to 4 distinct objects, none bound to two names: 0x80076242, 0x80076243, main/0x8002EE64:b; full list: tools/struct_twins.py --show c2ba48790859
W8: 2 obj — 0x80076242, 0x80076243W8_: 1 obj — D_80076242_func_8002EE64_b: 1 obj — main/0x8002EE64:b
ac91ae2d8aa0:opaque
names: S800D22E4, vec cause: 2 names (28 B, all members placeholders) bound to 77 distinct objects, none bound to two names: 0x800D22E4(arg0), 0x8012931C(arg0), 0x8012AD80(arg0), 0x80185238(arg0), 0x801879E8(arg0), md_SC07_004/0x801A72DC:a0, md_SC07_004/0x801ABC8C:a0, md_SC07_004/0x801AC234:a0 …; full list: tools/struct_twins.py --show ac91ae2d8aa0:opaque
S800D22E4: 1 obj — 0x800D22E4(arg0)vec: 76 obj — 0x8012931C(arg0), 0x8012AD80(arg0), 0x80185238(arg0), 0x801879E8(arg0), md_SC07_004/0x801A72DC:a0, md_SC07_004/0x801ABC8C:a0, md_SC07_004/0x801AC234:a0, md_SC07_004/0x801AC940:a1 (+68)
82c6e3650290:opaque
names: Gte8_8017F2FC, Rec_80180808 cause: 2 names (8 B, all members placeholders) bound to 3 distinct objects, none bound to two names: 0x801B1B50, ov_SC02_021/0x8017F2FC:sp10, ov_SC06_025/0x80180808:rec; full list: tools/struct_twins.py --show 82c6e3650290:opaque
Gte8_8017F2FC: 1 obj — ov_SC02_021/0x8017F2FC:sp10Rec_80180808: 2 obj — 0x801B1B50, ov_SC06_025/0x80180808:rec
aa66418d079c:opaque
names: Blk16_80126940, Pos16_8018743C cause: 2 names (16 B, all members placeholders) bound to 3 distinct objects, none bound to two names: ov_SC06_000/0x80181AB4:sp10, ov_SC06_029/0x8018743C:from, ov_SC06_029/0x8018743C:to; full list: tools/struct_twins.py --show aa66418d079c:opaque
Blk16_80126940: 1 obj — ov_SC06_000/0x80181AB4:sp10Pos16_8018743C: 2 obj — ov_SC06_029/0x8018743C:from, ov_SC06_029/0x8018743C:to
1dd90dc86138
names: Ent80183F28, Ent_80184058 cause: 2 names (236 B, all members placeholders) bound to 2 distinct objects, none bound to two names: 0x80183F28(arg0), 0x80184058(arg0); full list: tools/struct_twins.py --show 1dd90dc86138
Ent80183F28: 1 obj — 0x80183F28(arg0)Ent_80184058: 1 obj — 0x80184058(arg0)
d60a32e09c91
names: P8, S72 cause: 2 names (8 B, all members placeholders) bound to 5 distinct objects, none bound to two names: 0x80185D28, 0x80185D2A, 0x80185D2C, 0x80185D2E, 0x80185D72; full list: tools/struct_twins.py --show d60a32e09c91
P8: 4 obj — 0x80185D28, 0x80185D2A, 0x80185D2C, 0x80185D2ES72: 1 obj — 0x80185D72
08944be666a1
names: Sub8017EBC4, Sub_80181BA0 cause: 2 names (20 B, all members placeholders) bound to 3 distinct objects, none bound to two names: ov_SC04_011/0x80181BA0:p, ov_SC06_029/0x8017EBC4:func_8012C1B8, ov_SC06_029/0x8017EBC4:sp; full list: tools/struct_twins.py --show 08944be666a1
Sub8017EBC4: 2 obj — ov_SC06_029/0x8017EBC4:func_8012C1B8, ov_SC06_029/0x8017EBC4:spSub_80181BA0: 1 obj — ov_SC04_011/0x80181BA0:p
474e1fa40ab6
names: Actor_8017E550, Actor_8017E878 cause: 2 names (156 B, all members placeholders) bound to 2 distinct objects, none bound to two names: 0x8017E550(arg0), 0x8017E878(arg0); full list: tools/struct_twins.py --show 474e1fa40ab6
Actor_8017E550: 1 obj — 0x8017E550(arg0)Actor_8017E878: 1 obj — 0x8017E878(arg0)
12fe36cd7e07
names: Struct801E79D8, Struct801EF318 cause: 2 names (16 B, all members placeholders) bound to 3 distinct objects, none bound to two names: 0x801E2498, 0x801E79D8, 0x801EF318; full list: tools/struct_twins.py --show 12fe36cd7e07
Struct801E79D8: 1 obj — 0x801E79D8Struct801EF318: 2 obj — 0x801E2498, 0x801EF318
c6e867e46e6f
names: V16x4, Vec4s16_8018423C cause: 2 names (8 B, all members placeholders) bound to 7 distinct objects, none bound to two names: 0x80188984, ov_SC03_105/0x8018423C:out, ov_SC03_105/0x8018423C:pos, ov_SC03_105/0x8018423C:tmp, ov_SC03_105/0x8018423C:vec, ov_SC06_025/0x8017F664:a, ov_SC06_025/0x8017F664:b; full list: tools/struct_twins.py --show c6e867e46e6f
V16x4: 3 obj — 0x80188984, ov_SC06_025/0x8017F664:a, ov_SC06_025/0x8017F664:bVec4s16_8018423C: 4 obj — ov_SC03_105/0x8018423C:out, ov_SC03_105/0x8018423C:pos, ov_SC03_105/0x8018423C:tmp, ov_SC03_105/0x8018423C:vec
64db0612c4d4
names: Work_801832E0, Work_80183634 cause: 2 names (236 B, all members placeholders) bound to 2 distinct objects, none bound to two names: 0x801832E0(arg0), 0x80183634(arg0); full list: tools/struct_twins.py --show 64db0612c4d4
Work_801832E0: 1 obj — 0x801832E0(arg0)Work_80183634: 1 obj — 0x80183634(arg0)
cc89b444f3c5
names: EntA, Ent_SC07_010_8017AE2C cause: 2 names (256 B, all members placeholders) bound to 4 distinct objects, none bound to two names: ov_SC07_010/0x8017E5B8:func_8012C588, ov_SC07_010/0x8017E5B8:p, ov_SC07_010/0x8017E70C:func_8012C588, ov_SC07_010/0x8017E70C:p; full list: tools/struct_twins.py --show cc89b444f3c5
EntA: 2 obj — ov_SC07_010/0x8017E5B8:func_8012C588, ov_SC07_010/0x8017E5B8:pEnt_SC07_010_8017AE2C: 2 obj — ov_SC07_010/0x8017E70C:func_8012C588, ov_SC07_010/0x8017E70C:p
2816963b1259
names: Obj800D302C, Struct800D2FEC cause: 2 names (44 B, all members placeholders) bound to 2 distinct objects, none bound to two names: 0x800D2FEC(arg0), 0x800D302C(arg0); full list: tools/struct_twins.py --show 2816963b1259
Obj800D302C: 1 obj — 0x800D302C(arg0)Struct800D2FEC: 1 obj — 0x800D2FEC(arg0)
2e57efa3d051
names: Voice336A8, VoiceF80 cause: 2 names (72 B, all members placeholders) bound to 4 distinct objects, none bound to two names: 0x800A4988, main/0x80030F80:e, main/0x80030F80:i, main/0x800336A8:vo; full list: tools/struct_twins.py --show 2e57efa3d051
Voice336A8: 2 obj — 0x800A4988, main/0x800336A8:voVoiceF80: 2 obj — main/0x80030F80:e, main/0x80030F80:i