Author: ps-guest Date: 2013-07-08 20:04:14 +0000 (Mon, 08 Jul 2013) New Revision: 5661
Modified: glibc-package/trunk/debian/changelog glibc-package/trunk/debian/patches/kfreebsd/local-fbtl.diff glibc-package/trunk/debian/patches/kfreebsd/local-sysdeps.diff Log: kfreebsd/local-sysdeps.diff: update to revision 4699 (from glibc-bsd). Modified: glibc-package/trunk/debian/changelog =================================================================== --- glibc-package/trunk/debian/changelog 2013-07-08 11:53:47 UTC (rev 5660) +++ glibc-package/trunk/debian/changelog 2013-07-08 20:04:14 UTC (rev 5661) @@ -10,7 +10,7 @@ * hurd-i386/tg-tls.diff: Move some hooks to tg-tls-threadvar.diff. [ Petr Salinger ] - * kfreebsd/local-sysdeps.diff: update to revision 4693 (from glibc-bsd). + * kfreebsd/local-sysdeps.diff: update to revision 4699 (from glibc-bsd). * split some parts of kfreebsd/local-linuxthreads29.diff into kfreebsd/local-nscd-no-sockcloexec.diff and kfreebsd/local-linuxthreads-tlsdesc.diff Modified: glibc-package/trunk/debian/patches/kfreebsd/local-fbtl.diff =================================================================== --- glibc-package/trunk/debian/patches/kfreebsd/local-fbtl.diff 2013-07-08 11:53:47 UTC (rev 5660) +++ glibc-package/trunk/debian/patches/kfreebsd/local-fbtl.diff 2013-07-08 20:04:14 UTC (rev 5661) @@ -33184,269 +33184,6 @@ + return res; +} --- /dev/null -+++ b/fbtl/sysdeps/pthread/createthread.c~ -@@ -0,0 +1,260 @@ -+/* Copyright (C) 2002-2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper <drep...@redhat.com>, 2002. -+ -+ 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, see -+ <http://www.gnu.org/licenses/>. */ -+ -+#include <sched.h> -+#include <setjmp.h> -+#include <signal.h> -+#include <stdlib.h> -+#include <atomic.h> -+#include <ldsodefs.h> -+#include <tls.h> -+#include <stdint.h> -+ -+#include "kernel-features.h" -+ -+ -+#define CLONE_SIGNAL (CLONE_SIGHAND | CLONE_THREAD) -+ -+/* Unless otherwise specified, the thread "register" is going to be -+ initialized with a pointer to the TCB. */ -+#ifndef TLS_VALUE -+# define TLS_VALUE pd -+#endif -+ -+#ifndef ARCH_CLONE -+# define ARCH_CLONE __clone -+#endif -+ -+ -+#ifndef TLS_MULTIPLE_THREADS_IN_TCB -+/* Pointer to the corresponding variable in libc. */ -+int *__libc_multiple_threads_ptr attribute_hidden; -+#endif -+ -+ -+static int -+do_clone (struct pthread *pd, const struct pthread_attr *attr, -+ int clone_flags, int (*fct) (void *), STACK_VARIABLES_PARMS, -+ int stopped) -+{ -+#ifdef PREPARE_CREATE -+ PREPARE_CREATE; -+#endif -+ -+ if (__builtin_expect (stopped != 0, 0)) -+ /* We make sure the thread does not run far by forcing it to get a -+ lock. We lock it here too so that the new thread cannot continue -+ until we tell it to. */ -+ lll_lock (pd->lock, LLL_PRIVATE); -+ -+ /* One more thread. We cannot have the thread do this itself, since it -+ might exist but not have been scheduled yet by the time we've returned -+ and need to check the value to behave correctly. We must do it before -+ creating the thread, in case it does get scheduled first and then -+ might mistakenly think it was the only thread. In the failure case, -+ we momentarily store a false value; this doesn't matter because there -+ is no kosher thing a signal handler interrupting us right here can do -+ that cares whether the thread count is correct. */ -+ atomic_increment (&__nptl_nthreads); -+ -+ int rc = ARCH_CLONE (fct, STACK_VARIABLES_ARGS, clone_flags, -+ pd, &pd->tid, TLS_VALUE, &pd->tid); -+ -+ if (__builtin_expect (rc == -1, 0)) -+ { -+ atomic_decrement (&__nptl_nthreads); /* Oops, we lied for a second. */ -+ -+ /* Perhaps a thread wants to change the IDs and if waiting -+ for this stillborn thread. */ -+ if (__builtin_expect (atomic_exchange_acq (&pd->setxid_futex, 0) -+ == -2, 0)) -+ lll_futex_wake (&pd->setxid_futex, 1, LLL_PRIVATE); -+ -+ /* Free the resources. */ -+ __deallocate_stack (pd); -+ -+ /* We have to translate error codes. */ -+ return errno == ENOMEM ? EAGAIN : errno; -+ } -+#warning set scheduling parameters -+#if 0 -+ /* Now we have the possibility to set scheduling parameters etc. */ -+ if (__builtin_expect (stopped != 0, 0)) -+ { -+ INTERNAL_SYSCALL_DECL (err); -+ int res = 0; -+ -+ /* Set the affinity mask if necessary. */ -+ if (attr->cpuset != NULL) -+ { -+ res = INTERNAL_SYSCALL (sched_setaffinity, err, 3, pd->tid, -+ attr->cpusetsize, attr->cpuset); -+ -+ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (res, err), 0)) -+ { -+ /* The operation failed. We have to kill the thread. First -+ send it the cancellation signal. */ -+ INTERNAL_SYSCALL_DECL (err2); -+ err_out: -+ (void) INTERNAL_SYSCALL (tgkill, err2, 3, -+ THREAD_GETMEM (THREAD_SELF, pid), -+ pd->tid, SIGCANCEL); -+ -+ /* We do not free the stack here because the canceled thread -+ itself will do this. */ -+ -+ return (INTERNAL_SYSCALL_ERROR_P (res, err) -+ ? INTERNAL_SYSCALL_ERRNO (res, err) -+ : 0); -+ } -+ } -+ -+ /* Set the scheduling parameters. */ -+ if ((attr->flags & ATTR_FLAG_NOTINHERITSCHED) != 0) -+ { -+ res = INTERNAL_SYSCALL (sched_setscheduler, err, 3, pd->tid, -+ pd->schedpolicy, &pd->schedparam); -+ -+ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (res, err), 0)) -+ goto err_out; -+ } -+ } -+#endif -+ -+ /* We now have for sure more than one thread. The main thread might -+ not yet have the flag set. No need to set the global variable -+ again if this is what we use. */ -+ THREAD_SETMEM (THREAD_SELF, header.multiple_threads, 1); -+ -+ return 0; -+} -+ -+ -+static int -+create_thread (struct pthread *pd, const struct pthread_attr *attr, -+ STACK_VARIABLES_PARMS) -+{ -+#ifdef TLS_TCB_AT_TP -+ assert (pd->header.tcb != NULL); -+#endif -+ -+ /* We rely heavily on various flags the CLONE function understands: -+ -+ CLONE_VM, CLONE_FS, CLONE_FILES -+ These flags select semantics with shared address space and -+ file descriptors according to what POSIX requires. -+ -+ CLONE_SIGNAL -+ This flag selects the POSIX signal semantics. -+ -+ CLONE_SETTLS -+ The sixth parameter to CLONE determines the TLS area for the -+ new thread. -+ -+ CLONE_PARENT_SETTID -+ The kernels writes the thread ID of the newly created thread -+ into the location pointed to by the fifth parameters to CLONE. -+ -+ Note that it would be semantically equivalent to use -+ CLONE_CHILD_SETTID but it is be more expensive in the kernel. -+ -+ CLONE_CHILD_CLEARTID -+ The kernels clears the thread ID of a thread that has called -+ sys_exit() in the location pointed to by the seventh parameter -+ to CLONE. -+ -+ The termination signal is chosen to be zero which means no signal -+ is sent. */ -+#if 1 -+#define clone_flags 123456 -+#warning clone -+#else -+ int clone_flags = (CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGNAL -+ | CLONE_SETTLS | CLONE_PARENT_SETTID -+ | CLONE_CHILD_CLEARTID | CLONE_SYSVSEM -+ | 0); -+#endif -+ -+ if (__builtin_expect (THREAD_GETMEM (THREAD_SELF, report_events), 0)) -+ { -+ /* The parent thread is supposed to report events. Check whether -+ the TD_CREATE event is needed, too. */ -+ const int _idx = __td_eventword (TD_CREATE); -+ const uint32_t _mask = __td_eventmask (TD_CREATE); -+ -+ if ((_mask & (__nptl_threads_events.event_bits[_idx] -+ | pd->eventbuf.eventmask.event_bits[_idx])) != 0) -+ { -+ /* We always must have the thread start stopped. */ -+ pd->stopped_start = true; -+ -+ /* Create the thread. We always create the thread stopped -+ so that it does not get far before we tell the debugger. */ -+ int res = do_clone (pd, attr, clone_flags, start_thread, -+ STACK_VARIABLES_ARGS, 1); -+ if (res == 0) -+ { -+ /* Now fill in the information about the new thread in -+ the newly created thread's data structure. We cannot let -+ the new thread do this since we don't know whether it was -+ already scheduled when we send the event. */ -+ pd->eventbuf.eventnum = TD_CREATE; -+ pd->eventbuf.eventdata = pd; -+ -+ /* Enqueue the descriptor. */ -+ do -+ pd->nextevent = __nptl_last_event; -+ while (atomic_compare_and_exchange_bool_acq (&__nptl_last_event, -+ pd, pd->nextevent) -+ != 0); -+ -+ /* Now call the function which signals the event. */ -+ __nptl_create_event (); -+ -+ /* And finally restart the new thread. */ -+ lll_unlock (pd->lock, LLL_PRIVATE); -+ } -+ -+ return res; -+ } -+ } -+ -+#ifdef NEED_DL_SYSINFO -+ assert (THREAD_SELF_SYSINFO == THREAD_SYSINFO (pd)); -+#endif -+ -+ /* Determine whether the newly created threads has to be started -+ stopped since we have to set the scheduling parameters or set the -+ affinity. */ -+ bool stopped = false; -+ if (attr != NULL && (attr->cpuset != NULL -+ || (attr->flags & ATTR_FLAG_NOTINHERITSCHED) != 0)) -+ stopped = true; -+ pd->stopped_start = stopped; -+ pd->parent_cancelhandling = THREAD_GETMEM (THREAD_SELF, cancelhandling); -+ -+ /* Actually create the thread. */ -+ int res = do_clone (pd, attr, clone_flags, start_thread, -+ STACK_VARIABLES_ARGS, stopped); -+ -+ if (res == 0 && stopped) -+ /* And finally restart the new thread. */ -+ lll_unlock (pd->lock, LLL_PRIVATE); -+ -+ return res; -+} ---- /dev/null +++ b/fbtl/sysdeps/pthread/flockfile.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2002-2013 Free Software Foundation, Inc. @@ -34250,7 +33987,7 @@ +#endif /* pthread-functions.h */ --- /dev/null +++ b/fbtl/sysdeps/pthread/pthread.h -@@ -0,0 +1,1160 @@ +@@ -0,0 +1,1181 @@ +/* Copyright (C) 2002-2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + @@ -34312,6 +34049,8 @@ +}; + + ++#ifdef _LIBC /* not yet supported, so do not expose outside libc */ ++ +#ifdef __USE_XOPEN2K +/* Robust mutex or not flags. */ +enum @@ -34334,6 +34073,7 @@ +}; +#endif + ++#endif /* not yet supported, so do not expose outside libc */ + +/* Mutex initializers. */ +#ifdef __PTHREAD_MUTEX_HAVE_PREV @@ -34643,6 +34383,9 @@ +#endif + +#ifdef __USE_GNU ++ ++#ifdef _LIBC /* not yet supported, so do not expose outside libc */ ++ +/* Thread created with attribute ATTR will be limited to run only on + the processors represented in CPUSET. */ +extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, @@ -34666,6 +34409,8 @@ +extern int pthread_setattr_default_np (const pthread_attr_t *__attr) + __THROW __nonnull ((1)); + ++#endif /* not yet supported, so do not expose outside libc */ ++ +/* Initialize thread attribute *ATTR with attributes corresponding to the + already running thread TH. It shall be called on uninitialized ATTR + and destroyed with pthread_attr_destroy when no longer needed. */ @@ -34688,6 +34433,9 @@ + struct sched_param *__restrict __param) + __THROW __nonnull ((2, 3)); + ++ ++#ifdef _LIBC /* not yet supported, so do not expose outside libc */ ++ +/* Set the scheduling priority for TARGET_THREAD. */ +extern int pthread_setschedprio (pthread_t __target_thread, int __prio) + __THROW; @@ -34704,6 +34452,7 @@ + __THROW __nonnull ((2)); +#endif + ++#endif /* not yet supported, so do not expose outside libc */ + +#ifdef __USE_UNIX98 +/* Determine level of concurrency. */ @@ -34720,6 +34469,7 @@ + implementation. */ +extern int pthread_yield (void) __THROW; + ++#ifdef _LIBC /* not yet supported, so do not expose outside libc */ + +/* Limit specified thread TH to run only on the processors represented + in CPUSET. */ @@ -34731,6 +34481,9 @@ +extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, + cpu_set_t *__cpuset) + __THROW __nonnull ((3)); ++ ++#endif /* not yet supported, so do not expose outside libc */ ++ +#endif + + @@ -35025,6 +34778,7 @@ +extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) + __THROWNL __nonnull ((1)); + ++#ifdef _LIBC /* not yet supported, so do not expose outside libc */ + +/* Get the priority ceiling of MUTEX. */ +extern int pthread_mutex_getprioceiling (const pthread_mutex_t * @@ -35050,6 +34804,7 @@ +# endif +#endif + ++#endif /* not yet supported, so do not expose outside libc */ + +/* Functions for handling mutex attributes. */ + @@ -35086,6 +34841,8 @@ + __THROW __nonnull ((1)); +#endif + ++#ifdef _LIBC /* not yet supported, so do not expose outside libc */ ++ +/* Return in *PROTOCOL the mutex protocol attribute in *ATTR. */ +extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * + __restrict __attr, @@ -35131,6 +34888,7 @@ +# endif +#endif + ++#endif /* not yet supported, so do not expose outside libc */ + +#if defined __USE_UNIX98 || defined __USE_XOPEN2K +/* Functions for handling read-write locks. */ Modified: glibc-package/trunk/debian/patches/kfreebsd/local-sysdeps.diff =================================================================== --- glibc-package/trunk/debian/patches/kfreebsd/local-sysdeps.diff 2013-07-08 11:53:47 UTC (rev 5660) +++ glibc-package/trunk/debian/patches/kfreebsd/local-sysdeps.diff 2013-07-08 20:04:14 UTC (rev 5661) @@ -7168,7 +7168,7 @@ +#define SEM_VALUE_MAX (2147483647) --- /dev/null +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fbtl/bits/posix_opt.h -@@ -0,0 +1,190 @@ +@@ -0,0 +1,201 @@ +/* Define POSIX options for FreeBSD. + Copyright (C) 1996-1997, 1999, 2000, 2002 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -7231,6 +7231,7 @@ + +/* Filenames are not silently truncated. */ +#define _POSIX_NO_TRUNC 1 ++ +/* X/Open realtime support is only partially available. */ +#define _XOPEN_REALTIME -1 + @@ -7262,11 +7263,25 @@ +/* We support user-defined stacks. */ +#define _POSIX_THREAD_ATTR_STACKADDR 200809L + ++/* We do not support priority inheritence. */ ++#define _POSIX_THREAD_PRIO_INHERIT -1 ++ ++/* We do not support priority protection */ ++#define _POSIX_THREAD_PRIO_PROTECT -1 ++ ++#ifdef __USE_XOPEN2K8 ++/* We do not support priority inheritence for robust mutexes. */ ++# define _POSIX_THREAD_ROBUST_PRIO_INHERIT -1 ++ ++/* We do not support priority protection for robust mutexes. */ ++# define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1 ++#endif ++ +/* We support POSIX.1b semaphores, but only the non-shared form for now. */ +#define _POSIX_SEMAPHORES 200809L + -+/* Real-time signals are not available. */ -+#define _POSIX_REALTIME_SIGNALS -1 ++/* Real-time signals are available. */ ++#define _POSIX_REALTIME_SIGNALS 200809L + +/* We support asynchronous I/O. */ +#define _POSIX_ASYNCHRONOUS_IO 200809L @@ -7326,11 +7341,11 @@ +/* The monotonic clock is available. */ +#define _POSIX_MONOTONIC_CLOCK 200809L + -+/* The clock selection interfaces are not available. */ -+#define _POSIX_CLOCK_SELECTION -1 ++/* The clock selection interfaces are available. */ ++#define _POSIX_CLOCK_SELECTION 200809L + -+/* Advisory information interfaces are not available. */ -+#define _POSIX_ADVISORY_INFO -1 ++/* Advisory information interfaces are available. */ ++#define _POSIX_ADVISORY_INFO 200809L + +/* IPv6 support is available. */ +#define _POSIX_IPV6 200809L @@ -7354,10 +7369,6 @@ +/* Typed memory objects are not available. */ +#define _POSIX_TYPED_MEMORY_OBJECTS -1 + -+/* No support for priority inheritance or protection. */ -+#define _POSIX_THREAD_PRIO_INHERIT -1 -+#define _POSIX_THREAD_PRIO_PROTECT -1 -+ +#endif /* bits/posix_opt.h */ --- /dev/null +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fbtl/bits/sigthread.h @@ -13530,7 +13541,7 @@ +# undef DB_THREAD_SELF_INCLUDE +# undef DB_THREAD_SELF +# define DB_THREAD_SELF \ -+ REGISTER_THREAD_AREA (32, 12, 3) /* offsetof (struct user_regs_struct, xgs) */ \ ++ REGISTER_THREAD_AREA (32, 10 * 4, 3) /* offsetof (struct user_regs_struct, xgs) */ \ + REGISTER_THREAD_AREA (64, 26 * 8, 3) /* x86-64's user_regs_struct->gs */ +#endif + -- To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1uwhft-0000km...@vasks.debian.org