UPX TODO list. Last updated 2004-07-20. IMPORTANT PROBLEMS THAT SHOULD BE FIXED SOON: - stub ctojr32 needs CPU 486 because of bswap OTHER: - rewrite linker.cpp to allow arbitrary length section names - check all to make sure they are not invalid - throwNotCompressible() is not a real error, so make the output nicer (info: bla bla). Also ui.cpp (total_*). ----------------------------------------------------------------------- IMPROVED COMPRESSION RATIO ========================== - experiment with new filters - 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 "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 - add a check so that we don't pack djgpp1 binaries FORMAT LINUX/386 ================ - don't mmap() the temporary output file - this seems to improve file io speed FORMAT TMT/ADAM =============== - the decompressors are already aligned, no need for an extra alignment FORMAT WATCOM/LE ================ - handle files without relocations - 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() - add a call to verifyOverlappingDecompression() FORMAT WIN16/NE =============== - implement readFileHeader() to correctly identify a win16/ne executable, so that the call for contribution will get thrown FORMAT WIN32/PE =============== - fix the section alignment with the Intel compiler - 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.