Re: pthreads issue when compiling 7.4.8 on AIX 5.3 -- RESOLVED

From: "Mohan, Ross" <RMohan(at)arbinet(dot)com>
To: <pgsql-ports(at)postgresql(dot)org>
Subject: Re: pthreads issue when compiling 7.4.8 on AIX 5.3 -- RESOLVED
Date: 2005-07-13 15:28:18
Message-ID: CC74E7E10A8A054798B6611BD1FEF4D307967008@vamail01.thexchange.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ports

*thank you* !!

Please keep us posted on socket bug progress, is that possible?

-----Original Message-----
From: pgsql-ports-owner(at)postgresql(dot)org [mailto:pgsql-ports-owner(at)postgresql(dot)org] On Behalf Of Andrew Hammond
Sent: Wednesday, July 13, 2005 10:22 AM
To: pgsql-ports(at)postgresql(dot)org
Subject: Re: [PORTS] pthreads issue when compiling 7.4.8 on AIX 5.3 -- RESOLVED

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I spoke with our IBM sales reps about this and they suggested we upgrade GCC to 3.3.3 or later. Their PMR for this is PMR25534,077,649 if you happen to need the reference. We upgraded to 4.0.1 and got it to compile.

We're now seeing the same socket bug as everyone else. Chris Browne filed a bug report with IBM and has opened PMR29657,500. We hope to see resolution shortly.

- --
Andrew Hammond 416-673-4138 ahammond(at)ca(dot)afilias(dot)info
Database Administrator, Afilias Canada Corp.
CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A

Andrew Hammond wrote:
> Sure enough, there's some _XOPEN_SOURCE magic around them:
>
> #if (_XOPEN_SOURCE >= 600)
> typedef struct
> {
> #ifdef __64BIT__
> long __sp_word[3];
> #else
> int __sp_word[6];
> #endif /* __64BIT__ */
> }
> pthread_spinlock_t;
>
> typedef struct
> {
> #ifdef __64BIT__
> long __br_word[5];
> #else
> int __br_word[8];
> #endif /* __64BIT__ */
> }
> pthread_barrier_t;
> #endif /* _XOPEN_SOURCE >= 600 */
>
>
> #if (_XOPEN_SOURCE >= 600)
> typedef void *pthread_barrierattr_t;
> #endif
>
>
> So... I went hunting to see where _XOPEN_SOURCE is defined and found
> it in standards.h which is included all over the place, including
> sys/types.h
>
>
> /* If _XOPEN_SOURCE is defined without a value, or with a value less
> * than 500 (UNIX98), then set a value, so that #if statements will
> * work properly.
> */
> #ifdef _XOPEN_SOURCE
> #if ((_XOPEN_SOURCE + 0) < 500)
> #undef _XOPEN_SOURCE
> #define _XOPEN_SOURCE 1
> #endif
> #endif
>
> #if defined(_UNIX03) || (_XOPEN_SOURCE==600)
> #undef _XOPEN_SOURCE
> #define _XOPEN_SOURCE 600
> #undef _XOPEN_SOURCE_EXTENDED
> #define _XOPEN_SOURCE_EXTENDED 1
> #undef _POSIX_C_SOURCE
> #define _POSIX_C_SOURCE 200112L
> #undef _THREAD_SAFE
> #define _THREAD_SAFE
> #endif
>
> #if defined(_UNIX98) || (_XOPEN_SOURCE==500)
> #undef _XOPEN_SOURCE
> #define _XOPEN_SOURCE 500
> #undef _XOPEN_SOURCE_EXTENDED
> #define _XOPEN_SOURCE_EXTENDED 1
> #endif
>
> #ifdef _UNIX95
> #undef _XOPEN_SOURCE_EXTENDED
> #define _XOPEN_SOURCE_EXTENDED 1
> #endif
>
> #if (_XOPEN_SOURCE_EXTENDED==1)
> #ifndef _XOPEN_SOURCE
> #define _XOPEN_SOURCE 1
> #endif /* _XOPEN_SOURCE */
> #endif /* _XOPEN_SOURCE_EXTENDED */
>
> #ifdef _XOPEN_SOURCE
> #ifndef _POSIX_SOURCE
> #define _POSIX_SOURCE
> #endif
> #endif
>
>
> I also made sure that it's not being defined or undefined anywhere
> else in the include paths. Then, I tried overriding the _XOPEN_SOURCE
> variable on the command line for gcc, but, still no luck.
>
> -bash-2.05b$ gcc -O2 -fno-strict-aliasing -g -Wall
> -Wmissing-prototypes -Wmissing-declarations -I../../../src/include
> -I/opt/dbs/readline/include -I/opt/dbs/zlib/include
> -I/opt/freeware/include -D _XOPEN_SOURCE=600 -c -o thread_test.o
> thread_test.c In file included from thread_test.c:23:
> /usr/include/pthread.h:652: error: parse error before '*' token
> /usr/include/pthread.h:655: error: parse error before '*' token
> /usr/include/pthread.h:658: error: parse error before '*' token
> /usr/include/pthread.h:661: error: parse error before '*' token
> /usr/include/pthread.h:664: error: parse error before '*' token
> /usr/include/pthread.h:672: error: parse error before '*' token
> /usr/include/pthread.h:675: error: parse error before '*' token
> /usr/include/pthread.h:678: error: parse error before '*' token
> /usr/include/pthread.h:681: error: parse error before '*' token
> /usr/include/pthread.h:689: error: parse error before '*' token
> /usr/include/pthread.h:693: error: parse error before '*' token
> /usr/include/pthread.h:696: error: parse error before '*' token
>
> I'd like to believe I'm missing something really obvious here... :)
>
> --
> Andrew Hammond 416-673-4138 ahammond(at)ca(dot)afilias(dot)info
> Database Administrator, Afilias Canada Corp.
> CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A
>
>
> Bruce Momjian wrote:
>
>>>I would look around in sys/types.h to see if there is a #define that
>>>is preventing the symbol from being exported.
>>>
>>>---------------------------------------------------------------------
>>>------
>>>
>>>Andrew Hammond wrote:
>>>
>>>I'm seeing the following errors when compiling postgres 7.4.8
>>>(vanilla) on AIX 5.3
>>>
>>>make[2]: Entering directory `/opt/src/postgresql-7.4.8/src/port'
>>>gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
>>>-Wmissing-declarations -I../../src/include
>>>-I/opt/dbs/readline/include -I/opt/dbs/zlib/include
>>>-I/opt/freeware/include -c thread.c In file included from
>>>thread.c:25:
>>>/usr/include/pthread.h:652: error: parse error before '*' token
>>>/usr/include/pthread.h:655: error: parse error before '*' token
>>>/usr/include/pthread.h:658: error: parse error before '*' token
>>>/usr/include/pthread.h:661: error: parse error before '*' token
>>>/usr/include/pthread.h:664: error: parse error before '*' token
>>>/usr/include/pthread.h:672: error: parse error before '*' token
>>>/usr/include/pthread.h:675: error: parse error before '*' token
>>>/usr/include/pthread.h:678: error: parse error before '*' token
>>>/usr/include/pthread.h:681: error: parse error before '*' token
>>>/usr/include/pthread.h:689: error: parse error before '*' token
>>>/usr/include/pthread.h:693: error: parse error before '*' token
>>>/usr/include/pthread.h:696: error: parse error before '*' token
>>>make[2]: *** [thread.o] Error 1
>>>make[2]: Leaving directory `/opt/src/postgresql-7.4.8/src/port'
>>>
>>>I've looked into pthread.h and it's refereing to pthread_barrier_t,
>>>pthread_barrierattr_t and pthread_spinlock_t. These do not exist in
>>>pthread.h on our 5.1 box. However they are defined in sys/types.h
>>>which is included up near the top pthread.h.
>>>
>>>I'm somewhat at a loss about where this could be going wrong.
>>>
>>>Configure options follow
>>>
>>>./configure --prefix=/opt/dbs/pgsql748-slony105-AIX53-2005-06-13
>>>-
>>>--with-includes=/opt/dbs/readline/include:/opt/dbs/zlib/include:/usr/
>>>ccs/include:/opt/freeware/include:/usr/local/include
>>>-
>>>--with-libraries=/opt/dbs/readline/lib:/opt/dbs/zlib/lib:/usr/ccs/lib:/opt/freeware/lib:/usr/local/lib
>>>--enable-thread-safety --enable-debug --enable-aix64
>>>
>>>Note that this binary will need to have slony support which is why
>>>the --enable-thread-safety. We've had success compiling postgres on
>>>AIX 5.1 with identical settings. We're using gcc 3.3.2
>>>
>>>The thread_test program fails identically:
>>>
>>>-bash-2.05b$ make
>>>gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
>>>-Wmissing-declarations -I../../../src/include
>>>-I/opt/dbs/readline/include -I/opt/dbs/zlib/include
>>>-I/opt/freeware/include -c -o thread_test.o thread_test.c In file
>>>included from thread_test.c:23:
>>>/usr/include/pthread.h:652: error: parse error before '*' token
>>>/usr/include/pthread.h:655: error: parse error before '*' token
>>>/usr/include/pthread.h:658: error: parse error before '*' token
>>>/usr/include/pthread.h:661: error: parse error before '*' token
>>>/usr/include/pthread.h:664: error: parse error before '*' token
>>>/usr/include/pthread.h:672: error: parse error before '*' token
>>>/usr/include/pthread.h:675: error: parse error before '*' token
>>>/usr/include/pthread.h:678: error: parse error before '*' token
>>>/usr/include/pthread.h:681: error: parse error before '*' token
>>>/usr/include/pthread.h:689: error: parse error before '*' token
>>>/usr/include/pthread.h:693: error: parse error before '*' token
>>>/usr/include/pthread.h:696: error: parse error before '*' token
>>>make: *** [thread_test.o] Error 1
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFC1SOCgfzn5SevSpoRAjsGAKDG3EkPdnxgIIC+z8vpCTfLoi7iIACeOUs1
pomEePohqz7wE5ly7+lVQ8k=
=M1Qr
-----END PGP SIGNATURE-----

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Responses

Browse pgsql-ports by date

  From Date Subject
Next Message Tom Lane 2005-07-14 13:03:26 Re: HPux 11i
Previous Message Andrew Hammond 2005-07-13 14:21:54 Re: pthreads issue when compiling 7.4.8 on AIX 5.3 -- RESOLVED