diff -urN base-cvs-dec22/configure/os/CONFIG.Common.osf-alpha base/configure/os/CONFIG.Common.osf-alpha
--- base-cvs-dec22/configure/os/CONFIG.Common.osf-alpha	2006-12-20 01:57:00.000000000 +0900
+++ base/configure/os/CONFIG.Common.osf-alpha	2006-12-23 08:24:18.000000000 +0900
@@ -15,11 +15,12 @@
 
 CODE_CPPFLAGS =
 
-POSIX_CPPFLAGS =
-POSIX_LDLIBS += -lpthread
+POSIX_CPPFLAGS += -pthread -ieee
+POSIX_LDLIBS += -pthread -ieee
 
 OP_SYS_CPPFLAGS += -D_OSF_SOURCE
 OP_SYS_LDLIBS += -lrt
+USR_SYS_LIBS += m
 
 space:=$(empty) $(empty)
 colon := :
diff -urN base-cvs-dec22/configure/os/CONFIG.Common.osf-alpha-gnu base/configure/os/CONFIG.Common.osf-alpha-gnu
--- base-cvs-dec22/configure/os/CONFIG.Common.osf-alpha-gnu	2006-12-20 01:57:01.000000000 +0900
+++ base/configure/os/CONFIG.Common.osf-alpha-gnu	2006-12-23 05:27:05.000000000 +0900
@@ -15,10 +15,10 @@
 
 CODE_CPPFLAGS =
 
-POSIX_CPPFLAGS =
-POSIX_LDLIBS += -lpthread
+POSIX_CPPFLAGS += -D_REENTRANT
+POSIX_LDLIBS += -lpthread -lexc
 
-OP_SYS_CPPFLAGS += -D_OSF_SOURCE -D_REENTRANT
+OP_SYS_CPPFLAGS += -D_OSF_SOURCE
 OP_SYS_LDLIBS += -lrt
 
 space:=$(empty) $(empty)
diff -urN base-cvs-dec22/configure/os/CONFIG.osf-alpha-gnu.osf-alpha-gnu base/configure/os/CONFIG.osf-alpha-gnu.osf-alpha-gnu
--- base-cvs-dec22/configure/os/CONFIG.osf-alpha-gnu.osf-alpha-gnu	2006-12-20 01:57:01.000000000 +0900
+++ base/configure/os/CONFIG.osf-alpha-gnu.osf-alpha-gnu	2006-12-23 05:28:37.000000000 +0900
@@ -35,7 +35,7 @@
 OPT_CXXFLAGS_YES = -O
 OPT_CXXFLAGS_NO = -g
 
-STATIC_LDFLAGS_YES= -Bstatic -lrt -lpthread
+STATIC_LDFLAGS_YES= -Bstatic
 STATIC_LDFLAGS_NO=
 STATIC_LDLIBS_YES= -Bdynamic
 STATIC_LDLIBS_NO=
diff -urN base-cvs-dec22/configure/os/CONFIG.osf-alpha.osf-alpha base/configure/os/CONFIG.osf-alpha.osf-alpha
--- base-cvs-dec22/configure/os/CONFIG.osf-alpha.osf-alpha	2006-12-20 01:57:01.000000000 +0900
+++ base/configure/os/CONFIG.osf-alpha.osf-alpha	2006-12-23 05:29:23.000000000 +0900
@@ -16,7 +16,7 @@
 
 # Configure OS vendor C compiler
 CONFORM_CFLAGS_ANSI = -std
-CONFORM_CFLAGS_STRICT = -std1 -pthread -ieee
+CONFORM_CFLAGS_STRICT = -std1
 CONFORM_CFLAGS_TRAD = -std0
 CODE_CFLAGS = 
 WARN_CFLAGS_YES =
@@ -26,7 +26,7 @@
 
 # Configure OS vendor C++ compiler
 CONFORM_CXXFLAGS_NORMAL = 
-CONFORM_CXXFLAGS_STRICT = -std gnu -pthread -ieee
+CONFORM_CXXFLAGS_STRICT = -std gnu
 PROF_CXXFLAGS_YES = +p
 PROF_CXXFLAGS_NO =
 CODE_CXXFLAGS =
diff -urN base-cvs-dec22/documentation/README.tru64unix base/documentation/README.tru64unix
--- base-cvs-dec22/documentation/README.tru64unix	2006-12-20 02:01:59.000000000 +0900
+++ base/documentation/README.tru64unix	2006-12-23 09:10:49.000000000 +0900
@@ -36,6 +36,7 @@
 
  for gcc/g++
   setenv EPICS_HOST_ARCH osf-alpha-gnu
+  (setenv EPICS_HOST_ARCH `startup/EpicsHostArch.pl gnu`)
   export EPICS_HOST_ARCH=osf-alpha-gnu
 
 Building
@@ -52,8 +53,8 @@
   setenv EPICS_HOST_ARCH `startup/EpicsHostArch.pl gnu`
   make |& tee ../make-base-osfgnu.log
 
-Minor errors are detected in epicsSnprintf and timer.  They should 
-be investigated later. 
+Minor errors are detected in and timer.  They should be investigated 
+later. 
 
 Some internals
 -----------------------
@@ -64,7 +65,7 @@
   Please consult the pthread(3) manual page.  
 src/libCom/osi/os/osf is used for osi definitions, 
   src/libCom/osi/os/alpha is not used. 
-About 230 warning messages with cc/cxx, and 6 with gcc.  Sometimes
+About 230 warning messages with cc/cxx, and 4 with gcc.  Sometimes
   errors from cxx are intuitive. 
 I just started to use IOC application for a gateway purpose. There 
   can be architecture-dependent problems, that I didn't find yet. 
diff -urN base-cvs-dec22/src/ca/comBuf.h base/src/ca/comBuf.h
--- base-cvs-dec22/src/ca/comBuf.h	2006-12-01 07:19:03.000000000 +0900
+++ base/src/ca/comBuf.h	2006-12-17 13:23:02.000000000 +0900
@@ -82,6 +82,9 @@
     unsigned push ( comBuf & );
     template < class T >
     bool push ( const T & value );
+#ifdef __DECCXX /* cxx on osf-alpha */
+    bool push ( const char * value );
+#endif /* __DECCXX */
     template < class T >
     unsigned push ( const T * pValue, unsigned nElem );
     unsigned push ( const epicsInt8 * pValue, unsigned nElem );
@@ -193,6 +196,20 @@
     return true;
 }
 
+#ifdef __DECCXX /* cxx on osf-alpha */
+inline bool comBuf::push ( const char * value )
+{
+    unsigned index = this->nextWriteIndex;
+    unsigned available = sizeof ( this->buf ) - index;
+    if ( sizeof ( value ) > available ) {
+        return false;
+    }
+    memcpy ( &this->buf[ index ], & value, sizeof ( value ) );
+    this->nextWriteIndex = index + sizeof ( value );
+    return true;
+}
+#endif /* __DECCXX */
+
 inline unsigned comBuf :: push ( const epicsInt8 *pValue, unsigned nElem )
 {
     return copyInBytes ( pValue, nElem );
diff -urN base-cvs-dec22/src/libCom/osi/os/osf/osdStdio.c base/src/libCom/osi/os/osf/osdStdio.c
--- base-cvs-dec22/src/libCom/osi/os/osf/osdStdio.c	1970-01-01 09:00:00.000000000 +0900
+++ base/src/libCom/osi/os/osf/osdStdio.c	2006-12-23 08:50:52.000000000 +0900
@@ -0,0 +1,54 @@
+/*************************************************************************\
+* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
+*     National Laboratory.
+* Copyright (c) 2002 The Regents of the University of California, as
+*     Operator of Los Alamos National Laboratory.
+* EPICS BASE Versions 3.13.7
+* and higher are distributed subject to a Software License Agreement found
+* in file LICENSE that is included with this distribution. 
+\*************************************************************************/
+
+#include <osiUnistd.h>
+#define epicsExportSharedSymbols
+#include <epicsStdio.h>
+#include <stdlib.h>
+
+epicsShareFunc int epicsShareAPI epicsSnprintf(
+    char *str, size_t size, const char *format, ...)
+{
+    int nchars;
+    va_list pvar;
+
+    va_start(pvar,format);
+    nchars = epicsVsnprintf(str,size,format,pvar);
+    va_end (pvar);
+    return(nchars);
+}
+
+epicsShareFunc int epicsShareAPI epicsVsnprintf(
+    char *str, size_t size, const char *format, va_list ap)
+{
+    int nchars;
+    
+    nchars = vsnprintf ( str, size, format, ap );
+    if (nchars == size-1) {
+	/* this means the buffer was not long enough */
+	/* we try to find a return value for epicsVsnprintf standard */
+	int i, nchars2, size2 = size * 2;
+	char *str2;
+	
+	for (i=0; i<20; i++, size2=size2*2) {
+	    str2 = malloc(size2);
+	    if (str2 != NULL) {
+		nchars2 = vsnprintf ( str2, size2, format, ap );
+		if (nchars2 != size2-1) {
+		    free(str2);
+		    nchars = nchars2;
+		    break;
+		}
+	    }
+	    free(str2);
+	}
+    }
+    return nchars;
+}
