From cd4292dd5555c1b8c8e2266cf2c5e48e4294f0e8 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Fri, 29 Dec 2000 14:43:56 +0000 Subject: [PATCH] Completely updated the TODO list. committer: mfx 978101036 +0000 --- TODO | 251 +++++++++++++++++++---------------------------------------- 1 file changed, 82 insertions(+), 169 deletions(-) diff --git a/TODO b/TODO index 3457a9b0..eb499a4a 100644 --- a/TODO +++ b/TODO @@ -1,187 +1,100 @@ -NOTE: this TODO list is completely out of date (~ Dec 1999) - -=================================================================== - -- Rearrange this TODO list, sort by categories, add a priority (1-5) +UPX TODO list. Last updated 2000-12-29. -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 or resource names a,b,c + 3 - medium - ml) rebuild exports + 3 - difficult) don't compress the BSS section and other holes. + 4 - medium - ml) fix when objectalign < 0x1000 + 4 - easy - ml) put the original offset of moved resources somewhere into the res.dir. (if it's safe to do) + 4 - ??? - ml) fix FIXMEs + 5 - medium - ml) try to put the preprocessed imports & relocs back to their - original section if possible this could save some virtual memory - 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] - 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 - + original section if possible. this could save some virtual memory + address space.