1 |
commit: e847dd35728834c0dc61729774119782d83b0899 |
2 |
Author: Conrad Kostecki <conikost <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Jul 26 20:04:15 2021 +0000 |
4 |
Commit: Conrad Kostecki <conikost <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Jul 26 20:04:15 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e847dd35 |
7 |
|
8 |
app-benchmarks/stress-ng: fix compilation with glibc-2.34 |
9 |
|
10 |
Closes: https://bugs.gentoo.org/803941 |
11 |
Package-Manager: Portage-3.0.20, Repoman-3.0.3 |
12 |
Signed-off-by: Conrad Kostecki <conikost <AT> gentoo.org> |
13 |
|
14 |
.../files/stress-ng-0.12.12-glibc-2.34.patch | 101 +++++++++++++++++++++ |
15 |
app-benchmarks/stress-ng/stress-ng-0.12.12.ebuild | 2 + |
16 |
2 files changed, 103 insertions(+) |
17 |
|
18 |
diff --git a/app-benchmarks/stress-ng/files/stress-ng-0.12.12-glibc-2.34.patch b/app-benchmarks/stress-ng/files/stress-ng-0.12.12-glibc-2.34.patch |
19 |
new file mode 100644 |
20 |
index 00000000000..b2f93f21cba |
21 |
--- /dev/null |
22 |
+++ b/app-benchmarks/stress-ng/files/stress-ng-0.12.12-glibc-2.34.patch |
23 |
@@ -0,0 +1,101 @@ |
24 |
+From f839de283c44ffe46a2d14bfdf854c145abd8ed6 Mon Sep 17 00:00:00 2001 |
25 |
+From: Colin Ian King <colin.king@×××××××××.com> |
26 |
+Date: Mon, 19 Jul 2021 20:49:34 +0100 |
27 |
+Subject: [PATCH] Detemine minimal stack size via sysconf, then |
28 |
+ PTHREAD_STACK_MIN then guess |
29 |
+ |
30 |
+Don't rely on PTHREAD_STACK_MIN being defined, use sysconf, then |
31 |
+PTHREAD_STACK_MIN if it is defined, then 8K default. |
32 |
+ |
33 |
+Signed-off-by: Colin Ian King <colin.king@×××××××××.com> |
34 |
+--- |
35 |
+ core-helper.c | 31 +++++++++++++++++++++++++++++++ |
36 |
+ stress-ng.h | 1 + |
37 |
+ stress-pthread.c | 13 ++----------- |
38 |
+ 3 files changed, 34 insertions(+), 11 deletions(-) |
39 |
+ |
40 |
+diff --git a/core-helper.c b/core-helper.c |
41 |
+index 508627f2..97a3b869 100644 |
42 |
+--- a/core-helper.c |
43 |
++++ b/core-helper.c |
44 |
+@@ -2494,6 +2494,37 @@ size_t stress_min_sig_stack_size(void) |
45 |
+ return (size_t)sz; |
46 |
+ } |
47 |
+ |
48 |
++size_t stress_min_pthread_stack_size(void) |
49 |
++{ |
50 |
++ static long sz = -1, min; |
51 |
++ |
52 |
++ /* return cached copy */ |
53 |
++ if (sz > 0) |
54 |
++ return sz; |
55 |
++ |
56 |
++ min = stress_min_aux_sig_stack_size(); |
57 |
++#if defined(__SC_THREAD_STACK_MIN_VALUE) |
58 |
++ sz = sysconf(__SC_THREAD_STACK_MIN_VALUE); |
59 |
++ if (sz > min) |
60 |
++ min = sz; |
61 |
++#endif |
62 |
++#if defined(_SC_THREAD_STACK_MIN_VALUE) |
63 |
++ sz = sysconf(_SC_THREAD_STACK_MIN_VALUE); |
64 |
++ if (sz > min) |
65 |
++ min = sz; |
66 |
++#endif |
67 |
++#if defined(PTHREAD_STACK_MIN) |
68 |
++ if (PTHREAD_STACK_MIN > min) |
69 |
++ min = PTHREAD_STACK_MIN; |
70 |
++#endif |
71 |
++ if (8192 > min) |
72 |
++ min = 8192; |
73 |
++ |
74 |
++ sz = min; |
75 |
++ |
76 |
++ return (size_t)sz; |
77 |
++} |
78 |
++ |
79 |
+ /* |
80 |
+ * stress_sig_handler_exit() |
81 |
+ * signal handler that exits a process via _exit(0) for |
82 |
+diff --git a/stress-ng.h b/stress-ng.h |
83 |
+index 8a8b17ae..cd744756 100644 |
84 |
+--- a/stress-ng.h |
85 |
++++ b/stress-ng.h |
86 |
+@@ -4056,6 +4056,7 @@ extern WARN_UNUSED int32_t stress_get_opt_ionice_class(const char *const str); |
87 |
+ /* Misc helper funcs */ |
88 |
+ extern WARN_UNUSED size_t stress_sig_stack_size(void); |
89 |
+ extern WARN_UNUSED size_t stress_min_sig_stack_size(void); |
90 |
++extern WARN_UNUSED size_t stress_min_pthread_stack_size(void); |
91 |
+ |
92 |
+ #define STRESS_SIGSTKSZ (stress_sig_stack_size()) |
93 |
+ #define STRESS_MINSIGSTKSZ (stress_min_sig_stack_size()) |
94 |
+diff --git a/stress-pthread.c b/stress-pthread.c |
95 |
+index 0da3aeec..27777af8 100644 |
96 |
+--- a/stress-pthread.c |
97 |
++++ b/stress-pthread.c |
98 |
+@@ -69,12 +69,7 @@ static const stress_opt_set_func_t opt_set_funcs[] = { |
99 |
+ |
100 |
+ #if defined(HAVE_LIB_PTHREAD) |
101 |
+ |
102 |
+-/* Some systems such as GNU/HURD don't define PTHREAD_STACK_MIN */ |
103 |
+-#if !defined(PTHREAD_STACK_MIN) |
104 |
+-#define PTHREAD_STACK_MIN (16 * KB) |
105 |
+-#endif |
106 |
+- |
107 |
+-#define DEFAULT_STACK_MIN (16 * KB) |
108 |
++#define DEFAULT_STACK_MIN (8 * KB) |
109 |
+ |
110 |
+ #if defined(HAVE_GET_ROBUST_LIST) && \ |
111 |
+ defined(HAVE_LINUX_FUTEX_H) |
112 |
+@@ -404,11 +399,7 @@ static int stress_pthread(const stress_args_t *args) |
113 |
+ stress_pthread_args_t pargs = { args, NULL, 0 }; |
114 |
+ sigset_t set; |
115 |
+ #if defined(HAVE_PTHREAD_ATTR_SETSTACK) |
116 |
+-#if DEFAULT_STACK_MIN == PTHREAD_STACK_MIN |
117 |
+- const size_t stack_size = PTHREAD_STACK_MIN; |
118 |
+-#else |
119 |
+- const size_t stack_size = STRESS_MAXIMUM(DEFAULT_STACK_MIN, PTHREAD_STACK_MIN); |
120 |
+-#endif |
121 |
++ const size_t stack_size = STRESS_MAXIMUM(DEFAULT_STACK_MIN, stress_min_pthread_stack_size()); |
122 |
+ #endif |
123 |
+ |
124 |
+ keep_running_flag = true; |
125 |
|
126 |
diff --git a/app-benchmarks/stress-ng/stress-ng-0.12.12.ebuild b/app-benchmarks/stress-ng/stress-ng-0.12.12.ebuild |
127 |
index 309cd350a1c..4269478b747 100644 |
128 |
--- a/app-benchmarks/stress-ng/stress-ng-0.12.12.ebuild |
129 |
+++ b/app-benchmarks/stress-ng/stress-ng-0.12.12.ebuild |
130 |
@@ -28,6 +28,8 @@ RDEPEND="${DEPEND}" |
131 |
|
132 |
DOCS=( "README" "README.Android" "TODO" "syscalls.txt" ) |
133 |
|
134 |
+PATCHES=( "${FILESDIR}/${PN}-0.12.12-glibc-2.34.patch" ) |
135 |
+ |
136 |
src_compile() { |
137 |
export MAN_COMPRESS=0 |
138 |
export VERBOSE=1 |