diff options
Diffstat (limited to 'meta/recipes-core/systemd/systemd/0030-fix-missing-of-__register_atfork-for-non-glibc-build.patch')
-rw-r--r-- | meta/recipes-core/systemd/systemd/0030-fix-missing-of-__register_atfork-for-non-glibc-build.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/meta/recipes-core/systemd/systemd/0030-fix-missing-of-__register_atfork-for-non-glibc-build.patch b/meta/recipes-core/systemd/systemd/0030-fix-missing-of-__register_atfork-for-non-glibc-build.patch new file mode 100644 index 0000000000..7f0b4bf818 --- /dev/null +++ b/meta/recipes-core/systemd/systemd/0030-fix-missing-of-__register_atfork-for-non-glibc-build.patch | |||
@@ -0,0 +1,45 @@ | |||
1 | From b7eacdf0388f930fc5271bdecfa46612c71dd65c Mon Sep 17 00:00:00 2001 | ||
2 | From: Chen Qi <Qi.Chen@windriver.com> | ||
3 | Date: Tue, 27 Feb 2018 13:27:47 +0800 | ||
4 | Subject: [PATCH 30/31] fix missing of __register_atfork for non-glibc builds | ||
5 | |||
6 | Upstream-Status: Pending | ||
7 | |||
8 | Signed-off-by: Chen Qi <Qi.Chen@windriver.com> | ||
9 | --- | ||
10 | src/basic/process-util.c | 7 +++++++ | ||
11 | 1 file changed, 7 insertions(+) | ||
12 | |||
13 | diff --git a/src/basic/process-util.c b/src/basic/process-util.c | ||
14 | index dc7c9ef9e..85ce8a0cc 100644 | ||
15 | --- a/src/basic/process-util.c | ||
16 | +++ b/src/basic/process-util.c | ||
17 | @@ -39,6 +39,9 @@ | ||
18 | #if HAVE_VALGRIND_VALGRIND_H | ||
19 | #include <valgrind/valgrind.h> | ||
20 | #endif | ||
21 | +#ifndef __GLIBC__ | ||
22 | +#include <pthread.h> | ||
23 | +#endif | ||
24 | |||
25 | #include "alloc-util.h" | ||
26 | #include "architecture.h" | ||
27 | @@ -1112,11 +1115,15 @@ void reset_cached_pid(void) { | ||
28 | cached_pid = CACHED_PID_UNSET; | ||
29 | } | ||
30 | |||
31 | +#ifdef __GLIBC__ | ||
32 | /* We use glibc __register_atfork() + __dso_handle directly here, as they are not included in the glibc | ||
33 | * headers. __register_atfork() is mostly equivalent to pthread_atfork(), but doesn't require us to link against | ||
34 | * libpthread, as it is part of glibc anyway. */ | ||
35 | extern int __register_atfork(void (*prepare) (void), void (*parent) (void), void (*child) (void), void * __dso_handle); | ||
36 | extern void* __dso_handle __attribute__ ((__weak__)); | ||
37 | +#else | ||
38 | +#define __register_atfork(prepare,parent,child,dso) pthread_atfork(prepare,parent,child) | ||
39 | +#endif | ||
40 | |||
41 | pid_t getpid_cached(void) { | ||
42 | pid_t current_value; | ||
43 | -- | ||
44 | 2.13.0 | ||
45 | |||