OSDN Git Service

nptl: rephrase *.sym handling
[uclinux-h8/uClibc.git] / TODO
diff --git a/TODO b/TODO
index 88be58f..c6ad7bf 100644 (file)
--- a/TODO
+++ b/TODO
-
-Erik's TODO list for the next release:
-
-    1) Fix profiling support
-    2) Implement getgrgid_r and getgrnam_r, per SuSv3 
-    3) When options are disabled, also disable them in the
-       include files as well.
-    4) 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
-    5) Rework code that fails POSIX conformance tests
-    6) Document all differences between the feature set of uClibc 
-       and glibc.
-    7) 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
+       *) 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 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:
 
-I'm currently working on completing the wide char and locale support.
-
   1) Little things that need fixing:
   ----------------------------------
-  *) Fix bugs in *printf:  wprintf %ls bug ; outdigit precison bug
-  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() flosting point.
-  c) Deal with mb format string issues in scanf and strftime (at least).
-  d) Support gnu/bsd extension members tm_gmtoff and tm_zone in struct tm.
-  
-  2) Implement wide char floating point conversion functions -- wcsto*().
-  
-  3) 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 []).
-  
-  4) 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.
   ----------------------------------
   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)
-  
-  5) Other locale issues (my implementation):
+  d) Deal with mb format string issues in strftime.
+  e) Implement wcsftime.
+
+  3) Other locale issues (my implementation):
   -------------------------------------------
-  a) Additional clean up of ctype and wctype, primarily to allow for mmap'd
-     locales and updateable locale data.
-  b) Build a C-only locale object for linking and allow full locale data to
-     be mmap'd in later, to allow updating and to make locale support useful
-     for staticly linked apps.
-  c) Adapt regex lib to use my collation data and add the necessary collating
+  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.
-  d) transliteration of unsupported wchars in 8-bit locales (like glibc).
-  e) Support ISO/IEC 14652 draft locale extensions (LC_PAPER, etc).
-
-
-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)
+  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.