Reverse wpo.patch and remove it

It is unclear what this patch is for, as compile seems to succeed
without it. Additionally it is causing UB by removing the alignas(16)
annotation that is upstream.

Bug: 339286987
Change-Id: I3e562b5ce240b1b5cc6f661cc39d96354629ea73
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/deps/icu/+/5523976
Reviewed-by: David Yeung <dayeung@chromium.org>
diff --git a/README.chromium b/README.chromium
index e687d2f..3ef9100 100644
--- a/README.chromium
+++ b/README.chromium
@@ -216,10 +216,6 @@
     * Remove a section of configure that will cause breakage while
       running runConfigureICU.
 
-  - patches/wpo.patch (only needed when icudata dll is used).
-    upstream bugs : https://unicode-org.atlassian.net/browse/ICU-8043
-                    https://unicode-org.atlassian.net/browse/ICU-5701
-
   - patches/data_symb.patch :
       Put ICU_DATA_ENTRY_POINT(icudtXX_dat) in common when we use
       the icu data file or icudt.dll
@@ -261,4 +257,4 @@
     Intl.DateTimeFormat().resolvedOptions().timeZone on macOS 14.
     patches/revert_realpath.patch
   - https://bugs.chromium.org/p/chromium/issues/detail?id=1473422
-  - https://unicode-org.atlassian.net/browse/ICU-22541
\ No newline at end of file
+  - https://unicode-org.atlassian.net/browse/ICU-22541
diff --git a/patches/wpo.patch b/patches/wpo.patch
deleted file mode 100644
index e892f7f..0000000
--- a/patches/wpo.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-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
diff --git a/source/common/ucmndata.h b/source/common/ucmndata.h
index 1e63833..486b4fd 100644
--- a/source/common/ucmndata.h
+++ b/source/common/ucmndata.h
@@ -46,20 +46,6 @@
 } 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;
 } UDataOffsetTOCEntry;
diff --git a/source/common/udata.cpp b/source/common/udata.cpp
index 9345844..88126fc 100644
--- a/source/common/udata.cpp
+++ b/source/common/udata.cpp
@@ -643,7 +643,7 @@
  *----------------------------------------------------------------------*/
 #if !defined(ICU_DATA_DIR_WINDOWS)
 // When using the Windows system data, we expect only a single data file.
-extern "C" const ICU_Data_Header U_DATA_API U_ICUDATA_ENTRY_POINT;
+extern "C" const DataHeader U_DATA_API U_ICUDATA_ENTRY_POINT;
 #endif
 
 /*
@@ -696,7 +696,7 @@
 // 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.hdr) {
+                if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) {
                     /* The linked-in data is already in the list. */
                     return nullptr;
                 }
@@ -719,7 +719,7 @@
         */
 #if !defined(ICU_DATA_DIR_WINDOWS)
 // When using the Windows system data, we expect only a single data file.
-        setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT.hdr, false, pErrorCode);
+        setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, false, pErrorCode);
         {
             Mutex lock;
             return gCommonICUDataArray[commonDataIndex];
diff --git a/source/stubdata/stubdata.cpp b/source/stubdata/stubdata.cpp
index 32ceb18..0fa2b17 100644
--- a/source/stubdata/stubdata.cpp
+++ b/source/stubdata/stubdata.cpp
@@ -1,4 +1,3 @@
-
 // © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /******************************************************************************
@@ -18,40 +17,36 @@
 *
 *   The stub data library (for which this file is the source) is sufficient
 *   for running the data building tools.
-*
 */
-#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    */
+
+#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    */
+
 #if U_IS_BIG_ENDIAN
-            1,
+        1,
 #else
-            0,
+        0,
 #endif
-            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   */
-        },
+
+        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   */
     },
-    {0,0,0,0,0,0,0,0},  /* Padding[8]   */ 
+    { 's', 't', 'u', 'b', 'd', 'a', 't', 'a' },  /* Padding[8] */
     0,                  /* count        */
     0,                  /* Reserved     */
     {                   /*  TOC structure */
-/*        {    */
-          0 , 0 , 0, 0  /* name and data entries.  Count says there are none,  */
+        0 , 0           /* name and data entries.  Count says there are none,  */
                         /*  but put one in just in case.                       */
-/*        }  */
     }
-};
\ No newline at end of file
+};