mirror of
https://github.com/upx/upx
synced 2025-09-28 19:06:07 +08:00
Minor dos/exe stub optimizations.
This commit is contained in:
parent
1377b54b9e
commit
ac457792b4
|
@ -154,7 +154,9 @@ void PackExe::buildLoader(const Filter *)
|
||||||
|
|
||||||
if (M_IS_LZMA(ph.method))
|
if (M_IS_LZMA(ph.method))
|
||||||
{
|
{
|
||||||
addLoader("LZMA_DEC00,LZMA_DEC10,LZMA_DEC99,LZMA_DEC30",
|
addLoader("LZMA_DEC00",
|
||||||
|
opt->small ? "LZMA_DEC10" : "LZMA_DEC20",
|
||||||
|
"LZMA_DEC30",
|
||||||
ph.u_len > 0xffff ? "LZMA_DEC31" : "",
|
ph.u_len > 0xffff ? "LZMA_DEC31" : "",
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -18,7 +18,11 @@ endif
|
||||||
vpath %.c $(top_srcdir)/src/stub/src/c
|
vpath %.c $(top_srcdir)/src/stub/src/c
|
||||||
|
|
||||||
STUBS =
|
STUBS =
|
||||||
|
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
|
||||||
|
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||||
STUBS += lzma_d_cf.S lzma_d_cs.S
|
STUBS += lzma_d_cf.S lzma_d_cs.S
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
default.targets = all
|
default.targets = all
|
||||||
ifeq ($(strip $(STUBS)),)
|
ifeq ($(strip $(STUBS)),)
|
||||||
|
@ -33,7 +37,7 @@ include $(top_srcdir)/src/stub/Makefile
|
||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
|
|
||||||
# enumerate the names of all environment variables
|
# enumerate the names of all environment variables
|
||||||
# FIXME: "origin" does not work for things like "export LC_ALL=C"
|
# FIXME: "origin" does not work for things like "export LC_ALL = C"
|
||||||
##__minienv_varlist = $(foreach v,$1,$(if $(findstring environment,$(origin $v)),$v))
|
##__minienv_varlist = $(foreach v,$1,$(if $(findstring environment,$(origin $v)),$v))
|
||||||
__minienv_varlist = $(foreach v,$1,$(if $($v),$v))
|
__minienv_varlist = $(foreach v,$1,$(if $($v),$v))
|
||||||
# enumerate the names of all environment variables
|
# enumerate the names of all environment variables
|
||||||
|
@ -134,7 +138,7 @@ CL += -I$(call winedir_s,$(top_srcdir)/src)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Open Watcom C/C++ 1.6
|
# Open Watcom C/C++ 1.6
|
||||||
# http://openwatcom.com/
|
# http://www.openwatcom.com/
|
||||||
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||||
c := tc.method-lzma.wcl
|
c := tc.method-lzma.wcl
|
||||||
$c = PATH='$(WATCOM)/binl:$(PATH)' $(WATCOM)/binl/wcl -zq -bt=dos
|
$c = PATH='$(WATCOM)/binl:$(PATH)' $(WATCOM)/binl/wcl -zq -bt=dos
|
||||||
|
@ -147,13 +151,12 @@ $c += -I$(UPX_LZMADIR)
|
||||||
$c += -I$(top_srcdir)/src
|
$c += -I$(top_srcdir)/src
|
||||||
endif
|
endif
|
||||||
|
|
||||||
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 $(UPX_LZMADIR)/C/7zip/.),)
|
||||||
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||||
|
|
||||||
lzma_d_c%.i : tmp/lzma_d_c%.i ; cp $< $@
|
lzma_d_c%.S : tmp/lzma_d_c%.i cleanasm.py $(MAKEFILE_LIST)
|
||||||
|
$(PYTHON) cleanasm.py --label-prefix=$(LABEL_PREFIX) $< $@
|
||||||
|
|
||||||
tmp/lzma_d_c%.i : lzma_d_c.c wdis2gas.py $(MAKEFILE_LIST) $(TMP_DEPS)
|
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
|
rm -f tmp/$T*.i tmp/$T*.o tmp/$T*.obj tmp/$T*.S
|
||||||
|
@ -180,8 +183,7 @@ endif
|
||||||
$(call tc,f-objstrip,tmp/$T.o)
|
$(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;' > $@
|
$(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_c%.i
|
.PRECIOUS: lzma_d_c%.i tmp/lzma_d_c%.i
|
||||||
.PRECIOUS: tmp/lzma_d_c%.i
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -42,16 +42,10 @@
|
||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
section LZMA_DEC99
|
|
||||||
.macro LZMA_DEC99_dummy
|
|
||||||
.endm
|
|
||||||
|
|
||||||
|
|
||||||
// init
|
// init
|
||||||
section LZMA_DEC00
|
section LZMA_DEC00
|
||||||
//.byte 0xcc
|
//.byte 0xcc
|
||||||
|
|
||||||
push ds
|
|
||||||
mov bp, sp
|
mov bp, sp
|
||||||
#if 0
|
#if 0
|
||||||
// DEBUG - check for enough stack
|
// DEBUG - check for enough stack
|
||||||
|
@ -91,26 +85,24 @@ section LZMA_DEC00
|
||||||
push ds // in [bp + 8]
|
push ds // in [bp + 8]
|
||||||
push si // [bp + 6]
|
push si // [bp + 6]
|
||||||
|
|
||||||
|
add bx, 4
|
||||||
|
push bx // &state __near [bp + 4]
|
||||||
|
|
||||||
// enter small memory model
|
// enter small memory model
|
||||||
|
push ds // save ds && dummy for call
|
||||||
push ss
|
push ss
|
||||||
pop ds
|
pop ds
|
||||||
|
|
||||||
add bx, 4
|
// fill properties
|
||||||
push bx // &state __near [bp + 4]
|
movw [bx], offset lzma_properties
|
||||||
mov ax, offset lzma_properties_hi
|
movw [bx+2], offset lzma_properties_hi
|
||||||
mov [bx + 2], ax
|
|
||||||
mov ax, offset lzma_properties
|
|
||||||
mov [bx], ax
|
|
||||||
|
|
||||||
call LZMA_DEC10
|
|
||||||
jmp LZMA_DEC30
|
|
||||||
|
|
||||||
ignore_reloc_overflow lzma_u_len
|
ignore_reloc_overflow lzma_u_len
|
||||||
ignore_reloc_overflow lzma_c_len
|
ignore_reloc_overflow lzma_c_len
|
||||||
ignore_reloc_overflow lzma_properties
|
ignore_reloc_overflow lzma_properties
|
||||||
|
|
||||||
|
|
||||||
//#define ret
|
#define ret
|
||||||
section LZMA_DEC10
|
section LZMA_DEC10
|
||||||
.arch i8086, nojumps
|
.arch i8086, nojumps
|
||||||
#define SMALL 1
|
#define SMALL 1
|
||||||
|
@ -119,18 +111,18 @@ section LZMA_DEC10
|
||||||
#undef SMALL
|
#undef SMALL
|
||||||
section LZMA_DEC20
|
section LZMA_DEC20
|
||||||
.arch i8086, nojumps
|
.arch i8086, nojumps
|
||||||
#define SMALL 1
|
#define FAST 1
|
||||||
//#define FAST 1
|
|
||||||
#include "lzma_m.h"
|
#include "lzma_m.h"
|
||||||
#include "lzma_d_cf.S"
|
#include "lzma_d_cf.S"
|
||||||
//#undef FAST
|
#undef FAST
|
||||||
#undef SMALL
|
|
||||||
.arch i8086, jumps
|
.arch i8086, jumps
|
||||||
#undef ret
|
#undef ret
|
||||||
|
|
||||||
|
|
||||||
// cleanup
|
// cleanup
|
||||||
section LZMA_DEC30
|
section LZMA_DEC30
|
||||||
|
pop ds
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
// clear dirty stack
|
// clear dirty stack
|
||||||
mov sp, bp
|
mov sp, bp
|
||||||
|
@ -141,7 +133,6 @@ section LZMA_DEC30
|
||||||
jnzs 1b
|
jnzs 1b
|
||||||
#endif
|
#endif
|
||||||
mov sp, bp
|
mov sp, bp
|
||||||
pop ds
|
|
||||||
mov di, offset lzma_u_len
|
mov di, offset lzma_u_len
|
||||||
|
|
||||||
ignore_reloc_overflow lzma_u_len
|
ignore_reloc_overflow lzma_u_len
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -69,28 +69,27 @@ Idx Name Size VMA LMA File off Algn Flags
|
||||||
64 NRV2EEX3 00000015 00000000 00000000 00000316 2**0 CONTENTS, RELOC, READONLY
|
64 NRV2EEX3 00000015 00000000 00000000 00000316 2**0 CONTENTS, RELOC, READONLY
|
||||||
65 N2E64K02 0000000b 00000000 00000000 0000032b 2**0 CONTENTS, READONLY
|
65 N2E64K02 0000000b 00000000 00000000 0000032b 2**0 CONTENTS, READONLY
|
||||||
66 NRV2EEX9 00000004 00000000 00000000 00000336 2**0 CONTENTS, READONLY
|
66 NRV2EEX9 00000004 00000000 00000000 00000336 2**0 CONTENTS, READONLY
|
||||||
67 LZMA_DEC99 00000000 00000000 00000000 0000033a 2**0 CONTENTS, READONLY
|
67 LZMA_DEC00 00000033 00000000 00000000 0000033a 2**0 CONTENTS, RELOC, READONLY
|
||||||
68 LZMA_DEC00 0000003b 00000000 00000000 0000033a 2**0 CONTENTS, RELOC, READONLY
|
68 ignore_reloc_overflow 00000008 00000000 00000000 0000036d 2**0 CONTENTS, RELOC, READONLY
|
||||||
69 ignore_reloc_overflow 00000008 00000000 00000000 00000375 2**0 CONTENTS, RELOC, READONLY
|
69 LZMA_DEC10 000011a3 00000000 00000000 00000375 2**0 CONTENTS, READONLY
|
||||||
70 LZMA_DEC10 000011a4 00000000 00000000 0000037d 2**0 CONTENTS, READONLY
|
70 LZMA_DEC20 0000123b 00000000 00000000 00001518 2**0 CONTENTS, READONLY
|
||||||
71 LZMA_DEC20 000011a4 00000000 00000000 00001521 2**0 CONTENTS, READONLY
|
71 LZMA_DEC30 00000012 00000000 00000000 00002753 2**0 CONTENTS, RELOC, READONLY
|
||||||
72 LZMA_DEC30 00000012 00000000 00000000 000026c5 2**0 CONTENTS, RELOC, READONLY
|
72 LZMA_DEC31 00000007 00000000 00000000 00002765 2**0 CONTENTS, RELOC, READONLY
|
||||||
73 LZMA_DEC31 00000007 00000000 00000000 000026d7 2**0 CONTENTS, RELOC, READONLY
|
73 EXEMAIN5 00000001 00000000 00000000 0000276c 2**0 CONTENTS, READONLY
|
||||||
74 EXEMAIN5 00000001 00000000 00000000 000026de 2**0 CONTENTS, READONLY
|
74 EXEADJUS 00000007 00000000 00000000 0000276d 2**0 CONTENTS, READONLY
|
||||||
75 EXEADJUS 00000007 00000000 00000000 000026df 2**0 CONTENTS, READONLY
|
75 EXENOADJ 00000002 00000000 00000000 00002774 2**0 CONTENTS, READONLY
|
||||||
76 EXENOADJ 00000002 00000000 00000000 000026e6 2**0 CONTENTS, READONLY
|
76 EXERELO1 0000001e 00000000 00000000 00002776 2**0 CONTENTS, RELOC, READONLY
|
||||||
77 EXERELO1 0000001e 00000000 00000000 000026e8 2**0 CONTENTS, RELOC, READONLY
|
77 EXEREL9A 00000012 00000000 00000000 00002794 2**0 CONTENTS, RELOC, READONLY
|
||||||
78 EXEREL9A 00000012 00000000 00000000 00002706 2**0 CONTENTS, RELOC, READONLY
|
78 EXERELO2 00000004 00000000 00000000 000027a6 2**0 CONTENTS, READONLY
|
||||||
79 EXERELO2 00000004 00000000 00000000 00002718 2**0 CONTENTS, READONLY
|
79 EXEREBIG 00000002 00000000 00000000 000027aa 2**0 CONTENTS, RELOC, READONLY
|
||||||
80 EXEREBIG 00000002 00000000 00000000 0000271c 2**0 CONTENTS, RELOC, READONLY
|
80 EXERELO3 00000002 00000000 00000000 000027ac 2**0 CONTENTS, RELOC, READONLY
|
||||||
81 EXERELO3 00000002 00000000 00000000 0000271e 2**0 CONTENTS, RELOC, READONLY
|
81 EXEMAIN8 00000003 00000000 00000000 000027ae 2**0 CONTENTS, READONLY
|
||||||
82 EXEMAIN8 00000003 00000000 00000000 00002720 2**0 CONTENTS, READONLY
|
82 DEVICEEND 00000013 00000000 00000000 000027b1 2**0 CONTENTS, READONLY
|
||||||
83 DEVICEEND 00000013 00000000 00000000 00002723 2**0 CONTENTS, READONLY
|
83 EXESTACK 00000006 00000000 00000000 000027c4 2**0 CONTENTS, RELOC, READONLY
|
||||||
84 EXESTACK 00000006 00000000 00000000 00002736 2**0 CONTENTS, RELOC, READONLY
|
84 EXESTASP 00000003 00000000 00000000 000027ca 2**0 CONTENTS, RELOC, READONLY
|
||||||
85 EXESTASP 00000003 00000000 00000000 0000273c 2**0 CONTENTS, RELOC, READONLY
|
85 EXEJUMPF 00000005 00000000 00000000 000027cd 2**0 CONTENTS, RELOC, READONLY
|
||||||
86 EXEJUMPF 00000005 00000000 00000000 0000273f 2**0 CONTENTS, RELOC, READONLY
|
86 EXERCSPO 00000004 00000000 00000000 000027d2 2**0 CONTENTS, RELOC, READONLY
|
||||||
87 EXERCSPO 00000004 00000000 00000000 00002744 2**0 CONTENTS, RELOC, READONLY
|
87 EXERETIP 00000006 00000000 00000000 000027d6 2**0 CONTENTS, RELOC, READONLY
|
||||||
88 EXERETIP 00000006 00000000 00000000 00002748 2**0 CONTENTS, RELOC, READONLY
|
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d DEVICEENTRY 00000000 DEVICEENTRY
|
00000000 l d DEVICEENTRY 00000000 DEVICEENTRY
|
||||||
00000000 l d COMPRESSED_LZMA_START 00000000 COMPRESSED_LZMA_START
|
00000000 l d COMPRESSED_LZMA_START 00000000 COMPRESSED_LZMA_START
|
||||||
|
@ -113,7 +112,6 @@ SYMBOL TABLE:
|
||||||
00000000 l d NRV2EEX3 00000000 NRV2EEX3
|
00000000 l d NRV2EEX3 00000000 NRV2EEX3
|
||||||
00000000 l d NRV2EEX9 00000000 NRV2EEX9
|
00000000 l d NRV2EEX9 00000000 NRV2EEX9
|
||||||
00000000 l d LZMA_DEC00 00000000 LZMA_DEC00
|
00000000 l d LZMA_DEC00 00000000 LZMA_DEC00
|
||||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
|
||||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||||
00000000 l d EXERELO1 00000000 EXERELO1
|
00000000 l d EXERELO1 00000000 EXERELO1
|
||||||
00000000 l d EXERELO2 00000000 EXERELO2
|
00000000 l d EXERELO2 00000000 EXERELO2
|
||||||
|
@ -164,8 +162,8 @@ SYMBOL TABLE:
|
||||||
00000000 l d N2EX8602 00000000 N2EX8602
|
00000000 l d N2EX8602 00000000 N2EX8602
|
||||||
00000000 l d N2E28602 00000000 N2E28602
|
00000000 l d N2E28602 00000000 N2E28602
|
||||||
00000000 l d N2E64K02 00000000 N2E64K02
|
00000000 l d N2E64K02 00000000 N2E64K02
|
||||||
00000000 l d LZMA_DEC99 00000000 LZMA_DEC99
|
|
||||||
00000000 l d ignore_reloc_overflow 00000000 ignore_reloc_overflow
|
00000000 l d ignore_reloc_overflow 00000000 ignore_reloc_overflow
|
||||||
|
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||||
00000000 l d LZMA_DEC31 00000000 LZMA_DEC31
|
00000000 l d LZMA_DEC31 00000000 LZMA_DEC31
|
||||||
00000000 l d EXEMAIN5 00000000 EXEMAIN5
|
00000000 l d EXEMAIN5 00000000 EXEMAIN5
|
||||||
|
@ -198,8 +196,8 @@ SYMBOL TABLE:
|
||||||
00000000 *UND* 00000000 lzma_u_len
|
00000000 *UND* 00000000 lzma_u_len
|
||||||
00000000 *UND* 00000000 lzma_c_len_hi
|
00000000 *UND* 00000000 lzma_c_len_hi
|
||||||
00000000 *UND* 00000000 lzma_c_len
|
00000000 *UND* 00000000 lzma_c_len
|
||||||
00000000 *UND* 00000000 lzma_properties_hi
|
|
||||||
00000000 *UND* 00000000 lzma_properties
|
00000000 *UND* 00000000 lzma_properties
|
||||||
|
00000000 *UND* 00000000 lzma_properties_hi
|
||||||
00000000 *UND* 00000000 clear_dirty_stack_low
|
00000000 *UND* 00000000 clear_dirty_stack_low
|
||||||
00000000 *UND* 00000000 lzma_u_len_segment
|
00000000 *UND* 00000000 lzma_u_len_segment
|
||||||
00000000 *UND* 00000000 reloc_size
|
00000000 *UND* 00000000 reloc_size
|
||||||
|
@ -367,15 +365,13 @@ OFFSET TYPE VALUE
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [LZMA_DEC00]:
|
RELOCATION RECORDS FOR [LZMA_DEC00]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000005 R_386_16 lzma_stack_adjust
|
00000004 R_386_16 lzma_stack_adjust
|
||||||
0000000d R_386_16 lzma_u_len_hi
|
0000000c R_386_16 lzma_u_len_hi
|
||||||
00000011 R_386_16 lzma_u_len
|
00000010 R_386_16 lzma_u_len
|
||||||
0000001b R_386_16 lzma_c_len_hi
|
0000001a R_386_16 lzma_c_len_hi
|
||||||
0000001f R_386_16 lzma_c_len
|
0000001e R_386_16 lzma_c_len
|
||||||
0000002b R_386_16 lzma_properties_hi
|
0000002c R_386_16 lzma_properties
|
||||||
00000031 R_386_16 lzma_properties
|
00000031 R_386_16 lzma_properties_hi
|
||||||
00000036 R_386_PC16 LZMA_DEC10
|
|
||||||
00000039 R_386_PC16 LZMA_DEC30
|
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [ignore_reloc_overflow]:
|
RELOCATION RECORDS FOR [ignore_reloc_overflow]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
|
@ -390,7 +386,7 @@ OFFSET TYPE VALUE
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [LZMA_DEC30]:
|
RELOCATION RECORDS FOR [LZMA_DEC30]:
|
||||||
OFFSET TYPE VALUE
|
OFFSET TYPE VALUE
|
||||||
00000003 R_386_16 clear_dirty_stack_low
|
00000004 R_386_16 clear_dirty_stack_low
|
||||||
00000010 R_386_16 lzma_u_len
|
00000010 R_386_16 lzma_u_len
|
||||||
|
|
||||||
RELOCATION RECORDS FOR [LZMA_DEC31]:
|
RELOCATION RECORDS FOR [LZMA_DEC31]:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user