From 09364a758df9d89a0968894376f82f636441addb Mon Sep 17 00:00:00 2001
From: Jiaying Song <jiaying.song.cn@windriver.com>
Date: Fri, 23 May 2025 15:17:49 +0800
Subject: [PATCH] syscalls/semctl08: Skip semctl08 when __USE_TIME64_REDIRECTS
 is defined

When __USE_TIME64_REDIRECTS is defined, glibc redirects struct semid_ds to a
64-bit time-safe version that omits the sem_otime_high and sem_ctime_high
fields. As a result, the case becomes invalid and leads to incorrect behavior.

This patch adds a check to skip the test when __USE_TIME64_REDIRECTS is
defined, ensuring the test only runs when semid_ds structurally matches
semid64_ds and the *_high fields are accessible.

Upstream-Status: Submitted [https://lists.linux.it/pipermail/ltp/2025-May/043647.html]

Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
---
 testcases/kernel/syscalls/ipc/semctl/semctl08.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/testcases/kernel/syscalls/ipc/semctl/semctl08.c b/testcases/kernel/syscalls/ipc/semctl/semctl08.c
index f4549adf4..28776f266 100644
--- a/testcases/kernel/syscalls/ipc/semctl/semctl08.c
+++ b/testcases/kernel/syscalls/ipc/semctl/semctl08.c
@@ -12,7 +12,11 @@
 #include "tst_test.h"
 #include "libnewipc.h"
 
-#ifdef HAVE_SEMID64_DS_TIME_HIGH
+#if !defined(HAVE_SEMID64_DS_TIME_HIGH)
+TST_TEST_TCONF("test requires struct semid64_ds to have the time_high fields");
+#elif defined(__USE_TIME64_REDIRECTS)
+TST_TEST_TCONF("test requires __USE_TIME64_REDIRECTS to be undefined");
+#else
 
 static void run(void)
 {
@@ -49,6 +53,4 @@ static struct tst_test test = {
 	.test_all = run,
 	.needs_tmpdir = 1,
 };
-#else
-TST_TEST_TCONF("test requires struct semid64_ds to have the time_high fields");
 #endif
