Merge remote-tracking branch 'origin/xdccore-J-dr' into master_ggentree
diff --git a/src/packages/xdc/rov/Model.xs b/src/packages/xdc/rov/Model.xs
index 63f9091..eef5525 100644
--- a/src/packages/xdc/rov/Model.xs
+++ b/src/packages/xdc/rov/Model.xs
@@ -427,6 +427,7 @@
                 switch (elfTarget.FP) {
                     case 3:
                         targ.FP = "fpv3";
+                        break;
                     case 4:
                         targ.FP = "fpv3-sp-d16";
                         break;
@@ -441,6 +442,12 @@
                         break;
                 }
             }
+            if (elfTarget.shortEnums == 1) {
+                targ.model.shortEnums = true;
+            }
+            else if (elfTarget.shortEnums == 2 || elfTarget.shortEnums == 3) {
+                targ.model.shortEnums = false;
+            }
         }
         var stdTypes = recap.stdTypes[elfTarget.machine];
         if (stdTypes == null) {
@@ -857,6 +864,18 @@
         else if (File.exists(fPath + "syscfg/" + sysconfigFile)) {
             locatedFile = fPath + "syscfg/" + sysconfigFile;
         }
+        else if (File.exists(fPath + "/../../" + sysconfigFile)) {
+            locatedFile = fPath + "/../../" + sysconfigFile;
+        }
+        else if (File.exists(fPath + "/../../syscfg/" + sysconfigFile)) {
+            locatedFile = fPath + "/../../syscfg/" + sysconfigFile;
+        }
+        else if (File.exists(fPath + "/../" + sysconfigFile)) {
+            locatedFile = fPath + "/../" + sysconfigFile;
+        }
+        else if (File.exists(fPath + "/../syscfg/" + sysconfigFile)) {
+            locatedFile = fPath + "/../syscfg/" + sysconfigFile;
+        }
         if (locatedFile != "") {
             return (String(File.getCanonicalPath(locatedFile)));
         }
diff --git a/src/packages/xdc/rov/Program.xs b/src/packages/xdc/rov/Program.xs
index 225e593..42be7b6 100644
--- a/src/packages/xdc/rov/Program.xs
+++ b/src/packages/xdc/rov/Program.xs
@@ -369,6 +369,25 @@
 
         /* Add the view to the module's viewMap */
         modDesc.viewMap[tabName] = dataArr;
+
+        /*
+         * Check if there were any errors reported on any fields.
+         * Add any errors to the status table.
+         */
+        for (var i = 0; i < dataArr.length; i++) {
+            var view = dataArr[i];
+            for (var j = 0; j < view.elements.length; j++) {
+                for (var p in view.elements[j]) {
+                    if (view.elements[j].$status[p]) {
+                        /* Record status in the status table for reference */
+                        addStatusEntry(modName, tabName, view.label, p,
+                                       view.elements[j].$status[p]);
+
+                        error = true;
+                    }
+                }
+            }
+        }
     }
     /*
      * Otherwise, if the module does have instances, call the view function
@@ -510,9 +529,21 @@
     /* Add the view to the module's viewMap */
     modDesc.viewMap[tabName] = modDataView;
 
+    var error = false;
+
     /* TODO - check for any errors and throw exception */
+    for (var i = 0; i < modDataView.elements.length; i++) {
+        var view = modDataView.elements[i];
+        for (var p in view) {
+            if (view.$status[p]) {
+                /* Record status in the status table for reference */
+                addStatusEntry(modName, tabName, "N/A", p, view.$status[p]);
+                error = true;
+            }
+        }
+    }
     /*
-    if (error) {
+    if (throwScanErrors && error && !tabName.match("Scan for")) {
         throw (new Error("ROV detected errors in scan of '" + tabName +
                          "' tab for module " + modName + "."));
     }