[Glibc-bsd-commits] r1688 - in trunk: glibc-2.3-head glibc-ports
Petr Salinger
ps-guest at costa.debian.org
Mon Oct 16 11:38:15 UTC 2006
Author: ps-guest
Date: 2006-10-16 11:38:14 +0000 (Mon, 16 Oct 2006)
New Revision: 1688
Added:
trunk/glibc-ports/NOTES
Removed:
trunk/glibc-2.3-head/NOTES-2.4
trunk/glibc-2.3-head/glibc24-cfi-sysdeps.diff
trunk/glibc-2.3-head/glibc24-extra-sysdeps.diff
trunk/glibc-2.3-head/glibc24-ftw.diff
trunk/glibc-2.3-head/glibc24-memusage_no_mremap.diff
trunk/glibc-2.3-head/glibc25-gai_misc.h
trunk/glibc-2.3-head/glibc25-nocancel-sysdeps.diff
trunk/glibc-2.3-head/glibc25-queue.h
Modified:
trunk/glibc-2.3-head/README
Log:
* build of glibc 2.5 finished
Deleted: trunk/glibc-2.3-head/NOTES-2.4
===================================================================
--- trunk/glibc-2.3-head/NOTES-2.4 2006-10-16 09:26:27 UTC (rev 1687)
+++ trunk/glibc-2.3-head/NOTES-2.4 2006-10-16 11:38:14 UTC (rev 1688)
@@ -1,136 +0,0 @@
-glibc 2.4/2.5 status
-====================
-
-linuxthreads are moved from trunk into ports
- http://sourceware.org/ml/libc-alpha/2005-07/msg00001.html
-
-for short term Daniel Jacobowitz <dan at debian.org> will maintain them
- http://sourceware.org/ml/libc-alpha/2005-07/msg00002.html
-
-
-used directories and files:
----------------------------
-
- sysdeps/kfreebsd/
- linuxthreads/kfreebsd/
- patches/
- glibc24-cfi-sysdeps.diff
- glibc24-extra-sysdeps.diff
- glibc24-memusage_no_mremap.diff
- glibc24-ftw.diff
- glibc25-nocancel-sysdeps.diff
- glibc25-queue.h
- glibc25-gai_misc.h
-
-
-test build:
------------
-
-* get main glibc module and linuxthreads module from snapshot or directly from CVS
- (ftp://sources.redhat.com/pub/glibc/snapshots/)
-
-* move linuxthreads & linuxthreads_db from module linuxthreads into top dir
-
-* try to apply patches
- of course, patches in subdir upstream are already in CVS
- failures in configure/configure.in ignore
- failure in nscd/mem.c fix manually
- failures in misc/sys/queue.h [only in 2.4.9x; queue.h is updated to another *BSD]
- overwrite misc/sys/queue.h by glibc25-queue.h from this directory
-
-* fix malloc/memusage.c - by glibc24-memusage_no_mremap.diff
- unconditionally assumes mremap and uses MREMAP_FIXED
- it also unconditionally uses __thread :-(
-
-* io/ftw.c uses unconditionally O_DIRECTORY :-((((((
- it have to be rewritten correctly
- add "enum { O_DIRECTORY = 0 };" into bits/fcntl.h
- this way it will have value, but will not be #define'd
- it is used unconditionally also in testsuite :-((
- (workaround currently in glibc24-extra-sysdeps.diff)
-
-* io/ftw.c uses unconditionally (unimplemented) *at functions
- revert to previous behaviour - by glibc24-ftw.diff
-
-* enable mandatory cfi marking - by glibc24-cfi-sysdeps.diff
-
-* update sysdeps - by glibc24-extra-sysdeps.diff
-
- details of glibc24-extra-sysdeps.diff:
-
-* add "enum { O_DIRECTORY = 0 };" into bits/fcntl.h
-
-* define MSG_NOSIGNAL
- enable definition in kfreebsd/bits/socket.h
-
-* many files are moved from sysdeps/generic,
- we #include<> some of them, use new location
-
-* new sysdeps files (based on linux)
- kernel-posix-cpu-timers.h (empty)
- check_fds.c ("void __libc_check_standard_fds (void) {;}")
-
-* new sysdeps files (use generic version)
- sbrk.c (#include <misc/sbrk.c>)
- check_pf.c (#include <inet/check_pf.c>)
-
-* changes to sysdeps
- i386/sysdep.h - drop definition of SETUP_PIC_REG(reg)
- dl-osinfo.h - add function _dl_setup_stack_chk_guard()
-
-* add another _not_cancel() functions - by glibc25-nocancel-sysdeps.diff
-
-* for pre-2.5 snapshots add/fix file linuxthreads/sysdeps/pthread/gai_misc.h - by glibc25-gai_misc.h
- (in upstream CVS as of 2006-10-02 and also in glibc-linuxthreads-2.5)
-
-../src/configure --enable-add-ons=linuxthreads --with-tls --with-__thread i486-kfreebsd --prefix=...
-
-"make check" results:
----------------------
-(as of 2006-09-18)
-
- requires (and tests) Linux specific O_NOATIME
-make[2]: *** [/build/g24/build/dirent/tst-fdopendir.o] Error 1
-
- kernel doesn't fill enough in siginfo_t for signal handlers
-make[2]: *** [/build/g24/build/posix/tst-waitid.out] Error 1
-
- no similar syscall, unimplemented
-make[2]: *** [/build/g24/build/io/tst-readlinkat.out] Error 1
-
- no similar syscall, emulation hitted by (unavoidable) race condition
-make[2]: *** [/build/g24/build/misc/tst-pselect.out] Error 1
-
- requires SIGRTMIN
-make[2]: *** [/build/g24/build/rt/tst-timer2.o] Error 1
-make[2]: *** [/build/g24/build/rt/tst-mqueue5.o] Error 1
-make[2]: *** [/build/g24/build/rt/tst-timer4.o] Error 1
-make[2]: *** [/build/g24/build/rt/tst-timer5.o] Error 1
-make[2]: *** [/build/g24/build/rt/tst-cputimer1.o] Error 1
-make[2]: *** [/build/g24/build/rt/tst-cputimer2.o] Error 1
-make[2]: *** [/build/g24/build/rt/tst-cputimer3.o] Error 1
-
- examine why, maybe due to non-rt behaviour of signals
-make[2]: *** [/build/g24/build/rt/tst-aio.out] Error 1
-make[2]: *** [/build/g24/build/rt/tst-aio64.out] Error 1
-make[2]: *** [/build/g24/build/rt/tst-aio9.out] Error 1
-make[2]: *** [/build/g24/build/rt/tst-aio10.out] Error 1
-
- due to unimplemented readlinkat()
-make[2]: *** [/build/g24/build/debug/tst-chk1.out] Error 1
-make[2]: *** [/build/g24/build/debug/tst-chk2.out] Error 1
-make[2]: *** [/build/g24/build/debug/tst-chk3.out] Error 1
-make[2]: *** [/build/g24/build/debug/tst-lfschk1.out] Error 1
-make[2]: *** [/build/g24/build/debug/tst-lfschk2.out] Error 1
-make[2]: *** [/build/g24/build/debug/tst-lfschk3.out] Error 1
-
- kernel problem - dynamic loader is loaded at base addr 0
- all elf tests passed
- - when executed "normally"
- - when tested under kFreeBSD 6.1 with SVN r1622
-make[2]: *** [/build/g24/build/elf/neededtest.out] Error 14
-make[2]: *** [/build/g24/build/elf/neededtest2.out] Error 14
-make[2]: *** [/build/g24/build/elf/neededtest3.out] Error 17
-make[2]: *** [/build/g24/build/elf/neededtest4.out] Error 2
-make[2]: *** [/build/g24/build/elf/circleload1.out] Error 9
-
Modified: trunk/glibc-2.3-head/README
===================================================================
--- trunk/glibc-2.3-head/README 2006-10-16 09:26:27 UTC (rev 1687)
+++ trunk/glibc-2.3-head/README 2006-10-16 11:38:14 UTC (rev 1688)
@@ -40,12 +40,4 @@
-------------------------------------------------------------------------------
-Status of 2.3.6:
-================
-
-i386 - looks fine, uploaded in unreleased
-
-amd64 - looks fine, uploaded in unstable
-
-alpha - not even tried to build
-
+For glibc 2.5 and above, see glibc-ports in this SVN.
Deleted: trunk/glibc-2.3-head/glibc24-cfi-sysdeps.diff
===================================================================
--- trunk/glibc-2.3-head/glibc24-cfi-sysdeps.diff 2006-10-16 09:26:27 UTC (rev 1687)
+++ trunk/glibc-2.3-head/glibc24-cfi-sysdeps.diff 2006-10-16 11:38:14 UTC (rev 1688)
@@ -1,144 +0,0 @@
- patch to kfreebsd sysdeps to enable cfi for glibc 2.4 snapshot
- see also NOTES-2.4
-
-
-Index: linuxthreads/kfreebsd/i386/sysdep-cancel.h
-===================================================================
---- linuxthreads/kfreebsd/i386/sysdep-cancel.h (revision 1568)
-+++ linuxthreads/kfreebsd/i386/sysdep-cancel.h (revision 1570)
-@@ -61,12 +61,13 @@
- fork()
- vfork()
- rfork()
-+ pipe()
-
- none of them is cancelable, therefore
- */
-
--# define PUSHRESULT pushl %eax; pushfl
--# define POPRESULT popfl; popl %eax
-+# define PUSHRESULT pushl %eax; cfi_adjust_cfa_offset (4); pushfl; cfi_adjust_cfa_offset (4)
-+# define POPRESULT popfl; cfi_adjust_cfa_offset (-4); popl %eax; cfi_adjust_cfa_offset (-4)
-
- # ifdef IS_IN_libpthread
- # define CENABLE call __pthread_enable_asynccancel;
-@@ -74,15 +75,23 @@
- # elif defined IS_IN_librt
- # ifdef PIC
- # define CENABLE pushl %ebx; \
-+ cfi_adjust_cfa_offset (4); \
-+ cfi_rel_offset (ebx, 0); \
- call __i686.get_pc_thunk.bx; \
- addl $_GLOBAL_OFFSET_TABLE_, %ebx; \
- call __librt_enable_asynccancel at PLT; \
-- popl %ebx;
-+ popl %ebx; \
-+ cfi_adjust_cfa_offset (-4); \
-+ cfi_restore (ebx);
- # define CDISABLE pushl %ebx; \
-+ cfi_adjust_cfa_offset (4); \
-+ cfi_rel_offset (ebx, 0); \
- call __i686.get_pc_thunk.bx; \
- addl $_GLOBAL_OFFSET_TABLE_, %ebx; \
- call __librt_disable_asynccancel at PLT; \
-- popl %ebx;
-+ popl %ebx; \
-+ cfi_adjust_cfa_offset (-4); \
-+ cfi_restore (ebx);
- # else
- # define CENABLE call __librt_enable_asynccancel;
- # define CDISABLE call __librt_disable_asynccancel
-Index: sysdeps/kfreebsd/i386/rfork.S
-===================================================================
---- sysdeps/kfreebsd/i386/rfork.S (revision 1568)
-+++ sysdeps/kfreebsd/i386/rfork.S (revision 1570)
-@@ -33,6 +33,7 @@
- andl %edx, %eax
-
- popl %edx
-+ cfi_adjust_cfa_offset(-4)
- jmp *%ecx
-
- L(pseudo_end):
-Index: sysdeps/kfreebsd/i386/start_thread.S
-===================================================================
---- sysdeps/kfreebsd/i386/start_thread.S (revision 1568)
-+++ sysdeps/kfreebsd/i386/start_thread.S (revision 1570)
-@@ -28,6 +28,10 @@
-
- .text
- ENTRY (__start_thread)
-+ /* End FDE now, because in the child the unwind info will be
-+ wrong. */
-+ cfi_endproc
-+
- /* There is a window of a few instructions, right after the rfork
- system call, where the handling of a signal would write garbage
- into the stack shared by the parent and the child (assuming
-@@ -199,4 +203,5 @@
- popl %ebx
- popl %ebp
- jmp SYSCALL_ERROR_LABEL
-+ cfi_startproc
- PSEUDO_END (__start_thread)
-Index: sysdeps/kfreebsd/i386/vfork.S
-===================================================================
---- sysdeps/kfreebsd/i386/vfork.S (revision 1568)
-+++ sysdeps/kfreebsd/i386/vfork.S (revision 1570)
-@@ -27,6 +27,7 @@
-
- /* Pop the return PC value into ECX. */
- popl %ecx
-+ cfi_adjust_cfa_offset(-4)
-
- /* Perform the system call. */
- DO_CALL (vfork, 0)
-@@ -45,6 +46,7 @@
- L(error):
- /* Push back the return PC. */
- pushl %ecx
-+ cfi_adjust_cfa_offset(4)
-
- /* Branch to the error handler, hidden in PSEUDO_END. */
- jmp SYSCALL_ERROR_LABEL
-Index: sysdeps/kfreebsd/i386/sysdep.h
-===================================================================
---- sysdeps/kfreebsd/i386/sysdep.h (revision 1568)
-+++ sysdeps/kfreebsd/i386/sysdep.h (revision 1570)
-@@ -136,14 +136,20 @@
- # else
- # define SYSCALL_ERROR_HANDLER \
- 0:pushl %ebx; \
-+ cfi_adjust_cfa_offset (4); \
-+ cfi_rel_offset (ebx, 0); \
- SETUP_PIC_REG (bx); \
- addl $_GLOBAL_OFFSET_TABLE_, %ebx; \
- pushl %eax; \
-+ cfi_adjust_cfa_offset (4); \
- PUSH_ERRNO_LOCATION_RETURN; \
- call BP_SYM (__errno_location)@PLT; \
- POP_ERRNO_LOCATION_RETURN; \
- popl %ecx; \
-+ cfi_adjust_cfa_offset (-4); \
- popl %ebx; \
-+ cfi_adjust_cfa_offset (-4); \
-+ cfi_restore (ebx); \
- movl %ecx, (%eax); \
- orl $-1, %eax; \
- jmp L(pseudo_end);
-Index: sysdeps/kfreebsd/i386/syscall.S
-===================================================================
---- sysdeps/kfreebsd/i386/syscall.S (revision 1568)
-+++ sysdeps/kfreebsd/i386/syscall.S (revision 1570)
-@@ -21,9 +21,11 @@
- .text;
- ENTRY (syscall)
- popl %ecx /* Pop return address into %ecx. */
-+ cfi_adjust_cfa_offset (-4)
- movl 0(%esp), %eax /* Load syscall number into %eax. */
- int $0x80 /* Do the system call. */
- pushl %ecx /* Push back return address. */
-+ cfi_adjust_cfa_offset (4)
- jb SYSCALL_ERROR_LABEL; /* Jump to error handler if error. */
-
- L(pseudo_end):
Deleted: trunk/glibc-2.3-head/glibc24-extra-sysdeps.diff
===================================================================
--- trunk/glibc-2.3-head/glibc24-extra-sysdeps.diff 2006-10-16 09:26:27 UTC (rev 1687)
+++ trunk/glibc-2.3-head/glibc24-extra-sysdeps.diff 2006-10-16 11:38:14 UTC (rev 1688)
@@ -1,126 +0,0 @@
-
- patch to kfreebsd sysdeps for building glibc 2.4 snapshot
- see also NOTES-2.4
-
-diff -urN linuxthreads/kfreebsd/allocrtsig.c linuxthreads/kfreebsd/allocrtsig.c
---- linuxthreads/kfreebsd/allocrtsig.c 2005-12-19 08:43:29.000000000 +0100
-+++ linuxthreads/kfreebsd/allocrtsig.c 2006-03-02 10:34:13.000000000 +0100
-@@ -1,4 +1,4 @@
--#include <sysdeps/generic/allocrtsig.c>
-+#include <signal/allocrtsig.c>
- strong_alias (__libc_current_sigrtmin, __libc_current_sigrtmin_private);
- strong_alias (__libc_current_sigrtmax, __libc_current_sigrtmax_private);
- strong_alias (__libc_allocate_rtsig, __libc_allocate_rtsig_private);
-diff -urN -x .svn sysdeps/kfreebsd/kernel-posix-cpu-timers.h sysdeps/kfreebsd/kernel-posix-cpu-timers.h
---- sysdeps/kfreebsd/kernel-posix-cpu-timers.h 1970-01-01 01:00:00.000000000 +0100
-+++ sysdeps/kfreebsd/kernel-posix-cpu-timers.h 2006-03-02 14:04:19.000000000 +0100
-@@ -0,0 +1 @@
-+/* placeholder */
-diff -urN -x .svn sysdeps/kfreebsd/bits/fcntl.h sysdeps/kfreebsd/bits/fcntl.h
---- sysdeps/kfreebsd/bits/fcntl.h 2005-12-16 16:29:14.000000000 +0100
-+++ sysdeps/kfreebsd/bits/fcntl.h 2006-03-02 11:24:01.000000000 +0100
-@@ -43,6 +43,8 @@
- #define O_NOFOLLOW 0x0100 /* Don't follow symlinks. */
- #endif
-
-+enum { O_DIRECTORY = 0 };
-+
- /* File status flags for `open' and `fcntl'. */
- #define O_APPEND 0x0008 /* Writes append to the file. */
- #define O_NONBLOCK 0x0004 /* Non-blocking I/O. */
-diff -urN -x .svn sysdeps/kfreebsd/check_fds.c sysdeps/kfreebsd/check_fds.c
---- sysdeps/kfreebsd/check_fds.c 1970-01-01 01:00:00.000000000 +0100
-+++ sysdeps/kfreebsd/check_fds.c 2006-03-02 10:30:14.000000000 +0100
-@@ -0,0 +1 @@
-+void __libc_check_standard_fds (void) {;}
-diff -urN -x .svn sysdeps/kfreebsd/check_pf.c sysdeps/kfreebsd/check_pf.c
---- sysdeps/kfreebsd/check_pf.c 1970-01-01 01:00:00.000000000 +0100
-+++ sysdeps/kfreebsd/check_pf.c 2006-03-02 10:39:53.000000000 +0100
-@@ -0,0 +1 @@
-+#include <inet/check_pf.c>
-diff -urN -x .svn sysdeps/kfreebsd/dl-osinfo.h sysdeps/kfreebsd/dl-osinfo.h
---- sysdeps/kfreebsd/dl-osinfo.h 2006-02-14 18:12:55.000000000 +0100
-+++ sysdeps/kfreebsd/dl-osinfo.h 2006-03-02 11:24:32.000000000 +0100
-@@ -97,3 +97,24 @@
- } \
- } \
- } while (0)
-+
-+static inline uintptr_t __attribute__ ((always_inline))
-+_dl_setup_stack_chk_guard (void)
-+{
-+ uintptr_t ret;
-+#ifdef ENABLE_STACKGUARD_RANDOMIZE
-+ int fd = __open ("/dev/urandom", O_RDONLY);
-+ if (fd >= 0)
-+ {
-+ ssize_t reslen = __read (fd, &ret, sizeof (ret));
-+ __close (fd);
-+ if (reslen == (ssize_t) sizeof (ret))
-+ return ret;
-+ }
-+#endif
-+ ret = 0;
-+ unsigned char *p = (unsigned char *) &ret;
-+ p[sizeof (ret) - 1] = 255;
-+ p[sizeof (ret) - 2] = '\n';
-+ return ret;
-+}
-diff -urN -x .svn sysdeps/kfreebsd/glob.c sysdeps/kfreebsd/glob.c
---- sysdeps/kfreebsd/glob.c 2006-01-23 11:02:39.000000000 +0100
-+++ sysdeps/kfreebsd/glob.c 2006-03-02 10:37:07.000000000 +0100
-@@ -1,3 +1,3 @@
- /* 'glob64' is different from 'glob', because
- 'struct stat64' != 'struct stat'. */
--#include <sysdeps/generic/glob.c>
-+#include <posix/glob.c>
-diff -urN -x .svn sysdeps/kfreebsd/i386/sysdep.h sysdeps/kfreebsd/i386/sysdep.h
---- sysdeps/kfreebsd/i386/sysdep.h 2006-01-19 14:02:55.000000000 +0100
-+++ sysdeps/kfreebsd/i386/sysdep.h 2006-03-02 10:31:06.000000000 +0100
-@@ -81,27 +81,6 @@
- # define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
- #else
-
--# ifndef HAVE_HIDDEN
--# define SETUP_PIC_REG(reg) \
-- call 1f; \
-- .subsection 1; \
--1:movl (%esp), %e##reg; \
-- ret; \
-- .previous
--# else
--# define SETUP_PIC_REG(reg) \
-- .section .gnu.linkonce.t.__i686.get_pc_thunk.reg,"ax", at progbits; \
-- .globl __i686.get_pc_thunk.reg; \
-- .hidden __i686.get_pc_thunk.reg; \
-- .type __i686.get_pc_thunk.reg, at function; \
--__i686.get_pc_thunk.reg: \
-- movl (%esp), %e##reg; \
-- ret; \
-- .size __i686.get_pc_thunk.reg, . - __i686.get_pc_thunk.reg; \
-- .previous; \
-- call __i686.get_pc_thunk.reg
--# endif
--
- # if RTLD_PRIVATE_ERRNO
- # define SYSCALL_ERROR_HANDLER \
- 0:SETUP_PIC_REG(cx); \
-diff -urN -x .svn sysdeps/kfreebsd/sbrk.c sysdeps/kfreebsd/sbrk.c
---- sysdeps/kfreebsd/sbrk.c 1970-01-01 01:00:00.000000000 +0100
-+++ sysdeps/kfreebsd/sbrk.c 2006-03-02 10:39:38.000000000 +0100
-@@ -0,0 +1 @@
-+#include <misc/sbrk.c>
-diff -urN -x .svn sysdeps/kfreebsd/sigreturn.c sysdeps/kfreebsd/sigreturn.c
---- sysdeps/kfreebsd/sigreturn.c 2005-12-16 13:27:58.000000000 +0100
-+++ sysdeps/kfreebsd/sigreturn.c 2006-03-02 10:38:02.000000000 +0100
-@@ -1,3 +1,3 @@
- /* The sigreturn syscall cannot be explicitly called on FreeBSD, only
- implicitly by returning from a signal handler. */
--#include <sysdeps/generic/sigreturn.c>
-+#include <signal/sigreturn.c>
-diff -urN -x .svn sysdeps/kfreebsd/utmp-compat/utmp_file.c sysdeps/kfreebsd/utmp-compat/utmp_file.c
---- sysdeps/kfreebsd/utmp-compat/utmp_file.c 2005-12-16 13:27:58.000000000 +0100
-+++ sysdeps/kfreebsd/utmp-compat/utmp_file.c 2006-03-02 10:36:08.000000000 +0100
-@@ -1 +1 @@
--#include <sysdeps/generic/utmp_file.c>
-+#include <login/utmp_file.c>
Deleted: trunk/glibc-2.3-head/glibc24-ftw.diff
===================================================================
--- trunk/glibc-2.3-head/glibc24-ftw.diff 2006-10-16 09:26:27 UTC (rev 1687)
+++ trunk/glibc-2.3-head/glibc24-ftw.diff 2006-10-16 11:38:14 UTC (rev 1688)
@@ -1,51 +0,0 @@
-
-disable usage of unimplemented *at functions
-revert to previous behaviour, inspired by
- http://sourceware.org/ml/glibc-cvs/2006-q1/msg00636.html
- http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/io/ftw.c.diff?cvsroot=glibc&r1=1.50&r2=1.51
-
-
---- io/ftw.c~ 2006-06-26 19:35:23.000000000 +0200
-+++ io/ftw.c 2006-06-26 19:35:23.000000000 +0200
-@@ -338,6 +338,7 @@
- {
- assert (data->dirstreams[data->actdir] == NULL);
-
-+#if 0
- if (dfdp != NULL && *dfdp != -1)
- {
- int fd = openat64_not_cancel_3 (*dfdp, data->dirbuf + data->ftw.base,
-@@ -347,6 +348,7 @@
- close_not_cancel_no_status (fd);
- }
- else
-+#endif
- {
- const char *name = ((data->flags & FTW_CHDIR)
- ? data->dirbuf + data->ftw.base: data->dirbuf);
-@@ -401,10 +403,12 @@
- *((char *) __mempcpy (data->dirbuf + data->ftw.base, name, namlen)) = '\0';
-
- int statres;
-+#if 0
- if (dir->streamfd != -1)
- statres = FXSTATAT (_STAT_VER, dir->streamfd, name, &st,
- (data->flags & FTW_PHYS) ? AT_SYMLINK_NOFOLLOW : 0);
- else
-+#endif
- {
- if ((data->flags & FTW_CHDIR) == 0)
- name = data->dirbuf;
-@@ -424,10 +428,12 @@
- flag = FTW_SLN;
- else
- {
-+#if 0
- if (dir->streamfd != -1)
- statres = FXSTATAT (_STAT_VER, dir->streamfd, name, &st,
- AT_SYMLINK_NOFOLLOW);
- else
-+#endif
- statres = LXSTAT (_STAT_VER, name, &st);
- if (statres == 0 && S_ISLNK (st.st_mode))
- flag = FTW_SLN;
Deleted: trunk/glibc-2.3-head/glibc24-memusage_no_mremap.diff
===================================================================
--- trunk/glibc-2.3-head/glibc24-memusage_no_mremap.diff 2006-10-16 09:26:27 UTC (rev 1687)
+++ trunk/glibc-2.3-head/glibc24-memusage_no_mremap.diff 2006-10-16 11:38:14 UTC (rev 1688)
@@ -1,19 +0,0 @@
---- malloc/memusage.c~ 2006-06-12 15:45:13.000000000 +0200
-+++ malloc/memusage.c 2006-06-12 15:45:13.000000000 +0200
-@@ -650,6 +650,8 @@
- return result;
- }
-
-+#include <_G_config.h>
-+#ifdef _G_HAVE_MREMAP
-
- /* `mmap' replacement. We do not have to keep track of the sizesince
- `munmap' will get it as a parameter. */
-@@ -715,6 +717,7 @@
- /* Return the pointer to the user buffer. */
- return result;
- }
-+#endif
-
-
- /* `munmap' replacement. */
Deleted: trunk/glibc-2.3-head/glibc25-gai_misc.h
===================================================================
--- trunk/glibc-2.3-head/glibc25-gai_misc.h 2006-10-16 09:26:27 UTC (rev 1687)
+++ trunk/glibc-2.3-head/glibc25-gai_misc.h 2006-10-16 11:38:14 UTC (rev 1688)
@@ -1,69 +0,0 @@
-/* Copyright (C) 2006 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* We define a special synchronization primitive for AIO. POSIX
- conditional variables would be ideal but the pthread_cond_*wait
- operations do not return on EINTR. This is a requirement for
- correct aio_suspend and lio_listio implementations. */
-
-#include <assert.h>
-#include <signal.h>
-
-#undef DONT_NEED_GAI_MISC_COND
-
-#define gai_start_notify_thread __gai_start_notify_thread
-#define gai_create_helper_thread __gai_create_helper_thread
-
-extern inline void
-__gai_start_notify_thread (void)
-{
- sigset_t ss;
- sigemptyset (&ss);
- sigprocmask (SIG_SETMASK, &ss, NULL);
-}
-
-extern inline int
-__gai_create_helper_thread (pthread_t *threadp, void *(*tf) (void *),
- void *arg)
-{
- pthread_attr_t attr;
-
- /* Make sure the thread is created detached. */
- pthread_attr_init (&attr);
- pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
-
- /* The helper thread needs only very little resources. */
- (void) pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN);
-
- /* Block all signals in the helper thread. To do this thoroughly we
- temporarily have to block all signals here. */
- sigset_t ss;
- sigset_t oss;
- sigfillset (&ss);
- sigprocmask (SIG_SETMASK, &ss, &oss);
-
- int ret = pthread_create (threadp, &attr, tf, arg);
-
- /* Restore the signal mask. */
- sigprocmask (SIG_SETMASK, &oss, NULL);
-
- (void) pthread_attr_destroy (&attr);
- return ret;
-}
-
-#include_next <gai_misc.h>
Deleted: trunk/glibc-2.3-head/glibc25-nocancel-sysdeps.diff
===================================================================
--- trunk/glibc-2.3-head/glibc25-nocancel-sysdeps.diff 2006-10-16 09:26:27 UTC (rev 1687)
+++ trunk/glibc-2.3-head/glibc25-nocancel-sysdeps.diff 2006-10-16 11:38:14 UTC (rev 1688)
@@ -1,70 +0,0 @@
-Index: linuxthreads/kfreebsd/pt-sigsuspend.S
-===================================================================
---- linuxthreads/kfreebsd/pt-sigsuspend.S (revision 1659)
-+++ linuxthreads/kfreebsd/pt-sigsuspend.S (working copy)
-@@ -23,3 +23,7 @@
- PSEUDO_NOERRNO(__pthread_sigsuspend, sigsuspend, 1)
- ret_NOERRNO
- PSEUDO_END_NOERRNO(__pthread_sigsuspend)
-+
-+PSEUDO(__syscall_sigsuspend, sigsuspend, 1)
-+ ret
-+PSEUDO_END(__syscall_sigsuspend)
-Index: sysdeps/kfreebsd/not-cancel.h
-===================================================================
---- sysdeps/kfreebsd/not-cancel.h (revision 1659)
-+++ sysdeps/kfreebsd/not-cancel.h (working copy)
-@@ -74,3 +74,15 @@
- /* Uncancelable waitpid. */
- # define waitpid_not_cancel(pid, stat_loc, options) \
- INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL)
-+
-+/* Uncancelable pause. */
-+# define pause_not_cancel() \
-+ __pause_nocancel ()
-+
-+/* Uncancelable nanosleep. */
-+# define nanosleep_not_cancel(requested_time, remaining) \
-+ INLINE_SYSCALL (nanosleep, 2, requested_time, remaining)
-+
-+/* Uncancelable sigsuspend. */
-+#define sigsuspend_not_cancel(set) \
-+ INLINE_SYSCALL (sigsuspend, 1, set)
-Index: sysdeps/kfreebsd/syscalls-inline.h
-===================================================================
---- sysdeps/kfreebsd/syscalls-inline.h (revision 1659)
-+++ sysdeps/kfreebsd/syscalls-inline.h (working copy)
-@@ -21,9 +21,12 @@
- #define KFREEBSD_INLINE_SYSCALLS_H
-
- #include <sys/types.h>
-+#define __need_sigset_t
-+#include <signal.h>
-
- struct iovec;
- struct rusage;
-+struct timespec;
-
- int __syscall_open(const char *path, int flags, ...);
- int __syscall_close(int fd);
-@@ -35,5 +38,7 @@
- int __syscall_fcntl(int fd, int cmd, ...);
- int __syscall_fork(void);
- int __syscall_wait4(int pid, int *status, int options, struct rusage *rusage);
-+int __syscall_sigsuspend (const sigset_t *set);
-+int __syscall_nanosleep (const struct timespec *requested_time, struct timespec *remaining);
-
- #endif
-Index: sysdeps/kfreebsd/syscalls.list
-===================================================================
---- sysdeps/kfreebsd/syscalls.list (revision 1659)
-+++ sysdeps/kfreebsd/syscalls.list (working copy)
-@@ -144,6 +144,8 @@
- sys_connect - connect i:ipi __syscall_connect
- sys_bind - bind i:ipi __syscall_bind
- sys_sendto - sendto i:ibnibn __syscall_sendto
-+sys_nanosleep EXTRA nanosleep i:pp __syscall_nanosleep
-+sys_sigsuspend EXTRA sigsuspend i:p __syscall_sigsuspend
- swapcontext - swapcontext i:pp __swapcontext swapcontext
- swapon - swapon i:s swapon
- swapoff - swapoff i:s swapoff
Deleted: trunk/glibc-2.3-head/glibc25-queue.h
===================================================================
--- trunk/glibc-2.3-head/glibc25-queue.h 2006-10-16 09:26:27 UTC (rev 1687)
+++ trunk/glibc-2.3-head/glibc25-queue.h 2006-10-16 11:38:14 UTC (rev 1688)
@@ -1,553 +0,0 @@
-/*
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)queue.h 8.5 (Berkeley) 8/20/94
- * $FreeBSD: src/sys/sys/queue.h,v 1.58 2004/04/07 04:19:49 imp Exp $
- */
-
-#ifndef _SYS_QUEUE_H_
-#define _SYS_QUEUE_H_
-
-#include <sys/cdefs.h>
-
-/*
- * This file defines four types of data structures: singly-linked lists,
- * singly-linked tail queues, lists and tail queues.
- *
- * A singly-linked list is headed by a single forward pointer. The elements
- * are singly linked for minimum space and pointer manipulation overhead at
- * the expense of O(n) removal for arbitrary elements. New elements can be
- * added to the list after an existing element or at the head of the list.
- * Elements being removed from the head of the list should use the explicit
- * macro for this purpose for optimum efficiency. A singly-linked list may
- * only be traversed in the forward direction. Singly-linked lists are ideal
- * for applications with large datasets and few or no removals or for
- * implementing a LIFO queue.
- *
- * A singly-linked tail queue is headed by a pair of pointers, one to the
- * head of the list and the other to the tail of the list. The elements are
- * singly linked for minimum space and pointer manipulation overhead at the
- * expense of O(n) removal for arbitrary elements. New elements can be added
- * to the list after an existing element, at the head of the list, or at the
- * end of the list. Elements being removed from the head of the tail queue
- * should use the explicit macro for this purpose for optimum efficiency.
- * A singly-linked tail queue may only be traversed in the forward direction.
- * Singly-linked tail queues are ideal for applications with large datasets
- * and few or no removals or for implementing a FIFO queue.
- *
- * A list is headed by a single forward pointer (or an array of forward
- * pointers for a hash table header). The elements are doubly linked
- * so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before
- * or after an existing element or at the head of the list. A list
- * may only be traversed in the forward direction.
- *
- * A tail queue is headed by a pair of pointers, one to the head of the
- * list and the other to the tail of the list. The elements are doubly
- * linked so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before or
- * after an existing element, at the head of the list, or at the end of
- * the list. A tail queue may be traversed in either direction.
- *
- * For details on the use of these macros, see the queue(3) manual page.
- *
- *
- * SLIST LIST STAILQ TAILQ
- * _HEAD + + + +
- * _HEAD_INITIALIZER + + + +
- * _ENTRY + + + +
- * _INIT + + + +
- * _EMPTY + + + +
- * _FIRST + + + +
- * _NEXT + + + +
- * _PREV - - - +
- * _LAST - - + +
- * _FOREACH + + + +
- * _FOREACH_SAFE + + + +
- * _FOREACH_REVERSE - - - +
- * _FOREACH_REVERSE_SAFE - - - +
- * _INSERT_HEAD + + + +
- * _INSERT_BEFORE - + - +
- * _INSERT_AFTER + + + +
- * _INSERT_TAIL - - + +
- * _CONCAT - - + +
- * _REMOVE_HEAD + - + -
- * _REMOVE + + + +
- *
- */
-#define QUEUE_MACRO_DEBUG 0
-#if QUEUE_MACRO_DEBUG
-/* Store the last 2 places the queue element or head was altered */
-struct qm_trace {
- char * lastfile;
- int lastline;
- char * prevfile;
- int prevline;
-};
-
-#define TRACEBUF struct qm_trace trace;
-#define TRASHIT(x) do {(x) = (void *)-1;} while (0)
-
-#define QMD_TRACE_HEAD(head) do { \
- (head)->trace.prevline = (head)->trace.lastline; \
- (head)->trace.prevfile = (head)->trace.lastfile; \
- (head)->trace.lastline = __LINE__; \
- (head)->trace.lastfile = __FILE__; \
-} while (0)
-
-#define QMD_TRACE_ELEM(elem) do { \
- (elem)->trace.prevline = (elem)->trace.lastline; \
- (elem)->trace.prevfile = (elem)->trace.lastfile; \
- (elem)->trace.lastline = __LINE__; \
- (elem)->trace.lastfile = __FILE__; \
-} while (0)
-
-#else
-#define QMD_TRACE_ELEM(elem)
-#define QMD_TRACE_HEAD(head)
-#define TRACEBUF
-#define TRASHIT(x)
-#endif /* QUEUE_MACRO_DEBUG */
-
-/*
- * Singly-linked List declarations.
- */
-#define SLIST_HEAD(name, type) \
-struct name { \
- struct type *slh_first; /* first element */ \
-}
-
-#define SLIST_HEAD_INITIALIZER(head) \
- { NULL }
-
-#define SLIST_ENTRY(type) \
-struct { \
- struct type *sle_next; /* next element */ \
-}
-
-/*
- * Singly-linked List functions.
- */
-#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
-
-#define SLIST_FIRST(head) ((head)->slh_first)
-
-#define SLIST_FOREACH(var, head, field) \
- for ((var) = SLIST_FIRST((head)); \
- (var); \
- (var) = SLIST_NEXT((var), field))
-
-#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = SLIST_FIRST((head)); \
- (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
- (var) = (tvar))
-
-#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
- for ((varp) = &SLIST_FIRST((head)); \
- ((var) = *(varp)) != NULL; \
- (varp) = &SLIST_NEXT((var), field))
-
-#define SLIST_INIT(head) do { \
- SLIST_FIRST((head)) = NULL; \
-} while (0)
-
-#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
- SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \
- SLIST_NEXT((slistelm), field) = (elm); \
-} while (0)
-
-#define SLIST_INSERT_HEAD(head, elm, field) do { \
- SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
- SLIST_FIRST((head)) = (elm); \
-} while (0)
-
-#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
-
-#define SLIST_REMOVE(head, elm, type, field) do { \
- if (SLIST_FIRST((head)) == (elm)) { \
- SLIST_REMOVE_HEAD((head), field); \
- } \
- else { \
- struct type *curelm = SLIST_FIRST((head)); \
- while (SLIST_NEXT(curelm, field) != (elm)) \
- curelm = SLIST_NEXT(curelm, field); \
- SLIST_NEXT(curelm, field) = \
- SLIST_NEXT(SLIST_NEXT(curelm, field), field); \
- } \
-} while (0)
-
-#define SLIST_REMOVE_HEAD(head, field) do { \
- SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
-} while (0)
-
-/*
- * Singly-linked Tail queue declarations.
- */
-#define STAILQ_HEAD(name, type) \
-struct name { \
- struct type *stqh_first;/* first element */ \
- struct type **stqh_last;/* addr of last next element */ \
-}
-
-#define STAILQ_HEAD_INITIALIZER(head) \
- { NULL, &(head).stqh_first }
-
-#define STAILQ_ENTRY(type) \
-struct { \
- struct type *stqe_next; /* next element */ \
-}
-
-/*
- * Singly-linked Tail queue functions.
- */
-#define STAILQ_CONCAT(head1, head2) do { \
- if (!STAILQ_EMPTY((head2))) { \
- *(head1)->stqh_last = (head2)->stqh_first; \
- (head1)->stqh_last = (head2)->stqh_last; \
- STAILQ_INIT((head2)); \
- } \
-} while (0)
-
-#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
-
-#define STAILQ_FIRST(head) ((head)->stqh_first)
-
-#define STAILQ_FOREACH(var, head, field) \
- for((var) = STAILQ_FIRST((head)); \
- (var); \
- (var) = STAILQ_NEXT((var), field))
-
-
-#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = STAILQ_FIRST((head)); \
- (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
- (var) = (tvar))
-
-#define STAILQ_INIT(head) do { \
- STAILQ_FIRST((head)) = NULL; \
- (head)->stqh_last = &STAILQ_FIRST((head)); \
-} while (0)
-
-#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
- if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
- (head)->stqh_last = &STAILQ_NEXT((elm), field); \
- STAILQ_NEXT((tqelm), field) = (elm); \
-} while (0)
-
-#define STAILQ_INSERT_HEAD(head, elm, field) do { \
- if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
- (head)->stqh_last = &STAILQ_NEXT((elm), field); \
- STAILQ_FIRST((head)) = (elm); \
-} while (0)
-
-#define STAILQ_INSERT_TAIL(head, elm, field) do { \
- STAILQ_NEXT((elm), field) = NULL; \
- *(head)->stqh_last = (elm); \
- (head)->stqh_last = &STAILQ_NEXT((elm), field); \
-} while (0)
-
-#define STAILQ_LAST(head, type, field) \
- (STAILQ_EMPTY((head)) ? \
- NULL : \
- ((struct type *)(void *) \
- ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
-
-#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
-
-#define STAILQ_REMOVE(head, elm, type, field) do { \
- if (STAILQ_FIRST((head)) == (elm)) { \
- STAILQ_REMOVE_HEAD((head), field); \
- } \
- else { \
- struct type *curelm = STAILQ_FIRST((head)); \
- while (STAILQ_NEXT(curelm, field) != (elm)) \
- curelm = STAILQ_NEXT(curelm, field); \
- if ((STAILQ_NEXT(curelm, field) = \
- STAILQ_NEXT(STAILQ_NEXT(curelm, field), field)) == NULL)\
- (head)->stqh_last = &STAILQ_NEXT((curelm), field);\
- } \
-} while (0)
-
-#define STAILQ_REMOVE_HEAD(head, field) do { \
- if ((STAILQ_FIRST((head)) = \
- STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
- (head)->stqh_last = &STAILQ_FIRST((head)); \
-} while (0)
-
-#define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \
- if ((STAILQ_FIRST((head)) = STAILQ_NEXT((elm), field)) == NULL) \
- (head)->stqh_last = &STAILQ_FIRST((head)); \
-} while (0)
-
-/*
- * List declarations.
- */
-#define LIST_HEAD(name, type) \
-struct name { \
- struct type *lh_first; /* first element */ \
-}
-
-#define LIST_HEAD_INITIALIZER(head) \
- { NULL }
-
-#define LIST_ENTRY(type) \
-struct { \
- struct type *le_next; /* next element */ \
- struct type **le_prev; /* address of previous next element */ \
-}
-
-/*
- * List functions.
- */
-
-#define LIST_EMPTY(head) ((head)->lh_first == NULL)
-
-#define LIST_FIRST(head) ((head)->lh_first)
-
-#define LIST_FOREACH(var, head, field) \
- for ((var) = LIST_FIRST((head)); \
- (var); \
- (var) = LIST_NEXT((var), field))
-
-#define LIST_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = LIST_FIRST((head)); \
- (var) && ((tvar) = LIST_NEXT((var), field), 1); \
- (var) = (tvar))
-
-#define LIST_INIT(head) do { \
- LIST_FIRST((head)) = NULL; \
-} while (0)
-
-#define LIST_INSERT_AFTER(listelm, elm, field) do { \
- if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\
- LIST_NEXT((listelm), field)->field.le_prev = \
- &LIST_NEXT((elm), field); \
- LIST_NEXT((listelm), field) = (elm); \
- (elm)->field.le_prev = &LIST_NEXT((listelm), field); \
-} while (0)
-
-#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
- (elm)->field.le_prev = (listelm)->field.le_prev; \
- LIST_NEXT((elm), field) = (listelm); \
- *(listelm)->field.le_prev = (elm); \
- (listelm)->field.le_prev = &LIST_NEXT((elm), field); \
-} while (0)
-
-#define LIST_INSERT_HEAD(head, elm, field) do { \
- if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \
- LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
- LIST_FIRST((head)) = (elm); \
- (elm)->field.le_prev = &LIST_FIRST((head)); \
-} while (0)
-
-#define LIST_NEXT(elm, field) ((elm)->field.le_next)
-
-#define LIST_REMOVE(elm, field) do { \
- if (LIST_NEXT((elm), field) != NULL) \
- LIST_NEXT((elm), field)->field.le_prev = \
- (elm)->field.le_prev; \
- *(elm)->field.le_prev = LIST_NEXT((elm), field); \
-} while (0)
-
-/*
- * Tail queue declarations.
- */
-#define TAILQ_HEAD(name, type) \
-struct name { \
- struct type *tqh_first; /* first element */ \
- struct type **tqh_last; /* addr of last next element */ \
- TRACEBUF \
-}
-
-#define TAILQ_HEAD_INITIALIZER(head) \
- { NULL, &(head).tqh_first }
-
-#define TAILQ_ENTRY(type) \
-struct { \
- struct type *tqe_next; /* next element */ \
- struct type **tqe_prev; /* address of previous next element */ \
- TRACEBUF \
-}
-
-/*
- * Tail queue functions.
- */
-#define TAILQ_CONCAT(head1, head2, field) do { \
- if (!TAILQ_EMPTY(head2)) { \
- *(head1)->tqh_last = (head2)->tqh_first; \
- (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
- (head1)->tqh_last = (head2)->tqh_last; \
- TAILQ_INIT((head2)); \
- QMD_TRACE_HEAD(head1); \
- QMD_TRACE_HEAD(head2); \
- } \
-} while (0)
-
-#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
-
-#define TAILQ_FIRST(head) ((head)->tqh_first)
-
-#define TAILQ_FOREACH(var, head, field) \
- for ((var) = TAILQ_FIRST((head)); \
- (var); \
- (var) = TAILQ_NEXT((var), field))
-
-#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = TAILQ_FIRST((head)); \
- (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
- (var) = (tvar))
-
-#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
- for ((var) = TAILQ_LAST((head), headname); \
- (var); \
- (var) = TAILQ_PREV((var), headname, field))
-
-#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
- for ((var) = TAILQ_LAST((head), headname); \
- (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
- (var) = (tvar))
-
-#define TAILQ_INIT(head) do { \
- TAILQ_FIRST((head)) = NULL; \
- (head)->tqh_last = &TAILQ_FIRST((head)); \
- QMD_TRACE_HEAD(head); \
-} while (0)
-
-#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
- if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\
- TAILQ_NEXT((elm), field)->field.tqe_prev = \
- &TAILQ_NEXT((elm), field); \
- else { \
- (head)->tqh_last = &TAILQ_NEXT((elm), field); \
- QMD_TRACE_HEAD(head); \
- } \
- TAILQ_NEXT((listelm), field) = (elm); \
- (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \
- QMD_TRACE_ELEM(&(elm)->field); \
- QMD_TRACE_ELEM(&listelm->field); \
-} while (0)
-
-#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
- (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
- TAILQ_NEXT((elm), field) = (listelm); \
- *(listelm)->field.tqe_prev = (elm); \
- (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \
- QMD_TRACE_ELEM(&(elm)->field); \
- QMD_TRACE_ELEM(&listelm->field); \
-} while (0)
-
-#define TAILQ_INSERT_HEAD(head, elm, field) do { \
- if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \
- TAILQ_FIRST((head))->field.tqe_prev = \
- &TAILQ_NEXT((elm), field); \
- else \
- (head)->tqh_last = &TAILQ_NEXT((elm), field); \
- TAILQ_FIRST((head)) = (elm); \
- (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \
- QMD_TRACE_HEAD(head); \
- QMD_TRACE_ELEM(&(elm)->field); \
-} while (0)
-
-#define TAILQ_INSERT_TAIL(head, elm, field) do { \
- TAILQ_NEXT((elm), field) = NULL; \
- (elm)->field.tqe_prev = (head)->tqh_last; \
- *(head)->tqh_last = (elm); \
- (head)->tqh_last = &TAILQ_NEXT((elm), field); \
- QMD_TRACE_HEAD(head); \
- QMD_TRACE_ELEM(&(elm)->field); \
-} while (0)
-
-#define TAILQ_LAST(head, headname) \
- (*(((struct headname *)((head)->tqh_last))->tqh_last))
-
-#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
-
-#define TAILQ_PREV(elm, headname, field) \
- (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
-
-#define TAILQ_REMOVE(head, elm, field) do { \
- if ((TAILQ_NEXT((elm), field)) != NULL) \
- TAILQ_NEXT((elm), field)->field.tqe_prev = \
- (elm)->field.tqe_prev; \
- else { \
- (head)->tqh_last = (elm)->field.tqe_prev; \
- QMD_TRACE_HEAD(head); \
- } \
- *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \
- TRASHIT((elm)->field.tqe_next); \
- TRASHIT((elm)->field.tqe_prev); \
- QMD_TRACE_ELEM(&(elm)->field); \
-} while (0)
-
-
-#ifdef _KERNEL
-
-/*
- * XXX insque() and remque() are an old way of handling certain queues.
- * They bogusly assumes that all queue heads look alike.
- */
-
-struct quehead {
- struct quehead *qh_link;
- struct quehead *qh_rlink;
-};
-
-#if defined(__GNUC__) || defined(__INTEL_COMPILER)
-
-static __inline void
-insque(void *a, void *b)
-{
- struct quehead *element = (struct quehead *)a,
- *head = (struct quehead *)b;
-
- element->qh_link = head->qh_link;
- element->qh_rlink = head;
- head->qh_link = element;
- element->qh_link->qh_rlink = element;
-}
-
-static __inline void
-remque(void *a)
-{
- struct quehead *element = (struct quehead *)a;
-
- element->qh_link->qh_rlink = element->qh_rlink;
- element->qh_rlink->qh_link = element->qh_link;
- element->qh_rlink = 0;
-}
-
-#else /* !(__GNUC__ || __INTEL_COMPILER) */
-
-void insque(void *a, void *b);
-void remque(void *a);
-
-#endif /* __GNUC__ || __INTEL_COMPILER */
-
-#endif /* _KERNEL */
-
-#endif /* !_SYS_QUEUE_H_ */
Added: trunk/glibc-ports/NOTES
===================================================================
--- trunk/glibc-ports/NOTES (rev 0)
+++ trunk/glibc-ports/NOTES 2006-10-16 11:38:14 UTC (rev 1688)
@@ -0,0 +1,92 @@
+glibc 2.5 status
+================
+
+linuxthreads are moved from trunk into ports
+ http://sourceware.org/ml/libc-alpha/2005-07/msg00001.html
+
+for short term Daniel Jacobowitz <dan at debian.org> will maintain them
+ http://sourceware.org/ml/libc-alpha/2005-07/msg00002.html
+
+
+As glibc source can be used a post-2.5 snapshot, available from
+ftp://sources.redhat.com/pub/glibc/snapshots/
+
+The main part are new arch specific files, linked into glibc tree:
+
+kfreebsd
+ -> $SRC/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd
+
+Remaining part are miscellaneous kfreebsd changes and hacks,
+stored in dir patches.
+
+test build:
+-----------
+
+* get main glibc module and linuxthreads module from snapshot or directly from CVS
+ (ftp://sources.redhat.com/pub/glibc/snapshots/)
+
+* move linuxthreads & linuxthreads_db from module linuxthreads into top dir
+
+* install our sysdeps
+ mkdir -p src/ports/sysdeps/unix/bsd/bsd4.4/
+ cp -a kfreebsd src/ports/sysdeps/unix/bsd/bsd4.4/
+
+* apply patches
+
+ cd src
+ for i in ../patches/*.patch
+ do
+ patch -p0 < $i
+ done
+ cd ..
+
+* build
+
+ mkdir build ; cd build
+
+ ../src/configure --enable-add-ons=ports,linuxthreads --with-tls --with-__thread i486-kfreebsd --prefix=...
+
+
+
+"make check" results:
+---------------------
+(as of glibc 2.5)
+
+ examime why, needs c++
+make[2]: *** [build/dlfcn/bug-atexit3.out] Error 1
+
+ requires (and tests) Linux specific O_NOATIME
+make[2]: *** [build/dirent/tst-fdopendir.o] Error 1
+
+ kernel doesn't fill enough in siginfo_t for signal handlers
+make[2]: *** [build/posix/tst-waitid.out] Error 1
+
+ no similar syscall, unimplemented
+make[2]: *** [build/io/tst-readlinkat.out] Error 1
+
+ no similar syscall, emulation hitted by (unavoidable) race condition
+make[2]: *** [build/misc/tst-pselect.out] Error 1
+
+ requires SIGRTMIN
+make[2]: *** [build/rt/tst-timer2.o] Error 1
+make[2]: *** [build/rt/tst-mqueue5.o] Error 1
+make[2]: *** [build/rt/tst-timer4.o] Error 1
+make[2]: *** [build/rt/tst-timer5.o] Error 1
+make[2]: *** [build/rt/tst-cputimer1.o] Error 1
+make[2]: *** [build/rt/tst-cputimer2.o] Error 1
+make[2]: *** [build/rt/tst-cputimer3.o] Error 1
+
+ examine why, maybe due to non-rt behaviour of signals
+make[2]: *** [build/rt/tst-aio.out] Error 1
+make[2]: *** [build/rt/tst-aio64.out] Error 1
+make[2]: *** [build/rt/tst-aio9.out] Error 1
+make[2]: *** [build/rt/tst-aio10.out] Error 1
+
+ due to unimplemented readlinkat()
+make[2]: *** [build/debug/tst-chk1.out] Error 1
+make[2]: *** [build/debug/tst-chk2.out] Error 1
+make[2]: *** [build/debug/tst-chk3.out] Error 1
+make[2]: *** [build/debug/tst-lfschk1.out] Error 1
+make[2]: *** [build/debug/tst-lfschk2.out] Error 1
+make[2]: *** [build/debug/tst-lfschk3.out] Error 1
+
More information about the Glibc-bsd-commits
mailing list