r5661 - in glibc-package/trunk/debian: . patches/kfreebsd
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 <drepper@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
+
Reply to: