Thread: BUG #1250: compilation fails in src/backend/storage/lmgr/s_lock.c

BUG #1250: compilation fails in src/backend/storage/lmgr/s_lock.c

From
"PostgreSQL Bugs List"
Date:
The following bug has been logged online:

Bug reference:      1250
Logged by:          Aidan Dixon

Email address:      Aidan.Dixon@Blueyonder.co.uk

PostgreSQL version: 8.0 Beta

Operating system:   Sun/Solaris9/64bit

Description:        compilation fails in src/backend/storage/lmgr/s_lock.c

Details:

Compiler: SUNWspro (Forte Developer 7) cc

The code in s_lock.c uses a  ".seg" directive where ".section" seems to be
in vogue, judging from the output of "cc -S" for a simple "hello world" type
program.

Build output:
make[4]: Entering directory
`/share/build/postgresql-8.0.0beta2/src/backend/storage/lmgr'
/opt/SUNWspro/bin/cc -xarch=v9 -O -Xa -O -v -I../../../../src/include
-I/soft-dist/local/include  -c -o s_lock.o s_lock.c
"s_lock.c", line 228: warning: asm() statement disables optimization within
function
cg error (as) : "s_lock.c", line 228 : unknown opcode ".segment"
cc: cg failed for s_lock.c
make[4]: *** [s_lock.o] Error 2
make[4]: Leaving directory
`/share/build/postgresql-8.0.0beta2/src/backend/storage/lmgr'
make[3]: *** [lmgr-recursive] Error 2
make[3]: Leaving directory
`/share/build/postgresql-8.0.0beta2/src/backend/storage'
make[2]: *** [storage-recursive] Error 2
make[2]: Leaving directory `/share/build/postgresql-8.0.0beta2/src/backend'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/share/build/postgresql-8.0.0beta2/src'
make: *** [all] Error 2

Re: BUG #1250: compilation fails in src/backend/storage/lmgr/s_lock.c

From
Tom Lane
Date:
"PostgreSQL Bugs List" <pgsql-bugs@postgresql.org> writes:
> The code in s_lock.c uses a  ".seg" directive where ".section" seems to be
> in vogue, judging from the output of "cc -S" for a simple "hello world" type
> program.

Hmm.  So how can we distinguish your version of Solaris from the ones
that want ".seg"?

            regards, tom lane

Re: BUG #1250: compilation fails in src/backend/storage/lmgr/s_lock.c

From
Aidan Dixon
Date:
On Fri, 10 Sep 2004, Tom Lane wrote:

>"PostgreSQL Bugs List" <pgsql-bugs@postgresql.org> writes:
>> The code in s_lock.c uses a  ".seg" directive where ".section" seems to be
>> in vogue, judging from the output of "cc -S" for a simple "hello world" type
>> program.
>
>Hmm.  So how can we distinguish your version of Solaris from the ones
>that want ".seg"?

The SUNWspro man page for cc(1) contains the following (entries for -xarch=v9
i.e. 64bit sparc apply in my case)

          ...
          Predefinitions:unix
                      sparc (SPARC)
                      i386 (x86)
                      sun

          The above are not predefined in -Xc mode.
          These predefinitions are valid in all modes:
                   __sun
                   __unix
                   __SUNPRO_C=0x540
                   __`uname -s`_`uname -r`
                   __sparc (SPARC)
                   __sparcv9 (SPARC with -xarch=v9|v9a|v9b)
                   __i386 (x86)
                   __BUILTIN_VA_ARG_INCR
                   __SVR4
          The following is predefined in -Xa and -Xt modes only:
                   __RESTRICT
          The compiler also predefines the object-like macro
                   __PRAGMA_REDEFINE_EXTNAME,
          to indicate the pragma will be recognized.
          ...

Guess the ___SUNPRO_C macro is a start.  'fraid the only other compiler I can
test against is gcc-3.4.1.   Any suggestions, I'll give 'em a try.

Regards,
-a.

--
Aidan Thomas Dixon - aidan.dixon@blueyonder.co.uk
"Whether you believe you can or you can't, you're probably right!"