From patchwork Fri Dec 30 20:43:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tulio Magno Quites Machado Filho X-Patchwork-Id: 18731 X-Patchwork-Delegate: azanella@linux.vnet.ibm.com Received: (qmail 52062 invoked by alias); 30 Dec 2016 20:44:02 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 52038 invoked by uid 89); 30 Dec 2016 20:44:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=BAYES_00, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 spammy=Confirm, sk:tuliom@, U*tuliom, sk:tuliom X-HELO: mx0a-001b2d01.pphosted.com From: "Tulio Magno Quites Machado Filho" To: libc-alpha@sourceware.org, adhemerval.zanella@linaro.org Subject: [PATCH] Fix argument passing in sysvipc/test-sysvsem Date: Fri, 30 Dec 2016 18:43:30 -0200 In-Reply-To: <1482847286-29933-13-git-send-email-adhemerval.zanella@linaro.org> References: <1482847286-29933-13-git-send-email-adhemerval.zanella@linaro.org> X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16123020-1523-0000-0000-0000025EC35B X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16123020-1524-0000-0000-000029EADC7A Message-Id: <1483130610-2500-1-git-send-email-tuliom@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-12-30_14:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1612050000 definitions=main-1612300323 The command IPC_STAT of semctl() expects an union semun in its fourth argument instead of struct semid_ds *. This can cause failures on ppc. Tested on ppc. 2016-12-30 Tulio Magno Quites Machado Filho * sysvipc/test-sysvsem.c: Define union semun. (do_test): Pass union semun to semctl() instead of struct semid_ds *. --- sysvipc/test-sysvsem.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/sysvipc/test-sysvsem.c b/sysvipc/test-sysvsem.c index fd9db4f..6cc0c46 100644 --- a/sysvipc/test-sysvsem.c +++ b/sysvipc/test-sysvsem.c @@ -28,6 +28,17 @@ #include #include +/* Confirm if sys/sem.h defines semun. */ +#ifdef _SEM_SEMUN_UNDEFINED +union semun +{ + int val; + struct semid_ds *buf; + unsigned short int *array; + struct seminfo *__buf; +}; +#endif + /* These are for the temporary file we generate. */ static char *name; static int semid; @@ -74,7 +85,10 @@ do_test (void) /* Get semaphore kernel information and do some sanity checks. */ struct semid_ds seminfo; - if (semctl (semid, 0, IPC_STAT, &seminfo) == -1) + + union semun semarg; + semarg.buf = &seminfo; + if (semctl (semid, 0, IPC_STAT, semarg) == -1) FAIL_EXIT1 ("semctl with IPC_STAT failed (errno=%d)", errno); if (seminfo.sem_perm.__key != key)