From 64a80f60909200b96f34b78f1f1d1a6c6f8df25a Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Wed, 9 Jul 2025 15:57:29 +0200 Subject: [PATCH] Reduced size of Windows executables --- src/build/FileAlign.go | 14 +++++++------- src/pe/EXE.go | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/build/FileAlign.go b/src/build/FileAlign.go index 5bec044..5569963 100644 --- a/src/build/FileAlign.go +++ b/src/build/FileAlign.go @@ -1,13 +1,13 @@ package build -// cacheLineSize is the smallest unit of data that can be transferred between the RAM and the CPU cache. -const cacheLineSize = 64 - // FileAlign returns the file alignment. func (build *Build) FileAlign() int { - if build.OS == Linux { - return cacheLineSize + switch build.OS { + case Linux: + return 0x40 + case Windows: + return 0x200 + default: + return build.MemoryAlign() } - - return build.MemoryAlign() } \ No newline at end of file diff --git a/src/pe/EXE.go b/src/pe/EXE.go index 3283965..e5e1747 100644 --- a/src/pe/EXE.go +++ b/src/pe/EXE.go @@ -27,7 +27,7 @@ func Write(writer io.WriteSeeker, b *build.Build, codeBytes []byte, dataBytes [] subSystem := IMAGE_SUBSYSTEM_WINDOWS_CUI arch := Arch(b.Arch) - importsData, dllData, dllImports, dllDataStart := importLibraries(libs, imports.FileOffset) + importsData, dllData, dllImports, dllDataStart := importLibraries(libs, imports.MemoryOffset) buffer := bytes.Buffer{} binary.Write(&buffer, binary.LittleEndian, &importsData) binary.Write(&buffer, binary.LittleEndian, &dllData)