============================================================================
POSTGRESQL BUG REPORT TEMPLATE
============================================================================
Your name : Jarda Benkovsky
Your email address : benkovsk@pha.pvt.cz
Category : install: compile
Severity : serious
Summary: syntax errors in spinlocks (s_lock.h)
System Configuration
--------------------
Operating System : Digital Unix 4.0e
PostgreSQL version : 6.4.2
Compiler used : gcc 2.8.1, DEC C V5.8-009
Hardware:
---------
Alpha 2100
uname -a: OSF1 shadow.pvt.net V4.0 1091 alpha
Versions of other tools:
------------------------
gnu make
--------------------------------------------------------------------------
Problem Description:
--------------------
On Digital Unix alphas, msemaphores are defined as a struct of two ints.
Neither gcc, nor native do not like constructs like *(lock) = 0;
Native cc:
/usr/bin/cc -I../../../include -I../../../backend -DNOFIXADE -I../.. -c buf_init.c -o buf_init.o
cc: Error: buf_init.c, line 234: In this statement, "0" is of type "int", and cannot be converted to "struct declared
withouta tag". (noconvert)
S_INIT_LOCK(&(buf->io_in_progress_lock));
------------------------^
GCC:
../../../include/storage/s_lock.h: In function `tas':
In file included from buf_init.c:29:
../../../include/storage/s_lock.h:102: aggregate value used where an integer was expected
buf_init.c: In function `InitBufferPool':
buf_init.c:234: incompatible types in assignment
Especially the case of native CC is interesting, as there
should not be such case and I was not able to reproduce
it in controlled environment - but maybe I did some mistake
during the test.
--------------------------------------------------------------------------
Test Case:
----------
./configure; make
--------------------------------------------------------------------------
Solution:
---------
--------------------------------------------------------------------------