The command IPC_STAT of semctl expects an union semun in its fourth
argument instead of struct semid_ds *. This can cause failures on
powerpc32-linux-gnu.
Checked on x86_64-linux-gnu, i686-linux-gnu, and powerpc32-linux-gnu
(qemu system emulation).
+2017-01-02 Adhemerval Zanella <adhemerval.zanella@linaro.org>
+
+ * sysvipc/test-sysvsem.c (do_test): Define and use union semun on
+ semctl.
+
2017-01-02 Joseph Myers <joseph@codesourcery.com>
* math/test-nearbyint-except.c: Include <stdbool.h>.
#define SEM_MODE 0644
+union semun
+{
+ int val;
+ struct semid_ds *buf;
+ unsigned short *array;
+};
+
static int
do_test (void)
{
/* Get semaphore kernel information and do some sanity checks. */
struct semid_ds seminfo;
- if (semctl (semid, 0, IPC_STAT, &seminfo) == -1)
+ if (semctl (semid, 0, IPC_STAT, (union semun) { .buf = &seminfo }) == -1)
FAIL_EXIT1 ("semctl with IPC_STAT failed (errno=%d)", errno);
if (seminfo.sem_perm.__key != key)