Обсуждение: BUG #1250: compilation fails in src/backend/storage/lmgr/s_lock.c
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
"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
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!"