Skip to content

Conversation

@hzqst
Copy link
Contributor

@hzqst hzqst commented Dec 29, 2025

Description

Fix: #131

Type of change

Add support for LF_STRUCTURE2, LF_CLASS2, LF_INTERFACE2

Test result

.\llvm-pdbutil dump -types "ntoskrnl.exe.10.0.21286.1000\ntkrnlmp.pdb"
0x1A5F | LF_FIELDLIST [size = 1416]
            - LF_MEMBER [name = `Header`, Type = 0x10C4, offset = 0, attrs = public]
            - LF_MEMBER [name = `ProfileListHead`, Type = 0x1057, offset = 24, attrs = public]
            - LF_MEMBER [name = `DirectoryTableBase`, Type = 0x0023 (unsigned __int64), offset = 40, attrs = public]
            - LF_MEMBER [name = `ThreadListHead`, Type = 0x1057, offset = 48, attrs = public]
            - LF_MEMBER [name = `ProcessLock`, Type = 0x0022 (unsigned long), offset = 64, attrs = public]
            - LF_MEMBER [name = `ProcessTimerDelay`, Type = 0x0022 (unsigned long), offset = 68, attrs = public]
            - LF_MEMBER [name = `DeepFreezeStartTime`, Type = 0x0023 (unsigned __int64), offset = 72, attrs = public]
            - LF_MEMBER [name = `Affinity`, Type = 0x12F4, offset = 80, attrs = public]
            - LF_MEMBER [name = `ReadyListHead`, Type = 0x1057, offset = 344, attrs = public]
            - LF_MEMBER [name = `SwapListEntry`, Type = 0x1069, offset = 360, attrs = public]
            - LF_MEMBER [name = `ActiveProcessors`, Type = 0x1A52, offset = 368, attrs = public]
            - LF_MEMBER [name = `AutoAlignment`, Type = 0x1204, offset = 632, attrs = public]
            - LF_MEMBER [name = `DisableBoost`, Type = 0x1205, offset = 632, attrs = public]
            - LF_MEMBER [name = `DisableQuantum`, Type = 0x1206, offset = 632, attrs = public]
            - LF_MEMBER [name = `DeepFreeze`, Type = 0x1207, offset = 632, attrs = public]
            - LF_MEMBER [name = `TimerVirtualization`, Type = 0x1208, offset = 632, attrs = public]
            - LF_MEMBER [name = `CheckStackExtents`, Type = 0x1214, offset = 632, attrs = public]
            - LF_MEMBER [name = `CacheIsolationEnabled`, Type = 0x1215, offset = 632, attrs = public]
            - LF_MEMBER [name = `PpmPolicy`, Type = 0x1A53, offset = 632, attrs = public]
            - LF_MEMBER [name = `VaSpaceDeleted`, Type = 0x11F4, offset = 632, attrs = public]
            - LF_MEMBER [name = `MultiGroup`, Type = 0x11F5, offset = 632, attrs = public]
            - LF_MEMBER [name = `ReservedFlags`, Type = 0x13C6, offset = 632, attrs = public]
            - LF_MEMBER [name = `ProcessFlags`, Type = 0x101B, offset = 632, attrs = public]
            - LF_MEMBER [name = `ActiveGroupsMask`, Type = 0x0022 (unsigned long), offset = 636, attrs = public]
            - LF_MEMBER [name = `BasePriority`, Type = 0x0070 (char), offset = 640, attrs = public]
            - LF_MEMBER [name = `QuantumReset`, Type = 0x0070 (char), offset = 641, attrs = public]
            - LF_MEMBER [name = `Visited`, Type = 0x0070 (char), offset = 642, attrs = public]
            - LF_MEMBER [name = `Flags`, Type = 0x1A54, offset = 643, attrs = public]
            - LF_MEMBER [name = `ThreadSeed`, Type = 0x1A55, offset = 644, attrs = public]
            - LF_MEMBER [name = `IdealProcessor`, Type = 0x1A55, offset = 708, attrs = public]
            - LF_MEMBER [name = `IdealNode`, Type = 0x1A55, offset = 772, attrs = public]
            - LF_MEMBER [name = `IdealGlobalNode`, Type = 0x0021 (unsigned short), offset = 836, attrs = public]
            - LF_MEMBER [name = `Spare1`, Type = 0x0021 (unsigned short), offset = 838, attrs = public]
            - LF_MEMBER [name = `StackCount`, Type = 0x1A57, offset = 840, attrs = public]
            - LF_MEMBER [name = `ProcessListEntry`, Type = 0x1057, offset = 848, attrs = public]
            - LF_MEMBER [name = `CycleTime`, Type = 0x0023 (unsigned __int64), offset = 864, attrs = public]
            - LF_MEMBER [name = `ContextSwitches`, Type = 0x0023 (unsigned __int64), offset = 872, attrs = public]
            - LF_MEMBER [name = `SchedulingGroup`, Type = 0x1A59, offset = 880, attrs = public]
            - LF_MEMBER [name = `FreezeCount`, Type = 0x0022 (unsigned long), offset = 888, attrs = public]
            - LF_MEMBER [name = `KernelTime`, Type = 0x0022 (unsigned long), offset = 892, attrs = public]
            - LF_MEMBER [name = `UserTime`, Type = 0x0022 (unsigned long), offset = 896, attrs = public]
            - LF_MEMBER [name = `ReadyTime`, Type = 0x0022 (unsigned long), offset = 900, attrs = public]
            - LF_MEMBER [name = `UserDirectoryTableBase`, Type = 0x0023 (unsigned __int64), offset = 904, attrs = public]
            - LF_MEMBER [name = `AddressPolicy`, Type = 0x0020 (unsigned char), offset = 912, attrs = public]
            - LF_MEMBER [name = `Spare2`, Type = 0x1A5A, offset = 913, attrs = public]
            - LF_MEMBER [name = `InstrumentationCallback`, Type = 0x0603 (void*), offset = 984, attrs = public]
            - LF_MEMBER [name = `SecureState`, Type = 0x1A5E, offset = 992, attrs = public]
            - LF_MEMBER [name = `KernelWaitTime`, Type = 0x0023 (unsigned __int64), offset = 1000, attrs = public]
            - LF_MEMBER [name = `UserWaitTime`, Type = 0x0023 (unsigned __int64), offset = 1008, attrs = public]
            - LF_MEMBER [name = `LastRebalanceQpc`, Type = 0x0023 (unsigned __int64), offset = 1016, attrs = public]
            - LF_MEMBER [name = `PerProcessorCycleTimes`, Type = 0x0603 (void*), offset = 1024, attrs = public]
            - LF_MEMBER [name = `ExtendedFeatureDisableMask`, Type = 0x0023 (unsigned __int64), offset = 1032, attrs = public]
            - LF_MEMBER [name = `PrimaryGroup`, Type = 0x0021 (unsigned short), offset = 1040, attrs = public]
            - LF_MEMBER [name = `Spare3`, Type = 0x162A, offset = 1042, attrs = public]
            - LF_MEMBER [name = `EndPadding`, Type = 0x17CB, offset = 1048, attrs = public]
   0x1A60 | LF_STRUCTURE2 [size = 52] `_KPROCESS`
            unique name: `.?AU_KPROCESS@@`
            vtable: <no type>, base list: <no type>, field list: 0x1A5F
            options: has unique name, count 55, sizeof 1080

@gmh5225 gmh5225 merged commit ac75bf4 into backengineering:dev Dec 29, 2025
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

llmv-pdbutil: Cannot parse LF_STRUCTURE2 / LF_CLASS2 introduced since Visual Studio 2019 16.8+

2 participants