Add support for C++20's char8_t - #147
Open
ergrelet wants to merge 1 commit into
Open
Conversation
kjk
added a commit
to kjk/exp
that referenced
this pull request
Jan 24, 2026
Port of getsentry/pdb#147 which adds C++20's char8_t support. Co-Authored-By: Claude Opus 4.5 <[email protected]>
kjk
added a commit
to kjk/exp
that referenced
this pull request
Aug 17, 2026
pdb: pdb2hpp: support * as class name to dump all types Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: pdb2hpp: add char8_t, char16_t, char32_t primitive types Port of getsentry/pdb#147 which adds C++20's char8_t support. Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: Port src/tpi/primitive.rs to TypeScript Add src/tpi/primitive.ts with PrimitiveKind numeric constants, Indirection constants, parsePrimitiveType(), and primitiveTypeName(). Move primitiveTypeName from examples/pdb2hpp.ts into the library with full coverage of all primitive types from the Rust source. Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: update ailog.txt Port src/tpi/data.rs: fix LF_STRUCTURE19, add missing types - Fix LF_STRUCTURE19 parsing bug (different field order from LF_STRUCTURE) - Add LF_STRIDED_ARRAY support with stride field on ArrayType - Add LF_NESTTYPEEX support (proper field attributes vs padding) - Add LF_BINTERFACE support in field list parsing - Add PointerKind/PointerMode enums matching Rust PointerKind/PointerMode - Add FunctionAttributes interface (calling convention + ctor/returnUdt flags) - Update ProcedureType and MemberFunctionType to use FunctionAttributes - Pointer size now auto-computed from PointerKind when not specified Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: Add AliasType support (LF_ALIAS/LF_ALIAS_ST) Port of getsentry/pdb#134. Adds parsing for typedef/alias type records which contain an underlying type index and a name. Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: Complete constants.ts port from constants.rs Add all missing constants from the Rust source including 16-bit legacy types, list type indices, field list members, numeric leaf constants (LF_REAL48, LF_COMPLEX*, LF_OCTWORD, LF_DECIMAL, etc.), derived bounds (LF_ENDOFLEAFRECORD, LF_TYPE_LAST, LF_ID_LAST), and padding bytes (LF_PAD1-LF_PAD15). Also add LF_NESTTYPEEX_ST and LF_ENUMERATE_ST handling in the parser. Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: Fix isPureVirtualMethod to recognize PureIntroducingVirtual Port of getsentry/pdb#135. Add FieldAttributes helper functions (isStaticMethod, isVirtualMethod, isPureVirtualMethod, isIntroVirtualMethod) matching the Rust FieldAttributes methods. isPureVirtualMethod correctly returns true for both PureVirtual and PureIntroducingVirtual method kinds. Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: Implement VirtualFunctionTable / VirtualTableShape parsing Port of getsentry/pdb#141. Implements LF_VTSHAPE (packed 4-bit vtable shape descriptors) and LF_VFTABLE (owner, base, object offset, and method name list). Adds VirtualTableShapeDescriptor enum and VirtualTableShapeType interface. Fixes VirtualFunctionTableType fields to match the Rust struct (owner, base, objectOffset, names). Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: Add isStripped flag to DebugInformation Port of getsentry/pdb#143. Exposes whether the PDB was built with /PDBSTRIPPED, meaning it lacks type info, line info, and per-object CV symbols. Derived from bit 0x2 of the DBI header flags. Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: synthesize section headers from DBI section map Port of getsentry/pdb PR #154. When no explicit section header stream exists (as in .NET Crossgen2 .ni.pdb files), synthesize ImageSectionHeaders from the DBI section map (OMF Segment Map) entries. Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: port symbol module from Rust to idiomatic TypeScript Restructures src/symbols.ts into src/symbol/ directory matching the Rust source layout: - symbol/constants.ts: All S_* symbol kind constants, CPUType enum, SourceLanguage enum, ThunkKind enum, TrampolineType enum - symbol/annotations.ts: BinaryAnnotation types and BinaryAnnotationsIter for parsing inline site line programs - symbol/index.ts: Full symbol types and parsing with: - Expanded ProcedureFlags (8 flags vs previous 4) - Structured CompileFlags, LocalVariableFlags, ExportSymbolFlags, SeparatedCodeFlags instead of raw numbers - New symbol types: ThunkSymbol, SeparatedCodeSymbol, MultiRegisterVariableSymbol, CallSiteInfoSymbol, EnvironmentBlockSymbol - Added managed field to ConstantSymbol and DataSymbol - Added dpc field to ProcedureSymbol - Added invocations to InlineSiteSymbol - LabelSymbol.flags now uses ProcedureFlags - CompileFlagsSymbol now has structured fields (language, cpuType, frontendVersion, backendVersion) - S_ALIGN/S_SKIP padding records now skipped in iterator - Helper functions: symbolStartsScope, symbolEndsScope Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: add DefRange symbol parsing (S_DEFRANGE_REGISTER et al.) These symbols describe where local variables are stored at various code locations in optimized builds. Not present in the original Rust library. Implements all 7 DefRange variants: - S_DEFRANGE (0x113f) - S_DEFRANGE_SUBFIELD (0x1140) - S_DEFRANGE_REGISTER (0x1141) - S_DEFRANGE_FRAMEPOINTER_REL (0x1142) - S_DEFRANGE_SUBFIELD_REGISTER (0x1143) - S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE (0x1144) - S_DEFRANGE_REGISTER_REL (0x1145) Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: add S_CALLEES/S_CALLERS symbol parsing These symbols list the functions called by or calling a given function, used for call graph analysis. Not present in the original Rust library. Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: add S_INLINEES symbol parsing Lists all inlined function IDs in a module. Not present in the original Rust library. Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: implement S_FRAMECOOKIE (0x113a) symbol parsing Not in the Rust repo - implemented from cvinfo.h documentation. Adds FrameCookieSymbol with offset, register, cookieType, and flags fields, plus FrameCookieType enum (Copy, XorStackPointer, XorBasePointer, XorR13). Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: implement S_FILESTATIC (0x1153) symbol parsing Not in the Rust repo - implemented from cvinfo.h documentation. Adds FileStaticSymbol with type, modFilenameOffset, flags (LocalVariableFlags), and name fields. Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: implement S_HEAPALLOCSITE (0x115e) symbol parsing Not in the Rust repo - implemented from cvinfo.h documentation. Adds HeapAllocationSiteSymbol with offset (section offset of call site), instructionLength, and type (type of the allocated object). Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: update claude.md and ailog.txt pdb: add source file/module comments to pdb2hpp output Uses the IPI stream's UdtModuleSourceLine/UdtSourceLine records to resolve which source file and module each type was defined in, printing it as a comment above each class/struct/enum definition. Co-Authored-By: Claude Opus 4.5 <[email protected]> pdb: implement managed procedure and slot symbol parsing Port getsentry/pdb#146 to TypeScript. Adds support for: - S_TOKENREF (TokenReference) - reference to a managed procedure - S_LMANPROC/S_GMANPROC (ManagedProcedure) - .NET managed procedures - S_MANSLOT/S_MANSLOT_ST (ManagedSlot) - managed local variable slots - S_OEM (OEM) - OEM symbol information S_ENVBLOCK, S_SECTION, and S_COFFGROUP were already implemented. Co-Authored-By: Claude Opus 4.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi!
Here's a small PR which fixes issue #130.