Glibc Syllable Changelog

* November 17th 2005 *

	o Add backtracesyms.c & backtracesymsfd.c, which use the generic versions to override
	  the ELF specific versions (Which do not work on Syllable)

* July 24th 2005 *

	o Removed unused syscalls from syscalls.list & i386/syscalls.list
		adjtimex
		bdflush
		get_kernel_syms
		personality
		sendfile
		uselib
		modify_ldt

* June 12th 2005 *

	o Add compile gaurds around the initialisation of the LOCALE tsd in locale/global-locale.c
	  Like HURD, the initialisation is implicit with Syllable.

* June 11th 2005 *

	o Removed include/syslog.h

* May 30th 2005 *

	o Moved misc/syslog.[c|h] to sysdeps/generic/ which allows us to properly override the
	  default implementation with our own version in sysdeps/unix/sysv/syllable

* May 25th 2005 *

	o open_attdir(): allocate enough space in the DIR struct so read_attrdir doesn't stomp all
	  over it.
	o Cleanup read_attrdir() and make the return values slightly more sane if the syscall returns
	  an error.

* May 15th 2005 *

	o New syscall get_msg_size()
	o Rename uname() to __uname() and add proper symbol aliases

* May 9th 2005 *

	o Re-write i386/libc-lock.c

* May 7th 2005 *

	o New syscall get_tld_addr()
	o Implement Syllable version of bits/libc-tsd.h
	o libc-start.c, spawn_thread.c: Pre-allocate __LIBC_TSD_COUNT number of TLD slots for
	  libc internal use.

* March 28th 2005 *

	o Imported the 2.3.4 RC2 source into a local CVS repository.
	o Misc patches by Jake Hamby:
		* execve: Correct interpreter argument passing
		* create_area: C99 type changes
		* paths.h: Correct _PATH_VI
		* resource.h: Change values for PRIO_MIN & PRIO_MAX
		* set_tld: Add const qualifier
		* sys/reg.h: Take latest Linux version
		* sys/user.h, sys/debugreg.h: New files
		* syllable/Versions: Replace tabs.  _rtld_global_ro, rewind_attrdir & rewind_indexdir
		  are exported by GCC 3.4
		* syllable/Versions: Add missing strace, strace_exclude & strace_include
		* ftruncate: Make syscall
		* truncate.c: New implementation instead of generic version
		* ftruncate64.c, truncate64.c: New files
		* lseek.c: Don't call __set_errno after INLINE_SYSCALL
	o pty fixes by Jake Hamby:
		* getpt.c, ptsname.c: New files
		* getttyname, getttyname_r: Remove do_stat argument, use dirent instead of dirent64
		* grantpt.c: Removed.  Use generic UNIX version.
	o signal handling additions by Jake Hamby:
		* sigaction.h: Define SA_NOCLDWAIT
		* sigsuspend: Add second syscall argument
		* siglist.h, sys/ucontext.h: New files
		* syllable/syscalls.list: Correct arguments for sigalstack
 
* March 14th 2005 *

	o Add missing malloc-machine.h, which replaced thread-m.h for malloc.  Glibc is not
	  thread safe without it.
	o version.h: Build libraries as version 2.3.4

* February 6th 2005 *

	o Implemented gettimeofday() using get_real_time() on Syllable, as per Glibc 2.1.2
	o getpid(): Return thread ID via. get_thread_id() instead of process ID via. get_process_id().

* February 4th 2005 *

	o Add create_area() to Versions so that the symbol is exported
	o init-first.c: Only call __libc_init_secure() if #defined SHARED.  Pull in
	  sysdeps/generic/enbl-secure.c if not shared to get __libc_init_secure in the
	  static library.  Provide declarations of _dl_hwcap, _dl_hwcap_mask &
	  _dl_fpu_control in the static library.
	o Don't declare _dl_starting_up extern.
	o execve.c: Never set errno ENOEXEC on failure.

* January 31st 2005 *

	o Changed the syscall arguments for read_pos, readv_pos, write_pos and writev_post
	  syscalls in syscalls.list to the old-style numeric value.  These syscalls have a
	  similiar problem to snooze() E.g. the size_t argument is a long long, and using
	  the new style argument types causes the syscall to fail.
 	o fopendir(): Allocate directory entry with calloc() rather than a malloc() &
	  memset() to ensure we clear down the entire memory space, not just part of it!

* January 28th 2005 *

	o Don't emit a stub warning for _dl_mcount_wrapper_check()
	o Remove sys/dlstubs.h; obsolete.
	o get_image_id(), pass a real info struct to __do_init_library(), not NULL

* January 21st 2005 *

	o xstat & xstat64, call sys_stat() not sys_fstat()
	o Add headers to syllable-elf.mk  Distribute elf.h bits/elfclass.h link.h bits/link.h
	o Modified sleep() and nanosleep() to call the (strong symbol) __snooze() rather than
	  the (weak symbol) snooze()
	o Don't emit a stub warning for dl_addr()
	o Changed the syscall arguments for the snooze syscall in syscalls.list from i:i
	  (Returns and int, takes an int) to the old-style 1 (Takes one argument)  This has
	  caused snooze() to work properly.  I suspect the fact that snooze() takes a
	  bigtime_t (long long) argument which doesn't fit into an IA32 register is the problem
	  here.  Specifying the type of the argument in syscalls.list may invoke some casting
	  behavour which is munging the argument.
	o Remove create_area from syscalls.list and add create_area.c
	o Remove set_strace_level and add strace, strace_exclude and strace_include syscalls
	  in syscalls.list

* December 12th 2004 *

	o Add guards around init/fini array checks in the configure script; don't check and
	  set libc_cv_have_initfinit_array to no if building on Syllable
	o Sync configure.in with changes made to configure & rebuild with Autoconf
	o Sync syllable/configure.in with syllable/configure

* December 10th 2004 *

	o Removed i386/atomicity.h; defunct.
	o Remove __SYLLABLE__ definition in CFLAGS from syllable/configure 

* November 17th 2004 *

	o dirent/dirent.h: Declare fopendir() if __FOPENDIR is defined
	o bits/dirent.h: Define __FOPENDIR
	o sys/mount.h: Declare mount() and unmount()
	o Added sys/mount.h to sysdep_headers

* November 16th 2004 *

	o Added Versions entries for __lock_lock, __lock_lock_recursive & __lock_unlock so
	  that these symbols are exported from libc.so.2 (Required by E.g. libcrypt)

* November 8th 2004 *

	o Added specific version numbers to shlib-versions for the following libraries:
		* libBrokenLocale.so
		* libcrypt.so
		* libnsl.so
		* libnss_compat.so
		* libnss_dns.so
		* libnss_files.so
		* libnss_hesiod.so
		* libnss_nis.so
		* libnss_nisplus.so
		* libresolv.so
		* libutil.so
	  This ensures that none of the Glibc 2.3.3 libraries collide with the currently
	  installed 2.1.2 version.

* November 5th 2004 *

	o Modified elf/Makefile to not compile almost anything.
	o Removed unneeded stubs from rtld-stubs.c
	o Added a heavily stripped down and minimal ldsodefs.h
	o Export _rtld_global_ro from libc.so as a Glibc 2.3 symbol (Added to Versions file)
	o Modified dlfcn/Makefile to not build libdl.so.2
	o Removed some ld.so specific calls from init-first.c
	o Glibc 2.3.3 (+CVS) now compiles successfully on Syllable 0.5.4 (+CVS)
	o Cleaned up the awful hacks in elf/Makefile and dlfcn/Makefile  The Syllable Makefile
	  fragment now overrides the variables and targets for those Makefiles

* November 3rd 2004 *

	o Undone yesterdays change to Makeconfig.
	o Modified Makerules/$(build-module-helper-objlist) to filter out ld.so when building
	  on Syllable

* November 2nd 2004 *

	o Completed implementing all Syllable specific files.  Not all files were required;
	  either they were files carried over from Linux which were not relevent to Syllable
	  or deprecated.  A complete list of files is currently in the file "Implemented"
	o Makeconfig: Add a check for Syllable around the definition of config-LDFLAGS.  This
	  avoids the flag -Wl,-dynamic-linker=.. being passed to Gcc and ld complaining because
	  ld.so is a 0 byte file.

* October 13th 2004 *

	o I have not added net/if.h on the basis that neither does Linux; it appears that all
	  of the required declarations and constants are defined in other generic files.  I'm
	  making a note of this here in case the decision turns out to be wrong.
	o Removed getpt.c as it was not implemented correctly anyway.  We will need a proper
	  Syllable implementation to take into account the path within /dev for tty's
	o I have chosen not to implement openpty.c  This is part of libutil.so and is not
	  required on Syllable.  The generic openpty.c should be suitable once we have a proper
	  implementation of getpt().
	o The same applies to ptsname.c  The original AtheOS version was a direct copy of the
	  Linux file, which has never worked anyway.  Again, ptsname() is unused by Syllable
	  itself.

* October 8th 2004 *

	o Removed vm86 syscall from i386/syscall.list
	o Moved the following files out of the i386/ directory as they are not i386 specific:
		* setegid.c
		* seteuid.c
		* setgid.c
		* setuid.c
		* setregid.c
		* setreuid.c
		* setresgid.c
		* setresuid.c
		* getresgid.c
		* getresuid.c

* October 6th 2004 *

	o Finally pulled in code from libdl and added functionality for __libc_dlopen_mode,
	  __libc_dlsym and __libc_dlclose  These seem to work well enough for nss to operate
	  but are far from complete.
	o Still to do is clean up the above functions and add implementations for as much of
	  the stubs currently in dl-stubs.c as is sensible.

* October 4th 2004 *

	o Added a Syllable-specific bits/typesizes.h

* October 1st 2004 *

	o Added an implementation of fstatfs which was missing from 2.1.2 (Meaning fstatfs,
	  fstatfs64, fstatvfs & fstatvfs64 always returned -1)

* September 30th 2004 *

	o Started implementing missing functionality from 2.1.2
	o Removed exit_thread.c and added exit_thread to syscalls.list

* September 24th 2004 *

	o Fixed a nasty bug during initialisation.  _init() is called as an init function
	  during init_library(), and is passed the image ID as a parameter.  _init() expected
	  to argc, argv and envv which meant argv and envv were invalid, causing init_misc()
	  to crash and burn.  _init() now takes a single int argument and uses the extern variables
	  __libc_argc, __libc_argv and environ.
	o (Non-shared) __libc_init_first: Call init() with a dummy int parameter instead of argc,
	  argv and envv.
	o Various bug fixes in init_library() and deinit_library() when calling constructors and
	  destructors.
	o Add a special subdir_lib: target to syllable/Makefile for subdir=csu; copy
	  syllable-start.o* to start.o* just to avoid any implicit dependencies on start.S

* September 23rd 2004 *

	o Un-merge the Syllable specific changes to i386/elf/start.S and create
	  syllable/i386/syllable-start.S  Provide our own extra-objs and the rules
	  for start.o in syllable/Makefile when building csu.  Build syllable-start.S
	  instead of the generic ELF start.S
	o Split the rtld_global structures out of init-first.c into rtld-stubs.c
	o Update syllable-start.S with PIC code from i386/elf/start.S

* September 2004 *

	o Began to forward-port Glibc 2.3.2 onto the latest CVS codebase of Glibc
	o Merge patches from Glibc 2.3.2 into CVS codebase.
	o Add compile guards to atheos/atomic.h  Glibc now has it's own internal atomic.h
	  which defines an atomic_add macro which colides with the kernel supplied atomic_add
	  function.
	o Comment out static=no in the Syllable configure fragment; it's a bit silly.
	o Pull in a few new macros to libc-lock.h

* March 25th 2004 *

	o Syllable has its own, non-standard ELF ABI, so sysdeps/i386/elf/start.S has
	  been modified with a couple of #ifdef'd blocks of code.  I originally wanted
	  to keep this totally seperate from the standard i386 ELF start.S but the
	  current Makefile make that problematic.
	o Makerules: Make symbolic-link-prog use ln -s rather than elf/sln as we
	  currently cannot build sln properly.

* March 19th 2004 *

	o malloc/Makefile & debug/Makefile: Do not build anything for target
	  others:
	o timezone/Makefile: Dont try to install the timezone files; we can't
	  process them with ld.so.1 as it doesn't exist.
	o sunrpc/Makefile: Dont build librpcsvc and dont bother trying to run
	  rpcgen during subdir_install
	o Removed dlsym.c
	o Make targets subdir_lib, other, subdir_install now work

* March 18th 2004 *

	o Added dlsym.c which provides a stub for libmemusage.so
	o malloc/Makefile: Do not require ld.so for libmemusage.so
	o bits/fcntl.h: Define O_RSYNC & O_DSYNC

* February 14th 2004 *

	o Added Versions entries for every EXTRA symbol in syscalls.list

* January 30th 2004 *

	o Started a major overhaul of Syllable sources
	  Correct incorrect use of libc_hidden() macros
	  Add external symbols to Versions

* January 29th 2004 *

	o i386/fork.c: Add libc_hidden_def(__fork)
	o Add Versions file
	o Set dlfcn & libdl in Makeconfig empty if building on Syllable

* January 28th 2004 *

	o Add image.c & sys/image.h
	o Bug fixes to i386/setresgid.c & i386/setresuid.c
	o Remove i386/Makefile (Do not build setresuid & setresgid twice)
	o Include tls.h & add #if ! USE__THREAD gaurds in errno-loc.c
	o Patch sysdeps/posix/pwrite64.c: Do not libc_hidden_def()
	o Remove CFLAGS-init-first.c for subdir csu from the Makefile

* January 27th 2004 *

	o Add specific patterns for Syllable in shlib-versions
	o Change atexit() to __cxa_atexit() in libc-start.c
	o Add fsync.c & ftruncate.c

* January 24th 2004 *

	o Add empty sys/klog.h sys/mount.h sys/quota.h sys/timex.h files to keep bp-thunks.h happy
	o Change definition of libc-link in syllable/Makefile to bring it into line with the standard
	  definition
	o Add rpath-dirs to Makefile in addition to setting libc-link

* January 20th 2004 *

	o Add -D__SYLLABLE__ to CFLAGS
	o Updated the following files to latest CVS versions
	  stdio-common/sscanf.c
	  include/ctype.h
	  csu/elf-init.c

* January 18th 2004 *

	o Add sa_len.c  Only recognise AF_INET, AF_INET6 & AF_LOCAL  All other types return 0
	  lengths.  This is opposed the original implementation, which added headers & returned
	  values for types the kernel does not support.

* January 17th 2004 *

	o Re-wrote and hacked on libc-start.c to bring it closer to the Generic libc-start.c.
	  Removed call to __getopt_clean_enviroment() & __libc_init()  Added call to atexit() for
	  the fini section and a call to the init section.  Added #ifndef SHARED around the call to
	  __libc_init_first();
	o Add $(common-objpfx)libc.so: in Makerules  This is identical to the non-Syllable one but
	  does not include ld.so  This gives us soinit.os & sofini.os when linking for Syllable
	o Add dl-stubs.c to provide dynamic linker stub functions
	o Add #ifndef __SYLLABLE__ around body of elf/dl-profstub.c & provided stub implementations
	  in dl-stub.c

* January 15th 2004 *

	o Copied struct rtld_global from elf/rtld.c to init-first.c
	o Removed the ._dl_load_lock field from struct rtld_global
	o Add #ifdef USE_NONOPTION_FLAGS around getopt_clean_enviroment() call in libc-start.c
	o Added temporary #if 0 around __libc_enable_secure in sysdeps/generic/dl-sysdep.c

* January 2nd 2004 *

	o Added i386/syscall.S & defined ENTER_KERNEL in i386/sysdep.h
	o Added getdents.c & getdents64.c
	o Added getdirentriess.c & getdirentries64.c

* January 1st 2004 *

	o Added tld.c: alloc_tld, free_tld, set_tld & get_tld.  alloc_tld & free_tld have been
	  heavily modified from the original AtheOS code to fix some massive bugs in the list
	  handling.

* December 31st 2003 *

	o Re-wrote time.c using sysdeps/unix/time.c; this ensures I really do have the included
	  headers correct..
	o Added unlock_semaphore.c

* December 30th 2003 *

	o bits/libc-lock.h: Define _LIBC_LOCK_RECURSIVE_INITIALIZER
	o Added errno-loc.c

* December 29th 2003 *

	o Added get_real_time.c
	o Copy generic/setrlimit.c to setrlimit.c  The function is defined as __setrlimit &
	  weak_alias'd to setrlimit
	o Added i386/brk.c: include generic/brk.c stub version
	o Define howmany(), roundup() & powerof2() macros in sys/param.h
	o Added configure.in/configure fragment; mostly define macros which make libc thread safe.
	o Add libc_hidden_proto to time.c

* December 28th 2003 *

	o Added definination for link-libc in Makefile; do not pass -Wl,--rpath-link=$(rpath-link) to
	  the linker & add -Xlinker --whole-archive $(gnulib)  This effectively stops the dynamic
	  linker being linked into libc.
	o Added i386/atomicity.h  Based on sysdeps/i386/i486/atomicity.h but include atheos/atomic.h
	  instead of defining atomic_add()
	o Change #if defined(LLL_LOCK_INITIALIZER) && !defined(NOT_IN_libc) to
	  #if (defined(LLL_LOCK_INITIALIZER) && !defined(NOT_IN_libc)) || defined __SYLLABLE__
	  in malloc/thread-m.h  This causes malloc to use NPTL, which in turn uses the functions from
	  libc_lock.c
	o atheos/atomic.h: typedef atomic_t before we include types.h so that pthreadtypes.h does not
	  cause problems when it typedef's pthread_once_t
	o elf/dl-profile.c: Cast &fromp->here->count to (uint32_t*): stops compiler warnings when
	  using Syllable atomic_add

* December 24th 2003 *

	o Added time.c, get_system_time.c  Moved declarations for __get_system_time into sys/systime.h
	o Added i386/fork.c
	o Added bits/libc-lock.h with macros for __libc functions, but no R/W lock or RTLD lock macros
	  have been completed yet.
	o Added i386/libc_lock.c

* December 15th 2003 *

	o Copy ulimit.c from linux/ulimit.c
	o Define int __libc_enable_secure; in libc-start.c
	o Added signal.c
	o Copy bits/sigset.h from linux/bits/sigset.h
	o Copy sigset-cvt-mask.h from linux/sigset-cvt-mask.h
	o Copy sigsuspend.c from linux/sigsuspend.c  Removed some #ifdef'd code which dealt with
	  realtime signals to bring the code closer to the original AtheOS implementation.
	o Added vfork.c
	o Added wait.c
	o Added dbprintf.c; added sys/debug.h, but changed the original AtheOS use of the _P macro
	  to __THROW
	o Added setrlimit.c; simply include the generic/setrlimit.c stub

* December 13th 2003 *

	o Removed the quick test code from libc-start.c & unistd.h  This works, so why then do we get
	  errors about __libc_enable_secure being undefined in libc-start.c?

* December 12th 2003 *

	o All sorts of nasty hacks in elf/Makefile in an attempt to stop almost all of it being built.
	  This seems to have cleared up a load of "undefined symbol" errors where things like dl-open.c
	  are no longer linked, but I don't have much faith in the modifications.

	o Quick test in libc-start.c & unistd.h  Define unistd_test & trap this in unistd.h to see if
	  the header is being included & __libc_enable_secure is available.

* December 10th 2003 *

	o Added declaration of __time_t_defined and __pid_t_defined for pid_t & time_t in posix/types.h

* December 8th 2003 *

	o Removed setresuid & setresgid from syscalls.list, added i386/setresuid.c &
	  i386/setresgid.c
	o Created i386/Makefile

* December 7th 2003 *

	o Amended syscalls.list & i386/syscalls.list with new arg format

* November 29th 2003 *

	o Undo changes to binfmt-subdir made on October 25th  We now build everything in elf/
	o Comment out (Apparently buggy) __rtld_lock_define_initialized_recursive (, _dl_load_lock)
	  in elf/dl-support.c

* November 26th 2003 *

	o Declare __libc_stack_end in libc-start.c as we do not have dl-sysdeps.c to declare it.

* October 30th 2003 *

	o Changed the libc_hidden* & weak_alias macros inet_system_info.h, get_system_info.c,
	  xget_system_info.c, sys/sysinfo.h to more suitable
	  versions.  This appears to work and	  should be the final version.

* October 26th 2003 *

	o posix/types.h: typedef time_t & pid_t only if we're not compiling with __KERNEL__
	  Should probably split types.h into types.h (libc & kernel safe
	  types) & kernel_types.h (Kernel only types).
	o Add i386/sysdep.h & i386/sysdep.S  These are the Linux versions with a few
	  small changes.
	o Move xget_system_info.h to get_system_info.h
	o get_system_info.h, get_system_info.c, xget_system_info.c: Add libc_hidden()
	  macros according to info in include/libc-symbols.h
	o Move get_system_info.h to sys/sysinfo.h & add a few more prototypes.

* October 25th 2003 *

	o Makerules: Do not build ld.so stuff (soinit.c, sofini.c, interp.c) if the OS
	  is Syllable.
	o Makeconfig: Do not add interp.os to dependencies list if we are building on
	  Syllable.

* October 24th 2003 *

	o Removed IBAUD0 from tcsetattr.c
	o Removed IBAUD0 from speed.c
	o Removed CALL_SIGHANDLER macro from i386/sigcontext.h
	o Makeconfig: Do not set binfmt-subdir for Syllable (Do not build anything in
	  elf/)
