Thread: Solaris SPARC - Sun compiler 5.5 - 64 bit
Hi all, I've been trying to compile a 64bit version of PostgreSQL on Solaris sparc using Sun compiler 5.5, unfortunately I keep getting errors when compiling. I can compile PostgreSQL as 32bit without any problems, but not 64bit. So I am hoping someone on this list will be able to help. I'm getting frustrated! I think I'm using configure wrong. Below are the details on my environment, and how I try to compile PostgreSQL. Machine: SunOS dev 5.8 Generic_108528-29 sun4u sparc SUNW,Sun-Fire-V440 Compiler: cc: Sun C 5.5 2003/03/12 Environment: PATH=/devtools/WS8.0/SUNWspro/bin/sparcv9:/devtools/WS8.0/SUNWspro/bin:/ usr/bin/sparcv9:/usr/bin:/usr/ccs/bin/sparcv9:/usr/ccs/bin:/usr1/clarka/ bin LD_LIBRARY_PATH= LD_LIBRARY_PATH_32=/lib:/devtools/WS8.0/SUNWspro/lib:/devtools/oracle/8. 1.7_64/lib:/devtools/sybase-12_0/OCS-12_0/lib:/usr1/clarka/lib LD_LIBRARY_PATH_64=/lib/64:/lib/sparcv9:/devtools/WS8.0/SUNWspro/lib/v9: /devtools/oracle/8.1.7_64/lib64:/devtools/sybase-12_0/OCS-12_5/lib:/devt ools/sybase-12_0/OCS-12_5/lib3p64:/usr1/clarka/lib Compiling commands: ./configure CFLAGS="-xtarget=ultra2 -xarch=v9a -xchip=ultra2" --without-readline --without-zlib --prefix=$HOME/UAT/postgres --enable-thread-safety --enable-integer-datetimes make make install Thanks, Andrew
Am Dienstag, 26. Juli 2005 16:06 schrieb Clark, Andrew: > I've been trying to compile a 64bit version of PostgreSQL on Solaris > sparc using Sun compiler 5.5, unfortunately I keep getting errors when > compiling. Which errors? -- Peter Eisentraut http://developer.postgresql.org/~petere/
Hi Peter, This is the error I receive: gmake[5]: Entering directory `/usr1/clarka/src/postgresql-8.0.2/src/backend/storage/lmgr' cc -Xa -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -I../../../../src/include -c -o lmgr.o lmgr.c cc -Xa -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -I../../../../src/include -c -o lock.o lock.c cc -Xa -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -I../../../../src/include -c -o proc.o proc.c cc -Xa -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -I../../../../src/include -c -o deadlock.o deadlock.c cc -Xa -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -I../../../../src/include -c -o lwlock.o lwlock.c cc -Xa -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -I../../../../src/include -c -o spin.o spin.c cc -Xa -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -I../../../../src/include -c -o s_lock.o s_lock.c /devtools/WS8.0/SUNWspro/prod/bin/fbe: "/tmp/yabeAAAKgainV", line 206: error: can't compute difference between symbols in different segments Failure in /devtools/WS8.0/SUNWspro/prod/bin/fbe, status = 0x100 Fatal Error exec'ing /devtools/WS8.0/SUNWspro/prod/bin/fbe cc: acomp failed for s_lock.c gmake[5]: *** [s_lock.o] Error 2 gmake[5]: Leaving directory `/usr1/clarka/src/postgresql-8.0.2/src/backend/storage/lmgr' Thanks, Andrew -----Original Message----- From: Peter Eisentraut [mailto:peter_e@gmx.net] Sent: July 29, 2005 5:51 AM To: Clark, Andrew Cc: pgsql-ports@postgresql.org Subject: Re: [PORTS] Solaris SPARC - Sun compiler 5.5 - 64 bit Am Dienstag, 26. Juli 2005 16:06 schrieb Clark, Andrew: > I've been trying to compile a 64bit version of PostgreSQL on Solaris > sparc using Sun compiler 5.5, unfortunately I keep getting errors when > compiling. Which errors? -- Peter Eisentraut http://developer.postgresql.org/~petere/
"Clark, Andrew" <Andrew.Clark@fnf.com> writes: > -I../../../../src/include -c -o s_lock.o s_lock.c > /devtools/WS8.0/SUNWspro/prod/bin/fbe: "/tmp/yabeAAAKgainV", line 206: > error: can't compute difference between symbols in different segments > Failure in /devtools/WS8.0/SUNWspro/prod/bin/fbe, status = 0x100 > Fatal Error exec'ing /devtools/WS8.0/SUNWspro/prod/bin/fbe > cc: acomp failed for s_lock.c You really should mention which Postgres version you're using ... but if it's pre-8.0, possibly the problem is the lack of this patch: 2004-12-29 18:47 tgl * src/: backend/storage/lmgr/s_lock.c, template/sunos4: Support Sun's compiler on SunOS4 (a/k/a Solaris 9). Per ayan@ayan.net regards, tom lane
Hi Tom, I'm using PostgreSQL 8.0.2 on Solaris 8. Thanks, Andrew -----Original Message----- From: Tom Lane [mailto:tgl@sss.pgh.pa.us] Sent: July 29, 2005 10:18 AM To: Clark, Andrew Cc: Peter Eisentraut; pgsql-ports@postgresql.org Subject: Re: [PORTS] Solaris SPARC - Sun compiler 5.5 - 64 bit "Clark, Andrew" <Andrew.Clark@fnf.com> writes: > -I../../../../src/include -c -o s_lock.o s_lock.c > /devtools/WS8.0/SUNWspro/prod/bin/fbe: "/tmp/yabeAAAKgainV", line 206: > error: can't compute difference between symbols in different segments > Failure in /devtools/WS8.0/SUNWspro/prod/bin/fbe, status = 0x100 Fatal > Error exec'ing /devtools/WS8.0/SUNWspro/prod/bin/fbe > cc: acomp failed for s_lock.c You really should mention which Postgres version you're using ... but if it's pre-8.0, possibly the problem is the lack of this patch: 2004-12-29 18:47 tgl * src/: backend/storage/lmgr/s_lock.c, template/sunos4: Support Sun's compiler on SunOS4 (a/k/a Solaris 9). Per ayan@ayan.net regards, tom lane
"Clark, Andrew" <Andrew.Clark@fnf.com> writes: > I'm using PostgreSQL 8.0.2 on Solaris 8. Is configure using the solaris template, or the sunos4 one? If the former, does changing CFLAGS="-v" # -v is like gcc -Wall to CFLAGS="-v -DSUNOS4_CC" # -v is like gcc -Wall fix it? (Note you need to re-configure to make template changes have any effect.) regards, tom lane
Tom, Well that definitely did something, but now I get a different error: ---------------- /usr1/clarka/bin/gmake -C backend/utils/mb/conversion_procs all gmake[3]: Entering directory `/usr1/clarka/src/postgresql-8.0.2/src/backend/utils/mb/conversion_procs ' gmake[4]: Entering directory `/usr1/clarka/src/postgresql-8.0.2/src/backend/utils/mb/conversion_procs /ascii_and_mic' cc -Xa -v -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -DSUNOS4_CC -KPIC -I../../../../../../src/include -c -o ascii_and_mic.o ascii_and_mic.c "ascii_and_mic.c", line 38: warning: assignment type mismatch: pointer to unsigned char "=" pointer to char "ascii_and_mic.c", line 39: warning: assignment type mismatch: pointer to unsigned char "=" pointer to char "ascii_and_mic.c", line 54: warning: assignment type mismatch: pointer to unsigned char "=" pointer to char "ascii_and_mic.c", line 55: warning: assignment type mismatch: pointer to unsigned char "=" pointer to char cc -Xa -G -h libascii_and_mic.so.0 ascii_and_mic.o -L../../../../../../src/port -o libascii_and_mic.so.0.0 ld: fatal: file ascii_and_mic.o: wrong ELF class: ELFCLASS64 ld: fatal: File processing errors. No output written to libascii_and_mic.so.0.0 gmake[4]: *** [libascii_and_mic.so.0.0] Error 1 gmake[4]: Leaving directory `/usr1/clarka/src/postgresql-8.0.2/src/backend/utils/mb/conversion_procs /ascii_and_mic' ---------------- The command that's failing doesn't have the -x flags, so I tried the following command manually: cc -Xa -v -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -G -h libascii_and_mic.so.0 ascii_and_mic.o -L../../../../../../src/port -o libascii_and_mic.so.0.0 And it worked... So, I specified the -x flags in LDFLAG in my configure command. But I still get the above error and I the LDFLAG isn't being used. Here is my configure command: ./configure \ CFLAGS="-v -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -DSUNOS4_CC" \ LDFLAGS="-v -xtarget=ultra2 -xarch=v9a -xchip=ultra2" \ --without-readline \ --without-zlib \ --prefix=$HOME/UAT/postgres \ --enable-thread-safety \ --enable-integer-datetimes Thanks, Andrew -----Original Message----- From: Tom Lane [mailto:tgl@sss.pgh.pa.us] Sent: July 29, 2005 10:37 AM To: Clark, Andrew Cc: Peter Eisentraut; pgsql-ports@postgresql.org Subject: Re: [PORTS] Solaris SPARC - Sun compiler 5.5 - 64 bit "Clark, Andrew" <Andrew.Clark@fnf.com> writes: > I'm using PostgreSQL 8.0.2 on Solaris 8. Is configure using the solaris template, or the sunos4 one? If the former, does changing CFLAGS="-v" # -v is like gcc -Wall to CFLAGS="-v -DSUNOS4_CC" # -v is like gcc -Wall fix it? (Note you need to re-configure to make template changes have any effect.) regards, tom lane
"Clark, Andrew" <Andrew.Clark@fnf.com> writes: > Well that definitely did something, but now I get a different error: OK, thanks for the confirmation. There was some discussion recently of whether we shouldn't add -DSUNOS4_CC to the solaris template, but we didn't have proof. > Here is my configure command: > ./configure \ > CFLAGS="-v -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -DSUNOS4_CC" \ > LDFLAGS="-v -xtarget=ultra2 -xarch=v9a -xchip=ultra2" \ > --without-readline \ > --without-zlib \ > --prefix=$HOME/UAT/postgres \ > --enable-thread-safety \ > --enable-integer-datetimes AFAIK you have to specify both LDFLAGS and LDFLAGS_SL if you want manual configuration of link options. LDFLAGS is used for building regular executables, LDFLAGS_SL for shared libraries. regards, tom lane
Tom, I added LDFLAGS_SL and everything compiled and all regression tests passed. Thanks! Andrew -----Original Message----- From: Tom Lane [mailto:tgl@sss.pgh.pa.us] Sent: July 29, 2005 11:26 AM To: Clark, Andrew Cc: Peter Eisentraut; pgsql-ports@postgresql.org Subject: Re: [PORTS] Solaris SPARC - Sun compiler 5.5 - 64 bit "Clark, Andrew" <Andrew.Clark@fnf.com> writes: > Well that definitely did something, but now I get a different error: OK, thanks for the confirmation. There was some discussion recently of whether we shouldn't add -DSUNOS4_CC to the solaris template, but we didn't have proof. > Here is my configure command: > ./configure \ > CFLAGS="-v -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -DSUNOS4_CC" \ > LDFLAGS="-v -xtarget=ultra2 -xarch=v9a -xchip=ultra2" \ > --without-readline \ --without-zlib \ --prefix=$HOME/UAT/postgres \ > --enable-thread-safety \ --enable-integer-datetimes AFAIK you have to specify both LDFLAGS and LDFLAGS_SL if you want manual configuration of link options. LDFLAGS is used for building regular executables, LDFLAGS_SL for shared libraries. regards, tom lane
I wrote: > "Clark, Andrew" <Andrew.Clark@fnf.com> writes: >> Well that definitely did something, but now I get a different error: > OK, thanks for the confirmation. There was some discussion recently > of whether we shouldn't add -DSUNOS4_CC to the solaris template, > but we didn't have proof. Actually, this doesn't prove anything one way or the other. Because you were manually specifying CFLAGS, and thereby overriding the template, the lack of -DSUNOS4_CC in the manual CFLAGS caused the s_lock.c failure. So: which template did configure pick on your machine, anyway? (This is reported in the first few lines of configure output) regards, tom lane
Quick Summary: 1. With the follow config: ./configure \ --without-readline \ --without-zlib \ --prefix=$HOME/UAT/postgres \ --enable-thread-safety \ --enable-integer-datetimes \ I have the following config: configure:1298: checking build system type configure:1316: result: sparc-sun-solaris2.8 configure:1324: checking host system type configure:1338: result: sparc-sun-solaris2.8 configure:1348: checking which template to use configure:1449: result: solaris 2. With the following config: ./configure \ CFLAGS="-v -DSUNOS4_CC" \ --without-readline \ --without-zlib \ --prefix=$HOME/UAT/postgres \ --enable-thread-safety \ --enable-integer-datetimes I have the following config: configure:1298: checking build system type configure:1316: result: sparc-sun-solaris2.8 configure:1324: checking host system type configure:1338: result: sparc-sun-solaris2.8 configure:1348: checking which template to use configure:1449: result: solaris 3. With the following config: ./configure \ CFLAGS="-v -xtarget=ultra2 -xarch=v9a -xchip=ultra2 -DSUNOS4_CC" \ LDFLAGS="-v -xtarget=ultra2 -xarch=v9a -xchip=ultra2" \ LDFLAGS_SL="-v -xtarget=ultra2 -xarch=v9a -xchip=ultra2" \ --without-readline \ --without-zlib \ --prefix=$HOME/UAT/postgres \ --enable-thread-safety \ --enable-integer-datetimes I have the following config: configure:1298: checking build system type configure:1316: result: sparc-sun-solaris2.8 configure:1324: checking host system type configure:1338: result: sparc-sun-solaris2.8 configure:1348: checking which template to use configure:1449: result: solaris 4. ./configure \ CFLAGS="-v -xtarget=ultra2 -xarch=v9a -xchip=ultra2" \ LDFLAGS="-v -xtarget=ultra2 -xarch=v9a -xchip=ultra2" \ LDFLAGS_SL="-v -xtarget=ultra2 -xarch=v9a -xchip=ultra2" \ --without-readline \ --without-zlib \ --prefix=$HOME/UAT/postgres \ --enable-thread-safety \ --enable-integer-datetimes I have the following config: configure:1298: checking build system type configure:1316: result: sparc-sun-solaris2.8 configure:1324: checking host system type configure:1338: result: sparc-sun-solaris2.8 configure:1348: checking which template to use configure:1449: result: solaris NOTES: 1 and 2 can compile and they both produce 32bit bins and libs. 3 can compile and it produces 64bit bins and libs. 4 can't compile (fbe fails) -----Original Message----- From: Tom Lane [mailto:tgl@sss.pgh.pa.us] Sent: July 29, 2005 12:18 PM To: Clark, Andrew Cc: Peter Eisentraut; pgsql-ports@postgresql.org Subject: Re: [PORTS] Solaris SPARC - Sun compiler 5.5 - 64 bit I wrote: > "Clark, Andrew" <Andrew.Clark@fnf.com> writes: >> Well that definitely did something, but now I get a different error: > OK, thanks for the confirmation. There was some discussion recently > of whether we shouldn't add -DSUNOS4_CC to the solaris template, but > we didn't have proof. Actually, this doesn't prove anything one way or the other. Because you were manually specifying CFLAGS, and thereby overriding the template, the lack of -DSUNOS4_CC in the manual CFLAGS caused the s_lock.c failure. So: which template did configure pick on your machine, anyway? (This is reported in the first few lines of configure output) regards, tom lane
"Clark, Andrew" <Andrew.Clark@fnf.com> writes: > I have the following config: > configure:1298: checking build system type > configure:1316: result: sparc-sun-solaris2.8 > configure:1324: checking host system type > configure:1338: result: sparc-sun-solaris2.8 > configure:1348: checking which template to use > configure:1449: result: solaris OK, so we do need to fix the solaris template too. I have a feeling that there may need to be some sort of test on the compiler version specifically, but without some more data it's hard to say what. For the moment I'll just put it into template/solaris unconditionally. regards, tom lane
Let me know if you want to test something... -----Original Message----- From: Tom Lane [mailto:tgl@sss.pgh.pa.us] Sent: July 29, 2005 12:58 PM To: Clark, Andrew Cc: Peter Eisentraut; pgsql-ports@postgresql.org Subject: Re: [PORTS] Solaris SPARC - Sun compiler 5.5 - 64 bit "Clark, Andrew" <Andrew.Clark@fnf.com> writes: > I have the following config: > configure:1298: checking build system type > configure:1316: result: sparc-sun-solaris2.8 > configure:1324: checking host system type > configure:1338: result: sparc-sun-solaris2.8 > configure:1348: checking which template to use > configure:1449: result: solaris OK, so we do need to fix the solaris template too. I have a feeling that there may need to be some sort of test on the compiler version specifically, but without some more data it's hard to say what. For the moment I'll just put it into template/solaris unconditionally. regards, tom lane