X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=TODO;h=c6ad7bfb5173cf2e146998b9b7101810448223fe;hb=33a12b5540b8abbc4ee0ecb3a51912b3c7868517;hp=82994613ae8fda26a22ab2e106d216532264b68a;hpb=03f338ab663d8b2fa16c8d1f83be51ecf9c79312;p=uclinux-h8%2FuClibc.git diff --git a/TODO b/TODO index 82994613a..c6ad7bfb5 100644 --- a/TODO +++ b/TODO @@ -1,43 +1,188 @@ -Any takers? - -Fix regex so it isn't so stinking big -Fix glob so it isn't so stinking big -Integrate Jeff Garzik's key-value reading code for pwd/grp, /etc/hosts, etc -Get the arm port of the shared lib loader working -Get the powerpc port of the shared lib loader working -Finish sparc port -Standardize the style of the header files. -Documentation -Better configuration system +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 + *) 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). ------------------------------------------------------------------------------ -Manuel's unsorted todo: -Move the target-specific sysconf.c generator to extra (as it needs to be - run on the target) and fix libc/unistd/Makefile. +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 + -Move the unified syscall stuff to extra, or find a way to generate the - the required header file without using an intermediate binary. -Add a usage message to the gcc wrapper. +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. -Look at pre-cephes-addition floating point code and possibly rework. - (primarily nan and infinity handling) -Make scanf and strtod aware of nan and inf. +----------------------------------------------------------------------------- +Manuel's todo: -Add overflow error-checking to fread and fwrite. + 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, -Document uClibc-specific extensions I know of or have implemented. - binary string conversion for printf - malloc-less stdio - optional printf unconfigured-for-type error messages + 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. -Add binary string conversion to scanf to mirror printf? + 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? -What to do about %m in printf? + 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. -Make errno and endptr handling the default in the strto* functions and - document how to turn those off to save space. ------------------------------------------------------------------------------