OSDN Git Service

ldso: Add remaining relocation types to the table
[uclinux-h8/uClibc.git] / TODO
diff --git a/TODO b/TODO
index 2b3238f..c6ad7bf 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,35 +1,55 @@
-TODO list for the uClibc 0.9.29 release:
+TODO list for every uClibc release:
 -------------------------------------------------
-    *) cleanup fallout from hidden_proto() updates
-    *) 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
+    *) 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)
-    *) 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.
-    *)  Fix it so valgrind 2.4.0 no longer complains about the memory mmaped
-       and used by ldso.  Currently it whines on basically about virtually
-       every function call when doing default lazy binding, which makes its
-       output virtually useless due to the excess noise.
-    *)  Change all references to the older "Library GPL" to the "Lesser GPL"
-       and update COPYING.LIB to LGPL version 2.1.
-    *)  vapier todo: finish new linuxthreads import
-
-
-
 
 TODO list for the uClibc 1.0.0 release:
 -------------------------------------------------
-
-    *) Hide uClibc internal symbols from our exported namespace.
+    *) 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
@@ -53,8 +73,8 @@ TODO list for the uClibc 1.0.0 release:
        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
+    *) 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
@@ -65,25 +85,20 @@ TODO list for the uClibc 1.0.0 release:
     *) 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.
-    *) Rework the build system Makefile to eliminate recursive make.
-    *) Build both pic and non-pic objects where appropriate, so that
-       static libs need not pay the pic size penalty.
     *) Cleanup/scrub all the Makefile copyright junk
     *) Fix dlopen, for both static and dynamic cases, and make it
        fully comply with SuSv3
-    *) 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.
+    *) 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 Linux 2.6.x NPTL pthreads, futexes, etc
+    *) 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
@@ -91,33 +106,37 @@ TODO list for AFTER the uClibc 1.0.0 release:
     *) 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:
-    _init/_fini hangs signal-ed (assert test)
-    output from cloned children seems funky (unistd/clone test)
     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
-  mips:
-    brk/pipe fixes: http://www.uclibc.org/lists/uclibc/2006-January/013824.html
-                    http://bugs.uclibc.org/view.php?id=469
+  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
-  x86_64:
-    pthread isn't working really at all (pthreads tests)
-
-  bfin cris rfv sh64:
-    need to be updated to new ldso changes and unification of the 
-     two uClibc_main funcs (__uClibc_start_main doesnt exist anymore)
-
+  vax:
+    pthread support, linktime warning support (implies GAS patches),
+    general touchups, testing, ldso.
 
 
 -----------------------------------------------------------------------------
@@ -132,6 +151,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.
   ----------------------------------
@@ -161,3 +185,4 @@ Manuel's todo:
   b) Write a space-efficient gettext substitute, to avoid storing large amounts
      of redundant data.
 
+