-
-Erik's TODO list for the next release:
-
- 1) Release gcc 2.95.x native uClibc toolchain with
- STLport (to provide full C++ support)
- 2) Commit new configuration system (CML1 + kbuild + menuconfig)
- work is already done and ready to commit...
- 3) Fix profiling support
- 4) Implement getgrgid_r and getgrnam_r, per SuSv3
- 5) Fix libc/inet/rpc/rpc_thread.c thread local storage
- 6) Change HAS_FLOATING_POINT so we can support -msoft-float
- 7) When options are disabled, also disable them in the
- include files as well.
- 8) 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
- 9) Rework code that fails POSIX conformance tests
- 10) Document all differences between the feature set of uClibc
- and glibc.
- 11) Add missing syscall() function to ports that are still
- missing it. (x86 and arm are finished so far).
-
+ *) 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
+
+
+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
+ <more wishlist items here>
+
+
+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:
-In the next couple of months, I plan on completing the wide char and locale
-support. Here's my current list of things to implement by early November.
-
1) Little things that need fixing:
----------------------------------
- a) Use locale decimal point in *printf() and strto*d() -- slightly
- complicated by the fact that at least one locale uses a wchar
- radix that does not map to a single byte in UTF-8.
- b) Use locale digit grouping in *printf().
- c) Implement %lc (%C) and %ls (%S) handling for printf.
- d) Deal with mb format string issues in printf, scanf,
- strftime (at least).
- e) Implement wcwidth() and wcswidth() -- use Markus Kuhn's versions.
-
- 2) Implement wide char numeric conversion functions -- wcsto*().
- ----------------------------------------------------------------
- These should be relatively minor modifications to the corresponding
- strto*() functions, unless locale specific alternate digit support
- is desired.
-
- 3) Implement wide formatted output -- *wprintf():
- -------------------------------------------------
- The stream output variants should be easily created by appropriately
- modifying the char *printf() functions.
-
- The string buffer variants may take some time to implement because
- they need to store wchars in a buffer. It will be necessary to hack
- the core stdio code slightly to support this.
-
- 4) Reimplement scanf for narrow and wide streams.
- -------------------------------------------------
- The current char version of scanf() needs some cleanup. Also,
- modifying the char version of scanf() to create the wchar versions
- will require reworking the implementation of matching char sets
- (enclosed in []).
-
- Also, as with *wprintf() above, the string buffer variants of wscanf()
- may require some additional work to the core stdio code.
-
- 5) Additional str{f|p}time issues.
+ 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.
----------------------------------
- Support locale specific alternate digits.
- Support locale era in year designations.
-
- 6) Other locale issues (my implementation):
- -------------------------------------------
- a) Clean up locale code to make building easier. Fix alt_digits.
- (Note: This is only _clean_up_ of the current stuff in extra/locale
- so that it can be cross-compiled, etc. I'm not talking about the
- complete rewrite that should really be done.)
- b) Additional clean up of ctype and wctype.
- c) Implement collation support for char and wchar -- *xfrm() and *coll().
- d) transliteration of unsupported wchars in 8-bit locales (like glibc).
-
-
-Other stuff:
-
-Reimplement _dtostr to correct its deficiencies (%A support!) and hopefully
- reduce its size.
-
-Move the target-specific sysconf.c generator to extra (as it needs to be
- run on the target) and fix libc/unistd/Makefile.
-
-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)
+ 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.