1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00

More work on lzma for dos/exe.

This commit is contained in:
Markus F.X.J. Oberhumer 2007-02-11 21:20:00 +01:00
parent 44ed84f5cf
commit b62573ae8f
12 changed files with 6243 additions and 3299 deletions

File diff suppressed because it is too large Load Diff

View File

@ -88,6 +88,7 @@ def create_bindump(bindump_fn, dump_fn):
e = f[1], int(f[2], 16), int(f[5], 16), int(f[6][3:], 10), len(sections)
sections.append(e)
assert not section_names.has_key(e[0]), e
assert not e[0].endswith(":"), ("bad section name", e)
section_names[e[0]] = e
##print sections
# preprocessSymbols

View File

@ -1,13 +1,5 @@
#
# highly experimental support for i086 using Open Watcom 1.6:
#
# - download http://ftp.openwatcom.org/ftp/open-watcom-c-win32-1.6.exe
# - this .exe is actually a .zip, so unzip into a new diretory
# - the "binl" subdirectory does contain the (unofficial) Linux-hosted tools
# - set your envvar WATCOM to the main Watcom dir (see below)
#
# FIXME: how to convert the .obj to ELF ???
# FIXME: (we could use a Python script to convert the .disasm)
# highly experimental support for i086 using Open Watcom 1.6
#
MAKEFLAGS += -rR
@ -26,13 +18,7 @@ vpath %.c $(top_srcdir)/src/stub/src/c
##export WATCOM ?= /opt/cc-i386-linux/watcom/open-watcom-1.6
STUBS =
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
ifneq ($(wildcard $(WATCOM)/binl/.),)
ifneq ($(wildcard $(VCLINK.exe)),)
STUBS += lzma_d_cf.S lzma_d_cs.S
endif
endif
endif
default.targets = all
ifeq ($(strip $(STUBS)),)
@ -46,12 +32,13 @@ include $(top_srcdir)/src/stub/Makefile
# // method-lzma
# ************************************************************************/
lzma_d_c%.S : tc_list = method-lzma default
lzma_d_c%.S : tc_bfdname =
lzma_d_c% : tc_list = method-lzma default
lzma_d_c% : tc_bfdname =
# Open Watcom C/C++ 1.6
c := tc.method-lzma.wcc
$c = $(WATCOM)/binl/wcc -zq -bt=dos
$c += -mc
$c += -mc -ecc
$c += -zm -zc
$c += -os -s -0 -d0
$c += -w5 -we -fr=/dev/null
@ -59,59 +46,38 @@ $c += -D__INT_MAX__=32767
$c += -I$(UPX_LZMADIR)
$c += -I$(top_srcdir)/src
ifneq ($(wildcard $(BC502DIR)/bin/.),)
c := tc.method-lzma.bcc
$c = @$(WINEENV) CL='$(CL)' wine cmd.exe /c tmp/bcc.bat
$c += -mc
$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
endif
ifneq ($(wildcard $(DM847DIR)/bin/.),)
c := tc.method-lzma.dmc
$c = @$(WINEENV) CFLAGS='$(DMC)' wine cmd.exe /c tmp/dmc.bat
$c += -mc
$c += -NS
$c += -w-
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
ifneq ($(wildcard $(VC152DIR)/bin/.),)
c := tc.method-lzma.cl
$c = @$(WINEENV) CL='$(CL)' wine cmd.exe /c tmp/cl.bat
$c += -AC
$c += -Gy
$c += -O1 -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
tc.method-lzma.dmpobj = $(WATCOM)/binl/dmpobj
tc.method-lzma.wdis = $(WATCOM)/binl/wdis
tc.method-lzma.wdump = $(WATCOM)/binl/wdump
lzma_d_c%.S : lzma_d_c.c cleanasm.py $(MAKEFILE_LIST)
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/.),)
ifneq ($(wildcard $(VCLINK.exe)),)
lzma_d_c%.i : lzma_d_c.c tmp/.tmp-stamp $(MAKEFILE_LIST)
rm -f tmp/$T.a tmp/$T.o tmp/$T.obj
# compile
$(call tc,wcc) $(PP_FLAGS) -fo=tmp/$T.obj $<
## $(call tc,bcc) $(PP_FLAGS) -c -otmp/$T.obj $<
## $(call tc,dmc) $(PP_FLAGS) -c -otmp/$T.obj $<
## $(call tc,cl) $(PP_FLAGS) -c -Fotmp/$T.obj $<
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
cp tmp/$T.obj tmp/$T.o
rm -f tmp/$T.lib
cd tmp && $(WINEENV) wine $(VCLINK.exe) -lib -nologo -out:$T.lib $T.o
cd tmp && $(call tc,m-ar) x $T.lib
$(call tc,objdump) -b coff-i386 -m i8086 -M intel -Dr --no-show -w tmp/$T.o | $(RTRIM) > tmp/$T.o.disasm
python cleanasm.py --label-prefix=$(LABEL_PREFIX) tmp/$T.o.disasm $@
# convert OMF to COFF because objdump does not support OMF
# TODO: should write a Python script wdis2gas.py and use that instead
cp -p tmp/$T.obj tmp/$T.o
cd tmp && $(WINEENV) wine $(VCLINK.exe) -lib -nologo -out:$T.a $T.o
cd tmp && $(call tc,m-ar) x $T.a
# dump
$(call tc,objdump) -b coff-i386 -m i8086 -M intel -Dr --no-show -w tmp/$T.o | $(RTRIM) > $@
.PRECIOUS: lzma_d_cf.i lzma_d_cs.i
endif
endif
endif
lzma_d_cf.% : PP_FLAGS = -DFAST
lzma_d_cs.% : PP_FLAGS = -DSMALL
@ -139,6 +105,47 @@ define mkbat
unix2dos -q $1
endef
# Borland C/C++ 5.02
ifneq ($(wildcard $(BC502DIR)/bin/.),)
c := tc.method-lzma.bcc
$c = @$(WINEENV) CL='$(CL)' wine cmd.exe /c tmp/bcc.bat
$c += -mc
$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
endif
# Digital Mars C/C++ 8.47
ifneq ($(wildcard $(DM847DIR)/bin/.),)
c := tc.method-lzma.dmc
$c = @$(WINEENV) CFLAGS='$(DMC)' wine cmd.exe /c tmp/dmc.bat
$c += -mc
$c += -NS
$c += -w-
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
# 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 += -AC
$c += -Gy
$c += -O1 -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
ifneq ($(wildcard $(WATCOM)/binl/.),)
cc_test_wc : tc_list = method-lzma default
cc_test_wc: cc_test.c

View File

@ -34,6 +34,18 @@ import getopt, os, re, string, sys
class opts:
label_prefix = ".L"
verbose = 0
# optimizer flags
auto_inline = 1
call_rewrite = 1
inline_map = {
## "__PIA": "WCC_PIA",
"__PTS": "WCC_PTS",
## "__U4M_V01": "WCC_U4M_V01",
"__PIA_V02": "WCC_PIA_V02",
"__PIA_V01": "WCC_PIA_V01",
}
# /***********************************************************************
@ -60,54 +72,208 @@ def main(argv):
lines = open(ifile, "rb").readlines()
lines = filter(None, map(string.rstrip, lines))
#
olines = []
#
labels = {}
def parse_label(inst, args):
m = re.search("^([0-9a-z]+)\s+<", args)
if m:
# local label
k, v = m.group(1).strip(), [0, 0, None, 0]
m = re.search(r"^(.*?)\b2\s+(__\w+)$", args)
if m:
# external 2-byte label
k, v = m.group(2).strip(), [1, 2, None, 0]
v[2] = k # new name
if labels.has_key(k):
assert labels[k][:2] == v[:2]
return k, v
def add_label(k, v):
if labels.has_key(k):
assert labels[k][:2] == v[:2]
else:
labels[k] = v
labels[k][3] += 1 # usage counter
return k
olines = []
def omatch(pos, m):
i = 0
dpos = []
while i < len(m):
if pos < 0 or pos >= len(olines):
return False
dpos.append(pos)
o = olines[pos][1:3]
assert len(m[i]) == 2, (i, m)
if o[0].lower() != m[i][0].lower():
return False
if o[1].lower() != m[i][1].lower():
return []
pos += 1
i += 1
return dpos
def orewrite(i, k, v, dpos):
for pos in dpos:
olines[pos][1] = "*DEL*"
v[2] = k
olines[i][2] = None
olines[i][3] = add_label(k, v)
#
# pass 1
func = None
for i in range(len(lines)):
l = lines[i]
m = re.search("^(\s*[0-9a-z]+):\s+(\w+)(.*)", l)
m = re.search(r"^0000000000000000\s*<(\w+)>:", l)
if m:
func = re.sub(r"^_+|_+$", "", m.group(1))
if not func in ["LzmaDecode"]:
continue
m = re.search(r"^(\s*[0-9a-z]+):\s+(\w+)(.*)", l)
if not m:
continue
label = m.group(1).strip()
inst = m.group(2).strip()
args = ""
if m.group(3): args = m.group(3).strip()
args_label = None
if label == "0" and olines: # start of next function
break
if inst in ["call",]:
args = re.sub(r"^(.*?)2\s+(__\w+)$", "\g<2>", args)
elif inst in [
"ja", "jae", "jb", "jbe", "jcxz", "je", "jge", "jl", "jmp", "jne", "loop",
]:
m = re.search("^([0-9a-z]+)\s+<", args)
assert m, l
if m:
labels[m.group(1)] = ""
args_label = m.group(1)
args = None
elif inst in ["movl",]:
assert re.search(r"\b[de]s\b", args), args
#
if inst in ["movl",] and re.search(r"\b[de]s\b", args):
# correct objdump bug
inst = "movw"
olines.append((label, inst, args, args_label))
m = re.search(r"^(.+?)\b0x0\s+(\w+):\s+[12]\s+(__\w+)$", args)
if m:
# 1 or 2 byte reloc
args = m.group(1) + m.group(3)
olines.append([label, inst, args, None])
#
# pass 2
for i in range(len(olines)):
label, inst, args, args_label = olines[i]
#
if inst == "*DEL*":
continue
#
if opts.call_rewrite and inst in ["call"]:
k, v = parse_label(inst, args)
if v[:2] == [1, 2]: # external 2-byte
if k == "__PIA":
inst1 = [
["mov", "bx,WORD PTR [bp-94]"],
["or", "bx,ax"],
["mov", "WORD PTR [bp-8],bx"],
["mov", "WORD PTR [bp-4],dx"],
["mov", "ax,WORD PTR [bp-12]"],
["movw", "dx,ds"],
["mov", "bx,0x1"],
["xor", "cx,cx"],
]
inst2 = [
["mov", "WORD PTR [bp-12],ax"],
["movw", "ds,dx"],
]
dpos1 = omatch(i - 8, inst1[-8:])
dpos2 = omatch(i + 1, inst2)
if dpos1 and dpos2:
orewrite(i, "__PIA_V04", v, dpos1 + dpos2)
continue
dpos1 = omatch(i - 4, inst1[-4:])
dpos2 = omatch(i + 1, inst2)
if dpos1 and dpos2:
orewrite(i, "__PIA_V03", v, dpos1 + dpos2)
continue
dpos = omatch(i - 3, inst1[-3:])
if dpos:
orewrite(i, "__PIA_V02", v, dpos)
continue
dpos = omatch(i - 2, inst1[-2:])
if dpos:
orewrite(i, "__PIA_V01", v, dpos)
continue
if k == "__PTC":
inst1 = [
["mov", "ax,WORD PTR [bp-12]"],
["movw", "dx,ds"],
["mov", "bx,WORD PTR [bp-26]"],
["mov", "cx,WORD PTR [bp-24]"],
]
dpos = omatch(i - 4, inst1[-4:])
if dpos:
orewrite(i, "__PTC_V01", v, dpos)
continue
if k == "__U4M":
inst1 = [
["mov", "bx,WORD PTR es:[bx]"],
["mov", "ax,WORD PTR [bp-102]"],
["mov", "dx,WORD PTR [bp-100]"],
["xor", "cx,cx"],
]
inst2 = [
["mov", "WORD PTR [bp-10],ax"],
["mov", "WORD PTR [bp-6],dx"],
]
dpos1 = omatch(i - 4, inst1[-4:])
dpos2 = omatch(i + 1, inst2)
if dpos1 and dpos2:
orewrite(i, "__U4M_V02", v, dpos1 + dpos2)
continue
dpos = omatch(i - 1, inst1[-1:])
if dpos:
orewrite(i, "__U4M_V01", v, dpos)
continue
#
if inst in [
"call", "ja", "jae", "jb", "jbe", "jcxz",
"je", "jge", "jl", "jmp", "jne", "loop",
]:
k, v = parse_label(inst, args)
olines[i][2] = None
olines[i][3] = add_label(k, v)
#
# rewrite local labels
digits, i = 1, len(labels)
while i >= 10:
digits += 1
i /= 10
format = "%s0%dd" % ("%", digits)
i = 0
for label, inst, args, args_label in olines:
if labels.has_key(label):
labels[label] = opts.label_prefix + format % i
i += 1
counter = 0
for i in range(len(olines)):
label, inst, args, args_label = olines[i]
# rewrite local labels
v = labels.get(label)
if v is not None:
assert v[:3] == [0, 0, label], (label, v)
v[2] = opts.label_prefix + format % counter
counter += 1
# handle inlining
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])
##print "inline", v, x
if x:
olines[i][1] = x
olines[i][2] = "/* inlined */"
olines[i][2] = ""
olines[i][3] = None
# write ofile
ofp = open(ofile, "wb")
for label, inst, args, args_label in olines:
if labels.has_key(label):
ofp.write(labels[label] + ":\n")
if args_label: args = labels[args_label]
if opts.verbose:
ofp.write("%s: /* %d */\n" % (labels[label][2], labels[label][3]))
else:
ofp.write("%s:\n" % (labels[label][2]))
if inst == "*DEL*":
continue
if args_label:
if opts.verbose:
args = "%s /* %d */" % (labels[args_label][2], labels[args_label][3])
else:
args = labels[args_label][2]
l = "%8s%-7s %s" % ("", inst, args)
ofp.write(l.rstrip() + "\n")
ofp.close()

View File

@ -37,6 +37,89 @@
; Output:
*/
/*************************************************************************
// support code (see cleanasm.py)
**************************************************************************/
section LZMA_DEC99
__PIA_V04:
mov bx,WORD PTR [bp-94]
or bx,ax
mov WORD PTR [bp-8],bx
mov WORD PTR [bp-4],dx
__PIA_V03:
mov ax,WORD PTR [bp-12]
// FIXME: need optimized version here
movw dx,ds
mov bx,0x1
xor cx,cx
M_WCC_PIA
mov WORD PTR [bp-12],ax
movw ds,dx
ret
#if 1
.macro lzma_WCC_PIA_V02
// FIXME: need optimized version here
movw dx,ds
mov bx,0x1
xor cx,cx
M_WCC_PIA
.endm
#define WCC_PIA_V02 lzma_WCC_PIA_V02
#endif
__PIA:
M_WCC_PIA
ret
__PTC_V01:
mov ax,WORD PTR [bp-12]
movw dx,ds
mov bx,WORD PTR [bp-26]
mov cx,WORD PTR [bp-24]
__PTC:
M_WCC_PTC
ret
#if 1
// FIXME: do we actually need the PTS result ??
#define WCC_PTS M_WCC_PTS
#else
#define WCC_PTS xor ax,ax; xor dx,dx
#endif
__U4M_V02:
mov bx,WORD PTR es:[bx]
mov ax,WORD PTR [bp-102]
mov dx,WORD PTR [bp-100]
// FIXME: need optimized version here (cx = 0)
xor cx,cx
M_WCC_U4M
mov WORD PTR [bp-10],ax
mov WORD PTR [bp-6],dx
ret
__U4M_V01:
// FIXME: need optimized version here (cx = 0)
xor cx,cx
M_WCC_U4M
ret
/*************************************************************************
//
**************************************************************************/
// init
section LZMA_DEC00
@ -54,5 +137,8 @@ section LZMA_DEC20
section LZMA_DEC30
#undef WCC_PIA_V02
#undef WCC_PTS
// vi:ts=8: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

View File

@ -134,42 +134,30 @@
*/
/* DOS real mode */
#define _AHSHIFT 12
#define _AHINCR (1 << _AHSHIFT) /* 4096 */
#define __AHSHIFT 12
#define __AHINCR (1 << __AHSHIFT) /* 4096 */
// huge pointer add: dx:ax = dx:ax + cx:bx
.macro M_WCC_PIA_086
.macro M_WCC_PIA
add ax, bx
adc cx, 0
mov cx, bx
mov cl, _AHSHIFT
mov cl, __AHSHIFT
shl bx, cl
add dx, bx
.endm
.macro M_WCC_PIA_286
add ax, bx
adc cx, 0
shl cx, _AHSHIFT
add dx, cx
.endm
// huge pointer sub: dx:ax = dx:ax - cx:bx
.macro M_WCC_PIS_086
.macro M_WCC_PIS
sub ax, bx
adc cx, 0
mov cx, bx
mov cl, _AHSHIFT
mov cl, __AHSHIFT
shl bx, cl
sub dx, bx
.endm
.macro M_WCC_PIS_286
sub ax, bx
adc cx, 0
shl cx, _AHSHIFT
sub dx, cx
.endm
// huge pointer diff: dx:ax = dx:ax - cx:bx
@ -195,10 +183,9 @@ L1:
// umul32: dx:ax = dx:ax * cx:bx
.macro M_WCC_U4M
push si
// FIXME
// compute high-word
// add low-word
pop si
.endm

View File

@ -219,23 +219,6 @@ section EXERETIP
lret
section __PIA
M_WCC_PIA_086
ret
//section __PIS
// M_WCC_PIS_086
// ret
section __PTS
M_WCC_PTS
ret
section __PTC
M_WCC_PTC
ret
section __U4M
M_WCC_U4M
ret
/*
vi:ts=8:et:nowrap
*/

View File

@ -44,29 +44,26 @@ 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_DEC00 00000000 00000000 00000000 0000029f 2**0 CONTENTS, READONLY
43 LZMA_DEC10 00001191 00000000 00000000 0000029f 2**0 CONTENTS, RELOC, READONLY
44 LZMA_DEC20 00001191 00000000 00000000 00001430 2**0 CONTENTS, RELOC, READONLY
45 LZMA_DEC30 00000000 00000000 00000000 000025c1 2**0 CONTENTS, READONLY
46 EXEMAIN5 00000001 00000000 00000000 000025c1 2**0 CONTENTS, READONLY
47 EXEADJUS 00000007 00000000 00000000 000025c2 2**0 CONTENTS, READONLY
48 EXENOADJ 00000002 00000000 00000000 000025c9 2**0 CONTENTS, READONLY
49 EXERELO1 0000001e 00000000 00000000 000025cb 2**0 CONTENTS, RELOC, READONLY
50 EXEREL9A 00000012 00000000 00000000 000025e9 2**0 CONTENTS, RELOC, READONLY
51 EXERELO2 00000004 00000000 00000000 000025fb 2**0 CONTENTS, READONLY
52 EXEREBIG 00000002 00000000 00000000 000025ff 2**0 CONTENTS, RELOC, READONLY
53 EXERELO3 00000002 00000000 00000000 00002601 2**0 CONTENTS, RELOC, READONLY
54 EXEMAIN8 00000003 00000000 00000000 00002603 2**0 CONTENTS, READONLY
55 DEVICEEND 00000013 00000000 00000000 00002606 2**0 CONTENTS, READONLY
56 EXESTACK 00000006 00000000 00000000 00002619 2**0 CONTENTS, RELOC, READONLY
57 EXESTASP 00000003 00000000 00000000 0000261f 2**0 CONTENTS, RELOC, READONLY
58 EXEJUMPF 00000005 00000000 00000000 00002622 2**0 CONTENTS, RELOC, READONLY
59 EXERCSPO 00000004 00000000 00000000 00002627 2**0 CONTENTS, RELOC, READONLY
60 EXERETIP 00000006 00000000 00000000 0000262b 2**0 CONTENTS, RELOC, READONLY
61 __PIA 0000000e 00000000 00000000 00002631 2**0 CONTENTS, READONLY
62 __PTS 00000005 00000000 00000000 0000263f 2**0 CONTENTS, READONLY
63 __PTC 00000007 00000000 00000000 00002644 2**0 CONTENTS, READONLY
64 __U4M 00000003 00000000 00000000 0000264b 2**0 CONTENTS, READONLY
42 LZMA_DEC99 0000005d 00000000 00000000 0000029f 2**0 CONTENTS, READONLY
43 LZMA_DEC00 00000000 00000000 00000000 000002fc 2**0 CONTENTS, READONLY
44 LZMA_DEC10 00000ea2 00000000 00000000 000002fc 2**0 CONTENTS, RELOC, READONLY
45 LZMA_DEC20 00000ea2 00000000 00000000 0000119e 2**0 CONTENTS, RELOC, READONLY
46 LZMA_DEC30 00000000 00000000 00000000 00002040 2**0 CONTENTS, READONLY
47 EXEMAIN5 00000001 00000000 00000000 00002040 2**0 CONTENTS, READONLY
48 EXEADJUS 00000007 00000000 00000000 00002041 2**0 CONTENTS, READONLY
49 EXENOADJ 00000002 00000000 00000000 00002048 2**0 CONTENTS, READONLY
50 EXERELO1 0000001e 00000000 00000000 0000204a 2**0 CONTENTS, RELOC, READONLY
51 EXEREL9A 00000012 00000000 00000000 00002068 2**0 CONTENTS, RELOC, READONLY
52 EXERELO2 00000004 00000000 00000000 0000207a 2**0 CONTENTS, READONLY
53 EXEREBIG 00000002 00000000 00000000 0000207e 2**0 CONTENTS, RELOC, READONLY
54 EXERELO3 00000002 00000000 00000000 00002080 2**0 CONTENTS, RELOC, READONLY
55 EXEMAIN8 00000003 00000000 00000000 00002082 2**0 CONTENTS, READONLY
56 DEVICEEND 00000013 00000000 00000000 00002085 2**0 CONTENTS, READONLY
57 EXESTACK 00000006 00000000 00000000 00002098 2**0 CONTENTS, RELOC, READONLY
58 EXESTASP 00000003 00000000 00000000 0000209e 2**0 CONTENTS, RELOC, READONLY
59 EXEJUMPF 00000005 00000000 00000000 000020a1 2**0 CONTENTS, RELOC, READONLY
60 EXERCSPO 00000004 00000000 00000000 000020a6 2**0 CONTENTS, RELOC, READONLY
61 EXERETIP 00000006 00000000 00000000 000020aa 2**0 CONTENTS, RELOC, READONLY
SYMBOL TABLE:
00000000 l d DEVICEENTRY 00000000 DEVICEENTRY
00000000 l d EXEENTRY 00000000 EXEENTRY
@ -82,10 +79,7 @@ SYMBOL TABLE:
00000000 l d NRV2EEX2 00000000 NRV2EEX2
00000000 l d NRV2EEX3 00000000 NRV2EEX3
00000000 l d NRV2EEX9 00000000 NRV2EEX9
00000000 l d __PIA 00000000 __PIA
00000000 l d __PTC 00000000 __PTC
00000000 l d __U4M 00000000 __U4M
00000000 l d __PTS 00000000 __PTS
00000000 l d LZMA_DEC99 00000000 LZMA_DEC99
00000000 l d EXERELO1 00000000 EXERELO1
00000000 l d EXERELO2 00000000 EXERELO2
00000000 l d DEVICESUB 00000000 DEVICESUB
@ -250,115 +244,111 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [LZMA_DEC10]:
OFFSET TYPE VALUE
000000ec R_386_PC16 __PIA
00000137 R_386_PC16 __PIA
00000153 R_386_PC16 __PTC
000001a7 R_386_PC16 __PTC
000001e5 R_386_PC16 __PIA
0000020c R_386_PC16 __U4M
00000277 R_386_PC16 __U4M
000002ab R_386_PC16 __PIA
000002f2 R_386_PC16 __PTC
00000333 R_386_PC16 __PIA
0000035a R_386_PC16 __U4M
000003f1 R_386_PC16 __PTC
00000432 R_386_PC16 __PIA
00000459 R_386_PC16 __U4M
000004cf R_386_PC16 __PIA
00000542 R_386_PC16 __PTC
00000583 R_386_PC16 __PIA
000005aa R_386_PC16 __U4M
0000065f R_386_PC16 __PTC
000006a0 R_386_PC16 __PIA
000006c7 R_386_PC16 __U4M
000006da R_386_PC16 __PIA
0000073d R_386_PC16 __PTC
000007a0 R_386_PC16 __U4M
000007ff R_386_PC16 __PIA
00000820 R_386_PC16 __PIA
00000894 R_386_PC16 __PTC
000008f3 R_386_PC16 __U4M
0000096e R_386_PC16 __PTC
000009af R_386_PC16 __PIA
000009d6 R_386_PC16 __U4M
00000a96 R_386_PC16 __PTC
00000ad7 R_386_PC16 __PIA
00000b01 R_386_PC16 __U4M
00000b8f R_386_PC16 __PTC
00000bd0 R_386_PC16 __PIA
00000bfa R_386_PC16 __U4M
00000caa R_386_PC16 __PTC
00000ceb R_386_PC16 __PIA
00000d12 R_386_PC16 __U4M
00000ddc R_386_PC16 __PTC
00000e1d R_386_PC16 __PIA
00000e44 R_386_PC16 __U4M
00000f13 R_386_PC16 __PTC
00000f54 R_386_PC16 __PIA
00000fd0 R_386_PC16 __PTC
00001011 R_386_PC16 __PIA
00001038 R_386_PC16 __U4M
000010eb R_386_PC16 __PIA
0000110f R_386_PC16 __PIA
0000114a R_386_PC16 __PTC
0000115c R_386_PC16 __PIA
0000116f R_386_PC16 __PTS
000000e5 R_386_PC16 LZMA_DEC99
0000011b R_386_PC16 LZMA_DEC99
00000127 R_386_PC16 LZMA_DEC99
00000170 R_386_PC16 LZMA_DEC99
00000199 R_386_PC16 LZMA_DEC99
000001b0 R_386_PC16 LZMA_DEC99
00000213 R_386_PC16 LZMA_DEC99
00000247 R_386_PC16 LZMA_DEC99
00000283 R_386_PC16 LZMA_DEC99
000002af R_386_PC16 LZMA_DEC99
000002c6 R_386_PC16 LZMA_DEC99
0000034c R_386_PC16 LZMA_DEC99
00000378 R_386_PC16 LZMA_DEC99
0000038f R_386_PC16 LZMA_DEC99
000003ff R_386_PC16 LZMA_DEC99
00000467 R_386_PC16 LZMA_DEC99
00000493 R_386_PC16 LZMA_DEC99
000004aa R_386_PC16 LZMA_DEC99
0000054e R_386_PC16 LZMA_DEC99
0000057a R_386_PC16 LZMA_DEC99
00000591 R_386_PC16 LZMA_DEC99
000005ff R_386_PC16 LZMA_DEC99
00000657 R_386_PC16 LZMA_DEC99
000006b0 R_386_PC16 LZMA_DEC99
000006d1 R_386_PC16 LZMA_DEC99
0000073a R_386_PC16 LZMA_DEC99
0000078e R_386_PC16 LZMA_DEC99
000007f8 R_386_PC16 LZMA_DEC99
00000824 R_386_PC16 LZMA_DEC99
0000083b R_386_PC16 LZMA_DEC99
000008ea R_386_PC16 LZMA_DEC99
00000916 R_386_PC16 LZMA_DEC99
00000930 R_386_PC16 LZMA_DEC99
000009ad R_386_PC16 LZMA_DEC99
000009d9 R_386_PC16 LZMA_DEC99
000009f3 R_386_PC16 LZMA_DEC99
00000a93 R_386_PC16 LZMA_DEC99
00000abf R_386_PC16 LZMA_DEC99
00000ad6 R_386_PC16 LZMA_DEC99
00000b8f R_386_PC16 LZMA_DEC99
00000bbb R_386_PC16 LZMA_DEC99
00000bd2 R_386_PC16 LZMA_DEC99
00000c90 R_386_PC16 LZMA_DEC99
00000cbc R_386_PC16 LZMA_DEC99
00000d27 R_386_PC16 LZMA_DEC99
00000d53 R_386_PC16 LZMA_DEC99
00000d6a R_386_PC16 LZMA_DEC99
00000e17 R_386_PC16 LZMA_DEC99
00000e3b R_386_PC16 LZMA_DEC99
00000e6b R_386_PC16 LZMA_DEC99
00000e73 R_386_PC16 LZMA_DEC99
RELOCATION RECORDS FOR [LZMA_DEC20]:
OFFSET TYPE VALUE
000000ec R_386_PC16 __PIA
00000137 R_386_PC16 __PIA
00000153 R_386_PC16 __PTC
000001a7 R_386_PC16 __PTC
000001e5 R_386_PC16 __PIA
0000020c R_386_PC16 __U4M
00000277 R_386_PC16 __U4M
000002ab R_386_PC16 __PIA
000002f2 R_386_PC16 __PTC
00000333 R_386_PC16 __PIA
0000035a R_386_PC16 __U4M
000003f1 R_386_PC16 __PTC
00000432 R_386_PC16 __PIA
00000459 R_386_PC16 __U4M
000004cf R_386_PC16 __PIA
00000542 R_386_PC16 __PTC
00000583 R_386_PC16 __PIA
000005aa R_386_PC16 __U4M
0000065f R_386_PC16 __PTC
000006a0 R_386_PC16 __PIA
000006c7 R_386_PC16 __U4M
000006da R_386_PC16 __PIA
0000073d R_386_PC16 __PTC
000007a0 R_386_PC16 __U4M
000007ff R_386_PC16 __PIA
00000820 R_386_PC16 __PIA
00000894 R_386_PC16 __PTC
000008f3 R_386_PC16 __U4M
0000096e R_386_PC16 __PTC
000009af R_386_PC16 __PIA
000009d6 R_386_PC16 __U4M
00000a96 R_386_PC16 __PTC
00000ad7 R_386_PC16 __PIA
00000b01 R_386_PC16 __U4M
00000b8f R_386_PC16 __PTC
00000bd0 R_386_PC16 __PIA
00000bfa R_386_PC16 __U4M
00000caa R_386_PC16 __PTC
00000ceb R_386_PC16 __PIA
00000d12 R_386_PC16 __U4M
00000ddc R_386_PC16 __PTC
00000e1d R_386_PC16 __PIA
00000e44 R_386_PC16 __U4M
00000f13 R_386_PC16 __PTC
00000f54 R_386_PC16 __PIA
00000fd0 R_386_PC16 __PTC
00001011 R_386_PC16 __PIA
00001038 R_386_PC16 __U4M
000010eb R_386_PC16 __PIA
0000110f R_386_PC16 __PIA
0000114a R_386_PC16 __PTC
0000115c R_386_PC16 __PIA
0000116f R_386_PC16 __PTS
000000e5 R_386_PC16 LZMA_DEC99
0000011b R_386_PC16 LZMA_DEC99
00000127 R_386_PC16 LZMA_DEC99
00000170 R_386_PC16 LZMA_DEC99
00000199 R_386_PC16 LZMA_DEC99
000001b0 R_386_PC16 LZMA_DEC99
00000213 R_386_PC16 LZMA_DEC99
00000247 R_386_PC16 LZMA_DEC99
00000283 R_386_PC16 LZMA_DEC99
000002af R_386_PC16 LZMA_DEC99
000002c6 R_386_PC16 LZMA_DEC99
0000034c R_386_PC16 LZMA_DEC99
00000378 R_386_PC16 LZMA_DEC99
0000038f R_386_PC16 LZMA_DEC99
000003ff R_386_PC16 LZMA_DEC99
00000467 R_386_PC16 LZMA_DEC99
00000493 R_386_PC16 LZMA_DEC99
000004aa R_386_PC16 LZMA_DEC99
0000054e R_386_PC16 LZMA_DEC99
0000057a R_386_PC16 LZMA_DEC99
00000591 R_386_PC16 LZMA_DEC99
000005ff R_386_PC16 LZMA_DEC99
00000657 R_386_PC16 LZMA_DEC99
000006b0 R_386_PC16 LZMA_DEC99
000006d1 R_386_PC16 LZMA_DEC99
0000073a R_386_PC16 LZMA_DEC99
0000078e R_386_PC16 LZMA_DEC99
000007f8 R_386_PC16 LZMA_DEC99
00000824 R_386_PC16 LZMA_DEC99
0000083b R_386_PC16 LZMA_DEC99
000008ea R_386_PC16 LZMA_DEC99
00000916 R_386_PC16 LZMA_DEC99
00000930 R_386_PC16 LZMA_DEC99
000009ad R_386_PC16 LZMA_DEC99
000009d9 R_386_PC16 LZMA_DEC99
000009f3 R_386_PC16 LZMA_DEC99
00000a93 R_386_PC16 LZMA_DEC99
00000abf R_386_PC16 LZMA_DEC99
00000ad6 R_386_PC16 LZMA_DEC99
00000b8f R_386_PC16 LZMA_DEC99
00000bbb R_386_PC16 LZMA_DEC99
00000bd2 R_386_PC16 LZMA_DEC99
00000c90 R_386_PC16 LZMA_DEC99
00000cbc R_386_PC16 LZMA_DEC99
00000d27 R_386_PC16 LZMA_DEC99
00000d53 R_386_PC16 LZMA_DEC99
00000d6a R_386_PC16 LZMA_DEC99
00000e17 R_386_PC16 LZMA_DEC99
00000e3b R_386_PC16 LZMA_DEC99
00000e6b R_386_PC16 LZMA_DEC99
00000e73 R_386_PC16 LZMA_DEC99
RELOCATION RECORDS FOR [EXERELO1]:
OFFSET TYPE VALUE