removal of more dead strings....
diff --git a/packages/xdc/runtime/Core.xdc b/packages/xdc/runtime/Core.xdc
index 09abf7d..8071365 100644
--- a/packages/xdc/runtime/Core.xdc
+++ b/packages/xdc/runtime/Core.xdc
@@ -49,6 +49,9 @@
 
 internal:
 
+    config String S_CREATE_POLICY_ERROR = "create policy error";
+    config String S_DELETE_POLICY_ERROR = "delete policy error";
+
     struct ObjDesc {
         Ptr             fxnTab;
         Types.Link      *modLink;
diff --git a/packages/xdc/runtime/Log.c b/packages/xdc/runtime/Log.c
index cc36fd5..c7a6182 100644
--- a/packages/xdc/runtime/Log.c
+++ b/packages/xdc/runtime/Log.c
@@ -27,13 +27,13 @@
  * 32-bit format strings
  */
 #if (xdc_target__bitsPerChar * xdc_target__sizeof_Int) == 32
-#define SERIAL "#%010u "
-#define HI "%0.8x:"
-#define LO "%0.8x] "
+static const Char SERIAL[] = "#%010u ";
+static const Char HI[] = "%0.8x:";
+static const Char LO[] = "%0.8x] ";
 #elif (xdc_target__bitsPerChar * xdc_target__sizeof_Long) == 32 
-#define SERIAL "#%010lu "
-#define HI "%0.8lx:"
-#define LO "%0.8lx] "
+static const Char SERIAL[] = "#%010lu ";
+static const Char HI[] =  "%0.8lx:";
+static const Char LO[] = "%0.8lx] ";
 #else
 #error xdc.runtime.Log does not support this target. 
 #endif
@@ -48,6 +48,10 @@
     String fmt;
     Bits32 hi, lo;
 
+    static const Char STR_FMT[] = "{evt: fmt=%p, args=[0x%x, 0x%x ...]}";
+    static const Char STR_PRE[] = "[t=0x";
+    static const Char STR_SEP[] = ": ";
+    
     /* print serial number if there is one; 0 isn't a valid serial number */
     if (er->serial) {
         System_printf(SERIAL, er->serial);
@@ -57,7 +61,7 @@
     hi = er->tstamp.hi;
     lo = er->tstamp.lo;
     if (lo != ~0 && hi != ~0) {
-        System_printf("[t=0x");
+        System_printf(STR_PRE);
         if (hi) {
             System_printf(HI, hi);
         }
@@ -66,7 +70,7 @@
 
     /* print module name */
     Text_putMod((Text_RopeId)Types_getModuleId(er->evt), NULL, -1);
-    System_printf(": ");
+    System_printf(STR_SEP);
     
     /* print event */
     rope = Types_getEventId(er->evt);   /* the event id is the message rope */
@@ -85,7 +89,7 @@
                 er->arg[4], er->arg[5], er->arg[6], er->arg[7]);
         }
         else {
-            System_aprintf("{evt: fmt=%p, args=[0x%x, 0x%x ...]}",
+            System_aprintf(STR_FMT,
                 fmt, er->arg[0], er->arg[1]);
         }
     }
diff --git a/packages/xdc/runtime/Startup.c b/packages/xdc/runtime/Startup.c
index db9b917..ba8ccc1 100644
--- a/packages/xdc/runtime/Startup.c
+++ b/packages/xdc/runtime/Startup.c
@@ -54,6 +54,8 @@
  */
 Void Startup_startMods(Int state[], Int len)
 {
+//    static const Char STR_MSG[] = "xdc.runtime.Startup: 'maxPasses' exceeded";
+
     Int curPass;
     Int i;
     Bool done;
@@ -85,7 +87,7 @@
     }
 
     if (!done) {
-        System_abort("xdc.runtime.Startup: 'maxPasses' exceeded");
+        System_abort(Startup_errorMsg);
     }
 
     module->stateTab = NULL;
diff --git a/packages/xdc/runtime/Startup.xdc b/packages/xdc/runtime/Startup.xdc
index e0eb72b..fbc179b 100644
--- a/packages/xdc/runtime/Startup.xdc
+++ b/packages/xdc/runtime/Startup.xdc
@@ -121,6 +121,12 @@
     config Int maxPasses = 32;
     
     /*!
+     *  ======== errorMsg ========
+     *  Message to print when startup diverges
+     */
+    config String errorMsg = "xdc.runtime.Startup: 'maxPasses' exceeded";
+
+    /*!
      *  ======== InitFxn ========
      *  Type of function assignable to `firstFxns`, `lastFxns`, or `resetFxn`
      */
diff --git a/packages/xdc/runtime/System.c b/packages/xdc/runtime/System.c
index fc8d0e4..25972c5 100644
--- a/packages/xdc/runtime/System.c
+++ b/packages/xdc/runtime/System.c
@@ -31,8 +31,6 @@
  */

 #define OUTMAX      ((32 + 2) / 3) + 5

 

-static const Char digtohex[] = "0123456789abcdef";

-

 /*

  *  ======== System_Module_startup ========

  */

@@ -217,6 +215,8 @@
     Int     res;

     Char    outbuf[OUTMAX];

    

+    static const Char STR_NULL[] = "(null)";

+

     /* vars passed to System_extendFxn. Also keep track in while loop */

     struct System_ParseData parse;

 

@@ -360,7 +360,7 @@
 

                 /* substitute (null) for NULL pointer */

                 if (parse.ptr == (char *)NULL) {

-                    parse.ptr = "(null)";

+                    parse.ptr = (char *)STR_NULL;

                 }

                 parse.len = strlen(parse.ptr);

                 if (parse.precis != -1 && parse.precis < parse.len) {

@@ -420,6 +420,8 @@
  */

 Char *System_formatNum(Char *ptr, UInt32 un, Int zpad, Int base)

 {

+    static const Char STR_HEXDIGS[] = "0123456789abcdef";

+

     Int i = 0;

     Char sign = 0;

 

@@ -440,7 +442,7 @@
 

     /* compute digits in number from right to left */

     do {

-        *(--ptr) = digtohex[(Int) (n % base)];

+        *(--ptr) = STR_HEXDIGS[(Int) (n % base)];

         n = n / base;

         ++i;

     } while (n);

diff --git a/packages/xdc/runtime/Text.c b/packages/xdc/runtime/Text.c
index 9179401..9a0a6d7 100644
--- a/packages/xdc/runtime/Text.c
+++ b/packages/xdc/runtime/Text.c
@@ -97,13 +97,15 @@
  */
 Bool Text_printVisFxn(Ptr obj, String src)
 {
+    static const Char STR_FMT[] = "%.*s";
+
     Text_PrintVisState *state = obj;
 
     if (state->len == 0) {
         return (TRUE);
     }
     else {
-        Int oc = Text_xprintf(state->bufp, "%.*s", state->len, src);
+        Int oc = Text_xprintf(state->bufp, STR_FMT, state->len, src);
         state->res += oc;
         if (state->len > 0) {
             state->len -= oc;
@@ -118,17 +120,20 @@
  */
 Int Text_putLab(Types_Label *lab, Char **bufp, Int len)
 {
+    static const Char STR_FMT1[] = "%p";
+    static const Char STR_FMT2[] = "('%s')";
+
     Int res;
 
     res = Text_putMod(lab->modId, bufp, len);
     if (len < 0 || (len - res) > 8) {  /* need at most 9 characters for "%p" */
-        res += Text_xprintf(bufp, "%p", lab->handle);
+        res += Text_xprintf(bufp, STR_FMT1, lab->handle);
     }
     
     if (lab->named
         && (len < 0 || (len - res) >= (4 + (Int)strlen(lab->iname))) ) {
 
-        res += Text_xprintf(bufp, "('%s')", lab->iname);
+        res += Text_xprintf(bufp, STR_FMT2, lab->iname);
     }
 
     return (res);
@@ -139,14 +144,17 @@
  */
 Int Text_putMod(Types_ModuleId mid, Char **bufp, Int len)
 {
+    static const Char STR_FMT1[] = "{module#%d}";
+    static const Char STR_FMT2[] = "{module-rope:%x}";
+
     Text_PrintVisState state;
 
     if (mid < 0x8000) {
-        return (Text_xprintf(bufp, "{module#%d}", mid));
+        return (Text_xprintf(bufp, STR_FMT1, mid));
     }
 
     if (!Text_isLoaded) {
-        return (Text_xprintf(bufp, "{module-rope:%x}", mid));
+        return (Text_xprintf(bufp, STR_FMT2, mid));
     }
     
     state.bufp = bufp;
@@ -164,6 +172,10 @@
  */
 Int Text_putSite(Types_Site *site, Char **bufp, Int len)
 {
+    static const Char STR_FMT1[] = ": ";
+    static const Char STR_FMT2[] = "\"%s\"";
+    static const Char STR_FMT3[] = "line %d: ";
+
     Int res;
     Int max = len < 0 ? 0x7fff : len;   /* 0x7fff == infinite, well almost */
 
@@ -175,21 +187,21 @@
     max -= (res + 2);     /* +2 for the ": " string below */
 
     if (max > 0) {
-        res += Text_xprintf(bufp, ": ");
+        res += Text_xprintf(bufp, STR_FMT1);
 
         if (site->line == 0) {
             return (res);
         }
     
         if (site->file && (max >= ((Int)strlen(site->file) + 4))) {
-            Int oc = Text_xprintf(bufp, "\"%s\", ", site->file);
+            Int oc = Text_xprintf(bufp, STR_FMT2, site->file);
             res += oc;
             max -= oc;
         }
         
         /* 7 = length of "line : ", 10 = max decimal digits in 32-bit number */
         if (max >= (7 + 10)) {
-            res += Text_xprintf(bufp, "line %d: ", site->line);
+            res += Text_xprintf(bufp, STR_FMT3, site->line);
         }
     }
 
diff --git a/packages/xdc/services/intern/gen/Config.java b/packages/xdc/services/intern/gen/Config.java
index 44f5642..9e78b4f 100644
--- a/packages/xdc/services/intern/gen/Config.java
+++ b/packages/xdc/services/intern/gen/Config.java
@@ -501,10 +501,11 @@
     /*

      *  ======== genError ========

      */

-    private void genError( Unit unit, String msg )

+    private void genError( Unit unit, String kind )

     {

-        glob.out.printf("%t%1_raiseX(NULL, %2Module__id__C, NULL, 0, %1_E_generic, (xdc_IArg)\"%3\", 0);\n",

-                "xdc_runtime_Error", glob.cname, msg);

+        String msgC = "xdc_runtime_Core_S_" + kind + "_POLICY_ERROR__C";

+        glob.out.printf("%t%1_raiseX(NULL, %2Module__id__C, NULL, 0, %1_E_generic, (xdc_IArg)%3, 0);\n",

+                "xdc_runtime_Error", glob.cname, msgC);

     }

 

     /*

@@ -2434,7 +2435,7 @@
             glob.out.printf("%-}\n");

         }

         else {

-            genError(unit, "create policy error");

+            genError(unit, "CREATE");

             glob.out.printf("%treturn NULL;\n");

             glob.out.printf("%-}\n");

         }

@@ -2463,11 +2464,11 @@
         else {

             glob.genTitleD("Object__destruct__S");

             glob.out.printf("xdc_Void %1Object__destruct__S( xdc_Ptr obj ) \n{\n%+", glob.cname);

-            genError(unit, "delete policy error");

+            genError(unit, "DELETE");

             glob.out.printf("%-}\n");

             glob.genTitleD("Object__delete__S");

             glob.out.printf("xdc_Void %1Object__delete__S( xdc_Ptr instp ) \n{\n%+", glob.cname);

-            genError(unit, "delete policy error");

+            genError(unit, "DELETE");

             glob.out.printf("%-}\n");

         }

     }