Repository navigation
feat(tools): inventory PE code symbols and module identity - #13376
Merged
Merged
Conversation
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
Collaborator
|
Checked that |
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.
What
Inventories a PE32+ module's code-symbol RVAs, code-section ranges and existing image-base/size/timestamp metadata as JSON without sample captures, disassembly or output files.
Implementation basis: Reuses symbolize_samples.PeModule, including its COFF-symbol and export-table fallback policies. Constructed PE fixtures fix expected addresses/names independently, exercise both modes and malformed files, and check input preservation. This is separate from #12499's sampled-stack summaries and #12873's ELF annotation output.
Known limits: The existing PE parser's coverage and decoded-name policy remain. Size/timestamp are metadata, not authentication; export fallback can have no symbols. This does not validate all PE directories, demangle names, prove execution, or match an image to a capture. Consumers must preserve 64-bit image-base precision.
Source/schema: tools/pe_symbol_inventory.py tools/symbolize_samples.py
Exact topic head
34d3bf669e0a0704d271b50d4da5b0132c0e85a6is one independent commit on mainda026c70655a132031d45e2008c24f993870d801. The current-main repository overlap checker againstda026c70655a132031d45e2008c24f993870d801reported no confirmed overlap. It could not finish comparisons for these older PRs already conflicting with main: #674, #1835, #3786, #5021, #7642, #9539, #10897, #12862. Their shared-file diffs were reviewed separately. 7 scoped file changes projected onto main and then combined with this topic without a new conflict; 1 peer file changes already conflict with main and are not claimed automatically mergeable. They do not provide this command or test matrix. Registration uses a separate target/name and there is no landing-order dependency. Changes to shared registration before landing need a refreshed merge/test check. Depends on: none. The twenty current topic heads are also merged into tested integration3990a2bd7e0abeaaeeef963a30a3d6508d9b5be3.Tested
Topic head:
34d3bf669e0a0704d271b50d4da5b0132c0e85a6. Combined integration:3990a2bd7e0abeaaeeef963a30a3d6508d9b5be3, based on mainda026c70655a132031d45e2008c24f993870d801. Ubuntu/WSL GCC 15.2, CMake 4.2.3, Python 3.14.4; Windows MinGW GCC 15.2, CMake 4.3.1, Python 3.14.3.python tools/tests/test_pe_symbol_inventory.py: 2 tests passed on each platform, no skips. A mutation in the actual new tool was rejected by the fixture.Registered CTest
tools_pe_inventorypassed on Linux and Windows as part of the filtered twenty-topic run:ctest --test-dir <build> -R <20-topic-pattern> -j 8 -V --output-on-failure, 20/20 passed on each platform, zero skips.cmake --build <linux-full-build> --parallel 8: complete default Linux product build passed. Windows used the full configuration and built the sixteen affected libc test targets plus relinker with--parallel 8; a complete default Windows build is not claimed. Conventions, whitespace, script registration and the public-header declaration/umbrella audit passed. No PS5, title or GPU validation run is claimed. macOS, WASM execution and hosted full-build CI are not reported as passed.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)