diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenModules.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenModules.java
index d9adcff..194c90e 100644
--- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenModules.java
+++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFChildrenModules.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others.
+ * Copyright (c) 2011, 2015 Wind River Systems, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -36,12 +36,14 @@
         TCFDataCache<MemoryRegion[]> map_cache = exe.getMemoryMap();
         if (!map_cache.validate(this)) return false;
         MemoryRegion[] map = map_cache.getData();
-        Map<String, TCFNode> data = new HashMap<String, TCFNode>();
+        Map<String,TCFNode> data = new HashMap<String,TCFNode>();
         if (map != null) {
+            int cnt = 0;
             for (int index = 0; index < map.length; index++) {
                 String id = exe.id + ".Module-" + index;
                 TCFNodeModule module = (TCFNodeModule)node.model.getNode(id);
                 if (module == null) module = new TCFNodeModule(exe, id, index);
+                module.setSortPosition(cnt++);
                 data.put(id, module);
             }
         }
diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeModule.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeModule.java
index f7aeb6e..9b890d7 100644
--- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeModule.java
+++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeModule.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others.
+ * Copyright (c) 2011, 2015 Wind River Systems, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -31,6 +31,7 @@
 public class TCFNodeModule extends TCFNode implements IDetailsProvider {
 
     private final TCFData<MemoryRegion> region;
+    private int sort_pos;
 
     protected TCFNodeModule(final TCFNodeExecContext parent, String id, final int index) {
         super(parent, id);
@@ -53,6 +54,10 @@
         return region;
     }
 
+    void setSortPosition(int sort_pos) {
+        this.sort_pos = sort_pos;
+    }
+
     void onMemoryMapChanged() {
         region.reset();
     }
@@ -181,4 +186,12 @@
         else flagsLabel.append('-');
         return flagsLabel.toString();
     }
+
+    @Override
+    public int compareTo(TCFNode n) {
+        TCFNodeModule e = (TCFNodeModule)n;
+        if (sort_pos < e.sort_pos) return -1;
+        if (sort_pos > e.sort_pos) return +1;
+        return 0;
+    }
 }
