blob: 7311ee2e4139faafc93b9229d5b86f7fa9a072c2 [file] [log] [blame]
Brad Bishop19323692019-04-05 15:28:33 -04001From fc2b47ad979a87bfbd11aeea3f67c26e7fb39e30 Mon Sep 17 00:00:00 2001
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002From: Khem Raj <raj.khem@gmail.com>
3Date: Thu, 7 Jan 2016 19:40:08 +0000
Brad Bishop19323692019-04-05 15:28:33 -04004Subject: [PATCH] Check if __GLIBC_PREREQ is defined before using it
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05005
6__GLIBC_PREREQ is specific to glibc so it should be checked if it is
7defined or not.
8
9Signed-off-by: Khem Raj <raj.khem@gmail.com>
10
Brad Bishopd7bf8c12018-02-25 22:55:05 -050011Upstream-Status: Pending
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050012---
Brad Bishop19323692019-04-05 15:28:33 -040013 .../kernel/syscalls/accept4/accept4_01.c | 9 ++++++-
14 .../sched_getaffinity/sched_getaffinity01.c | 26 +++++++++++++++++++
15 2 files changed, 34 insertions(+), 1 deletion(-)
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050016
17diff --git a/testcases/kernel/syscalls/accept4/accept4_01.c b/testcases/kernel/syscalls/accept4/accept4_01.c
Brad Bishop19323692019-04-05 15:28:33 -040018index dec4ef93b..c5d74b07f 100644
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050019--- a/testcases/kernel/syscalls/accept4/accept4_01.c
20+++ b/testcases/kernel/syscalls/accept4/accept4_01.c
21@@ -64,6 +64,7 @@ static void cleanup(void)
22 tst_rmdir();
23 }
24
25+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
26 #if !(__GLIBC_PREREQ(2, 10))
27 static int
28 accept4_01(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags)
29@@ -82,7 +83,6 @@ accept4_01(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags)
30 }
31 tst_resm(TINFO, "\n");
32 #endif
33-
34 #if USE_SOCKETCALL
35 long args[6];
36
37@@ -97,6 +97,7 @@ accept4_01(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags)
38 #endif
39 }
40 #endif
41+#endif
42
43 static void
44 do_test(int lfd, struct sockaddr_in *conn_addr,
45@@ -119,9 +120,15 @@ do_test(int lfd, struct sockaddr_in *conn_addr,
46 die("Connect Error");
47
48 addrlen = sizeof(struct sockaddr_in);
49+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
50 #if !(__GLIBC_PREREQ(2, 10))
51 acceptfd = accept4_01(lfd, (struct sockaddr *)&claddr, &addrlen,
52 closeonexec_flag | nonblock_flag);
53+
54+#else
55+ acceptfd = accept4(lfd, (struct sockaddr *)&claddr, &addrlen,
56+ closeonexec_flag | nonblock_flag);
57+#endif
58 #else
59 acceptfd = accept4(lfd, (struct sockaddr *)&claddr, &addrlen,
60 closeonexec_flag | nonblock_flag);
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050061diff --git a/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c b/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c
Brad Bishop19323692019-04-05 15:28:33 -040062index 02f04b909..d906d7e09 100644
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050063--- a/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c
64+++ b/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080065@@ -67,9 +67,11 @@ do { \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050066 tst_resm((TEST_RETURN == -1 ? TPASS : TFAIL) | TTERRNO, #t); \
67 } while (0)
68
69+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
70 #if !(__GLIBC_PREREQ(2, 7))
71 #define CPU_FREE(ptr) free(ptr)
72 #endif
73+#endif
74
75 int main(int ac, char **av)
76 {
Brad Bishop19323692019-04-05 15:28:33 -040077@@ -96,17 +98,26 @@ static void do_test(void)
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050078 pid_t unused_pid;
79 unsigned len;
80
81+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
82 #if __GLIBC_PREREQ(2, 7)
83 realloc:
84 mask = CPU_ALLOC(nrcpus);
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050085+#else
86+ mask = malloc(sizeof(cpu_set_t));
87+#endif
Brad Bishop19323692019-04-05 15:28:33 -040088 #else
89 mask = malloc(sizeof(cpu_set_t));
90 #endif
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050091 if (mask == NULL)
92 tst_brkm(TFAIL | TTERRNO, cleanup, "fail to get enough memory");
93+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
94 #if __GLIBC_PREREQ(2, 7)
95 len = CPU_ALLOC_SIZE(nrcpus);
96 CPU_ZERO_S(len, mask);
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050097+#else
98+ len = sizeof(cpu_set_t);
99+ CPU_ZERO(mask);
100+#endif
Brad Bishop19323692019-04-05 15:28:33 -0400101 #else
102 len = sizeof(cpu_set_t);
103 CPU_ZERO(mask);
104@@ -115,11 +126,18 @@ realloc:
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500105 TEST(sched_getaffinity(0, len, mask));
106 if (TEST_RETURN == -1) {
107 CPU_FREE(mask);
108+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
109 #if __GLIBC_PREREQ(2, 7)
110 if (errno == EINVAL && nrcpus < (1024 << 8)) {
111 nrcpus = nrcpus << 2;
Brad Bishop19323692019-04-05 15:28:33 -0400112 goto realloc;
113 }
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500114+#else
115+ if (errno == EINVAL)
116+ tst_resm(TFAIL, "NR_CPUS > 1024, we'd better use a "
117+ "newer glibc(>= 2.7)");
118+ else
119+#endif
Brad Bishop19323692019-04-05 15:28:33 -0400120 #else
121 if (errno == EINVAL)
122 tst_resm(TFAIL, "NR_CPUS > 1024, we'd better use a "
123@@ -132,8 +150,12 @@ realloc:
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500124 tst_resm(TINFO, "cpusetsize is %d", len);
125 tst_resm(TINFO, "mask.__bits[0] = %lu ", mask->__bits[0]);
126 for (i = 0; i < num; i++) {
127+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
128 #if __GLIBC_PREREQ(2, 7)
129 TEST(CPU_ISSET_S(i, len, mask));
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500130+#else
131+ TEST(CPU_ISSET(i, mask));
132+#endif
Brad Bishop19323692019-04-05 15:28:33 -0400133 #else
134 TEST(CPU_ISSET(i, mask));
135 #endif
136@@ -144,8 +166,12 @@ realloc:
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500137 }
138 }
139
140+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
141 #if __GLIBC_PREREQ(2, 7)
142 CPU_ZERO_S(len, mask);
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500143+#else
144+ CPU_ZERO(mask);
145+#endif
Brad Bishop19323692019-04-05 15:28:33 -0400146 #else
147 CPU_ZERO(mask);
148 #endif
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500149--
Brad Bishop19323692019-04-05 15:28:33 -04001502.17.1
Patrick Williamsd8c66bc2016-06-20 12:57:21 -0500151