--- ./source/tools/pkgdata/pkgdata.cpp.orig	2024-02-12 07:50:04.850548914 +0000
+++ ./source/tools/pkgdata/pkgdata.cpp	2024-02-12 07:51:15.881294202 +0000
@@ -963,8 +963,9 @@
         uprv_strcat(pkgDataFlags[SO_EXT], ".");
         uprv_strcat(pkgDataFlags[SO_EXT], pkgDataFlags[A_EXT]);
 #elif U_PLATFORM == U_PF_OS400 || defined(_AIX)
-        snprintf(libFileNames[LIB_FILE_VERSION_TMP], sizeof(libFileNames[LIB_FILE_VERSION_TMP]), "%s%s%s",
+        snprintf(libFileNames[LIB_FILE_VERSION_TMP], sizeof(libFileNames[LIB_FILE_VERSION_TMP]), "%s%s%s%s",
                 libFileNames[LIB_FILE],
+		version_major,
                 FILE_EXTENSION_SEP,
                 pkgDataFlags[SOBJ_EXT]);
 #elif U_PLATFORM == U_PF_OS390
--- ./source/stubdata/Makefile.in.orig	2024-02-12 10:16:01.630046721 +0000
+++ ./source/stubdata/Makefile.in	2024-02-12 10:17:16.950043994 +0000
@@ -136,8 +136,8 @@
 ifneq ($(ENABLE_SHARED),)
 $(SHARED_OBJECT): $(OBJECTS)
 ifeq ($(BUILD_HOST_ICU),AIX_GCC)
-	$(SHLIB.c) $(LD_SONAME) $(OUTOPT)libicudata.so $^ $(LIBS)
-	mv libicudata.so $@
+	$(SHLIB.c) $(LD_SONAME) $(OUTOPT)$(SHARED_OBJECT_MAJOR) $^ $(LIBS)
+	mv $(SHARED_OBJECT_MAJOR) $@
 else
 	$(SHLIB.c) $(LD_SONAME) $(OUTOPT)$@ $^ $(LIBS)
 endif
--- ./source/config/mh-aix-gcc.orig	2024-02-12 10:18:32.612080601 +0000
+++ ./source/config/mh-aix-gcc	2024-02-12 07:27:57.378588466 +0000
@@ -55,6 +55,7 @@
 FINAL_SO_TARGET=  $(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO)
 MIDDLE_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO)
 SHARED_OBJECT = $(notdir $(FINAL_SO_TARGET:.$(SO)=.$(SOBJ)))
+SHARED_OBJECT_MAJOR = $(notdir $(MIDDLE_SO_TARGET:.$(SO)=.$(SOBJ)))
 SHARED_OBJECT_NO_VERSION = $(basename $(SO_TARGET)).$(SOBJ)
 
 # The following is for Makefile.inc's use.
@@ -84,13 +85,13 @@
 
 ## Build archive from shared object
 %.a : %.so
-	ln -f $< $(SHARED_OBJECT_NO_VERSION)
-	$(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION)
-	rm -f $(SHARED_OBJECT_NO_VERSION)
+	ln -f $< $(SHARED_OBJECT_MAJOR)
+	$(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_MAJOR)
+	rm -f $(SHARED_OBJECT_MAJOR)
 $(LIBDIR)/%.a : %.so
-	ln -f $< $(SHARED_OBJECT_NO_VERSION)
-	$(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION)
-	rm -f $(SHARED_OBJECT_NO_VERSION)
+	ln -f $< $(SHARED_OBJECT_MAJOR)
+	$(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_MAJOR)
+	rm -f $(SHARED_OBJECT_MAJOR)
 
 ## Build import list from export list
 %.e : %.exp
--- ./source/config/mh-aix-va.orig	2024-02-12 10:19:19.990044120 +0000
+++ ./source/config/mh-aix-va	2024-02-12 07:22:02.380063535 +0000
@@ -88,17 +88,18 @@
 FINAL_SO_TARGET=  $(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO)
 MIDDLE_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO)
 SHARED_OBJECT = $(notdir $(FINAL_SO_TARGET:.$(SO)=.$(SOBJ)))
+SHARED_OBJECT_MAJOR = $(notdir $(MIDDLE_SO_TARGET:.$(SO)=.$(SOBJ)))
 SHARED_OBJECT_NO_VERSION=  $(basename $(SO_TARGET)).$(SOBJ)
 
 ## Build archive from shared object
 %.a : %.so
-	ln -f $< $(SHARED_OBJECT_NO_VERSION) 
-	$(AIX_PREDELETE) $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION)
-	rm -f $(SHARED_OBJECT_NO_VERSION)
+	ln -f $< $(SHARED_OBJECT_MAJOR) 
+	$(AIX_PREDELETE) $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_MAJOR)
+	rm -f $(SHARED_OBJECT_MAJOR)
 $(LIBDIR)/%.a : %.so
-	ln -f $< $(SHARED_OBJECT_NO_VERSION) 
-	$(AIX_PREDELETE) $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_NO_VERSION)
-	rm -f $(SHARED_OBJECT_NO_VERSION)
+	ln -f $< $(SHARED_OBJECT_MAJOR) 
+	$(AIX_PREDELETE) $(AR) $(ARFLAGS) $@ $(SHARED_OBJECT_MAJOR)
+	rm -f $(SHARED_OBJECT_MAJOR)
 
 ## Build import list from export list
 %.e : %.exp
