From patchwork Mon Nov 7 20:59:39 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Edelsohn X-Patchwork-Id: 124182 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 348D21007D7 for ; Tue, 8 Nov 2011 08:00:18 +1100 (EST) Received: (qmail 15402 invoked by alias); 7 Nov 2011 21:00:07 -0000 Received: (qmail 15118 invoked by uid 22791); 7 Nov 2011 21:00:00 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-dy0-f47.google.com (HELO mail-dy0-f47.google.com) (209.85.220.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 07 Nov 2011 20:59:41 +0000 Received: by dye2 with SMTP id 2so150148dye.20 for ; Mon, 07 Nov 2011 12:59:39 -0800 (PST) MIME-Version: 1.0 Received: by 10.182.227.41 with SMTP id rx9mr9577362obc.12.1320699579188; Mon, 07 Nov 2011 12:59:39 -0800 (PST) Received: by 10.182.48.103 with HTTP; Mon, 7 Nov 2011 12:59:39 -0800 (PST) Date: Mon, 7 Nov 2011 15:59:39 -0500 Message-ID: Subject: [PATCH] AIX fixincludes for pthread.h From: David Edelsohn To: Bruce Korb Cc: GCC Patches Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org As part of the fallout from PR 50982, this patch adds some new fixes to GCC fixincludes that corrects a syntax error in an array initializer for PTHREAD_ONCE_INIT. The incorrect header file still is present in AIX 7.1; I have reported the bug to AIX as well. * inclhack.def (aix_once_init_[12]): New fix. * fixincl.x: Rebuilt. * tests/base/pthread.h: New tests. Bootstrapped on powerpc-ibm-aix5.3.0.0 Okay? Thanks, David * inclhack.def (aix_once_init_[12]): New fix. * fixincl.x: Rebuilt. * tests/base/pthread.h: New tests. Index: tests/base/pthread.h =================================================================== --- tests/base/pthread.h (revision 181090) +++ tests/base/pthread.h (working copy) @@ -9,6 +9,20 @@ +#if defined( AIX_ONCE_INIT_1_CHECK ) +#define PTHREAD_ONCE_INIT \ +{{ \ + +#endif /* AIX_ONCE_INIT_1_CHECK */ + + +#if defined( AIX_ONCE_INIT_2_CHECK ) + 0 \ +}} + +#endif /* AIX_ONCE_INIT_2_CHECK */ + + #if defined( AIX_PTHREAD_CHECK ) #define PTHREAD_MUTEX_INITIALIZER \ {...init stuff...} Index: fixincl.x =================================================================== --- fixincl.x (revision 181090) +++ fixincl.x (working copy) @@ -2,11 +2,11 @@ * * DO NOT EDIT THIS FILE (fixincl.x) * - * It has been AutoGen-ed Sunday October 23, 2011 at 12:18:29 PM EST + * It has been AutoGen-ed November 7, 2011 at 01:16:39 PM by AutoGen 5.10 * From the definitions inclhack.def * and the template file fixincl */ -/* DO NOT SVN-MERGE THIS FILE, EITHER Sun Oct 23 12:18:29 EST 2011 +/* DO NOT SVN-MERGE THIS FILE, EITHER Mon Nov 7 13:16:39 EST 2011 * * You must regenerate it. Use the ./genfixes script. * @@ -15,7 +15,7 @@ * certain ANSI-incompatible system header files which are fixed to work * correctly with ANSI C and placed in a directory that GNU C will search. * - * This file contains 220 fixup descriptions. + * This file contains 222 fixup descriptions. * * See README for more information. * @@ -559,6 +559,84 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Aix_Once_Init_1 fix + */ +tSCC zAix_Once_Init_1Name[] = + "aix_once_init_1"; + +/* + * File name selection pattern + */ +tSCC zAix_Once_Init_1List[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAix_Once_Init_1Machs[] = { + "*-*-aix*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAix_Once_Init_1Select0[] = + "#define[ \t]PTHREAD_ONCE_INIT \\\\\n\ +\\{ \\\\\n"; + +#define AIX_ONCE_INIT_1_TEST_CT 1 +static tTestDesc aAix_Once_Init_1Tests[] = { + { TT_EGREP, zAix_Once_Init_1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aix_Once_Init_1 + */ +static const char* apzAix_Once_Init_1Patch[] = { + "format", + "#define PTHREAD_ONCE_INIT \\\n\ +{{ \\\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aix_Once_Init_2 fix + */ +tSCC zAix_Once_Init_2Name[] = + "aix_once_init_2"; + +/* + * File name selection pattern + */ +tSCC zAix_Once_Init_2List[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAix_Once_Init_2Machs[] = { + "*-*-aix*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAix_Once_Init_2Select0[] = + "[ \t]0 \\\\\n\ +\\}\n"; + +#define AIX_ONCE_INIT_2_TEST_CT 1 +static tTestDesc aAix_Once_Init_2Tests[] = { + { TT_EGREP, zAix_Once_Init_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aix_Once_Init_2 + */ +static const char* apzAix_Once_Init_2Patch[] = { + "format", + "\t0 \\\n\ +}}\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Aix_Pthread fix */ tSCC zAix_PthreadName[] = @@ -8956,9 +9034,9 @@ * * List of all fixes */ -#define REGEX_COUNT 262 +#define REGEX_COUNT 264 #define MACH_LIST_SIZE_LIMIT 181 -#define FIX_COUNT 220 +#define FIX_COUNT 222 /* * Enumerate the fixes @@ -8974,6 +9052,8 @@ AAB_SUN_MEMCPY_FIXIDX, AIX_COMPLEX_FIXIDX, AIX_NET_IF_ARP_FIXIDX, + AIX_ONCE_INIT_1_FIXIDX, + AIX_ONCE_INIT_2_FIXIDX, AIX_PTHREAD_FIXIDX, AIX_STDINT_1_FIXIDX, AIX_STDINT_2_FIXIDX, @@ -9237,6 +9317,16 @@ AIX_NET_IF_ARP_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aAix_Net_If_ArpTests, apzAix_Net_If_ArpPatch, 0 }, + { zAix_Once_Init_1Name, zAix_Once_Init_1List, + apzAix_Once_Init_1Machs, + AIX_ONCE_INIT_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAix_Once_Init_1Tests, apzAix_Once_Init_1Patch, 0 }, + + { zAix_Once_Init_2Name, zAix_Once_Init_2List, + apzAix_Once_Init_2Machs, + AIX_ONCE_INIT_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAix_Once_Init_2Tests, apzAix_Once_Init_2Patch, 0 }, + { zAix_PthreadName, zAix_PthreadList, apzAix_PthreadMachs, AIX_PTHREAD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, Index: inclhack.def =================================================================== --- inclhack.def (revision 181090) +++ inclhack.def (working copy) @@ -384,6 +384,35 @@ }; /* + * pthread.h on AIX defines PTHREAD_ONCE_INIT without enough braces. + */ +fix = { + hackname = aix_once_init_1; + mach = "*-*-aix*"; + files = "pthread.h"; + select = "#define[ \t]PTHREAD_ONCE_INIT \\\\\n" + "\\{ \\\\\n"; + c_fix = format; + c_fix_arg = "#define PTHREAD_ONCE_INIT \\\n" + "{{ \\\n"; + test_text = "#define PTHREAD_ONCE_INIT \\\\\n" + "{ \\\\\n"; +}; + +fix = { + hackname = aix_once_init_2; + mach = "*-*-aix*"; + files = "pthread.h"; + select = "[ \t]0 \\\\\n" + "\\}\n"; + c_fix = format; + c_fix_arg = " 0 \\\n" + "}}\n"; + test_text = " 0 \\\\\n" + "}\n"; +}; + +/* * pthread.h on AIX 4.3.3 tries to define a macro without whitspace * which violates a requirement of ISO C. */