Re: [BUGS] Solaris cc compiler on amd: PostgreSQL does not have native - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: [BUGS] Solaris cc compiler on amd: PostgreSQL does not have native |
Date | |
Msg-id | 200601051533.k05FX5M14162@candle.pha.pa.us Whole thread Raw |
Responses |
Re: [BUGS] Solaris cc compiler on amd: PostgreSQL does not have native
|
List | pgsql-patches |
Pierre Girard wrote: > Bruce Momjian wrote: > > >I have applied your patch with only minor comment additions. Let us > >know if additional changes are required. Thanks. > > > >Are these flags required to be supplied to configure, or just the ASM > >file? > > > > -Xa -xtarget=opteron -xarch=amd64 OK, I added this to the top of the ASM file as a comment. > If i remember right, the problem is that those options are passed to > configure but they're not set when compiling the asm file. Here's my > configure line since it appears it got lost somewhere. > > MAKE=gmake CC=/opt/SUNWspro/bin/cc CFLAGS="-xO3 -mt -fsimple=1 > -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt > -xtarget=opteron -xarch=amd64 -xregs=no%frameptr" > CXX=/opt/SUNWspro/bin/CC CXXFLAGS="-xO3 -mt -fsimple=1 -ftrap=%none > -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=opteron > -xarch=amd64 -xregs=no%frameptr" LDFLAGS="-xtarget=opteron -xarch=amd64" > ./configure --without-readline Wow, those are a lot of options. Are they all required? Are the x64-specific? --------------------------------------------------------------------------- > > >I am thinking the port isn't 100% fool-proof yet, but it is _much_ > >closer than it was, and people can now do testing to improve it. > > > >--------------------------------------------------------------------------- > > > >Pierre Girard wrote: > > > > > >>Bruce Momjian wrote: > >> > >> > >> > >>>Interesting. Seems you have a setup that uses its own assembly source > >>>file in port/tas/solaris_i386.s, rather than using inline C ASM. There > >>>are files for both Sparc and i386 there, and are both used only for the > >>>Sun compiler. Does the Sun compiler not support ASM inlining? > >>> > >>> > >>> > >>> > >>I don't know but i imagine that if the postgresql team decided to do it > >>that way it's probably not supported. > >> > >> > >> > >>>I also modified the function alignment from 4 to 8, patch > >>>attached. Please give it a try and report back any error lines. > >>> > >>> > >>> > >>> > >>I applied the patch and now the solaris_i386.s file compiles fine with > >>the command: > >>cc -Xa -xtarget=opteron -xarch=amd64 -c solaris_i386.s > >> > >>I made a few changes and was able to compile postgresql completely but i > >>don't think we'll be trying it until after the holidays. I included > >>the small changes i made but i'm sure you can make a much better job > >>than i did. > >> > >> > >> > >>>Seems Sun might be interested in geting this working. We don't have an > >>>official Sun contact yet for this project. > >>> > >>> > >>> > >>> > >>Given this announcement, i'm surprised that you don't have a contact > >>already: > >>http://www.sun.com/smi/Press/sunflash/2005-11/sunflash.20051117.1.html > >> > >>Happy holidays everyone. > >> > >> > >> > > > > > > > >>diff -Naur postgresql-8.1.1/src/Makefile.shlib postgresql-8.1.1.new/src/Makefile.shlib > >>--- postgresql-8.1.1/src/Makefile.shlib Sat Dec 3 15:16:39 2005 > >>+++ postgresql-8.1.1.new/src/Makefile.shlib Fri Dec 23 10:04:58 2005 > >>@@ -193,7 +193,7 @@ > >> ifeq ($(GCC), yes) > >> LINK.shared = $(CC) -shared > >> else > >>- LINK.shared = $(CC) -G > >>+ LINK.shared = $(CC) -G $(CFLAGS) > >> endif > >> ifeq ($(with_gnu_ld), yes) > >> LINK.shared += -Wl,-soname,$(soname) > >>diff -Naur postgresql-8.1.1/src/backend/port/tas/solaris_x86_64.s postgresql-8.1.1.new/src/backend/port/tas/solaris_x86_64.s > >>--- postgresql-8.1.1/src/backend/port/tas/solaris_x86_64.s Wed Dec 31 19:00:00 1969 > >>+++ postgresql-8.1.1.new/src/backend/port/tas/solaris_x86_64.s Fri Dec 23 09:17:13 2005 > >>@@ -0,0 +1,33 @@ > >>+/============================================================================= > >>+/ tas.s -- test and set lock for solaris_i386 > >>+/============================================================================= > >>+ > >>+ .file "tas.s" > >>+ .text > >>+ .align 16 > >>+.L1.text: > >>+ > >>+ .globl tas > >>+tas: > >>+ pushq %rbp /save prev base pointer > >>+ movq %rsp,%rbp /new base pointer > >>+ pushq %rbx /save prev bx > >>+ movq 8(%rbp),%rbx /load bx with address of lock > >>+ movq $255,%rax /put something in ax > >>+ xchgb %al,(%rbx) /swap lock value with "0" > >>+ cmpb $0,%al /did we get the lock? > >>+ jne .Locked > >>+ subq %rax,%rax /yes, we got it -- return 0 > >>+ jmp .Finish > >>+ .align 8 > >>+.Locked: > >>+ movq $1,%rax /no, we didn't get it - return 1 > >>+.Finish: > >>+ popq %rbx /restore prev bx > >>+ movq %rbp,%rsp /restore stack state > >>+ popq %rbp > >>+ ret /return > >>+ .align 8 > >>+ .type tas,@function > >>+ .size tas,.-tas > >>+ > >>diff -Naur postgresql-8.1.1/src/include/storage/s_lock.h postgresql-8.1.1.new/src/include/storage/s_lock.h > >>--- postgresql-8.1.1/src/include/storage/s_lock.h Tue Oct 11 16:41:32 2005 > >>+++ postgresql-8.1.1.new/src/include/storage/s_lock.h Fri Dec 23 09:18:44 2005 > >>@@ -788,7 +788,7 @@ > >> > >> /* out-of-line assembler from src/backend/port/tas/foo.s */ > >> > >>-#if defined(__sun) && defined(__i386) > >>+#if defined(__sun) && (defined(__i386) || defined(__x86_64__)) > >> /* > >> * Solaris/386 (we only get here for non-gcc case) > >> */ > >>diff -Naur postgresql-8.1.1/src/template/solaris postgresql-8.1.1.new/src/template/solaris > >>--- postgresql-8.1.1/src/template/solaris Fri Jul 29 13:00:29 2005 > >>+++ postgresql-8.1.1.new/src/template/solaris Fri Dec 23 09:43:08 2005 > >>@@ -17,8 +17,15 @@ > >> ;; > >> i?86-*-solaris*) > >> if test "$GCC" != yes ; then > >>- need_tas=yes > >>- tas_file=solaris_i386.s > >>+ soarch=`isainfo` > >>+ if isainfo | grep amd64 > >>+ then > >>+ need_tas=yes > >>+ tas_file=solaris_x86_64.s > >>+ else > >>+ need_tas=yes > >>+ tas_file=solaris_i386.s > >>+ fi > >> fi > >> ;; > >> esac > >> > >> > > > > > > > -- 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-patches by date: