diff --git a/source/common/ucmndata.h b/source/common/ucmndata.h
index 486b4fd7..1e63833f 100644
--- a/source/common/ucmndata.h
+++ b/source/common/ucmndata.h
@@ -45,6 +45,20 @@ typedef struct  {
     UDataInfo   info;
 } DataHeader;
 
+typedef struct {
+    DataHeader hdr;
+    char padding[8];
+    uint32_t count, reserved;
+    /*
+    const struct {
+    const char *const name;
+    const void *const data;
+    } toc[1];
+    */
+   int   fakeNameAndData[4];       /* TODO:  Change this header type from */
+                                   /*        pointerTOC to OffsetTOC.     */
+} ICU_Data_Header;
+
 typedef struct {
     uint32_t nameOffset;
     uint32_t dataOffset;
diff --git a/source/common/udata.cpp b/source/common/udata.cpp
index 88126fc6..93458444 100644
--- a/source/common/udata.cpp
+++ b/source/common/udata.cpp
@@ -643,7 +643,7 @@ U_NAMESPACE_END
  *----------------------------------------------------------------------*/
 #if !defined(ICU_DATA_DIR_WINDOWS)
 // When using the Windows system data, we expect only a single data file.
-extern "C" const DataHeader U_DATA_API U_ICUDATA_ENTRY_POINT;
+extern "C" const ICU_Data_Header U_DATA_API U_ICUDATA_ENTRY_POINT;
 #endif
 
 /*
@@ -696,7 +696,7 @@ openCommonData(const char *path,          /*  Path from OpenChoice?          */
 // When using the Windows system data, we expect only a single data file.
             int32_t i;
             for(i = 0; i < commonDataIndex; ++i) {
-                if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) {
+                if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT.hdr) {
                     /* The linked-in data is already in the list. */
                     return nullptr;
                 }
@@ -719,7 +719,7 @@ openCommonData(const char *path,          /*  Path from OpenChoice?          */
         */
 #if !defined(ICU_DATA_DIR_WINDOWS)
 // When using the Windows system data, we expect only a single data file.
-        setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, false, pErrorCode);
+        setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT.hdr, false, pErrorCode);
         {
             Mutex lock;
             return gCommonICUDataArray[commonDataIndex];
diff --git a/source/stubdata/stubdata.cpp b/source/stubdata/stubdata.cpp
index 0fa2b170..32ceb185 100644
--- a/source/stubdata/stubdata.cpp
+++ b/source/stubdata/stubdata.cpp
@@ -1,3 +1,4 @@
+
 // © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
@@ -17,36 +18,40 @@
 *
 *   The stub data library (for which this file is the source) is sufficient
 *   for running the data building tools.
+*
 */
-
-#include "stubdata.h"
-
-extern "C" U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT alignas(16) = {
-    32,          /* headerSize */
-    0xda,        /* magic1,  (see struct MappedData in udata.c)  */
-    0x27,        /* magic2     */
-    {            /*UDataInfo   */
-        sizeof(UDataInfo),      /* size        */
-        0,                      /* reserved    */
-
+#include "ucmndata.h"
+extern "C" U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = {
+    {            /* DataHeader */
+        {            /* MappedData */
+            32,          /* headerSize */
+            0xda,        /* magic1,  (see struct MappedData in udata.c)  */
+            0x27,        /* magic2     */
+        },
+        {            /*UDataInfo   */
+            sizeof(UDataInfo),      /* size        */
+            0,                      /* reserved    */
 #if U_IS_BIG_ENDIAN
-        1,
+            1,
 #else
-        0,
+            0,
 #endif
-
-        U_CHARSET_FAMILY,
-        sizeof(char16_t),
-        0,               /* reserved      */
-        {0x54, 0x6f, 0x43, 0x50},   /* data format identifier: "ToCP" */
-        {1, 0, 0, 0},   /* format version major, minor, milli, micro */
-        {0, 0, 0, 0}    /* dataVersion   */
+            U_CHARSET_FAMILY,
+            sizeof(UChar),
+            0,               /* reserved      */
+            {                /* data format identifier */
+               0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
+               {1, 0, 0, 0},   /* format version major, minor, milli, micro */
+               {0, 0, 0, 0}    /* dataVersion   */
+        },
     },
-    { 's', 't', 'u', 'b', 'd', 'a', 't', 'a' },  /* Padding[8] */
+    {0,0,0,0,0,0,0,0},  /* Padding[8]   */ 
     0,                  /* count        */
     0,                  /* Reserved     */
     {                   /*  TOC structure */
-        0 , 0           /* name and data entries.  Count says there are none,  */
+/*        {    */
+          0 , 0 , 0, 0  /* name and data entries.  Count says there are none,  */
                         /*  but put one in just in case.                       */
+/*        }  */
     }
-};
+};
\ No newline at end of file
