lzma for dos/exe seems to work with tainted watcom macros

This commit is contained in:
László Molnár 2007-02-12 18:28:24 +01:00
parent 8bea9e0a5e
commit 7b39b05894
6 changed files with 1688 additions and 1627 deletions

View File

@ -171,7 +171,10 @@ void PackExe::buildLoader(const Filter *)
NULL
);
else if (ph.method == M_LZMA)
addLoader("LZMA_DEC00,LZMA_DEC10,LZMA_DEC99", NULL);
addLoader("LZMA_DEC00,LZMA_DEC10,LZMA_DEC99,LZMA_DEC30",
ph.u_len > 0xffff ? "LZMA_DEC31" : "",
NULL
);
else
throwInternalError("unknown compression method");
addLoader("EXEMAIN5", NULL);

View File

@ -279,6 +279,7 @@ void Packer::defineDecompressorSymbols()
// -2 for properties
linker->defineSymbol("lzma_c_len_hi", (ph.c_len - 2) / 65536);
linker->defineSymbol("lzma_u_len_hi", ph.u_len / 65536);
linker->defineSymbol("lzma_u_len_segment", (ph.u_len & 0xf0000) >> 4);
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -122,7 +122,7 @@ __U4M_V01:
// init
section LZMA_DEC00
.byte 0xcc
// .byte 0xcc
mov bp, sp
lea bx, [bp + lzma_stack_adjust]
xor ax, ax
@ -161,10 +161,10 @@ section LZMA_DEC00
mov ax, offset lzma_properties
mov ss:[bx], ax
call LZMA_DEC10
// .byte 0xcc
mov sp, bp
// FIXME 'es:di' should be set
lret
jmp LZMA_DEC30
section LZMA_DEC10
.arch i8086, nojumps
@ -177,6 +177,13 @@ section LZMA_DEC20
// cleanup
section LZMA_DEC30
mov di, offset lzma_u_len
section LZMA_DEC31
pop ax
push ax
add ax, offset lzma_u_len_segment
mov es, ax
#undef WCC_PIA_V02

View File

@ -170,6 +170,7 @@
.endm
#if 0
// huge pointer compare: set zero and carry flags: dx:ax cmp cx:bx
.macro M_WCC_PTC
// FIXME: should we normalize the pointers ???
@ -188,6 +189,9 @@ L1:
// add low-word
.endm
#else
# include "tainted.h"
#endif
/*
; =============

View File

@ -44,26 +44,27 @@ Idx Name Size VMA LMA File off Algn Flags
39 NRV2EEX3 00000015 00000000 00000000 0000027b 2**0 CONTENTS, RELOC, READONLY
40 N2E64K02 0000000b 00000000 00000000 00000290 2**0 CONTENTS, READONLY
41 NRV2EEX9 00000004 00000000 00000000 0000029b 2**0 CONTENTS, READONLY
42 LZMA_DEC99 0000005d 00000000 00000000 0000029f 2**0 CONTENTS, READONLY
43 LZMA_DEC00 00000043 00000000 00000000 000002fc 2**0 CONTENTS, RELOC, READONLY
44 LZMA_DEC10 00000ea2 00000000 00000000 0000033f 2**0 CONTENTS, RELOC, READONLY
45 LZMA_DEC20 00000ea2 00000000 00000000 000011e1 2**0 CONTENTS, RELOC, READONLY
46 LZMA_DEC30 00000000 00000000 00000000 00002083 2**0 CONTENTS, READONLY
47 EXEMAIN5 00000001 00000000 00000000 00002083 2**0 CONTENTS, READONLY
48 EXEADJUS 00000007 00000000 00000000 00002084 2**0 CONTENTS, READONLY
49 EXENOADJ 00000002 00000000 00000000 0000208b 2**0 CONTENTS, READONLY
50 EXERELO1 0000001e 00000000 00000000 0000208d 2**0 CONTENTS, RELOC, READONLY
51 EXEREL9A 00000012 00000000 00000000 000020ab 2**0 CONTENTS, RELOC, READONLY
52 EXERELO2 00000004 00000000 00000000 000020bd 2**0 CONTENTS, READONLY
53 EXEREBIG 00000002 00000000 00000000 000020c1 2**0 CONTENTS, RELOC, READONLY
54 EXERELO3 00000002 00000000 00000000 000020c3 2**0 CONTENTS, RELOC, READONLY
55 EXEMAIN8 00000003 00000000 00000000 000020c5 2**0 CONTENTS, READONLY
56 DEVICEEND 00000013 00000000 00000000 000020c8 2**0 CONTENTS, READONLY
57 EXESTACK 00000006 00000000 00000000 000020db 2**0 CONTENTS, RELOC, READONLY
58 EXESTASP 00000003 00000000 00000000 000020e1 2**0 CONTENTS, RELOC, READONLY
59 EXEJUMPF 00000005 00000000 00000000 000020e4 2**0 CONTENTS, RELOC, READONLY
60 EXERCSPO 00000004 00000000 00000000 000020e9 2**0 CONTENTS, RELOC, READONLY
61 EXERETIP 00000006 00000000 00000000 000020ed 2**0 CONTENTS, RELOC, READONLY
42 LZMA_DEC99 000000ae 00000000 00000000 0000029f 2**0 CONTENTS, READONLY
43 LZMA_DEC00 00000044 00000000 00000000 0000034d 2**0 CONTENTS, RELOC, READONLY
44 LZMA_DEC10 00000ea2 00000000 00000000 00000391 2**0 CONTENTS, RELOC, READONLY
45 LZMA_DEC20 00000ea2 00000000 00000000 00001233 2**0 CONTENTS, RELOC, READONLY
46 LZMA_DEC30 00000003 00000000 00000000 000020d5 2**0 CONTENTS, RELOC, READONLY
47 LZMA_DEC31 00000007 00000000 00000000 000020d8 2**0 CONTENTS, RELOC, READONLY
48 EXEMAIN5 00000001 00000000 00000000 000020df 2**0 CONTENTS, READONLY
49 EXEADJUS 00000007 00000000 00000000 000020e0 2**0 CONTENTS, READONLY
50 EXENOADJ 00000002 00000000 00000000 000020e7 2**0 CONTENTS, READONLY
51 EXERELO1 0000001e 00000000 00000000 000020e9 2**0 CONTENTS, RELOC, READONLY
52 EXEREL9A 00000012 00000000 00000000 00002107 2**0 CONTENTS, RELOC, READONLY
53 EXERELO2 00000004 00000000 00000000 00002119 2**0 CONTENTS, READONLY
54 EXEREBIG 00000002 00000000 00000000 0000211d 2**0 CONTENTS, RELOC, READONLY
55 EXERELO3 00000002 00000000 00000000 0000211f 2**0 CONTENTS, RELOC, READONLY
56 EXEMAIN8 00000003 00000000 00000000 00002121 2**0 CONTENTS, READONLY
57 DEVICEEND 00000013 00000000 00000000 00002124 2**0 CONTENTS, READONLY
58 EXESTACK 00000006 00000000 00000000 00002137 2**0 CONTENTS, RELOC, READONLY
59 EXESTASP 00000003 00000000 00000000 0000213d 2**0 CONTENTS, RELOC, READONLY
60 EXEJUMPF 00000005 00000000 00000000 00002140 2**0 CONTENTS, RELOC, READONLY
61 EXERCSPO 00000004 00000000 00000000 00002145 2**0 CONTENTS, RELOC, READONLY
62 EXERETIP 00000006 00000000 00000000 00002149 2**0 CONTENTS, RELOC, READONLY
SYMBOL TABLE:
00000000 l d DEVICEENTRY 00000000 DEVICEENTRY
00000000 l d EXEENTRY 00000000 EXEENTRY
@ -81,6 +82,7 @@ SYMBOL TABLE:
00000000 l d NRV2EEX9 00000000 NRV2EEX9
00000000 l d LZMA_DEC99 00000000 LZMA_DEC99
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
00000000 l d DEVICESUB 00000000 DEVICESUB
@ -113,7 +115,7 @@ SYMBOL TABLE:
00000000 l d N2E64K02 00000000 N2E64K02
00000000 l d LZMA_DEC00 00000000 LZMA_DEC00
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
00000000 l d LZMA_DEC31 00000000 LZMA_DEC31
00000000 l d EXEMAIN5 00000000 EXEMAIN5
00000000 l d EXEADJUS 00000000 EXEADJUS
00000000 l d EXENOADJ 00000000 EXENOADJ
@ -145,6 +147,7 @@ SYMBOL TABLE:
00000000 *UND* 00000000 lzma_c_len
00000000 *UND* 00000000 lzma_properties_hi
00000000 *UND* 00000000 lzma_properties
00000000 *UND* 00000000 lzma_u_len_segment
00000000 *UND* 00000000 reloc_size
00000000 *UND* 00000000 original_ss
00000000 *UND* 00000000 original_sp
@ -251,14 +254,15 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [LZMA_DEC00]:
OFFSET TYPE VALUE
00000005 R_386_16 lzma_stack_adjust
00000013 R_386_16 lzma_u_len_hi
00000017 R_386_16 lzma_u_len
00000022 R_386_16 lzma_c_len_hi
00000026 R_386_16 lzma_c_len
00000031 R_386_16 lzma_properties_hi
00000038 R_386_16 lzma_properties
0000003e R_386_PC16 LZMA_DEC10
00000004 R_386_16 lzma_stack_adjust
00000012 R_386_16 lzma_u_len_hi
00000016 R_386_16 lzma_u_len
00000021 R_386_16 lzma_c_len_hi
00000025 R_386_16 lzma_c_len
00000030 R_386_16 lzma_properties_hi
00000037 R_386_16 lzma_properties
0000003d R_386_PC16 LZMA_DEC10
00000042 R_386_PC16 LZMA_DEC30
RELOCATION RECORDS FOR [LZMA_DEC10]:
OFFSET TYPE VALUE
@ -368,6 +372,14 @@ OFFSET TYPE VALUE
00000e6b R_386_PC16 LZMA_DEC99
00000e73 R_386_PC16 LZMA_DEC99
RELOCATION RECORDS FOR [LZMA_DEC30]:
OFFSET TYPE VALUE
00000001 R_386_16 lzma_u_len
RELOCATION RECORDS FOR [LZMA_DEC31]:
OFFSET TYPE VALUE
00000003 R_386_16 lzma_u_len_segment
RELOCATION RECORDS FOR [EXERELO1]:
OFFSET TYPE VALUE
00000002 R_386_16 reloc_size