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))
|
||||
{
|
||||
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" : "",
|
||||
NULL
|
||||
);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -18,7 +18,11 @@ endif
|
|||
vpath %.c $(top_srcdir)/src/stub/src/c
|
||||
|
||||
STUBS =
|
||||
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
|
||||
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||
STUBS += lzma_d_cf.S lzma_d_cs.S
|
||||
endif
|
||||
endif
|
||||
|
||||
default.targets = all
|
||||
ifeq ($(strip $(STUBS)),)
|
||||
|
@ -33,7 +37,7 @@ include $(top_srcdir)/src/stub/Makefile
|
|||
# ************************************************************************/
|
||||
|
||||
# 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 $($v),$v))
|
||||
# enumerate the names of all environment variables
|
||||
|
@ -134,7 +138,7 @@ CL += -I$(call winedir_s,$(top_srcdir)/src)
|
|||
endif
|
||||
|
||||
# Open Watcom C/C++ 1.6
|
||||
# http://openwatcom.com/
|
||||
# http://www.openwatcom.com/
|
||||
ifneq ($(wildcard $(WATCOM)/binl/wcl),)
|
||||
c := tc.method-lzma.wcl
|
||||
$c = PATH='$(WATCOM)/binl:$(PATH)' $(WATCOM)/binl/wcl -zq -bt=dos
|
||||
|
@ -147,13 +151,12 @@ $c += -I$(UPX_LZMADIR)
|
|||
$c += -I$(top_srcdir)/src
|
||||
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 $(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)
|
||||
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,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: tmp/lzma_d_c%.i
|
||||
.PRECIOUS: lzma_d_c%.i tmp/lzma_d_c%.i
|
||||
|
||||
endif
|
||||
endif
|
||||
|
|
|
@ -42,16 +42,10 @@
|
|||
//
|
||||
**************************************************************************/
|
||||
|
||||
section LZMA_DEC99
|
||||
.macro LZMA_DEC99_dummy
|
||||
.endm
|
||||
|
||||
|
||||
// init
|
||||
section LZMA_DEC00
|
||||
//.byte 0xcc
|
||||
|
||||
push ds
|
||||
mov bp, sp
|
||||
#if 0
|
||||
// DEBUG - check for enough stack
|
||||
|
@ -91,26 +85,24 @@ section LZMA_DEC00
|
|||
push ds // in [bp + 8]
|
||||
push si // [bp + 6]
|
||||
|
||||
add bx, 4
|
||||
push bx // &state __near [bp + 4]
|
||||
|
||||
// enter small memory model
|
||||
push ds // save ds && dummy for call
|
||||
push ss
|
||||
pop ds
|
||||
|
||||
add bx, 4
|
||||
push bx // &state __near [bp + 4]
|
||||
mov ax, offset lzma_properties_hi
|
||||
mov [bx + 2], ax
|
||||
mov ax, offset lzma_properties
|
||||
mov [bx], ax
|
||||
|
||||
call LZMA_DEC10
|
||||
jmp LZMA_DEC30
|
||||
// fill properties
|
||||
movw [bx], offset lzma_properties
|
||||
movw [bx+2], offset lzma_properties_hi
|
||||
|
||||
ignore_reloc_overflow lzma_u_len
|
||||
ignore_reloc_overflow lzma_c_len
|
||||
ignore_reloc_overflow lzma_properties
|
||||
|
||||
|
||||
//#define ret
|
||||
#define ret
|
||||
section LZMA_DEC10
|
||||
.arch i8086, nojumps
|
||||
#define SMALL 1
|
||||
|
@ -119,18 +111,18 @@ section LZMA_DEC10
|
|||
#undef SMALL
|
||||
section LZMA_DEC20
|
||||
.arch i8086, nojumps
|
||||
#define SMALL 1
|
||||
//#define FAST 1
|
||||
#define FAST 1
|
||||
#include "lzma_m.h"
|
||||
#include "lzma_d_cf.S"
|
||||
//#undef FAST
|
||||
#undef SMALL
|
||||
#undef FAST
|
||||
.arch i8086, jumps
|
||||
#undef ret
|
||||
|
||||
|
||||
// cleanup
|
||||
section LZMA_DEC30
|
||||
pop ds
|
||||
|
||||
#if 1
|
||||
// clear dirty stack
|
||||
mov sp, bp
|
||||
|
@ -141,7 +133,6 @@ section LZMA_DEC30
|
|||
jnzs 1b
|
||||
#endif
|
||||
mov sp, bp
|
||||
pop ds
|
||||
mov di, offset 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
|
||||
65 N2E64K02 0000000b 00000000 00000000 0000032b 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
|
||||
68 LZMA_DEC00 0000003b 00000000 00000000 0000033a 2**0 CONTENTS, RELOC, READONLY
|
||||
69 ignore_reloc_overflow 00000008 00000000 00000000 00000375 2**0 CONTENTS, RELOC, READONLY
|
||||
70 LZMA_DEC10 000011a4 00000000 00000000 0000037d 2**0 CONTENTS, READONLY
|
||||
71 LZMA_DEC20 000011a4 00000000 00000000 00001521 2**0 CONTENTS, READONLY
|
||||
72 LZMA_DEC30 00000012 00000000 00000000 000026c5 2**0 CONTENTS, RELOC, READONLY
|
||||
73 LZMA_DEC31 00000007 00000000 00000000 000026d7 2**0 CONTENTS, RELOC, READONLY
|
||||
74 EXEMAIN5 00000001 00000000 00000000 000026de 2**0 CONTENTS, READONLY
|
||||
75 EXEADJUS 00000007 00000000 00000000 000026df 2**0 CONTENTS, READONLY
|
||||
76 EXENOADJ 00000002 00000000 00000000 000026e6 2**0 CONTENTS, READONLY
|
||||
77 EXERELO1 0000001e 00000000 00000000 000026e8 2**0 CONTENTS, RELOC, READONLY
|
||||
78 EXEREL9A 00000012 00000000 00000000 00002706 2**0 CONTENTS, RELOC, READONLY
|
||||
79 EXERELO2 00000004 00000000 00000000 00002718 2**0 CONTENTS, READONLY
|
||||
80 EXEREBIG 00000002 00000000 00000000 0000271c 2**0 CONTENTS, RELOC, READONLY
|
||||
81 EXERELO3 00000002 00000000 00000000 0000271e 2**0 CONTENTS, RELOC, READONLY
|
||||
82 EXEMAIN8 00000003 00000000 00000000 00002720 2**0 CONTENTS, READONLY
|
||||
83 DEVICEEND 00000013 00000000 00000000 00002723 2**0 CONTENTS, READONLY
|
||||
84 EXESTACK 00000006 00000000 00000000 00002736 2**0 CONTENTS, RELOC, READONLY
|
||||
85 EXESTASP 00000003 00000000 00000000 0000273c 2**0 CONTENTS, RELOC, READONLY
|
||||
86 EXEJUMPF 00000005 00000000 00000000 0000273f 2**0 CONTENTS, RELOC, READONLY
|
||||
87 EXERCSPO 00000004 00000000 00000000 00002744 2**0 CONTENTS, RELOC, READONLY
|
||||
88 EXERETIP 00000006 00000000 00000000 00002748 2**0 CONTENTS, RELOC, READONLY
|
||||
67 LZMA_DEC00 00000033 00000000 00000000 0000033a 2**0 CONTENTS, RELOC, READONLY
|
||||
68 ignore_reloc_overflow 00000008 00000000 00000000 0000036d 2**0 CONTENTS, RELOC, READONLY
|
||||
69 LZMA_DEC10 000011a3 00000000 00000000 00000375 2**0 CONTENTS, READONLY
|
||||
70 LZMA_DEC20 0000123b 00000000 00000000 00001518 2**0 CONTENTS, READONLY
|
||||
71 LZMA_DEC30 00000012 00000000 00000000 00002753 2**0 CONTENTS, RELOC, READONLY
|
||||
72 LZMA_DEC31 00000007 00000000 00000000 00002765 2**0 CONTENTS, RELOC, READONLY
|
||||
73 EXEMAIN5 00000001 00000000 00000000 0000276c 2**0 CONTENTS, READONLY
|
||||
74 EXEADJUS 00000007 00000000 00000000 0000276d 2**0 CONTENTS, READONLY
|
||||
75 EXENOADJ 00000002 00000000 00000000 00002774 2**0 CONTENTS, READONLY
|
||||
76 EXERELO1 0000001e 00000000 00000000 00002776 2**0 CONTENTS, RELOC, READONLY
|
||||
77 EXEREL9A 00000012 00000000 00000000 00002794 2**0 CONTENTS, RELOC, READONLY
|
||||
78 EXERELO2 00000004 00000000 00000000 000027a6 2**0 CONTENTS, READONLY
|
||||
79 EXEREBIG 00000002 00000000 00000000 000027aa 2**0 CONTENTS, RELOC, READONLY
|
||||
80 EXERELO3 00000002 00000000 00000000 000027ac 2**0 CONTENTS, RELOC, READONLY
|
||||
81 EXEMAIN8 00000003 00000000 00000000 000027ae 2**0 CONTENTS, READONLY
|
||||
82 DEVICEEND 00000013 00000000 00000000 000027b1 2**0 CONTENTS, READONLY
|
||||
83 EXESTACK 00000006 00000000 00000000 000027c4 2**0 CONTENTS, RELOC, READONLY
|
||||
84 EXESTASP 00000003 00000000 00000000 000027ca 2**0 CONTENTS, RELOC, READONLY
|
||||
85 EXEJUMPF 00000005 00000000 00000000 000027cd 2**0 CONTENTS, RELOC, READONLY
|
||||
86 EXERCSPO 00000004 00000000 00000000 000027d2 2**0 CONTENTS, RELOC, READONLY
|
||||
87 EXERETIP 00000006 00000000 00000000 000027d6 2**0 CONTENTS, RELOC, READONLY
|
||||
SYMBOL TABLE:
|
||||
00000000 l d DEVICEENTRY 00000000 DEVICEENTRY
|
||||
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 NRV2EEX9 00000000 NRV2EEX9
|
||||
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 EXERELO1 00000000 EXERELO1
|
||||
00000000 l d EXERELO2 00000000 EXERELO2
|
||||
|
@ -164,8 +162,8 @@ SYMBOL TABLE:
|
|||
00000000 l d N2EX8602 00000000 N2EX8602
|
||||
00000000 l d N2E28602 00000000 N2E28602
|
||||
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 LZMA_DEC10 00000000 LZMA_DEC10
|
||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||
00000000 l d LZMA_DEC31 00000000 LZMA_DEC31
|
||||
00000000 l d EXEMAIN5 00000000 EXEMAIN5
|
||||
|
@ -198,8 +196,8 @@ SYMBOL TABLE:
|
|||
00000000 *UND* 00000000 lzma_u_len
|
||||
00000000 *UND* 00000000 lzma_c_len_hi
|
||||
00000000 *UND* 00000000 lzma_c_len
|
||||
00000000 *UND* 00000000 lzma_properties_hi
|
||||
00000000 *UND* 00000000 lzma_properties
|
||||
00000000 *UND* 00000000 lzma_properties_hi
|
||||
00000000 *UND* 00000000 clear_dirty_stack_low
|
||||
00000000 *UND* 00000000 lzma_u_len_segment
|
||||
00000000 *UND* 00000000 reloc_size
|
||||
|
@ -367,15 +365,13 @@ OFFSET TYPE VALUE
|
|||
|
||||
RELOCATION RECORDS FOR [LZMA_DEC00]:
|
||||
OFFSET TYPE VALUE
|
||||
00000005 R_386_16 lzma_stack_adjust
|
||||
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
|
||||
00000004 R_386_16 lzma_stack_adjust
|
||||
0000000c R_386_16 lzma_u_len_hi
|
||||
00000010 R_386_16 lzma_u_len
|
||||
0000001a R_386_16 lzma_c_len_hi
|
||||
0000001e R_386_16 lzma_c_len
|
||||
0000002c R_386_16 lzma_properties
|
||||
00000031 R_386_16 lzma_properties_hi
|
||||
|
||||
RELOCATION RECORDS FOR [ignore_reloc_overflow]:
|
||||
OFFSET TYPE VALUE
|
||||
|
@ -390,7 +386,7 @@ OFFSET TYPE VALUE
|
|||
|
||||
RELOCATION RECORDS FOR [LZMA_DEC30]:
|
||||
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
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_DEC31]:
|
||||
|
|
Loading…
Reference in New Issue
Block a user