OSDN Git Service

SHMLBA is now defined by arch dependent bits/shm.h file so remove
[uclinux-h8/uClibc.git] / TODO
diff --git a/TODO b/TODO
index 11186eb..e9b4511 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,27 +1,86 @@
-*) Fix ldd to not multiply list libs
-*) Check cris architecture
-
-Erik's TODO list for the next release:
-
-    *) When options are disabled, also disable them in the
-       include files as well.
-    *) Make all configured out symbols optionally add a linker warning saying
-       "Hey!  You are trying to use a function that you have configured out.  
-       If you really want to use this function, enable CONFIG_FOO and rebuild
-       uClibc".
+TODO list for the uClibc 0.9.28 release:
+-------------------------------------------------
+    *) 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 each architecture with the latest LTP testsuite, and post
+       LTP testsuite results for each architecture on uclibc.org.
+
+
+TODO list for the uClibc 1.0.0 release:
+-------------------------------------------------
+
+    *) Hide uClibc internal symbols from our exported namespace.
+    *) 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
+       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
-    *) Document all differences between the feature set of uClibc 
-       and glibc.
+    *) 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.
+    *)  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.
+    *) 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.
+
+
+TODO list for AFTER the uClibc 1.0.0 release:
+-------------------------------------------------
+    *) Add support for Linux 2.6.x NPTL pthreads, futexes, etc
+    *) 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
-    *)  Fix the dlopen() bug with handling of symbols that are already
-       resolved.  Seems if it is already resolved it ignores them rather than
-       resolving the new symbol and overriding.
-    *) Adapt uClibc to use Linux 2.5.x pthreads
-    *) Remove all use of kernel headers (i.e. copy the needed bits
-       to completely specify the per-arch kernel ABI).
-    *) Fix x86 profiling.  It currently only works when static + PIC...
+    *) 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.
+    <more wishlist items here>
+
+
 
 
 -----------------------------------------------------------------------------
@@ -36,7 +95,7 @@ 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)
-  
+
   2) Additional str{f|p}time issues.
   ----------------------------------
   a) Spacing issue wrt strptime.
@@ -44,7 +103,7 @@ Manuel's todo:
   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.
@@ -65,37 +124,3 @@ Manuel's todo:
   b) Write a space-efficient gettext substitute, to avoid storing large amounts
      of redundant data.
 
-
-Other stuff:
-
-Move the target-specific sysconf.c generator to extra (as it needs to be
-       run on the target) and fix libc/unistd/Makefile.
-
------------------------------------------------------------------------------
-ds's list:
-
-Search for string literals that are not in the .rodata section.  (Varies
-by architecture and gcc version.)
-
-man pages for binaries
-
-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?
-
-*) 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.
-
------------------------------------------------------------------------------
-
-
-