Re: [BUGS] Solaris cc compiler on amd: PostgreSQL does not have native

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: [BUGS] Solaris cc compiler on amd: PostgreSQL does not have native
Дата
Msg-id 200512302144.jBULilN15358@candle.pha.pa.us
обсуждение исходный текст
Список pgsql-patches
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

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 по дате отправления:

Предыдущее
От: Volkan YAZICI
Дата:
Сообщение: Re: tuple count and v3 functions in psql for COPY
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: TODO item: list prepared queries