UPX TODO list. Last updated 2000-12-29. IMPROVED COMPRESSION RATIO ========================== - experiment with new filters - implement filters for linux/elf386 - 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 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 - implement compressWithFilters() FORMAT TMT/ADAM =============== - the decompressors are already aligned, no need for an extra alignment - implement compressWithFilters() 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 - implement compressWithFilters() FORMAT WIN32/PE =============== - verify that compressWithFilters() works - fix the section alignment with the Intel compiler - decrease runtime memory overhead - ??? compressing screensavers looses the description - probably should not compress a special resource type ??? 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.