Mixed Mode / Unmanaged PE File Builders #554
Draft
+2,901
−950
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.
Includes:
PEFileBuilderBase
into a commonPEFileBuilder
facilitating the general rebuilding of all data directories in a PE. New PE file builders now only have to decide on final section layout as a bare minimum.ManagedPEFileBuilder
toAsmResolver.PE.Builder
.UnmanagedPEFileBuilder
for rebuilding mixed-mode assemblies or fully native PE files based on a base image.TrampolineTableBuffer
for building code trampolines for IATs and VTable fixups.Platform::CreateAddressTableInitializer
to create platform-specific dynamic IAT initializers.IPEImage::PEFile
andIPEImage::ToPEFile
.SegmentPatch
, allowing for entire segments to be written as a patch.IPatch::UpdateOffsets
.DataDirectory.CreateForSegment(ISegment)
.AsmResolver.PE.DotNet.Builder
namespace.Bugfixes:
FieldRvaDataReader
now correctly skips types with custom modifiers in field size determination.OptionalHeader::SetDataDirectory
now ensures that all data directories are present.