diff --git a/src/xercesc/Makefile.incl b/src/xercesc/Makefile.incl
index 035037561de7f9f03fd2fdc6996c1ada3b5d47a3..828c63b90f12829be09673f892740d3dc03fa709 100644
--- a/src/xercesc/Makefile.incl
+++ b/src/xercesc/Makefile.incl
@@ -324,29 +324,18 @@ ifeq (${PLATFORM}, LINUX)
 
     ifeq (${CXX}, xlC_r)
 
+        PLATFORM_COMPILE_OPTIONS = -qpic -qnotempinc -D${PLATFORM}
+        MAKE_SHARED = ${CXX} -D${PLATFORM} -qpic -qmkshrobj -G ${LDFLAGS}
+        MAKE_SHARED_C = ${CC} -D${PLATFORM} -qpic -qmkshrobj -G ${LDFLAGS}
+
         ifeq (${TRANSCODER}, ICU)
-            ALLLIBS = ${LIBS} -L/usr/lpp/xlC/lib -licuuc -licudata
-        else
-            ALLLIBS = ${LIBS} -L/usr/lpp/xlC/lib
+            ALLLIBS = ${LIBS} -licuuc -licudata
         endif
 
         ifeq (${MESSAGELOADER}, ICU)
-            ALLLIBS = ${LIBS} -L/usr/lpp/xlC/lib -licuuc -licudata -lXercesMessages
-        endif
-
-        PLATFORM_COMPILE_OPTIONS = -w -O -qproto -qroconst -DPIC -qpic=large -D_THREAD_SAFE
-    
-        ifeq (${BITSTOBUILD}, 64)
-            MAKE_SHARED   = xlC_r -w -O -qproto -qroconst -qmkshrobj -G ${LDFLAGS} -X64
-            MAKE_SHARED_C = xlc_r -w -O -qproto -qroconst -qmkshrobj -G ${LDFLAGS} -X64
-        else
-            MAKE_SHARED   = xlC_r -w -O -qproto -qroconst -qmkshrobj -G ${LDFLAGS}
-            MAKE_SHARED_C = xlc_r -w -O -qproto -qroconst -qmkshrobj -G ${LDFLAGS}
+            ALLLIBS = ${LIBS} -licuuc -licudata -lXercesMessages
         endif
 
-        #EXTRA_LINK_OPTIONS = -bmap:$(XML_OBJ)/${LIBNAME}${SO_TARGET_VERSION}.${SO_TARGET_VERSION_MAJOR}.map
-        #DEPDOM_LINK_OPTIONS = -bmap:$(XML_OBJ)/${LIBDEPDOM}${SO_TARGET_VERSION}.${SO_TARGET_VERSION_MAJOR}.map
-        
         ## Compiler switch to embed a library name
         LD_SONAME =
         
diff --git a/src/xercesc/runConfigure b/src/xercesc/runConfigure
index a8ad5dd23e7dd9f01bdae3d829e833c679a04691..525e09f6920c267c902162c10af42d10881221a6 100755
--- a/src/xercesc/runConfigure
+++ b/src/xercesc/runConfigure
@@ -449,7 +449,15 @@ if test $bitsToBuild = 64; then
                    esac
                fi ;;
            linux)
-              bitstobuildDefines=" $bitstobuildDefines " ;;
+               if test $cppcompiler; then
+                   case $cppcompiler in
+                       xlC*)
+                          bitstobuildDefines=" $bitstobuildDefines -q64 -qwarn64 "
+                          bitstobuildLink=" -q64 " ;;
+                       *)
+                       ;;
+                   esac
+               fi ;;
            *)
             ;;
         esac
diff --git a/src/xercesc/util/AutoSense.hpp b/src/xercesc/util/AutoSense.hpp
index 698ba83303f0596ed7fff645ddea57944f65d5f1..4368ecf061937a1cc626c40551716f6a07b1a732 100644
--- a/src/xercesc/util/AutoSense.hpp
+++ b/src/xercesc/util/AutoSense.hpp
@@ -16,6 +16,9 @@
 
 /*
  * $Log$
+ * Revision 1.16  2004/11/18 16:20:04  cargilld
+ * Changes for linker problems with linux build using xlc.
+ *
  * Revision 1.15  2004/09/08 13:56:21  peiyongz
  * Apache License Version 2.0
  *
@@ -266,6 +269,17 @@
     #endif
 #elif defined (__QNXNTO__)
     #define XML_QCC
+#elif defined(__IBMC__) || defined(__IBMCPP__)
+    #if defined(XML_WIN32)
+        #define XML_IBMVAW32
+    #elif defined(XML_OS2)
+        #define XML_IBMVAOS2
+        #if (__IBMC__ >= 400 || __IBMCPP__ >= 400)
+            #define XML_IBMVA4_OS2
+        #endif
+    #elif defined(XML_AIX) || defined(__linux__)
+        #define XML_CSET              
+    #endif
 #elif defined (__GNUG__) || defined(__BEOS__) || defined(__linux__) || defined(__CYGWIN__)
     #define XML_GCC
 #elif defined(XML_HPUX)
@@ -286,17 +300,6 @@
     #define XML_MVSCPP
 #elif defined(EXM_OS390) && defined(__cplusplus)
     #define XML_MVSCPP
-#elif defined(__IBMC__) || defined(__IBMCPP__)
-    #if defined(XML_WIN32)
-        #define XML_IBMVAW32
-    #elif defined(XML_OS2)
-        #define XML_IBMVAOS2
-        #if (__IBMC__ >= 400 || __IBMCPP__ >= 400)
-            #define XML_IBMVA4_OS2
-        #endif
-    #elif defined(XML_AIX)
-        #define XML_CSET              
-    #endif
 #elif defined(XML_TRU64) && defined(__DECCXX)
     #define XML_DECCXX
 #elif defined(__MWERKS__)
diff --git a/src/xercesc/util/OutOfMemoryException.hpp b/src/xercesc/util/OutOfMemoryException.hpp
index a04536ec11619b714380c260c6ac6d8c112730ac..451b4b3b14ec86137f4955992e3c0df5b5831a0f 100755
--- a/src/xercesc/util/OutOfMemoryException.hpp
+++ b/src/xercesc/util/OutOfMemoryException.hpp
@@ -27,7 +27,7 @@
 
 XERCES_CPP_NAMESPACE_BEGIN
 
-const XMLCh gDefOutOfMemoryErrMsg[] =
+static const XMLCh gDefOutOfMemoryErrMsg[] =
 {
         chLatin_O, chLatin_u, chLatin_t, chLatin_O
     ,   chLatin_f, chLatin_M, chLatin_e, chLatin_m
diff --git a/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp b/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
index 9995db2a0b6879598e7b4daf2a0389f15551a0f7..f14fa14fd69c06e72ed5888ba2071badd3b20785 100644
--- a/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
+++ b/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/framework/MemoryManager.hpp>
 #include <wchar.h>
 
-#if defined (XML_GCC) || defined (XML_PTX) || defined (XML_IBMVAOS2)
+#if defined (XML_GCC) || defined (XML_PTX) || defined (XML_IBMVAOS2) || defined(XML_LINUX)
     #if defined(XML_BEOS)
         wint_t towlower(wint_t wc) {
           return ((wc>'A')&&(wc<'Z') ? wc+'a'-'A' : wc);
diff --git a/src/xercesc/util/regx/RegxDefs.hpp b/src/xercesc/util/regx/RegxDefs.hpp
index b673ae596a46339d8ae72d0910f5f66a9dfb5a07..df4906ee7fc34a3745b6f2033ecce5a32f607258 100644
--- a/src/xercesc/util/regx/RegxDefs.hpp
+++ b/src/xercesc/util/regx/RegxDefs.hpp
@@ -29,53 +29,53 @@
 
 XERCES_CPP_NAMESPACE_BEGIN
 
-const XMLCh fgXMLCategory[] =
+static const XMLCh fgXMLCategory[] =
 {
     chLatin_X, chLatin_M, chLatin_L, chNull
 };
 
-const XMLCh fgASCIICategory[] =
+static const XMLCh fgASCIICategory[] =
 {
     chLatin_A, chLatin_S, chLatin_C, chLatin_I, chLatin_I, chNull
 };
 
-const XMLCh fgUnicodeCategory[] =
+static const XMLCh fgUnicodeCategory[] =
 {
     chLatin_U, chLatin_N, chLatin_I, chLatin_C, chLatin_O, chLatin_D,
     chLatin_E, chNull
 };
 
-const XMLCh fgBlockCategory[] =
+static const XMLCh fgBlockCategory[] =
 {
     chLatin_B, chLatin_L, chLatin_O, chLatin_C, chLatin_K, chNull
 };
 
-const XMLCh fgXMLSpace[] =
+static const XMLCh fgXMLSpace[] =
 {
     chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_S,
     chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull
 };
 
-const XMLCh fgXMLDigit[] =
+static const XMLCh fgXMLDigit[] =
 {
     chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_D,
     chLatin_i, chLatin_g, chLatin_i, chLatin_t, chNull
 };
 
-const XMLCh fgXMLWord[] =
+static const XMLCh fgXMLWord[] =
 {
     chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_W,
     chLatin_o, chLatin_r, chLatin_d, chNull
 };
 
-const XMLCh fgXMLNameChar[] =
+static const XMLCh fgXMLNameChar[] =
 {
     chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_N,
     chLatin_a, chLatin_m, chLatin_e, chLatin_C, chLatin_h, chLatin_a,
 	chLatin_r, chNull
 };
 
-const XMLCh fgXMLInitialNameChar[] =
+static const XMLCh fgXMLInitialNameChar[] =
 {
     chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_s, chLatin_I,
     chLatin_n, chLatin_i, chLatin_t, chLatin_i, chLatin_a, chLatin_l,
@@ -83,31 +83,31 @@ const XMLCh fgXMLInitialNameChar[] =
     chLatin_a, chLatin_r, chNull
 };
 
-const XMLCh fgASCII[] =
+static const XMLCh fgASCII[] =
 {
     chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i,
     chLatin_s, chLatin_A, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chNull
 };
 
-const XMLCh fgASCIIDigit[] =
+static const XMLCh fgASCIIDigit[] =
 {
     chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i,
     chLatin_s, chLatin_D, chLatin_i, chLatin_g, chLatin_i, chLatin_t, chNull
 };
 
-const XMLCh fgASCIIWord[] =
+static const XMLCh fgASCIIWord[] =
 {
     chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i,
     chLatin_s, chLatin_W, chLatin_o, chLatin_r, chLatin_d, chNull
 };
 
-const XMLCh fgASCIISpace[] =
+static const XMLCh fgASCIISpace[] =
 {
     chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i,
     chLatin_s, chLatin_S, chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull
 };
 
-const XMLCh fgASCIIXDigit[] =
+static const XMLCh fgASCIIXDigit[] =
 {
     chLatin_a, chLatin_s, chLatin_c, chLatin_i, chLatin_i, chColon, chLatin_i,
     chLatin_s, chLatin_X, chLatin_D, chLatin_i, chLatin_g, chLatin_i,
@@ -115,115 +115,115 @@ const XMLCh fgASCIIXDigit[] =
 };
 
 
-const XMLCh fgUniAll[] =
+static const XMLCh fgUniAll[] =
 {
     chLatin_A, chLatin_L, chLatin_L, chNull
 };
 
-const XMLCh fgUniIsAlpha[] =
+static const XMLCh fgUniIsAlpha[] =
 {
     chLatin_I, chLatin_s, chLatin_A, chLatin_l, chLatin_p, chLatin_h,
     chLatin_a, chNull
 };
 
-const XMLCh fgUniIsAlnum[] =
+static const XMLCh fgUniIsAlnum[] =
 {
     chLatin_I, chLatin_s, chLatin_A, chLatin_l, chLatin_n, chLatin_u,
     chLatin_m, chNull
 };
 
-const XMLCh fgUniIsWord[] =
+static const XMLCh fgUniIsWord[] =
 {
     chLatin_I, chLatin_s, chLatin_W, chLatin_o, chLatin_r, chLatin_d,
     chNull
 };
 
 
-const XMLCh fgUniIsDigit[] =
+static const XMLCh fgUniIsDigit[] =
 {
     chLatin_I, chLatin_s, chLatin_D, chLatin_i, chLatin_g, chLatin_i,
     chLatin_t, chNull
 };
 
-const XMLCh fgUniIsUpper[] =
+static const XMLCh fgUniIsUpper[] =
 {
     chLatin_I, chLatin_s, chLatin_U, chLatin_p, chLatin_p, chLatin_e,
     chLatin_r, chNull
 };
 
-const XMLCh fgUniIsLower[] =
+static const XMLCh fgUniIsLower[] =
 {
     chLatin_I, chLatin_s, chLatin_L, chLatin_o, chLatin_w, chLatin_e,
     chLatin_r, chNull
 };
 
-const XMLCh fgUniIsPunct[] =
+static const XMLCh fgUniIsPunct[] =
 {
     chLatin_I, chLatin_s, chLatin_P, chLatin_u, chLatin_n, chLatin_c,
     chLatin_t, chNull
 };
 
-const XMLCh fgUniIsSpace[] =
+static const XMLCh fgUniIsSpace[] =
 {
 	chLatin_I, chLatin_s, chLatin_S, chLatin_p, chLatin_a, chLatin_c,
     chLatin_e, chNull
 };
 
-const XMLCh fgUniAssigned[] =
+static const XMLCh fgUniAssigned[] =
 {
     chLatin_A, chLatin_S, chLatin_S, chLatin_I, chLatin_G, chLatin_N,
     chLatin_E, chLatin_D, chNull
 };
 
 
-const XMLCh fgUniDecimalDigit[] =
+static const XMLCh fgUniDecimalDigit[] =
 {
     chLatin_N, chLatin_d, chNull
 };
 
-const XMLCh fgBlockIsSpecials[] =
+static const XMLCh fgBlockIsSpecials[] =
 {
     chLatin_I, chLatin_s, chLatin_S, chLatin_p, chLatin_e, chLatin_c, chLatin_i, chLatin_a,
     chLatin_l, chLatin_s, chNull
 };
 
-const XMLCh fgBlockIsPrivateUse[] =
+static const XMLCh fgBlockIsPrivateUse[] =
 {
     chLatin_I, chLatin_s, chLatin_P, chLatin_r, chLatin_i, chLatin_v, chLatin_a, chLatin_t, chLatin_e,
     chLatin_U, chLatin_s, chLatin_e,  chNull
 };
 
-const XMLCh fgUniLetter[] =
+static const XMLCh fgUniLetter[] =
 {
     chLatin_L, chNull
 };
 
-const XMLCh fgUniNumber[] =
+static const XMLCh fgUniNumber[] =
 {
     chLatin_N, chNull
 };
 
-const XMLCh fgUniMark[] =
+static const XMLCh fgUniMark[] =
 {
     chLatin_M, chNull
 };
 
-const XMLCh fgUniSeparator[] =
+static const XMLCh fgUniSeparator[] =
 {
     chLatin_Z, chNull
 };
 
-const XMLCh fgUniPunctuation[] =
+static const XMLCh fgUniPunctuation[] =
 {
     chLatin_P, chNull
 };
 
-const XMLCh fgUniControl[] =
+static const XMLCh fgUniControl[] =
 {
     chLatin_C, chNull
 };
 
-const XMLCh fgUniSymbol[] =
+static const XMLCh fgUniSymbol[] =
 {
     chLatin_S, chNull
 };
diff --git a/src/xercesc/validators/schema/GeneralAttributeCheck.cpp b/src/xercesc/validators/schema/GeneralAttributeCheck.cpp
index 4b36b4d25f318ac7963064f1d8fcd7b5814d60c9..4ab143a8c980a3e971c8f60ec2220e0ade4e455f 100644
--- a/src/xercesc/validators/schema/GeneralAttributeCheck.cpp
+++ b/src/xercesc/validators/schema/GeneralAttributeCheck.cpp
@@ -16,6 +16,9 @@
 
 /*
  * $Log$
+ * Revision 1.26  2004/11/18 16:20:06  cargilld
+ * Changes for linker problems with linux build using xlc.
+ *
  * Revision 1.25  2004/10/20 15:19:07  knoaman
  * Allow option of initializing static data in XMLPlatformUtils::Initialize
  *
@@ -167,28 +170,28 @@ XERCES_CPP_NAMESPACE_BEGIN
 // ---------------------------------------------------------------------------
 //  Local const data
 // ---------------------------------------------------------------------------
-const XMLCh fgValueZero[] =
+static const XMLCh fgValueZero[] =
 {
     chDigit_0, chNull
 };
 
-const XMLCh fgValueOne[] =
+static const XMLCh fgValueOne[] =
 {
     chDigit_1, chNull
 };
 
-const XMLCh fgUnbounded[] =
+static const XMLCh fgUnbounded[] =
 {
     chLatin_u, chLatin_n, chLatin_b, chLatin_o, chLatin_u, chLatin_n, chLatin_d,
     chLatin_e, chLatin_d, chNull
 };
 
-const XMLCh fgLocal[] =
+static const XMLCh fgLocal[] =
 {
     chLatin_l, chLatin_o, chLatin_c, chLatin_a, chLatin_l, chNull
 };
 
-const XMLCh fgGlobal[] =
+static const XMLCh fgGlobal[] =
 {
     chLatin_g, chLatin_l, chLatin_o, chLatin_b, chLatin_a, chLatin_l, chNull
 };
diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp
index 689ccbeeb456407e399cec890882dbe059d7b2c1..c77b673ee559fb76a9efea318b76e5dd87bb95d8 100644
--- a/src/xercesc/validators/schema/TraverseSchema.cpp
+++ b/src/xercesc/validators/schema/TraverseSchema.cpp
@@ -75,70 +75,70 @@ typedef RefVectorOf<DatatypeValidator> DVRefVector;
 // ---------------------------------------------------------------------------
 //  TraverseSchema: Local const data
 // ---------------------------------------------------------------------------
-const XMLCh fgAnonSNamePrefix[] =
+static const XMLCh fgAnonSNamePrefix[] =
 {
     chLatin_S, chNull
 };
 
-const XMLCh fgAnonCNamePrefix[] =
+static const XMLCh fgAnonCNamePrefix[] =
 {
     chLatin_C, chNull
 };
 
-const XMLCh fgUnbounded[] =
+static const XMLCh fgUnbounded[] =
 {
     chLatin_u, chLatin_n, chLatin_b, chLatin_o, chLatin_u, chLatin_n, chLatin_d,
     chLatin_e, chLatin_d, chNull
 };
 
-const XMLCh fgSkip[] =
+static const XMLCh fgSkip[] =
 {
     chLatin_s, chLatin_k, chLatin_i, chLatin_p, chNull
 };
 
-const XMLCh fgLax[] =
+static const XMLCh fgLax[] =
 {
     chLatin_l, chLatin_a, chLatin_x, chNull
 };
 
-const XMLCh fgStrict[] =
+static const XMLCh fgStrict[] =
 {
     chLatin_s, chLatin_t, chLatin_r, chLatin_i, chLatin_c, chLatin_t, chNull
 };
 
-const XMLCh fgValueOne[] =
+static const XMLCh fgValueOne[] =
 {
     chDigit_1, chNull
 };
 
-const XMLCh fgValueZero[] =
+static const XMLCh fgValueZero[] =
 {
     chDigit_0, chNull
 };
 
-const XMLCh fgForwardSlash[] =
+static const XMLCh fgForwardSlash[] =
 {
     chForwardSlash, chNull
 };
 
-const XMLCh fgDot[] =
+static const XMLCh fgDot[] =
 {
     chPeriod, chNull
 };
 
-const XMLCh fgDotForwardSlash[] =
+static const XMLCh fgDotForwardSlash[] =
 {
     chPeriod, chForwardSlash, chNull
 };
 
-const XMLCh* fgIdentityConstraints[] =
+static const XMLCh* fgIdentityConstraints[] =
 {
     SchemaSymbols::fgELT_UNIQUE,
     SchemaSymbols::fgELT_KEY,
     SchemaSymbols::fgELT_KEYREF
 };
 
-const XMLCh fgSynthetic_Annotation[] =
+static const XMLCh fgSynthetic_Annotation[] =
 {
     chLatin_S, chLatin_y, chLatin_n, chLatin_t, chLatin_h, chLatin_e, chLatin_t
     ,   chLatin_i, chLatin_c, chUnderscore