Completely updated the TODO list.
committer: mfx <mfx> 978101036 +0000
This commit is contained in:
@@ -1,187 +1,100 @@
|
|||||||
NOTE: this TODO list is completely out of date (~ Dec 1999)
|
UPX TODO list. Last updated 2000-12-29.
|
||||||
|
|
||||||
===================================================================
|
|
||||||
|
|
||||||
- Rearrange this TODO list, sort by categories, add a priority (1-5)
|
|
||||||
|
|
||||||
|
|
||||||
For 0.95:
|
|
||||||
|
|
||||||
- FIXME: what do we want in 1.00 ???
|
IMPROVED COMPRESSION RATIO
|
||||||
|
==========================
|
||||||
|
|
||||||
- add NRV2D for dos/exe (use by default when >= 400 kB)
|
- experiment with new filters
|
||||||
|
|
||||||
- implement switch `-m' for method: 1 NRV2B, 2 NRV2D
|
- implement filters for linux/elf386
|
||||||
|
|
||||||
- DLL problem under NT ? is this fixed ???
|
- implement filters for dos/exe
|
||||||
|
|
||||||
|
- filters: could we exploit a f->firstcall info field ?
|
||||||
|
|
||||||
|
- for small programs (e.g. < 64k), try an additional algorithm
|
||||||
|
to see if it gives better compression
|
||||||
|
|
||||||
|
|
||||||
PE
|
ALL FORMATS
|
||||||
==
|
===========
|
||||||
|
|
||||||
|
- more thoroughly test the exe-header in canPack()
|
||||||
|
and throw exceptions when encountering bad values.
|
||||||
|
|
||||||
|
- implement `--cpu=486' option to use bswap on the 32-bit formats
|
||||||
|
(if cpu >= 486)
|
||||||
|
|
||||||
|
- consider removing "sbb bp,bp" or "or ebp,-1" when not needed
|
||||||
|
|
||||||
|
|
||||||
|
FORMAT DJGPP2/COFF
|
||||||
|
==================
|
||||||
|
|
||||||
|
- handle overlays
|
||||||
|
|
||||||
|
- fix default file extension handling when the --coff option is set
|
||||||
|
|
||||||
|
|
||||||
|
FORMAT DOS/EXE
|
||||||
|
==============
|
||||||
|
|
||||||
|
- implement filters
|
||||||
|
|
||||||
|
|
||||||
|
FORMAT LINUX/386
|
||||||
|
================
|
||||||
|
|
||||||
|
- don't mmap() the temporary output file - this seems to improve
|
||||||
|
file io speed
|
||||||
|
|
||||||
|
|
||||||
|
FORMAT LINUX/ELF386
|
||||||
|
===================
|
||||||
|
|
||||||
|
- implement filters
|
||||||
|
|
||||||
|
|
||||||
|
FORMAT TMT/ADAM
|
||||||
|
===============
|
||||||
|
|
||||||
|
- the decompressors are already aligned, no need for an
|
||||||
|
extra alignment
|
||||||
|
|
||||||
|
|
||||||
|
FORMAT WATCOM/LE
|
||||||
|
================
|
||||||
|
|
||||||
|
- the decompressors are already aligned, no need for an
|
||||||
|
extra alignment
|
||||||
|
|
||||||
|
- fix default file extension handling when the --le option is set
|
||||||
|
|
||||||
|
- handle holes in the file
|
||||||
|
|
||||||
|
|
||||||
|
FORMAT WIN32/PE
|
||||||
|
===============
|
||||||
|
|
||||||
|
- make compressWithFilters() work
|
||||||
|
|
||||||
|
- decrease runtime memory overhead
|
||||||
|
|
||||||
2 - easy - mfx + ml) new switch(es) : do not compress resource types x,y,z
|
2 - easy - mfx + ml) new switch(es) : do not compress resource types x,y,z
|
||||||
or resource names a,b,c
|
or resource names a,b,c
|
||||||
|
|
||||||
3 - medium - ml) rebuild exports
|
3 - medium - ml) rebuild exports
|
||||||
|
|
||||||
3 - difficult) don't compress the BSS section and other holes.
|
3 - difficult) don't compress the BSS section and other holes.
|
||||||
|
|
||||||
4 - medium - ml) fix when objectalign < 0x1000
|
4 - medium - ml) fix when objectalign < 0x1000
|
||||||
|
|
||||||
4 - easy - ml) put the original offset of moved resources somewhere into
|
4 - easy - ml) put the original offset of moved resources somewhere into
|
||||||
the res.dir. (if it's safe to do)
|
the res.dir. (if it's safe to do)
|
||||||
|
|
||||||
4 - ??? - ml) fix FIXMEs
|
4 - ??? - ml) fix FIXMEs
|
||||||
|
|
||||||
5 - medium - ml) try to put the preprocessed imports & relocs back to their
|
5 - medium - ml) try to put the preprocessed imports & relocs back to their
|
||||||
original section if possible this could save some virtual memory
|
original section if possible. this could save some virtual memory
|
||||||
address space
|
address space.
|
||||||
|
|
||||||
|
|
||||||
COM
|
|
||||||
===
|
|
||||||
|
|
||||||
|
|
||||||
EXE
|
|
||||||
===
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LE
|
|
||||||
==
|
|
||||||
|
|
||||||
4 - easy - ml) the decompressors are already aligned, no need for an
|
|
||||||
extra alignment
|
|
||||||
|
|
||||||
4 - difficult - ml) handle holes in the file
|
|
||||||
|
|
||||||
|
|
||||||
TMT
|
|
||||||
===
|
|
||||||
|
|
||||||
4 - easy - ml) the decompressors are already aligned, no need for an
|
|
||||||
extra alignment
|
|
||||||
|
|
||||||
|
|
||||||
LINUX
|
|
||||||
=====
|
|
||||||
|
|
||||||
4 - ???)
|
|
||||||
- test with AOUT binaries
|
|
||||||
- test with Java binaries
|
|
||||||
- make a compressed program suid. what happens ?
|
|
||||||
|
|
||||||
5 - difficult) rewrite the whole stub in assembly
|
|
||||||
|
|
||||||
|
|
||||||
SPARC
|
|
||||||
=====
|
|
||||||
|
|
||||||
3 - easy - ml) finish support - should generate byte-identical versions
|
|
||||||
for all formats (except those which are using Packer::getRandomId())
|
|
||||||
|
|
||||||
|
|
||||||
DJGPP2
|
|
||||||
======
|
|
||||||
|
|
||||||
1 - ???) do we support overlays at all ???
|
|
||||||
|
|
||||||
5 - ???) fix file extension handling when the --coff option is set
|
|
||||||
|
|
||||||
|
|
||||||
FOR 0.95
|
|
||||||
========
|
|
||||||
|
|
||||||
- enable automatic dependency tracking
|
|
||||||
|
|
||||||
1 - mfx) determine when to use NRV2D, find best c_flags values for
|
|
||||||
NRV2B & NRV2D (see util/runtest.sh)
|
|
||||||
|
|
||||||
5 - boring - mfx) Finally fix all screen and UI problems. How boring...
|
|
||||||
Probably should think about the whole system (printf vs. fprintf vs.
|
|
||||||
con_fprintf...)
|
|
||||||
|
|
||||||
5 - policy - ml+mfx) Discuss a default C++ style (GNU indent 2.2.3)
|
|
||||||
with Laszlo and use it. Or maybe Artistic Style?
|
|
||||||
|
|
||||||
10) Examine why pod2text breaks lines within something like `B<--coff>'.
|
|
||||||
(pod sucks anyway. unfortunately all alternatives as well.)
|
|
||||||
|
|
||||||
|
|
||||||
MISC
|
|
||||||
====
|
|
||||||
|
|
||||||
3 - difficult ml) The first two sentences of the README look too much like
|
|
||||||
those from the aspack docs. Laszlo, could you rewrite this ?
|
|
||||||
|
|
||||||
1 - easy - mfx) Check whether the compressed size of the executable is
|
|
||||||
really smaller than the uncompressed
|
|
||||||
|
|
||||||
1 - ??? - mfx) Implement a more informational interface.
|
|
||||||
Probably add some global functions in msg.cpp.
|
|
||||||
Should think about the requirements first, i.e. should there be
|
|
||||||
some simple hierarchies (header1, header2, ...) etc. ?
|
|
||||||
Could use the `-v' switch for enabling this (or `-i' ??).
|
|
||||||
- Something like this would be fine: (with colors :-)
|
|
||||||
[Processing kernel32.dll]
|
|
||||||
[Import]
|
|
||||||
3 DLL.
|
|
||||||
Original size: 12345 bytes.
|
|
||||||
Preprocessed size: 6789 bytes.
|
|
||||||
[Relocations]
|
|
||||||
Original size: 50000 bytes.
|
|
||||||
Preprocessed size: 25000 bytes.
|
|
||||||
[Exports]
|
|
||||||
<warning> exports compressed (try --compress-export=0 if needed)
|
|
||||||
[TLS]
|
|
||||||
Added 56 bytes TLS data.
|
|
||||||
Added 5 fixup records.
|
|
||||||
[Resources]
|
|
||||||
Directory size: 1234 bytes.
|
|
||||||
Resource data size: 100000 bytes.
|
|
||||||
Compressed resources: 8 (99900 bytes).
|
|
||||||
Not compressed resources: 1 (100 bytes).
|
|
||||||
|
|
||||||
3 - ???) delete temporary files when something wrong happens
|
|
||||||
|
|
||||||
4 - easy - ml) Add a `--486' option to use bswap on the 32-bit formats.
|
|
||||||
|
|
||||||
4 - easy - ml) consider removing 'sbb bp,bp' or "or ebp,-1" when not needed
|
|
||||||
|
|
||||||
5 - ???) idea: --subfile=xx compress xx. subfile: we'd need a list_subfiles
|
|
||||||
for this...
|
|
||||||
|
|
||||||
|
|
||||||
FIXME: classify
|
|
||||||
|
|
||||||
GOALS FOR 0.90
|
|
||||||
==============
|
|
||||||
|
|
||||||
- Provide additional NRV2D stubs for all 32-bit formats. Try to do this
|
|
||||||
in a generic way so that we can possibly add more algorithms.
|
|
||||||
Start by adding a `--nrv2d' switch.
|
|
||||||
|
|
||||||
FOR 0.90
|
|
||||||
========
|
|
||||||
|
|
||||||
/ update the output of `--help'
|
|
||||||
|
|
||||||
- filters: implement the missing scan() function for f_cto32.
|
|
||||||
Maybe could use this to try to find an optimal filter (e.g.
|
|
||||||
if level >= 9) based on the counts.
|
|
||||||
|
|
||||||
- filters: could we have use for a f->firstcall info field ?
|
|
||||||
|
|
||||||
TODO
|
|
||||||
====
|
|
||||||
|
|
||||||
- all formats: more thoroughly test the exe-header in canPack()
|
|
||||||
and throw exceptions when encountering bad values.
|
|
||||||
|
|
||||||
- experiment with filters
|
|
||||||
|
|
||||||
- for small programs (e.g. < 64k) try an additional algorithm (like
|
|
||||||
the non yet finished NRV2C) to see if it gives better compression ?
|
|
||||||
|
|
||||||
/ make checkerg++ work -> test
|
|
||||||
|
|
||||||
- fix file extension handling when the --coff option is set
|
|
||||||
|
|
||||||
- set up an "official" test suite
|
|
||||||
|
|
||||||
- finish documentation
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user