From b22eee657cb55d0c145d5928bf697e8c256a2bed Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 25 Nov 2015 02:32:33 +0100 Subject: Fix build with hidden support * sysdeps/generic/pt-key-create.c (pthread_key_create): Rename to __pthread_key_create. (pthread_key_create): New strong_alias. * sysdeps/generic/raise.c (raise): Add libc_hidden_def. (gsignal): Add weak_alias. * sysdeps/hurd/pt-key-create.c (__pthread_key_create): Remove hidden_def. --- sysdeps/generic/pt-key-create.c | 3 ++- sysdeps/generic/raise.c | 2 ++ sysdeps/generic/shm-directory.h | 31 +++++++++++++++++++++++++++++++ sysdeps/hurd/pt-key-create.c | 1 - 4 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 sysdeps/generic/shm-directory.h (limited to 'sysdeps') diff --git a/sysdeps/generic/pt-key-create.c b/sysdeps/generic/pt-key-create.c index de05095..33f691b 100644 --- a/sysdeps/generic/pt-key-create.c +++ b/sysdeps/generic/pt-key-create.c @@ -21,9 +21,10 @@ #include int -pthread_key_create (pthread_key_t *key, void (*destructor) (void *)) +__pthread_key_create (pthread_key_t *key, void (*destructor) (void *)) { return ENOSYS; } +strong_alias (__pthread_key_create, pthread_key_create) stub_warning (pthread_key_create) diff --git a/sysdeps/generic/raise.c b/sysdeps/generic/raise.c index 3c497da..f086665 100644 --- a/sysdeps/generic/raise.c +++ b/sysdeps/generic/raise.c @@ -46,3 +46,5 @@ raise (int signo) return __kill (__getpid (), signo); } +libc_hidden_def (raise) +weak_alias (raise, gsignal) diff --git a/sysdeps/generic/shm-directory.h b/sysdeps/generic/shm-directory.h new file mode 100644 index 0000000..8950284 --- /dev/null +++ b/sysdeps/generic/shm-directory.h @@ -0,0 +1,31 @@ +/* Header for directory for shm/sem files. libpthread version. + Copyright (C) 2014-2015 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, see + . */ + +#ifndef _SHM_DIRECTORY_H + +#include + +/* For libpthread the __shm_directory function lives in libpthread. + We don't want PLT calls from there. But it's also used from + librt, so it cannot just be declared hidden. */ + +#if IS_IN (libpthread) +hidden_proto (__shm_directory) +#endif + +#endif /* shm-directory.h */ diff --git a/sysdeps/hurd/pt-key-create.c b/sysdeps/hurd/pt-key-create.c index 42c7c85..f26ec36 100644 --- a/sysdeps/hurd/pt-key-create.c +++ b/sysdeps/hurd/pt-key-create.c @@ -108,4 +108,3 @@ __pthread_key_create (pthread_key_t *key, void (*destructor) (void *)) return 0; } strong_alias (__pthread_key_create, pthread_key_create) -hidden_def (__pthread_key_create) -- cgit v1.2.3 From 6106225fdc09f013ec4f7b1d7ec82780061c8a14 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 3 Jan 2016 04:20:02 +0100 Subject: Do not block unmaskable signals * sysdeps/mach/hurd/pt-sigstate.c (__pthread_sigstate): Always remove _SIG_CANT_MASK from blocked signals, like sigprocmask does. --- sysdeps/mach/hurd/pt-sigstate.c | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/mach/hurd/pt-sigstate.c b/sysdeps/mach/hurd/pt-sigstate.c index 2af3e39..74fd72a 100644 --- a/sysdeps/mach/hurd/pt-sigstate.c +++ b/sysdeps/mach/hurd/pt-sigstate.c @@ -43,24 +43,27 @@ __pthread_sigstate (struct __pthread *thread, int how, *oset = ss->blocked; if (set) - switch (how) - { - case SIG_BLOCK: - ss->blocked |= *set; - break; - - case SIG_SETMASK: - ss->blocked = *set; - break; - - case SIG_UNBLOCK: - ss->blocked &= ~*set; - break; - - default: - err = EINVAL; - break; - } + { + switch (how) + { + case SIG_BLOCK: + ss->blocked |= *set; + break; + + case SIG_SETMASK: + ss->blocked = *set; + break; + + case SIG_UNBLOCK: + ss->blocked &= ~*set; + break; + + default: + err = EINVAL; + break; + } + ss->blocked &= ~_SIG_CANT_MASK; + } if (! err && clear_pending) __sigemptyset (&ss->pending); -- cgit v1.2.3