Re: pthreads issue when compiling 7.4.8 on AIX 5.3 - Mailing list pgsql-ports
From | Bruce Momjian |
---|---|
Subject | Re: pthreads issue when compiling 7.4.8 on AIX 5.3 |
Date | |
Msg-id | 200506162352.j5GNqGE06786@candle.pha.pa.us Whole thread Raw |
In response to | Re: pthreads issue when compiling 7.4.8 on AIX 5.3 (Andrew Hammond <ahammond@ca.afilias.info>) |
List | pgsql-ports |
You are not missing something obvious. Keep hunting to see why you are not getting to those defines. --------------------------------------------------------------------------- Andrew Hammond wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > 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@ca.afilias.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 > > > > -- > > Andrew Hammond 416-673-4138 ahammond@ca.afilias.info > > Database Administrator, Afilias Canada Corp. > > CB83 2838 4B67 D40F D086 3568 81FC E7E5 27AF 4A9A > > - ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) > > > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.1 (GNU/Linux) > > iD8DBQFCse6Rgfzn5SevSpoRArEsAKCho8z4L4A8YfQ4TiISO9bs5dGs6ACgxJB4 > laP2NOg4EqlFUjgnscZzWB8= > =w6xE > -----END PGP SIGNATURE----- > > ---------------------------(end of broadcast)--------------------------- > TIP 9: the planner will ignore your desire to choose an index scan if your > joining column's datatypes do not match > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073
pgsql-ports by date: