1Index: source/common/udata.cpp
2===================================================================
3--- source/common/udata.cpp	(revision 259715)
4+++ source/common/udata.cpp	(working copy)
5@@ -621,7 +621,7 @@
6  *      our common data.                                                *
7  *                                                                      *
8  *----------------------------------------------------------------------*/
9-extern "C" const DataHeader U_DATA_API U_ICUDATA_ENTRY_POINT;
10+extern "C" const ICU_Data_Header U_DATA_API U_ICUDATA_ENTRY_POINT;
11 
12 /*
13  * This would be a good place for weak-linkage declarations of
14@@ -667,7 +667,7 @@
15         if(gCommonICUDataArray[commonDataIndex] == NULL) {
16             int32_t i;
17             for(i = 0; i < commonDataIndex; ++i) {
18-                if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) {
19+                if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT.hdr) {
20                     /* The linked-in data is already in the list. */
21                     return NULL;
22                 }
23@@ -686,7 +686,7 @@
24                 setCommonICUDataPointer(uprv_getICUData_conversion(), FALSE, pErrorCode);
25             }
26             */
27-            setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, FALSE, pErrorCode);
28+            setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT.hdr, FALSE, pErrorCode);
29         }
30         return gCommonICUDataArray[commonDataIndex];
31     }
32Index: source/common/ucmndata.h
33===================================================================
34--- source/common/ucmndata.h	(revision 68397)
35+++ source/common/ucmndata.h	(working copy)
36@@ -44,6 +44,20 @@
37 } DataHeader;
38 
39 typedef struct {
40+    DataHeader hdr;
41+    char padding[8];
42+    uint32_t count, reserved;
43+    /*
44+    const struct {
45+    const char *const name; 
46+    const void *const data;
47+    } toc[1];
48+    */
49+   int   fakeNameAndData[4];       /* TODO:  Change this header type from */
50+                                   /*        pointerTOC to OffsetTOC.     */
51+} ICU_Data_Header;
52+
53+typedef struct {
54     uint32_t nameOffset;
55     uint32_t dataOffset;
56 } UDataOffsetTOCEntry;
57Index: source/stubdata/stubdata.c
58===================================================================
59--- source/stubdata/stubdata.c	(revision 68397)
60+++ source/stubdata/stubdata.c	(working copy)
61@@ -20,45 +20,34 @@
62 #include "unicode/utypes.h"
63 #include "unicode/udata.h"
64 #include "unicode/uversion.h"
65+#include "ucmndata.h"
66 
67 
68-typedef struct {
69-    uint16_t headerSize;
70-    uint8_t magic1, magic2;
71-    UDataInfo info;
72-    char padding[8];
73-    uint32_t count, reserved;
74-    /*
75-    const struct {
76-    const char *const name; 
77-    const void *const data;
78-    } toc[1];
79-    */
80-   int   fakeNameAndData[4];       /* TODO:  Change this header type from */
81-                                   /*        pointerTOC to OffsetTOC.     */
82-} ICU_Data_Header;
83-
84 U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = {
85-    32,          /* headerSize */
86-    0xda,        /* magic1,  (see struct MappedData in udata.c)  */
87-    0x27,        /* magic2     */
88-    {            /*UDataInfo   */
89-        sizeof(UDataInfo),      /* size        */
90-        0,                      /* reserved    */
91+    {            /* DataHeader */
92+        {            /* MappedData */
93+            32,          /* headerSize */
94+            0xda,        /* magic1,  (see struct MappedData in udata.c)  */
95+            0x27,        /* magic2     */
96+        },
97+        {            /*UDataInfo   */
98+            sizeof(UDataInfo),      /* size        */
99+            0,                      /* reserved    */
100 
101 #if U_IS_BIG_ENDIAN
102-        1,
103+            1,
104 #else
105-        0,
106+            0,
107 #endif
108 
109-        U_CHARSET_FAMILY,
110-        sizeof(UChar),   
111-        0,               /* reserved      */
112-        {                /* data format identifier */
113-           0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
114-           {1, 0, 0, 0},   /* format version major, minor, milli, micro */
115-           {0, 0, 0, 0}    /* dataVersion   */
116+            U_CHARSET_FAMILY,
117+            sizeof(UChar),   
118+            0,               /* reserved      */
119+            {                /* data format identifier */
120+               0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
121+               {1, 0, 0, 0},   /* format version major, minor, milli, micro */
122+               {0, 0, 0, 0}    /* dataVersion   */
123+        },
124     },
125     {0,0,0,0,0,0,0,0},  /* Padding[8]   */ 
126     0,                  /* count        */
127