OSDN Git Service

mips/socket.h: add SOCK_CLOEXEC and SOCK_NONBLOCK definitions for mips
[uclinux-h8/uClibc.git] / TODO
diff --git a/TODO b/TODO
index 756d828..b94d541 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,30 +1,70 @@
-TODO list for the uClibc 1.0.0 release:
-
-    *) mjn3's mysterious python select/poll self-test failure that he
-       still needs to tell me about
-    *) Perhaps implement glibc style frame-unwinding, so that gcc need
-       not be built with --enable-sjlj-exceptions for exception handling to work.
-    *) Implement some mechanism (perhaps encoded in the .so name)
-       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.
-    *) Implement the float and long double versions of math funcs,
-       using wrappers on top of the double versions (size / precision
-       trade off).
-    *) Delete current profiling code (because it is crap
-       and only works when static + PIC)
-    *) Fix profiling by adding missing stub functions per
-       http://uclibc.org/lists/uclibc/2004-February/008167.html
-       and used by, i.e. http://www710.univ-lyon1.fr/~yperret/fnccheck/
+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.
+       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.
-    *) Make all small objects (>~50 bytes) into either inlines or
-       into a static library
-    *) Add support for Linux 2.6.x NGPL pthreads, futexes, etc
+       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 0.9.31 release:
+-------------------------------------------------
+    *) merge NPTL
+       Settle cancellation
+       support arches: (- todo; + done)
+       + arm
+       + sh
+       + mips
+       - i386
+       - x86_64
+       - ...
+    *) 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
+
+
+TODO list for the uClibc 0.9.29 release:
+-------------------------------------------------
+    *) as many of the arch-specific issues as possible
+    *) Remove N instances of libc_hidden_proto() from uClibc internals.
+       Instead add internal only header(s) defining all hidden prototypes.
+       This will avoid clutter and guarantee prototype consistancy.
+    *) The __is*_l() functions were all removed, such that we now only export
+       the is*_l() functions (no prefix).  Before, we had the prefixed versions
+       for use by libstdc++ and weak versions without prefixes exported because
+       those functions belong to no std (unless you call glibc a std).  This should
+       be fixed.  Similar problems likely were created elsewhere.
+    *) misc stdio bugs:
+       http://bugs.uclibc.org/view.php?id=420
+       http://bugs.uclibc.org/view.php?id=539
+    *) bug in getopt handling:
+       http://bugs.uclibc.org/view.php?id=61
+       http://www.uclibc.org/lists/uclibc/2006-January/013851.html
+    *) Should integrate test subdir better ... need to propagate CPU
+       CFLAGS/LDFLAGS to the build/link for target binaries so that when we have
+       a multilib toolchain, the proper ABI is selected.
+
+
+TODO list for the uClibc 1.0.0 release:
+-------------------------------------------------
+    *) 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
@@ -32,33 +72,72 @@ TODO list for the uClibc 1.0.0 release:
                set of uClibc and glibc.
            *) Update docs/uClibc_vs_SuSv3.txt document
            *) Update docs/threads.txt document
-           *) Write a HOWTO 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
+       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
+
+
+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.
-    *) 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.
-    *) __data_start needs to be added to any crt0.S files that don't
-       currently have it.  It is used by the boehm gc.  mjn3 has added
-       it to i386 and mips, but some archs are still missing it.
-    *)  It would nice if valgrind wouldn't complain about the atexit() malloc'd
-       memory for destructors, which happens since the dynamic linker calls
-       atexit(), which calls malloc() prior to valgrind starting, so valgrind
-       complains because it didn't see that memory allocated.
-    *) From the the ELF spec "...All shared object initializations happen
-       before the executable file gains control.  ...  Before the initialization
-       code for any object A is called, the initialization code for any other
-       objects that object A depends on are called.  For these purposes, an object
-       A depends on another object B, if B appears in Ads list of needed objects
-       (recorded in the DT_NEEDED entries of the dynamic structure). The order of
-       initialization for circular dependencies is undefined."  uClibc's shared
-       lib loader should be fixed to run ctors in the specified order.
+    <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.
 
 
 -----------------------------------------------------------------------------
@@ -73,6 +152,11 @@ Manuel's todo:
   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.
   ----------------------------------