mirror of
https://github.com/upx/upx
synced 2025-10-05 19:20:23 +08:00
merge
This commit is contained in:
commit
a5a80e41b8
|
@ -140,6 +140,8 @@ RTRIM := sed -e 's/[ $(tab)]*$$//'
|
|||
BLSQUEEZE := $(RTRIM) | cat --squeeze-blank | sed -e '1{/^$$/d}' -e '$${/^$$/d}'
|
||||
# delete blank lines
|
||||
BLDEL := $(RTRIM) | sed -e '/^$$/d'
|
||||
#
|
||||
UNIX2DOS := perl -i -pe 's/$$/\r/;'
|
||||
|
||||
# clear some vars, just in case
|
||||
LABEL_PREFIX =
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,10 @@
|
|||
#
|
||||
# highly experimental support for i086 using Digital Mars C/C++
|
||||
#
|
||||
# $(DM849DIR)
|
||||
# $(WATCOM)
|
||||
# /usr/bin/wine
|
||||
#
|
||||
|
||||
MAKEFLAGS += -rR
|
||||
.SUFFIXES:
|
||||
|
@ -29,85 +33,19 @@ include $(top_srcdir)/src/stub/Makefile
|
|||
|
||||
|
||||
# /***********************************************************************
|
||||
# // method-lzma
|
||||
# //
|
||||
# ************************************************************************/
|
||||
|
||||
lzma_d_c% : tc_list = method-lzma arch-i086 default
|
||||
lzma_d_c% : tc_bfdname =
|
||||
DOSBOX = true
|
||||
DOSBOX = dosbox
|
||||
DOSBOX = /usr/bin/time -p dosbox -exit
|
||||
|
||||
# gcc
|
||||
c := tc.arch-i086.gcc
|
||||
$c += -MF /dev/null
|
||||
$c += -Wall -W
|
||||
$c += -I$(UPX_LZMADIR)
|
||||
$c += -I$(top_srcdir)/src
|
||||
|
||||
# Digital Mars C/C++ 8.49
|
||||
# http://www.digitalmars.com/download/freecompiler.html
|
||||
ifneq ($(wildcard $(DM849DIR)/bin/.),)
|
||||
c := tc.method-lzma.dmc
|
||||
$c = @$(WINEENV) CFLAGS='$(DMC)' wine cmd.exe /c tmp/dmc.bat
|
||||
$c += -ms -R
|
||||
$c += -NS
|
||||
$c += -w- -w7 -r
|
||||
DMC := -o -0
|
||||
DMC += -D__INT_MAX__=32767
|
||||
DMC += -I$(shell winepath -s z:$(realpath $(UPX_LZMADIR)))
|
||||
DMC += -I$(shell winepath -s z:$(realpath $(top_srcdir)/src))
|
||||
endif
|
||||
|
||||
TMP_DEPS = tmp/.tmp-stamp tmp/bcc.bat tmp/cl.bat tmp/dmc.bat
|
||||
|
||||
lzma_d_c%.S : lzma_d_c%.i cleanasm.py $(MAKEFILE_LIST)
|
||||
python cleanasm.py --label-prefix=$(LABEL_PREFIX) $< $@
|
||||
|
||||
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
|
||||
ifneq ($(wildcard $(DM849DIR)/bin/.),)
|
||||
ifneq ($(wildcard $(WATCOM)/binl/.),)
|
||||
ifneq ($(wildcard /usr/bin/wine),)
|
||||
|
||||
lzma_d_c%.i : tmp/lzma_d_c%.i
|
||||
cp $< $@
|
||||
|
||||
tmp/lzma_d_c%.i : lzma_d_c.c wdis2gas.py $(MAKEFILE_LIST) $(TMP_DEPS)
|
||||
rm -f tmp/$T.a tmp/$T.o tmp/$T.obj
|
||||
# compile
|
||||
$(call tc,dmc) $(PP_FLAGS) -c -otmp/$T_dm.obj $<
|
||||
$(call tc,wdis) tmp/$T_dm.obj | $(RTRIM) > tmp/$T_dm.obj.disasm
|
||||
## $(call tc,wcl) $(PP_FLAGS) -c -fo=tmp/$T_wc.obj $<
|
||||
## $(call tc,wdis) tmp/$T_wc.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||
## $(call tc,bcc) $(PP_FLAGS) -c -otmp/$T_bc.obj $<
|
||||
## $(call tc,wdis) tmp/$T_bc.obj | $(RTRIM) > tmp/$T_bc.obj.disasm
|
||||
## $(call tc,cl) $(PP_FLAGS) -c -Fotmp/$T_vc.obj $<
|
||||
## $(call tc,wdis) tmp/$T_vc.obj | $(RTRIM) > tmp/$T_vc.obj.disasm
|
||||
# convert
|
||||
python wdis2gas.py tmp/$T_dm.obj.disasm tmp/$T.S
|
||||
$(call tc,gcc) -c -o tmp/$T.o tmp/$T.S
|
||||
$(call tc,f-objstrip,tmp/$T.o)
|
||||
$(call tc,objdump) -b elf32-i386 -m i8086 -M intel -dr -j .text.LzmaDecode --no-show -w tmp/$T.o | $(RTRIM) | perl -pe 's/DWORD/dword/g; s/WORD/word/g; s/BYTE/byte/g; s/PTR/ptr/g;' > $@
|
||||
|
||||
.PRECIOUS: lzma_d_cf.i lzma_d_cs.i
|
||||
.PRECIOUS: tmp/lzma_d_cf.i tmp/lzma_d_cs.i
|
||||
|
||||
lzma_d_cf.% : PP_FLAGS = -DFAST
|
||||
lzma_d_cs.% : PP_FLAGS = -DSMALL
|
||||
lzma_d_cf.% : LABEL_PREFIX = .Lf
|
||||
lzma_d_cs.% : LABEL_PREFIX = .Ls
|
||||
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // cc_test
|
||||
# ************************************************************************/
|
||||
|
||||
CC_TEST_DEPS = $(MAKEFILE_LIST) $(TMP_DEPS)
|
||||
WINEENV = env
|
||||
WINEENV = env -i DISPLAY='$(DISPLAY)' HOME='$(HOME)' PATH='$(PATH)' USER='$(USER)'
|
||||
|
||||
winedir_s = $(shell winepath -s z:$(realpath $1))
|
||||
winedir_w = $(shell winepath -w $(realpath $1))
|
||||
|
||||
# work around limitations of wine's cmd.exe
|
||||
define mkbat
|
||||
echo -E '@set PATH=$3;%PATH%' > $1
|
||||
|
@ -120,19 +58,76 @@ define mkbat
|
|||
echo -e '@shift\n@shift\n@shift\n@shift\n@shift' >> $1
|
||||
echo -e '@shift\n@shift\n@shift\n@shift' >> $1
|
||||
echo -E '$2 %a% %b% %1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1
|
||||
unix2dos -q $1
|
||||
$(UNIX2DOS) $1
|
||||
endef
|
||||
|
||||
TMP_DEPS = tmp/.tmp-stamp tmp/bcc.bat tmp/cl.bat tmp/dmc.bat
|
||||
|
||||
tmp/bcc.bat: tmp/.tmp-stamp $(MAKEFILE_LIST)
|
||||
@$(call mkbat,$@,bcc.exe,$(BC502WINDIR)\bin,,)
|
||||
@$(call mkbat,$@,bcc.exe,$(call winedir_w,$(BC502DIR)/bin))
|
||||
tmp/cl.bat: tmp/.tmp-stamp $(MAKEFILE_LIST)
|
||||
@$(call mkbat,$@,cl.exe,$(VC152WINDIR)\bin,$(VC152WINDIR)\include,$(VC152WINDIR)\lib)
|
||||
@$(call mkbat,$@,cl.exe,$(call winedir_w,$(VC152DIR)/bin),$(call winedir_w,$(VC152DIR)/include),$(call winedir_w,$(VC152DIR)/lib))
|
||||
tmp/dmc.bat: tmp/.tmp-stamp $(MAKEFILE_LIST)
|
||||
@$(call mkbat,$@,dmc.exe,$(shell winepath -w $(DM849DIR)/bin),,)
|
||||
@$(call mkbat,$@,dmc.exe,$(call winedir_w,$(DM849DIR)/bin))
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // method-lzma
|
||||
# ************************************************************************/
|
||||
|
||||
lzma_d_c% : tc_list = method-lzma arch-i086 default
|
||||
lzma_d_c% : tc_bfdname =
|
||||
|
||||
# gcc
|
||||
c := tc.arch-i086.gcc
|
||||
$c += -MF /dev/null
|
||||
$c += -Wall -W
|
||||
$c += -I$(UPX_LZMADIR)
|
||||
$c += -I$(top_srcdir)/src
|
||||
|
||||
# Borland C/C++ 5.02
|
||||
ifneq ($(wildcard $(BC502DIR)/bin/bcc.exe),)
|
||||
c := tc.method-lzma.bcc
|
||||
$c = @$(WINEENV) wine cmd.exe /c tmp/bcc.bat
|
||||
$c += -ms
|
||||
$c += -O1 -1
|
||||
$c += -w
|
||||
$c += -D__INT_MAX__=32767
|
||||
$c += -I$(subst \,/,$(call winedir_w,$(UPX_LZMADIR)/C/7zip/Compress/LZMA_C))
|
||||
$c += -I$(top_srcdir)/src
|
||||
endif
|
||||
|
||||
# Digital Mars C/C++ 8.49
|
||||
# http://www.digitalmars.com/download/freecompiler.html
|
||||
ifneq ($(wildcard $(DM849DIR)/bin/dmc.exe),)
|
||||
c := tc.method-lzma.dmc
|
||||
$c = @$(WINEENV) CFLAGS='$(DMC)' wine cmd.exe /c tmp/dmc.bat
|
||||
$c += -ms -R
|
||||
$c += -NS
|
||||
$c += -w- -w7 -r
|
||||
DMC := -o -0
|
||||
DMC += -D__INT_MAX__=32767
|
||||
DMC += -I$(call winedir_w,$(UPX_LZMADIR))
|
||||
DMC += -I$(call winedir_w,$(top_srcdir)/src)
|
||||
endif
|
||||
|
||||
# Visual C/C++ 1.52 (8.00c)
|
||||
ifneq ($(wildcard $(VC152DIR)/bin/cl.exe),)
|
||||
c := tc.method-lzma.cl
|
||||
$c = @$(WINEENV) CL='$(CL)' wine cmd.exe /c tmp/cl.bat
|
||||
$c += -AS -Gd
|
||||
$c += -Gy
|
||||
$c += -O2 -Gf -Gs -G0
|
||||
$c += -W4
|
||||
CL := -nologo
|
||||
CL += -D__INT_MAX__=32767
|
||||
CL += -I$(call winedir_s,$(UPX_LZMADIR))
|
||||
CL += -I$(call winedir_s,$(top_srcdir)/src)
|
||||
endif
|
||||
|
||||
# Open Watcom C/C++ 1.6
|
||||
# http://openwatcom.com/
|
||||
ifneq ($(wildcard $(WATCOM)/binl/.),)
|
||||
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||
c := tc.method-lzma.wcl
|
||||
$c = PATH='$(WATCOM)/binl:$(PATH)' $(WATCOM)/binl/wcl -zq -bt=dos
|
||||
$c += -ms -ecc
|
||||
|
@ -144,103 +139,148 @@ $c += -I$(UPX_LZMADIR)
|
|||
$c += -I$(top_srcdir)/src
|
||||
endif
|
||||
|
||||
# Borland C/C++ 5.02
|
||||
ifneq ($(wildcard $(BC502DIR)/bin/.),)
|
||||
c := tc.method-lzma.bcc
|
||||
$c = @$(WINEENV) wine cmd.exe /c tmp/bcc.bat
|
||||
$c += -ms
|
||||
$c += -O1 -1
|
||||
$c += -w
|
||||
$c += -D__INT_MAX__=32767
|
||||
##$c += -I$(subst \,/,$(shell winepath -s z:$(realpath $(UPX_LZMADIR))))
|
||||
$c += -I$(subst \,/,$(shell winepath -s z:$(realpath $(UPX_LZMADIR)/C/7zip/Compress/LZMA_C)))
|
||||
$c += -I$(top_srcdir)/src
|
||||
lzma_d_c%.S : lzma_d_c%.i cleanasm.py $(MAKEFILE_LIST)
|
||||
python cleanasm.py --label-prefix=$(LABEL_PREFIX) $< $@
|
||||
|
||||
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
|
||||
##ifneq ($(wildcard $(DM849DIR)/bin/dmc.exe),)
|
||||
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||
ifneq ($(wildcard /usr/bin/wine),)
|
||||
|
||||
lzma_d_c%.i : tmp/lzma_d_c%.i
|
||||
cp $< $@
|
||||
|
||||
tmp/lzma_d_c%.i : lzma_d_c.c wdis2gas.py $(MAKEFILE_LIST) $(TMP_DEPS)
|
||||
rm -f tmp/$T*.i tmp/$T*.o tmp/$T*.obj tmp/$T*.S
|
||||
# compile
|
||||
ifneq ($(wildcard $(BC502DIR)/bin/bcc.exe),)
|
||||
## $(call tc,bcc) $(PP_FLAGS) -c -otmp/$T_bc.obj $<
|
||||
## $(call tc,wdis) tmp/$T_bc.obj | $(RTRIM) > tmp/$T_bc.obj.disasm
|
||||
endif
|
||||
ifneq ($(wildcard $(DM849DIR)/bin/dmc.exe),)
|
||||
$(call tc,dmc) $(PP_FLAGS) -c -otmp/$T_dm.obj $<
|
||||
$(call tc,wdis) tmp/$T_dm.obj | $(RTRIM) > tmp/$T_dm.obj.disasm
|
||||
endif
|
||||
ifneq ($(wildcard $(VC152DIR)/bin/cl.exe),)
|
||||
$(call tc,cl) $(PP_FLAGS) -c -Fotmp/$T_vc.obj $<
|
||||
$(call tc,wdis) tmp/$T_vc.obj | $(RTRIM) > tmp/$T_vc.obj.disasm
|
||||
endif
|
||||
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||
$(call tc,wcl) $(PP_FLAGS) -c -fo=tmp/$T_wc.obj $<
|
||||
$(call tc,wdis) tmp/$T_wc.obj | $(RTRIM) > tmp/$T_wc.obj.disasm
|
||||
endif
|
||||
# convert
|
||||
python wdis2gas.py tmp/$T_wc.obj.disasm tmp/$T.S
|
||||
$(call tc,gcc) -c -o tmp/$T.o tmp/$T.S
|
||||
$(call tc,f-objstrip,tmp/$T.o)
|
||||
$(call tc,objdump) -b elf32-i386 -m i8086 -M intel -dr -j .text.LzmaDecode --no-show -w tmp/$T.o | $(RTRIM) | perl -pe 's/DWORD/dword/g; s/WORD/word/g; s/BYTE/byte/g; s/PTR/ptr/g;' > $@
|
||||
|
||||
.PRECIOUS: lzma_d_cf.i lzma_d_cs.i
|
||||
.PRECIOUS: tmp/lzma_d_cf.i tmp/lzma_d_cs.i
|
||||
|
||||
endif
|
||||
endif
|
||||
##endif
|
||||
endif
|
||||
|
||||
# Visual C/C++ 1.52 (8.00c)
|
||||
ifneq ($(wildcard $(VC152DIR)/bin/.),)
|
||||
c := tc.method-lzma.cl
|
||||
$c = @$(WINEENV) CL='$(CL)' wine cmd.exe /c tmp/cl.bat
|
||||
$c += -AS -Gd
|
||||
$c += -Gy
|
||||
$c += -O2 -Gf -Gs -G0
|
||||
$c += -W4
|
||||
CL := -nologo
|
||||
CL += -D__INT_MAX__=32767
|
||||
CL += -I$(shell winepath -s z:$(realpath $(UPX_LZMADIR)))
|
||||
CL += -I$(shell winepath -s z:$(realpath $(top_srcdir)/src))
|
||||
endif
|
||||
lzma_d_cf.% : PP_FLAGS = -DFAST
|
||||
lzma_d_cs.% : PP_FLAGS = -DSMALL
|
||||
lzma_d_cf.% : LABEL_PREFIX = .Lf
|
||||
lzma_d_cs.% : LABEL_PREFIX = .Ls
|
||||
|
||||
|
||||
ifneq ($(wildcard $(WATCOM)/binl/.),)
|
||||
cc_test_wc : tc_list = method-lzma arch-i086 default
|
||||
cc_test_wc: cc_test.c $(CC_TEST_DEPS)
|
||||
$(call tc,wcl) $(PP_FLAGS) -c -fo=tmp/$T.obj $<
|
||||
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||
## cat tmp/$T.obj.disasm
|
||||
endif
|
||||
# /***********************************************************************
|
||||
# // cc_test
|
||||
# ************************************************************************/
|
||||
|
||||
ifneq ($(wildcard $(BC502DIR)/bin/.),)
|
||||
ifneq ($(wildcard $(WATCOM)/binl/wdis),)
|
||||
|
||||
CC_TEST_DEPS = $(MAKEFILE_LIST) $(TMP_DEPS)
|
||||
|
||||
ifneq ($(wildcard $(BC502DIR)/bin/bcc.exe),)
|
||||
cc_test_bc : tc_list = method-lzma arch-i086 default
|
||||
cc_test_bc: cc_test.c $(CC_TEST_DEPS)
|
||||
$(call tc,bcc) $(PP_FLAGS) -c -otmp/$T.obj $<
|
||||
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||
## cat tmp/$T.obj.disasm
|
||||
cc_test_all: cc_test_bc
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard $(DM849DIR)/bin/.),)
|
||||
ifneq ($(wildcard $(DM849DIR)/bin/dmc.exe),)
|
||||
cc_test_dm : tc_list = method-lzma arch-i086 default
|
||||
cc_test_dm: cc_test.c $(CC_TEST_DEPS)
|
||||
$(call tc,dmc) $(PP_FLAGS) -c -otmp/$T.obj $<
|
||||
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||
## cat tmp/$T.obj.disasm
|
||||
cc_test_all: cc_test_dm
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard $(VC152DIR)/bin/.),)
|
||||
ifneq ($(wildcard $(VC152DIR)/bin/cl.exe),)
|
||||
cc_test_vc : tc_list = method-lzma arch-i086 default
|
||||
cc_test_vc: cc_test.c $(CC_TEST_DEPS)
|
||||
$(call tc,cl) $(PP_FLAGS) -c -Fotmp/$T.obj $<
|
||||
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||
## cat tmp/$T.obj.disasm
|
||||
cc_test_all: cc_test_vc
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||
cc_test_wc : tc_list = method-lzma arch-i086 default
|
||||
cc_test_wc: cc_test.c $(CC_TEST_DEPS)
|
||||
$(call tc,wcl) $(PP_FLAGS) -c -fo=tmp/$T.obj $<
|
||||
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||
cc_test_all: cc_test_wc
|
||||
endif
|
||||
|
||||
.PHONY: cc_test_all
|
||||
|
||||
endif # wdis
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // l_test
|
||||
# ************************************************************************/
|
||||
|
||||
L_TEST_DEPS = lzma_d_c.c $(MAKEFILE_LIST) $(TMP_DEPS)
|
||||
DOSBOX = /usr/bin/time -v dosbox -exit
|
||||
DOSBOX = dosbox
|
||||
|
||||
tmp/l_t_gcc_i386.% : tc_list = arch-i086 default
|
||||
tmp/l_t_gcc_i386.out: l_test.c $(L_TEST_DEPS)
|
||||
tmp/l_test_gcc_i386.% : tc_list = arch-i086 default
|
||||
tmp/l_test_gcc_i386.out: l_test.c $(L_TEST_DEPS)
|
||||
$(call tc,gcc) -O0 -g -o $@ $<
|
||||
./$@
|
||||
l_test_all: tmp/l_test_gcc_i386.out
|
||||
|
||||
tmp/l_t_bc.% : tc_list = method-lzma arch-i086 default
|
||||
tmp/l_t_bc.exe: l_test.c $(L_TEST_DEPS)
|
||||
ifneq ($(wildcard $(BC502DIR)/bin/bcc.exe),)
|
||||
tmp/l_test_bc.% : tc_list = method-lzma arch-i086 default
|
||||
tmp/l_test_bc.exe: l_test.c $(L_TEST_DEPS)
|
||||
$(call tc,bcc) -o$(subst /,\\,$@) $<
|
||||
@rm -f l_test.o l_test.obj
|
||||
$(DOSBOX) $@
|
||||
cp -p $@ tmp/test.exe && $(DOSBOX) tmp/test.exe
|
||||
##l_test_all: tmp/l_test_bc.exe
|
||||
endif
|
||||
|
||||
tmp/l_t_dm.% : tc_list = method-lzma arch-i086 default
|
||||
tmp/l_t_dm.exe: l_test.c $(L_TEST_DEPS)
|
||||
ifneq ($(wildcard $(DM849DIR)/bin/dmc.exe),)
|
||||
tmp/l_test_dm.% : tc_list = method-lzma arch-i086 default
|
||||
tmp/l_test_dm.exe: l_test.c $(L_TEST_DEPS)
|
||||
$(call tc,dmc) -ml -o$(subst /,\\,$@) $<
|
||||
@rm -f l_test.o l_test.obj
|
||||
$(DOSBOX) $@
|
||||
cp -p $@ tmp/test.exe && $(DOSBOX) tmp/test.exe
|
||||
l_test_all: tmp/l_test_dm.exe
|
||||
endif
|
||||
|
||||
tmp/l_t_wc.% : tc_list = method-lzma arch-i086 default
|
||||
tmp/l_t_wc.exe: l_test.c $(L_TEST_DEPS)
|
||||
$(call tc,wcl) -fe=$@ $<
|
||||
@rm -f l_test.o l_test.obj
|
||||
$(DOSBOX) $@
|
||||
|
||||
tmp/l_t_vc.% : tc_list = method-lzma arch-i086 default
|
||||
tmp/l_t_vc.exe: l_test.c $(L_TEST_DEPS)
|
||||
ifneq ($(wildcard $(VC152DIR)/bin/cl.exe),)
|
||||
tmp/l_test_vc.% : tc_list = method-lzma arch-i086 default
|
||||
tmp/l_test_vc.exe: l_test.c $(L_TEST_DEPS)
|
||||
$(call tc,cl) -Fe$(subst /,\\,$@) $<
|
||||
@rm -f l_test.o l_test.obj
|
||||
$(DOSBOX) $@
|
||||
cp -p $@ tmp/test.exe && $(DOSBOX) tmp/test.exe
|
||||
l_test_all: tmp/l_test_vc.exe
|
||||
endif
|
||||
|
||||
.PHONY: tmp/l_t_gcc_i386.out tmp/l_t_bc.exe tmp/l_t_dm.exe tmp/l_t_wc.exe tmp/l_t_vc.exe
|
||||
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||
tmp/l_test_wc.% : tc_list = method-lzma arch-i086 default
|
||||
tmp/l_test_wc.exe: l_test.c $(L_TEST_DEPS)
|
||||
$(call tc,wcl) -fe=$@ $<
|
||||
@rm -f l_test.o l_test.obj
|
||||
cp -p $@ tmp/test.exe && $(DOSBOX) tmp/test.exe
|
||||
l_test_all: tmp/l_test_wc.exe
|
||||
endif
|
||||
|
||||
.PHONY: l_test_all
|
||||
|
||||
|
|
|
@ -41,8 +41,12 @@ class opts:
|
|||
|
||||
|
||||
inline_map = {
|
||||
"__aNNalshl": "M_aNNalshl",
|
||||
"__aNahdiff": "M_aNahdiff",
|
||||
"__aNNalshl": ["M_aNNalshl", 1],
|
||||
"__aNahdiff": ["M_aNahdiff", 1],
|
||||
"__PIA": ["M_PIA", 999],
|
||||
"__PTS": ["M_PTS", 999],
|
||||
"__PTC": ["M_PTC", 999],
|
||||
"__U4M": ["M_U4M", 999],
|
||||
}
|
||||
|
||||
|
||||
|
@ -63,6 +67,7 @@ def main(argv):
|
|||
else: assert 0, ("getopt problem:", opt, optarg, xopts, args)
|
||||
|
||||
#
|
||||
assert opts.label_prefix
|
||||
assert len(args) == 2
|
||||
ifile = args[0]
|
||||
ofile = args[1]
|
||||
|
@ -100,30 +105,54 @@ def main(argv):
|
|||
return k
|
||||
|
||||
olines = []
|
||||
def omatch(pos, m):
|
||||
i = 0
|
||||
dpos = []
|
||||
while i < len(m):
|
||||
def omatch(pos, mlen, m, debug=0):
|
||||
assert len(m) >= abs(mlen)
|
||||
def sgn(x):
|
||||
if x < 0: return -1
|
||||
if x > 0: return 1
|
||||
return 0
|
||||
def match(a, b):
|
||||
if b is None:
|
||||
return False
|
||||
if "^" in a or "*" in a:
|
||||
# regexp
|
||||
return re.search(a, b.lower())
|
||||
else:
|
||||
return a.lower() == b.lower()
|
||||
mpos = []
|
||||
while len(mpos) != abs(mlen):
|
||||
if pos < 0 or pos >= len(olines):
|
||||
return []
|
||||
dpos.append(pos)
|
||||
o = olines[pos][1:3]
|
||||
o = olines[pos]
|
||||
if o[1] != "*DEL*":
|
||||
mpos.append(pos)
|
||||
pos += sgn(mlen)
|
||||
if mlen < 0:
|
||||
mpos.reverse()
|
||||
if debug and 1: print mlen, m, [olines[x] for x in mpos]
|
||||
dpos = []
|
||||
i = -abs(mlen)
|
||||
while i < 0:
|
||||
pos = mpos[i]
|
||||
o = olines[pos]
|
||||
assert o[1] != "*DEL*"
|
||||
assert len(m[i]) == 2, (i, m)
|
||||
if o[0].lower() != m[i][0].lower():
|
||||
m0 = match(m[i][0], o[1])
|
||||
m1 = match(m[i][1], o[2])
|
||||
if not m0 or not m1:
|
||||
return []
|
||||
if o[1].lower() != m[i][1].lower():
|
||||
return []
|
||||
pos += 1
|
||||
dpos.append([pos, m0, m1])
|
||||
i += 1
|
||||
assert len(dpos) == abs(mlen)
|
||||
return dpos
|
||||
def orewrite_inst(i, inst, args, dpos):
|
||||
for pos in dpos:
|
||||
for pos, m0, m1 in dpos:
|
||||
olines[pos][1] = "*DEL*"
|
||||
olines[i][1] = inst
|
||||
olines[i][2] = args
|
||||
olines[i][3] = None
|
||||
def orewrite_call(i, k, v, dpos):
|
||||
for pos in dpos:
|
||||
for pos, m0, m1 in dpos:
|
||||
olines[pos][1] = "*DEL*"
|
||||
v[2] = k
|
||||
olines[i][2] = None
|
||||
|
@ -166,11 +195,16 @@ def main(argv):
|
|||
if opts.call_rewrite and inst in ["call"]:
|
||||
k, v = parse_label(inst, args)
|
||||
if v[:2] == [1, 2]: # external 2-byte
|
||||
if k == "__LMUL":
|
||||
if k in ["__LMUL", "__U4M",]:
|
||||
s = [
|
||||
["mov", "bx,word ptr [bx]"],
|
||||
["xor", "cx,cx"],
|
||||
]
|
||||
dpos = omatch(i - 1, s[-1:])
|
||||
dpos = omatch(i-1, -2, s, debug=0)
|
||||
if 0 and dpos:
|
||||
orewrite_inst(i, "M_LMUL_dxax_00bx_ptr", "", dpos)
|
||||
continue
|
||||
dpos = omatch(i-1, -1, s)
|
||||
if dpos:
|
||||
orewrite_inst(i, "M_LMUL_dxax_00bx", "", dpos)
|
||||
continue
|
||||
|
@ -181,37 +215,93 @@ def main(argv):
|
|||
["push", "word ptr [bp-66]"],
|
||||
["push", "word ptr [bp-68]"],
|
||||
]
|
||||
dpos = omatch(i - 4, s[-4:])
|
||||
dpos = omatch(i-1, -4, s)
|
||||
if dpos:
|
||||
orewrite_inst(i, "*DEL*", "", dpos)
|
||||
continue
|
||||
if k == "__PIA":
|
||||
s = [
|
||||
["mov", "bx,0x1"],
|
||||
["xor", "cx,cx"],
|
||||
]
|
||||
dpos = omatch(i-1, -2, s)
|
||||
if dpos:
|
||||
orewrite_inst(i, "M_PIA1", "", dpos)
|
||||
continue
|
||||
if k == "__PTC":
|
||||
s = [
|
||||
["jne", "(.*)"],
|
||||
]
|
||||
dpos = omatch(i+1, 1, s)
|
||||
if dpos:
|
||||
olines[i][1] = "M_PTC_JNE"
|
||||
k, v = parse_label("jne", dpos[0][2].group(1))
|
||||
orewrite_call(i, k, v, dpos)
|
||||
continue
|
||||
if opts.loop_rewrite and inst in ["loop"]:
|
||||
s = [
|
||||
["mov", "cx,0xb"],
|
||||
["mov", r"^c[lx],0xb$"],
|
||||
["shr", "dx,1"],
|
||||
["rcr", "ax,1"],
|
||||
]
|
||||
dpos = omatch(i - 3, s[-3:])
|
||||
dpos = omatch(i-1, -3, s)
|
||||
if dpos:
|
||||
orewrite_inst(i, "M_shrd_11", "", dpos)
|
||||
continue
|
||||
s = [
|
||||
["mov", "cl,0x8"],
|
||||
["mov", r"^c[lx],0x8$"],
|
||||
["shl", "ax,1"],
|
||||
["rcl", "dx,1"],
|
||||
]
|
||||
dpos = omatch(i - 3, s[-3:])
|
||||
dpos = omatch(i-1, -3, s)
|
||||
if dpos:
|
||||
orewrite_inst(i, "M_shld_8", "", dpos)
|
||||
continue
|
||||
s = [
|
||||
["mov", "cx,0x8"],
|
||||
["shl", "ax,1"],
|
||||
["rcl", "dx,1"],
|
||||
s1 = [
|
||||
["mov", r"^c[lx],0x8$"],
|
||||
["shl", r"^word ptr \[bp([+-]\d+)\],1$"],
|
||||
["rcl", r"^word ptr \[bp([+-]\d+)\],1$"],
|
||||
]
|
||||
dpos = omatch(i - 3, s[-3:])
|
||||
if dpos:
|
||||
orewrite_inst(i, "M_shld_8", "", dpos)
|
||||
s2 = [
|
||||
["mov", r"^dx,word ptr"],
|
||||
["mov", r"^ax,word ptr"],
|
||||
]
|
||||
s3 = [
|
||||
["mov", r"^ax,word ptr"],
|
||||
["mov", r"^dx,word ptr"],
|
||||
]
|
||||
dpos1 = omatch(i-1, -3, s1)
|
||||
dpos2 = omatch(i+1, 2, s2)
|
||||
dpos3 = omatch(i+1, 2, s3)
|
||||
if dpos1 and (dpos2 or dos3):
|
||||
bp_dx, bp_ax = dpos1[-1][2].group(1), dpos1[-2][2].group(1)
|
||||
m = "M_shld_8_bp %s %s" % (bp_dx, bp_ax)
|
||||
orewrite_inst(i, m, "", dpos1)
|
||||
continue
|
||||
s1 = [
|
||||
["mov", r"^word ptr \[bp([+-]\d+)\],si$"],
|
||||
["mov", r"^word ptr \[bp([+-]\d+)\],di$"],
|
||||
["mov", r"^c[lx],0xb$"],
|
||||
["shr", r"^word ptr \[bp([+-]\d+)\],1$"],
|
||||
["rcr", r"^word ptr \[bp([+-]\d+)\],1$"],
|
||||
]
|
||||
s2 = [
|
||||
["mov", r"^bx,word ptr"],
|
||||
["mov", r"^bx,word ptr"],
|
||||
["mov", r"^ax,word ptr \[bp([+-]\d+)\]$"],
|
||||
["mov", r"^dx,word ptr \[bp([+-]\d+)\]$"],
|
||||
]
|
||||
dpos1 = omatch(i-1, -5, s1)
|
||||
dpos2 = omatch(i+1, 4, s2)
|
||||
if dpos1 and dpos2:
|
||||
bp_dx, bp_ax = dpos1[-2][2].group(1), dpos1[-1][2].group(1)
|
||||
bp_di, bp_si = dpos1[-4][2].group(1), dpos1[-5][2].group(1)
|
||||
assert bp_dx == dpos2[-1][2].group(1)
|
||||
assert bp_ax == dpos2[-2][2].group(1)
|
||||
assert bp_dx == bp_di
|
||||
assert bp_ax == bp_si
|
||||
m = "M_shrd_11_disi_bp %s %s" % (bp_dx, bp_ax)
|
||||
orewrite_inst(i, m, "", dpos1 + dpos2[-2:])
|
||||
continue
|
||||
#
|
||||
if inst in [
|
||||
|
@ -241,11 +331,11 @@ def main(argv):
|
|||
if opts.auto_inline and inst == "call":
|
||||
v = labels[args_label]
|
||||
if v[:2] == [1, 2]: # external 2-byte
|
||||
if v[3] == 1: # only one call
|
||||
x = inline_map.get(v[2])
|
||||
x = inline_map.get(v[2])
|
||||
if x and v[3] <= x[1]: # max. number of calls
|
||||
##print "inline", v, x
|
||||
if x:
|
||||
olines[i][1] = x
|
||||
olines[i][1] = x[0]
|
||||
olines[i][2] = "/* inlined */"
|
||||
olines[i][2] = ""
|
||||
olines[i][3] = None
|
||||
|
|
|
@ -52,16 +52,29 @@
|
|||
// umul32: dx:ax = dx:ax * 00:bx
|
||||
.macro M_LMUL_dxax_00bx
|
||||
// mult high-word
|
||||
mov cx, ax // cx: save ax
|
||||
mov cx, ax // save ax
|
||||
mov ax, dx
|
||||
mul bx
|
||||
xchg ax, cx // save high-word result, get orig ax
|
||||
xchg ax, cx // save high-word result, get saved ax
|
||||
// mult low-word
|
||||
mul bx // dx:ax := ax * bx
|
||||
// add high-word
|
||||
add dx, cx // add high-word result
|
||||
.endm
|
||||
|
||||
// umul32: dx:ax = dx:ax * word ptr [bx]
|
||||
.macro M_LMUL_dxax_00bx_ptr
|
||||
// mult high-word
|
||||
mov cx, ax // save ax
|
||||
mov ax, dx
|
||||
mul word ptr [bx]
|
||||
xchg ax, cx // save high-word result, get saved ax
|
||||
// mult low-word
|
||||
mul word ptr [bx]
|
||||
// add high-word
|
||||
add dx, cx // add high-word result
|
||||
.endm
|
||||
|
||||
|
||||
// umul32: dx:ax = ax:cx * 00:bx
|
||||
.macro M_LMUL_axcx_00bx
|
||||
|
@ -81,13 +94,20 @@
|
|||
mov dl, ah
|
||||
mov ah, al
|
||||
xor al, al
|
||||
//xor cx, cx // FIXME - do we need this ?
|
||||
.endm
|
||||
|
||||
.macro M_shld_8_bp h l
|
||||
mov dx, word ptr[bp+h]
|
||||
mov ax, word ptr[bp+l]
|
||||
M_shld_8
|
||||
mov word ptr[bp+h], dx
|
||||
mov word ptr[bp+l], ax
|
||||
.endm
|
||||
|
||||
|
||||
// shld: dx:ax >>= 11
|
||||
.macro M_shrd_11
|
||||
#if 1
|
||||
#if 0
|
||||
mov al, ah
|
||||
mov ah, dl
|
||||
mov dl, dh
|
||||
|
@ -99,33 +119,69 @@
|
|||
shr dx
|
||||
rcr ax
|
||||
#else
|
||||
mov bx, dx
|
||||
// WARNING: this trashes "bx" !
|
||||
mov cl, 11
|
||||
shr dx, cl
|
||||
mov bx, dx // save dx
|
||||
shr ax, cl
|
||||
mov cl, 5
|
||||
shr dx, cl
|
||||
mov cl, 5 // cl = 16 - cl
|
||||
shl bx, cl
|
||||
or ax, bx
|
||||
#endif
|
||||
//xor cx, cx // FIXME - do we need this ?
|
||||
.endm
|
||||
|
||||
.macro M_shrd_11_bp h l
|
||||
mov dx, word ptr[bp+h]
|
||||
mov ax, word ptr[bp+l]
|
||||
M_shrd_11
|
||||
mov word ptr[bp+h], dx
|
||||
mov word ptr[bp+l], ax
|
||||
.endm
|
||||
|
||||
.macro M_shrd_11_disi_bp h l
|
||||
mov dx, di
|
||||
mov ax, si
|
||||
M_shrd_11
|
||||
mov word ptr[bp+h], dx
|
||||
mov word ptr[bp+l], ax
|
||||
.endm
|
||||
|
||||
|
||||
#if 0
|
||||
// shld: dx:ax <<= cl; trashes register "r1" (bx, di, si or bp)
|
||||
// REQUIRED: 0 <= cl < 32
|
||||
// FIXME - this does not work yet
|
||||
.macro M_shld r1
|
||||
local L1
|
||||
// shld: dx:ax <<= cl; trashes cl and register "r1" (bx, di, si or bp)
|
||||
// REQUIRED: 0 <= cl <= 15
|
||||
.macro M_shld_00_15 r1
|
||||
mov r1, ax // save ax
|
||||
shl dx, cl
|
||||
shl ax, cl
|
||||
neg cl
|
||||
and cl, 15 // the 8086 uses all eight bits of the shift count
|
||||
sub cl, 16
|
||||
neg cl // cl = 16 - cl
|
||||
shr r1, cl
|
||||
or dx, r1
|
||||
.endm
|
||||
#endif
|
||||
|
||||
// shld: dx:ax <<= cl; trashes cl
|
||||
// REQUIRED: 16 <= cl <= 32
|
||||
.macro M_shld_16_32
|
||||
sub cl, 16
|
||||
shr ax, cl
|
||||
mov dx, ax
|
||||
xor ax, ax
|
||||
.endm
|
||||
|
||||
// shld: dx:ax <<= cl; trashes cl and register "r1" (bx, di, si or bp)
|
||||
// REQUIRED: 0 <= cl <= 32
|
||||
.macro M_shld r1
|
||||
local L1, L2
|
||||
cmp cl, 16
|
||||
jaes L1
|
||||
// 0 <= cl <= 15
|
||||
M_shld_00_15 r1
|
||||
jmps L2
|
||||
L1:
|
||||
// 16 <= cl <= 32
|
||||
M_shld_16_32
|
||||
L2:
|
||||
.endm
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -134,6 +190,36 @@
|
|||
|
||||
section LZMA_DEC99
|
||||
|
||||
.macro M_PIA
|
||||
M_WCC_PIA
|
||||
.endm
|
||||
.macro M_PIA1
|
||||
#if 1
|
||||
local L1
|
||||
inc ax
|
||||
jnes L1
|
||||
//add dx, __AHINCR
|
||||
add dh, __AHINCR >> 8
|
||||
L1:
|
||||
#else
|
||||
add ax, 1
|
||||
sbb bl, bl
|
||||
and bl, __AHINCR >> 8
|
||||
add dh, bl
|
||||
#endif
|
||||
.endm
|
||||
.macro M_PTC
|
||||
M_WCC_PTC
|
||||
.endm
|
||||
.macro M_PTC_JNE l
|
||||
cmp ax, bx
|
||||
jnes l
|
||||
cmp dx, cx
|
||||
jnes l
|
||||
.endm
|
||||
.macro M_PTS
|
||||
.endm
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
//
|
||||
|
@ -145,7 +231,7 @@ section LZMA_DEC00
|
|||
|
||||
push ds
|
||||
mov bp, sp
|
||||
#if 1
|
||||
#if 0
|
||||
// DEBUG - check for enough stack
|
||||
lea bx, [bp + lzma_stack_adjust - 256]
|
||||
cmp bp, bx
|
||||
|
@ -229,5 +315,4 @@ section LZMA_DEC31
|
|||
mov es, ax
|
||||
|
||||
|
||||
|
||||
// vi:ts=4:et
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -139,7 +139,7 @@
|
|||
#define __AHINCR (1 << __AHSHIFT) /* 4096 */
|
||||
|
||||
|
||||
#if 0
|
||||
#if 1
|
||||
// huge pointer add: dx:ax = dx:ax + cx:bx
|
||||
.macro M_WCC_PIA
|
||||
add ax, bx
|
||||
|
@ -177,7 +177,7 @@
|
|||
#endif
|
||||
|
||||
|
||||
#if 0
|
||||
#if 1
|
||||
// huge pointer compare: set zero and carry flags: dx:ax cmp cx:bx
|
||||
.macro M_WCC_PTC
|
||||
// FIXME: should we normalize the pointers ???
|
||||
|
|
|
@ -111,7 +111,7 @@ def main(argv):
|
|||
olines.append(" call " + f)
|
||||
elif 1:
|
||||
s = m.group(3).strip()
|
||||
s = re.sub("L\$(\d+)", opts.label_prefix + "\g<1>", s)
|
||||
s = re.sub(r"L\$(\d+)", opts.label_prefix + r"\g<1>", s)
|
||||
olines.append(" " + s)
|
||||
else:
|
||||
s = re.split(r"\s+", m.group(1).strip())
|
||||
|
|
|
@ -45,26 +45,26 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||
40 N2E64K02 0000000b 00000000 00000000 00000290 2**0 CONTENTS, READONLY
|
||||
41 NRV2EEX9 00000004 00000000 00000000 0000029b 2**0 CONTENTS, READONLY
|
||||
42 LZMA_DEC99 00000000 00000000 00000000 0000029f 2**0 CONTENTS, READONLY
|
||||
43 LZMA_DEC00 00000043 00000000 00000000 0000029f 2**0 CONTENTS, RELOC, READONLY
|
||||
44 LZMA_DEC10 00001203 00000000 00000000 000002e2 2**0 CONTENTS, READONLY
|
||||
45 LZMA_DEC20 00001203 00000000 00000000 000014e5 2**0 CONTENTS, READONLY
|
||||
46 LZMA_DEC30 00000006 00000000 00000000 000026e8 2**0 CONTENTS, RELOC, READONLY
|
||||
47 LZMA_DEC31 00000007 00000000 00000000 000026ee 2**0 CONTENTS, RELOC, READONLY
|
||||
48 EXEMAIN5 00000001 00000000 00000000 000026f5 2**0 CONTENTS, READONLY
|
||||
49 EXEADJUS 00000007 00000000 00000000 000026f6 2**0 CONTENTS, READONLY
|
||||
50 EXENOADJ 00000002 00000000 00000000 000026fd 2**0 CONTENTS, READONLY
|
||||
51 EXERELO1 0000001e 00000000 00000000 000026ff 2**0 CONTENTS, RELOC, READONLY
|
||||
52 EXEREL9A 00000012 00000000 00000000 0000271d 2**0 CONTENTS, RELOC, READONLY
|
||||
53 EXERELO2 00000004 00000000 00000000 0000272f 2**0 CONTENTS, READONLY
|
||||
54 EXEREBIG 00000002 00000000 00000000 00002733 2**0 CONTENTS, RELOC, READONLY
|
||||
55 EXERELO3 00000002 00000000 00000000 00002735 2**0 CONTENTS, RELOC, READONLY
|
||||
56 EXEMAIN8 00000003 00000000 00000000 00002737 2**0 CONTENTS, READONLY
|
||||
57 DEVICEEND 00000013 00000000 00000000 0000273a 2**0 CONTENTS, READONLY
|
||||
58 EXESTACK 00000006 00000000 00000000 0000274d 2**0 CONTENTS, RELOC, READONLY
|
||||
59 EXESTASP 00000003 00000000 00000000 00002753 2**0 CONTENTS, RELOC, READONLY
|
||||
60 EXEJUMPF 00000005 00000000 00000000 00002756 2**0 CONTENTS, RELOC, READONLY
|
||||
61 EXERCSPO 00000004 00000000 00000000 0000275b 2**0 CONTENTS, RELOC, READONLY
|
||||
62 EXERETIP 00000006 00000000 00000000 0000275f 2**0 CONTENTS, RELOC, READONLY
|
||||
43 LZMA_DEC00 0000003b 00000000 00000000 0000029f 2**0 CONTENTS, RELOC, READONLY
|
||||
44 LZMA_DEC10 000011a4 00000000 00000000 000002da 2**0 CONTENTS, READONLY
|
||||
45 LZMA_DEC20 000011a4 00000000 00000000 0000147e 2**0 CONTENTS, READONLY
|
||||
46 LZMA_DEC30 00000006 00000000 00000000 00002622 2**0 CONTENTS, RELOC, READONLY
|
||||
47 LZMA_DEC31 00000007 00000000 00000000 00002628 2**0 CONTENTS, RELOC, READONLY
|
||||
48 EXEMAIN5 00000001 00000000 00000000 0000262f 2**0 CONTENTS, READONLY
|
||||
49 EXEADJUS 00000007 00000000 00000000 00002630 2**0 CONTENTS, READONLY
|
||||
50 EXENOADJ 00000002 00000000 00000000 00002637 2**0 CONTENTS, READONLY
|
||||
51 EXERELO1 0000001e 00000000 00000000 00002639 2**0 CONTENTS, RELOC, READONLY
|
||||
52 EXEREL9A 00000012 00000000 00000000 00002657 2**0 CONTENTS, RELOC, READONLY
|
||||
53 EXERELO2 00000004 00000000 00000000 00002669 2**0 CONTENTS, READONLY
|
||||
54 EXEREBIG 00000002 00000000 00000000 0000266d 2**0 CONTENTS, RELOC, READONLY
|
||||
55 EXERELO3 00000002 00000000 00000000 0000266f 2**0 CONTENTS, RELOC, READONLY
|
||||
56 EXEMAIN8 00000003 00000000 00000000 00002671 2**0 CONTENTS, READONLY
|
||||
57 DEVICEEND 00000013 00000000 00000000 00002674 2**0 CONTENTS, READONLY
|
||||
58 EXESTACK 00000006 00000000 00000000 00002687 2**0 CONTENTS, RELOC, READONLY
|
||||
59 EXESTASP 00000003 00000000 00000000 0000268d 2**0 CONTENTS, RELOC, READONLY
|
||||
60 EXEJUMPF 00000005 00000000 00000000 00002690 2**0 CONTENTS, RELOC, READONLY
|
||||
61 EXERCSPO 00000004 00000000 00000000 00002695 2**0 CONTENTS, RELOC, READONLY
|
||||
62 EXERETIP 00000006 00000000 00000000 00002699 2**0 CONTENTS, RELOC, READONLY
|
||||
SYMBOL TABLE:
|
||||
00000000 l d DEVICEENTRY 00000000 DEVICEENTRY
|
||||
00000000 l d EXEENTRY 00000000 EXEENTRY
|
||||
|
@ -255,15 +255,14 @@ OFFSET TYPE VALUE
|
|||
RELOCATION RECORDS FOR [LZMA_DEC00]:
|
||||
OFFSET TYPE VALUE
|
||||
00000005 R_386_16 lzma_stack_adjust
|
||||
0000000d R_386_16 lzma_stack_adjust
|
||||
00000015 R_386_16 lzma_u_len_hi
|
||||
00000019 R_386_16 lzma_u_len
|
||||
00000023 R_386_16 lzma_c_len_hi
|
||||
00000027 R_386_16 lzma_c_len
|
||||
00000033 R_386_16 lzma_properties_hi
|
||||
00000039 R_386_16 lzma_properties
|
||||
0000003e R_386_PC16 LZMA_DEC10
|
||||
00000041 R_386_PC16 LZMA_DEC30
|
||||
0000000d R_386_16 lzma_u_len_hi
|
||||
00000011 R_386_16 lzma_u_len
|
||||
0000001b R_386_16 lzma_c_len_hi
|
||||
0000001f R_386_16 lzma_c_len
|
||||
0000002b R_386_16 lzma_properties_hi
|
||||
00000031 R_386_16 lzma_properties
|
||||
00000036 R_386_PC16 LZMA_DEC10
|
||||
00000039 R_386_PC16 LZMA_DEC30
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_DEC30]:
|
||||
OFFSET TYPE VALUE
|
||||
|
|
Loading…
Reference in New Issue
Block a user