build: Fixup PE section headers.
For FH4.
This commit is contained in:
parent
8448591ebd
commit
5b406be13e
3 changed files with 37 additions and 2 deletions
|
@ -367,12 +367,16 @@ redist: dist | $(filter-out dist deploy install redist,$(MAKECMDGOALS))
|
|||
module32: private SHELL := $(CONTAINER_SHELL)
|
||||
module32: CONTAINERGOALS := $(CONTAINERGOALS) wine-configure32
|
||||
module32: | all-source wine-configure32
|
||||
+$(MAKE) -j$(J) $(filter -j%,$(MAKEFLAGS)) $(MFLAGS) $(MAKEOVERRIDES) -C $(WINE_OBJ32)/dlls/$(module)
|
||||
+$(MAKE) -j$(J) $(filter -j%,$(MAKEFLAGS)) $(MFLAGS) $(MAKEOVERRIDES) -C $(WINE_OBJ32)/dlls/$(module) && \
|
||||
find $(WINE_OBJ32)/dlls/$(module) -type f -name '*.dll' -printf '%p\0' | \
|
||||
xargs --verbose -0 -r -P$(J) -n1 $(SRC)/make/pefixup.py
|
||||
|
||||
module64: private SHELL := $(CONTAINER_SHELL)
|
||||
module64: CONTAINERGOALS := $(CONTAINERGOALS) wine-configure64
|
||||
module64: | all-source wine-configure64
|
||||
+$(MAKE) -j$(J) $(filter -j%,$(MAKEFLAGS)) $(MFLAGS) $(MAKEOVERRIDES) -C $(WINE_OBJ64)/dlls/$(module)
|
||||
+$(MAKE) -j$(J) $(filter -j%,$(MAKEFLAGS)) $(MFLAGS) $(MAKEOVERRIDES) -C $(WINE_OBJ64)/dlls/$(module) && \
|
||||
find $(WINE_OBJ64)/dlls/$(module) -type f -name '*.dll' -printf '%p\0' | \
|
||||
xargs --verbose -0 -r -P$(J) -n1 $(SRC)/make/pefixup.py
|
||||
|
||||
module: CONTAINERGOALS := $(CONTAINERGOALS) wine-configure
|
||||
module: | all-source wine-configure
|
||||
|
|
25
make/pefixup.py
Executable file
25
make/pefixup.py
Executable file
|
@ -0,0 +1,25 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import os
|
||||
import stat
|
||||
import pefile
|
||||
|
||||
for path in sys.argv[1:]:
|
||||
pe = pefile.PE(path)
|
||||
|
||||
for section in pe.sections:
|
||||
if section.Name.decode("utf-8")[0:5] == ".text":
|
||||
section.Characteristics &= ~pefile.SECTION_CHARACTERISTICS['IMAGE_SCN_CNT_INITIALIZED_DATA']
|
||||
section.Characteristics &= ~pefile.SECTION_CHARACTERISTICS['IMAGE_SCN_ALIGN_MASK']
|
||||
|
||||
pe.OPTIONAL_HEADER.CheckSum = pe.generate_checksum()
|
||||
|
||||
perm = stat.S_IMODE(os.stat(path).st_mode)
|
||||
if (perm & stat.S_IWUSR) == 0:
|
||||
os.chmod(path, perm | stat.S_IWUSR)
|
||||
|
||||
pe.write(path)
|
||||
|
||||
if (perm & stat.S_IWUSR) == 0:
|
||||
os.chmod(path, perm)
|
|
@ -63,6 +63,9 @@ $$(OBJ)/.$(1)-dist$(3):
|
|||
cd $$($(2)_LIBDIR$(3)) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.def' ')' \
|
||||
-printf '--add-gnu-debuglink=$$(DST_LIBDIR$(3))/%p.debug\0--strip-debug\0%p\0$$(DST_LIBDIR$(3))/%p\0' | \
|
||||
xargs --verbose -0 -r -P8 -n4 objcopy --file-alignment=4096
|
||||
cd $$($(2)_LIBDIR$(3)) && find -type f -name '*.dll' \
|
||||
-printf '$$(DST_LIBDIR$(3))/%p\0' | \
|
||||
xargs --verbose -0 -r -P8 -n1 $$(SRC)/make/pefixup.py
|
||||
touch $$@
|
||||
else
|
||||
$$(OBJ)/.$(1)-dist$(3):
|
||||
|
@ -75,6 +78,9 @@ $$(OBJ)/.$(1)-dist$(3):
|
|||
cd $$($(2)_LIBDIR$(3)) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.def' ')' \
|
||||
-printf '--strip-debug\0%p\0$$(DST_LIBDIR$(3))/%p\0' | \
|
||||
xargs --verbose -0 -r -P8 -n3 objcopy --file-alignment=4096
|
||||
cd $$($(2)_LIBDIR$(3)) && find -type f -name '*.dll' \
|
||||
-printf '$$(DST_LIBDIR$(3))/%p\0' | \
|
||||
xargs --verbose -0 -r -P8 -n1 $$(SRC)/make/pefixup.py
|
||||
touch $$@
|
||||
endif
|
||||
endif
|
||||
|
|
Loading…
Reference in a new issue