Index: trunk/IPs/systemC/Environment/Data/include/Segment.h
===================================================================
--- trunk/IPs/systemC/Environment/Data/include/Segment.h	(revision 123)
+++ trunk/IPs/systemC/Environment/Data/include/Segment.h	(revision 134)
@@ -23,5 +23,5 @@
   protected : type_target_t type;
 
-  public :  Segment (void);
+//public :  Segment (void);
   public :  Segment (SEGMENT_TABLE_ENTRY * segment);
   public : ~Segment (void);
Index: trunk/IPs/systemC/Environment/Data/selftest/main.cpp
===================================================================
--- trunk/IPs/systemC/Environment/Data/selftest/main.cpp	(revision 123)
+++ trunk/IPs/systemC/Environment/Data/selftest/main.cpp	(revision 134)
@@ -31,17 +31,17 @@
 
   {
-    Segment * seg1 = new Segment ();
+//     Segment * seg1 = new Segment ();
     
-    TEST(seg1->getType     (), TYPE_TARGET_MEMORY);
-    TEST(seg1->getIndex    (), 0);
-    TEST(seg1->getBase     (), 0);
-    TEST(seg1->getSize     (), 0);
-    TEST(seg1->getUncached (), false);
+//     TEST(seg1->getType     (), TYPE_TARGET_MEMORY);
+//     TEST(seg1->getIndex    (), 0);
+//     TEST(seg1->getBase     (), 0);
+//     TEST(seg1->getSize     (), 0);
+//     TEST(seg1->getUncached (), false);
     
-    seg1->define_target(TYPE_TARGET_SIM2OS,4);
-    TEST(seg1->getType     (), TYPE_TARGET_SIM2OS);
-    TEST(seg1->getIndex    (), 4);
+//     seg1->define_target(TYPE_TARGET_SIM2OS,4);
+//     TEST(seg1->getType     (), TYPE_TARGET_SIM2OS);
+//     TEST(seg1->getIndex    (), 4);
     
-    cout << *seg1 << endl;
+//     cout << *seg1 << endl;
     
     SEGMENT_TABLE_ENTRY * entry = new SEGMENT_TABLE_ENTRY("entry", 0x100, 0x1024, 21, 7, true);
@@ -104,5 +104,5 @@
     delete    seg2;
     delete    entry;
-    delete    seg1;
+//     delete    seg1;
   }
 
Index: trunk/IPs/systemC/Environment/Data/src/Data_read.cpp
===================================================================
--- trunk/IPs/systemC/Environment/Data/src/Data_read.cpp	(revision 123)
+++ trunk/IPs/systemC/Environment/Data/src/Data_read.cpp	(revision 134)
@@ -6,17 +6,18 @@
   bool Data::read (uint32_t address, uint32_t size, char * & data_dest)
   {
+//     for (uint32_t i=0; i<size; ++i)
+//       data_dest[i] = '\0';
+    
     uint32_t num_seg = 0;
-    bool     res     = false;
-
+    
     // Scan all segment
-    for (num_seg = 0; num_seg < nb_seg; num_seg ++)
+    for (; num_seg < nb_seg; num_seg ++)
       if (segment[num_seg]->test (address,size) == true)
 	{
 	  segment[num_seg]->read (address,size,data_dest);
-	  res = true;
 	  break;
 	}
     
-    return res;
+    return (num_seg < nb_seg);
   }
 
Index: trunk/IPs/systemC/Environment/Data/src/Segment.cpp
===================================================================
--- trunk/IPs/systemC/Environment/Data/src/Segment.cpp	(revision 123)
+++ trunk/IPs/systemC/Environment/Data/src/Segment.cpp	(revision 134)
@@ -4,14 +4,14 @@
 namespace data {
   
-  Segment::Segment (void)
-  {
-    name     = "";
-    base     = 0;
-    size     = 0;
-    uncached = false;
-    data     = NULL;
-    type     = TYPE_TARGET_MEMORY;
-    index    = 0;
-  }
+//   Segment::Segment (void)
+//   {
+//     name     = "";
+//     base     = 0;
+//     size     = 0;
+//     uncached = false;
+//     data     = NULL;
+//     type     = TYPE_TARGET_MEMORY;
+//     index    = 0;
+//   }
 
   Segment::Segment (SEGMENT_TABLE_ENTRY * segment)
@@ -25,4 +25,5 @@
     type     = TYPE_TARGET_MEMORY;
     index    = 0;
+    memset((void*)data,0,size * sizeof(char));
   }
 
Index: trunk/IPs/systemC/Environment/Data/src/Segment_read.cpp
===================================================================
--- trunk/IPs/systemC/Environment/Data/src/Segment_read.cpp	(revision 123)
+++ trunk/IPs/systemC/Environment/Data/src/Segment_read.cpp	(revision 134)
@@ -1,3 +1,4 @@
 #include "../include/Segment.h"
+#include "../../Common/include/Debug.h"
 
 namespace environment {
@@ -6,6 +7,11 @@
   void Segment::read (uint32_t address, uint32_t size, char * & data_dest)
   {
+//     _cout(true,"  * kane\n");
+//     _cout(true,"    * address : %.8x\n",address);
     for (uint32_t it = 0; it < size ; it ++)
-      data_dest [it] = data[address-base+it];
+      {
+	data_dest [it] = data[address-base+it];
+// 	_cout(true,"    * [%d] : %.8x\n",address-base+it,static_cast<uint32_t>(data_dest [it]));
+      }
   }
   
Index: trunk/IPs/systemC/Environment/Data/src/loadexec.c
===================================================================
--- trunk/IPs/systemC/Environment/Data/src/loadexec.c	(revision 123)
+++ trunk/IPs/systemC/Environment/Data/src/loadexec.c	(revision 134)
@@ -142,4 +142,7 @@
    *eoffset       = ringo.ladr;
    ringo.mem      = malloc(*esize * sizeof(char));
+
+   memset((void *)ringo.mem,0,*esize * sizeof(char));
+   
    /* Start over again from the start of the memory */
    bfd_map_over_sections(exec, bindsection, &ringo);
