X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=TODO;h=c6ad7bfb5173cf2e146998b9b7101810448223fe;hb=refs%2Fheads%2Fmaster;hp=c64daa9f7f32c53ed0bd81acc97fb6ef90073338;hpb=520204fff130a917266f452ed672a0885b8e0d8f;p=uclinux-h8%2FuClibc.git diff --git a/TODO b/TODO index c64daa9f7..c6ad7bfb5 100644 --- a/TODO +++ b/TODO @@ -1,103 +1,188 @@ -Erik's TODO list for the next release: - - 1) Reentrancy auditing - 2) Better configuration system (CML1 + kbuild + menuconfig) - 3) When fixing the config system, ensure that _every_ option - that is enabled or disabled is listed in uClibc_config.h - 4) When options are disabled, also disable them in the - include files as well. - 5) Make all small objects (>~50 bytes) into either inlines or +TODO list for every uClibc release: +------------------------------------------------- + *) Test cris, i386, mips, mipsel, sh, x86_64, arm, armeb, and powerpc + with the latest LTP testsuite. Fix any regressions and post LTP + testsuite results for each architecture on uclibc.org. + *) Audit header files. Remove prototypes for all functions that + are not supported -- especially needed for the libm headers. + *) Audit header files. When options are disabled, also disable + them in the include files as well by checking for the proper + define from include/bits/uClibc_config.h (pulled in from features.h) + +TODO list for the uClibc 1.0.0 release: +------------------------------------------------- + *) NPTL + support arches: (o todo; + done) + o alpha + + arm + o avr32 + o bfin + o cris + o e1 + o frv + o h8300 + o hppa + + i386 + o i960 + o ia64 + o m68k + o microblaze + + mips + o nios + o nios2 + + powerpc + + sh + + sh64 + o sparc + o v850 + o vax + o x86_64 + o xtensa + o ... + *) Go through SUSv4 + TOC: http://www.opengroup.org/onlinepubs/9699919799/xrat/contents.html + shell (busybox): http://www.opengroup.org/onlinepubs/9699919799/xrat/V4_xcu_chap01.html#tag_22_01_01 + interface: + http://www.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap13.html#tag_21_13_02 + http://www.opengroup.org/onlinepubs/9699919799/xrat/V4_xsh_chap01.html#tag_23_01_01 + *) glob / fnmatch tests fail + *) regex should pass AT&T conformance tests + *) Finish hiding uClibc internal symbols from our exported namespace + *) Add system for generating minimal system call asm wrappers that abuse + the C ABI to minimize amount of register/stack manipulation + *) Explicity add some sortof CONFIG_LINUX_2_2_ABI, CONFIG_LINUX_2_4_ABI + and CONFIG_LINUX_2_6_ABI type options, rather than having the abi + depend on the selected set of kernel headers. This will likely also + require that we provide a set of kernel headers (probably a derivitive + of Mazur's linux-libc-headers) that can supplies the 2.2, 2.4, and 2.6 + kernel abi. + *) Documentation updates: + *) Write a uClibc HOWTO document + *) Update README document + *) Update INSTALL document + *) Update docs/Glibc_vs_uClibc_Differences.txt document + and fully document all differences between the feature + set of uClibc and glibc. + *) Update docs/uClibc_vs_SuSv3.txt document + *) Update docs/threads.txt document + *) Write man pages for ldd and ldconfig utility binaries + *) Implement some mechanism (perhaps encoded in the .so name, + perhaps using an abi tag magically embedded into each object) + for flagging config options that break the ABI. Options + such as UCLIBC_HAS_SOFT_FLOAT, UCLIBC_HAS_THREADS, UCLIBC_HAS_LOCALE, + and perhaps others (finalize list) produce a lib with a differing + ABI. Make it so apps cannot use an ABI mis-matched uClibc. + This is most easily done using symbol versioning... + *) Implement the long double versions of math funcs on interrested + arches using wrappers on top of the double versions (size / precision + trade off where size clearly wins). + *) Make all small objects (>~50 bytes) into either inlines or into a static library - 6) Rework code that fails POSIX conformance tests - 7) Fix the bugs in libcrypt so it passes conformance tests - 8) Split the tests up into two parts -- a compile phase, and - a separate shell-script-driven test phase, allowing the - tests to be run when cross compiling.... - -Other random things: - - *) Add struct _res support to libc/inet/resolv.c. Right now, - struct _res, and res_init do nothing. The other res_* - functions are not yet implemented. So fix that. - *) Fix uClibc timezone support so date(1) will show a real - timezone, instead of just '???' - *) Rework code that fails POSIX conformance tests - *) Rework pwd/grp for standards compliance (and integrate - Jeff Garzik's key-value reading code for pwd/grp, and - perhaps for /etc/hosts and friends as well) - *) Document all differences between the feature set of uClibc - and glibc. - *) Add missing syscall() function to allow arbitraty syscalls - to be made. - + *) Cleanup / rewrite sysconf.c. It should get some information + from ldso (such as HZ). Other stuff it currently just makes + up, which is obviously wrong. Also bits/uClibc_clk_tck.h + needs to be updated at the same time to get proper HZ values. + *) poll emulation using select() for old 2.0.x uClinux kernels + in libc/sysdeps/linux/common/poll.c fails some python self-tests. + Of course, modern systems using the actuall poll() syscall work fine. + *) Cleanup/scrub all the Makefile copyright junk + *) Fix dlopen, for both static and dynamic cases, and make it + fully comply with SuSv3 + *) check if sched_getcpu is only pulled in where it should be + *) remove HANDLE_OLDER_RLIMIT, NEW_GETRLIMIT (conditionalize on + ugetrlimit, it seems, else use the modern variant) + *) simplify exec*() in the light of execvpe (perhaps single internal + impl); USE_GNU for execvpe (and other GNU extensions, see psm). + + +TODO list for AFTER the uClibc 1.0.0 release: +------------------------------------------------- + *) Add support for 64bit time (to deal withhttp://2038bug.com/): + date -s 011903142038 sets epoch to roll over in a few seconds (2^31) + *) Add support for Linux 2.6.x fast vsyscalls + *) Enable pristine source tree builds + *) Fix regex so it isn't so stinking big + *) Fix glob so it isn't so stinking big + *) run 'nm -D --size-sort -t d libuClibc-0.9.26.so' and work on the + biggest things (i.e. stuff at the end of the list) to make + them smaller. + *) Fix dlopen/dlsym/dlclose locking to more fine grained or use RCU + + + +Arch specific TODO: +------------------------------------------------- + alpha: + ldso is not implemented + arm: + update crt1 code again for nommu (http://bugs.uclibc.org/view.php?id=538) + recruit jbowler and integrate thumb support + frv: + needs to be updated for the new ldso changes and unification of the + uClibc_main funcs (__uClibc_start_main doesnt exist anymore) + hppa: + errno.c test segfaults causes segfault in clone.S (seems to be in glibc too) + i386: + add support for fast system calls + ia64: + ldso is not implemented + m68k: + ldso lazy relocation doesnt work + sh64: + ldso is reasonably broken, presently requiring additional + coaxing/threatening. + sparc: + need a sigaction.c since common one doesnt work (signal tests) + ldso needs to be updated since it's totally broken atm + vax: + pthread support, linktime warning support (implies GAS patches), + general touchups, testing, ldso. ----------------------------------------------------------------------------- Manuel's todo: - -Implement wide unformatted i/o. (current project) - -Implement wide formatted output (printf). - -Update the strto* funcs to my current versions to remove the dependency - on the long long support funcs from libgcc.a. - -Update some other stdlib and (possibly) string funcs. - -Update the ctype code to my latest stuff... smaller plus supports new isblank() - for locales while still keeping byte table entries. - -Reimplement scanf for narrow and wide streams. - -Improve customization of the new stdio code. - -Reimplement _dtostr to correct its deficiencies and hopefully reduce its size. - -Revisit the unified syscall stuff which has been broken for a while now. - -Older stuff... - -Move the target-specific sysconf.c generator to extra (as it needs to be - run on the target) and fix libc/unistd/Makefile. - -Add a usage message to the gcc wrapper. - -Make errno and endptr handling the default in the strto* functions and - document how to turn those off to save space. - ------------------------------------------------------------------------------ -ds's list: - -Search for string literals that are not in the .rodata section. (Varies -by architecture and gcc version.) - -man pages for binaries - -add obstack stuff for gettext (?) - -check compiling without FP support -- are FP instructions still generated? -Needs a uClibc_config.h entry dependent on HAS_FLOATING_POINT. - -Why does ld.so search /usr/powerpc-uclibc/lib before LD_LIBRARY_PATH? - ------------------------------------------------------------------------------ - -Any takers? - -*) Fix regex so it isn't so stinking big -*) Fix glob so it isn't so stinking big -*) Documentation - - List all differences between the feature set of uClibc and glibc. -*) run 'nm -D --size-sort -t d libuClibc-0.9.5.so' and work on the biggest things - (i.e. stuff at the end of the list) to make them smaller. -*) make inb/outb work for all arches. This is complete for i386 and arm. - Other archs like powerpc, still need fixing. - ------------------------------------------------------------------------------ - -PORTING -------- -bits/dirent.h currently differs from the glibc version (d_type unsupported) + 1) Little things that need fixing: + ---------------------------------- + a) Fix bug in *printf: outdigit precison bug + b) Check that gnu/bsd extension members tm_gmtoff and tm_zone in struct tm + are respected where they should be. + c) Implement the obstack printf funcs for glibc compat. + d) Implement glibc 'a' flag for scanf string conversions. + e) Allow use of the older non-table-based ctype functions when using + stub locale support. (smaller) + f) __drand48_iterate should be void + g) alphasort vs. versionsort. The former seems to be SVID, the latter GNU + i.e. reverse to what we currently do. The latter is unimplemented. + h) ponder removal/configs to turn off: __xpg_*, bsd_signal, dysize, + getw/putw, utimes, + + 2) Additional str{f|p}time issues. + ---------------------------------- + a) Spacing issue wrt strptime. + b) Support locale specific alternate digits. (data is in place) + c) Support locale era in year designations. (data is in place) + d) Deal with mb format string issues in strftime. + e) Implement wcsftime. + + 3) Other locale issues (my implementation): + ------------------------------------------- + a) Do a little more clean up of ctype and wctype. + b) Rework of the locale data organization to make using locales reasonable + when staticly linking. (mmap) + c) Rewrite the locale data generation tools to process the text specifications + rather than relying on glibc. + d) Adapt regex lib to use my collation data and add the necessary collating + item tables to support SUSv3 required features. + e) transliteration of unsupported wchars in 8-bit locales (like glibc). + f) Support ISO/IEC 14652 draft locale extensions (LC_PAPER, etc). + g) Implement strfrom. + h) Shift-state codeset locale support? + + 4) Misc: + -------- + a) Port uClibc to other OSs (including elks), or even bare metal (libgloss). + b) Write a space-efficient gettext substitute, to avoid storing large amounts + of redundant data.