rebase 22.03-LTS-Next from master

This commit is contained in:
zhouwenpei 2022-12-02 07:51:33 +00:00
parent 05df5bb9ce
commit d1ad44e86f
4 changed files with 475 additions and 4 deletions

View File

@ -0,0 +1,27 @@
From beefaa392eaf51355f9a3806a004c762d1ce17fa Mon Sep 17 00:00:00 2001
From: Jingyun Hua <huajingyun@loongson.cn>
Date: Fri, 18 Nov 2022 09:00:58 +0000
Subject: [PATCH] add support loongarch64
Signed-off-by: Jingyun Hua <huajingyun@loongson.cn>
---
source/i18n/double-conversion-utils.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/source/i18n/double-conversion-utils.h b/source/i18n/double-conversion-utils.h
index 303668f..77f5ded 100644
--- a/source/i18n/double-conversion-utils.h
+++ b/source/i18n/double-conversion-utils.h
@@ -160,7 +160,8 @@ int main(int argc, char** argv) {
defined(__riscv) || defined(__e2k__) || \
defined(__or1k__) || defined(__arc__) || defined(__ARC64__) || \
defined(__microblaze__) || defined(__XTENSA__) || \
- defined(__EMSCRIPTEN__) || defined(__wasm32__)
+ defined(__EMSCRIPTEN__) || defined(__wasm32__) || \
+ defined(__loongarch__)
#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
#elif defined(__mc68000__) || \
defined(__pnacl__) || defined(__native_client__)
--
2.33.0

View File

@ -0,0 +1,112 @@
From d4774599b63f72c887cf449d02b3d1e5b0acc960 Mon Sep 17 00:00:00 2001
From: Peter Edberg <pedberg@unicode.org>
Date: Wed, 12 Mar 2008 23:22:07 +0000
Subject: [PATCH] ICU-6175 Test detecting empty segments in ISO-2022-x & HZ
with UConverterCallbackReason==UCNV_IRREGULAR
X-SVN-Rev: 23572
revert d4774599b63f72c887cf449d02b3d1e5b0acc960
---
source/test/cintltst/nucnvtst.c | 70 ---------------------------------
1 file changed, 70 deletions(-)
diff --git a/source/test/cintltst/nucnvtst.c b/source/test/cintltst/nucnvtst.c
index 73e0fde..1f96ded 100644
--- a/source/test/cintltst/nucnvtst.c
+++ b/source/test/cintltst/nucnvtst.c
@@ -101,7 +101,6 @@ static void TestJitterbug2346(void);
static void TestJitterbug2411(void);
static void TestJB5275(void);
static void TestJB5275_1(void);
-static void TestJitterbug6175(void);
static void TestIsFixedWidth(void);
#endif
@@ -329,7 +328,6 @@ void addTestNewConvert(TestNode** root)
#if !UCONFIG_NO_LEGACY_CONVERSION
addTest(root, &TestJitterbug2346, "tsconv/nucnvtst/TestJitterbug2346");
addTest(root, &TestJitterbug2411, "tsconv/nucnvtst/TestJitterbug2411");
- addTest(root, &TestJitterbug6175, "tsconv/nucnvtst/TestJitterbug6175");
addTest(root, &TestIsFixedWidth, "tsconv/nucnvtst/TestIsFixedWidth");
#endif
@@ -4591,74 +4589,6 @@ cleanup:
free(offsets);
}
-/* Tests for empty segments in ISO-2022-JP/KR/CN, HZ, check that UConverterCallbackReason is UCNV_IRREGULAR */
-typedef struct {
- const char * converterName;
- const char * inputText;
- int inputTextLength;
-} EmptySegmentTest;
-
-/* Callback for TestJitterbug6175, should only get called for empty segment errors */
-static void UCNV_TO_U_CALLBACK_EMPTYSEGMENT( const void *context, UConverterToUnicodeArgs *toArgs, const char* codeUnits,
- int32_t length, UConverterCallbackReason reason, UErrorCode * err ) {
- // suppress compiler warnings about unused variables
- (void)context;
- (void)codeUnits;
- (void)length;
- if (reason > UCNV_IRREGULAR) {
- return;
- }
- if (reason != UCNV_IRREGULAR) {
- log_err("toUnicode callback invoked for empty segment but reason is not UCNV_IRREGULAR\n");
- }
- /* Standard stuff below from UCNV_TO_U_CALLBACK_SUBSTITUTE */
- *err = U_ZERO_ERROR;
- ucnv_cbToUWriteSub(toArgs,0,err);
-}
-
-enum { kEmptySegmentToUCharsMax = 64 };
-static void TestJitterbug6175(void) {
- static const char iso2022jp_a[] = { 0x61, 0x62, 0x1B,0x24,0x42, 0x1B,0x28,0x42, 0x63, 0x64, 0x0D, 0x0A };
- static const char iso2022kr_a[] = { 0x1B,0x24,0x29,0x43, 0x61, 0x0E, 0x0F, 0x62, 0x0D, 0x0A };
- static const char iso2022cn_a[] = { 0x61, 0x1B,0x24,0x29,0x41, 0x62, 0x0E, 0x0F, 0x1B,0x24,0x2A,0x48, 0x1B,0x4E, 0x6A,0x65, 0x63, 0x0D, 0x0A };
- static const char iso2022cn_b[] = { 0x61, 0x1B,0x24,0x29,0x41, 0x62, 0x0E, 0x1B,0x24,0x29,0x47, 0x68,0x64, 0x0F, 0x63, 0x0D, 0x0A };
- static const char hzGB2312_a[] = { 0x61, 0x62, 0x7E,0x7B, 0x7E,0x7D, 0x63, 0x64 };
- static const EmptySegmentTest emptySegmentTests[] = {
- /* converterName inputText inputTextLength */
- { "ISO-2022-JP", iso2022jp_a, sizeof(iso2022jp_a) },
- { "ISO-2022-KR", iso2022kr_a, sizeof(iso2022kr_a) },
- { "ISO-2022-CN", iso2022cn_a, sizeof(iso2022cn_a) },
- { "ISO-2022-CN", iso2022cn_b, sizeof(iso2022cn_b) },
- { "HZ-GB-2312", hzGB2312_a, sizeof(hzGB2312_a) },
- /* terminator: */
- { NULL, NULL, 0, }
- };
- const EmptySegmentTest * testPtr;
- for (testPtr = emptySegmentTests; testPtr->converterName != NULL; ++testPtr) {
- UErrorCode err = U_ZERO_ERROR;
- UConverter * cnv = ucnv_open(testPtr->converterName, &err);
- if (U_FAILURE(err)) {
- log_data_err("Unable to open %s converter: %s\n", testPtr->converterName, u_errorName(err));
- return;
- }
- ucnv_setToUCallBack(cnv, UCNV_TO_U_CALLBACK_EMPTYSEGMENT, NULL, NULL, NULL, &err);
- if (U_FAILURE(err)) {
- log_data_err("Unable to setToUCallBack for %s converter: %s\n", testPtr->converterName, u_errorName(err));
- ucnv_close(cnv);
- return;
- }
- {
- UChar toUChars[kEmptySegmentToUCharsMax];
- UChar * toUCharsPtr = toUChars;
- const UChar * toUCharsLimit = toUCharsPtr + kEmptySegmentToUCharsMax;
- const char * inCharsPtr = testPtr->inputText;
- const char * inCharsLimit = inCharsPtr + testPtr->inputTextLength;
- ucnv_toUnicode(cnv, &toUCharsPtr, toUCharsLimit, &inCharsPtr, inCharsLimit, NULL, true, &err);
- }
- ucnv_close(cnv);
- }
-}
-
static void
TestEBCDIC_STATEFUL() {
/* test input */
--
2.33.0

View File

@ -0,0 +1,314 @@
From a4fb55ae3de789cf645d4939ed8af9dbaad242ce Mon Sep 17 00:00:00 2001
From: wuzx <wuzx1226@qq.com>
Date: Fri, 18 Nov 2022 02:53:10 +0800
Subject: [PATCH] Add sw64 architecture
Signed-off-by: wuzx <wuzx1226@qq.com>
---
source/acinclude.m4 | 6 ++
source/config.guess | 8 +++
source/config.sub | 2 +
source/config/mh-sw_64-linux-cc | 87 +++++++++++++++++++++++++++
source/config/mh-sw_64-linux-gcc | 85 ++++++++++++++++++++++++++
source/configure | 8 ++-
source/configure.ac | 2 +-
source/i18n/double-conversion-utils.h | 2 +-
8 files changed, 197 insertions(+), 3 deletions(-)
create mode 100644 source/config/mh-sw_64-linux-cc
create mode 100644 source/config/mh-sw_64-linux-gcc
diff --git a/source/acinclude.m4 b/source/acinclude.m4
index 507f41f..381a91f 100644
--- a/source/acinclude.m4
+++ b/source/acinclude.m4
@@ -21,6 +21,12 @@ case "${host}" in
else
icu_cv_host_frag=mh-solaris
fi ;;
+sw_64*-*-linux-gnu)
+ if test "$GCC" = yes; then
+ icu_cv_host_frag=mh-sw_64-linux-gcc
+ else
+ icu_cv_host_frag=mh-sw_64-linux-cc
+ fi ;;
alpha*-*-linux-gnu)
if test "$GCC" = yes; then
icu_cv_host_frag=mh-alpha-linux-gcc
diff --git a/source/config.guess b/source/config.guess
index 31e01ef..1dfe5d5 100644
--- a/source/config.guess
+++ b/source/config.guess
@@ -894,6 +894,14 @@ EOF
UNAME_MACHINE=aarch64_be
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
+ sw_64:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ SW) UNAME_MACHINE=sw_64 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+ echo ${UNAME_MACHINE}-sunway-linux-${LIBC}
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
diff --git a/source/config.sub b/source/config.sub
index fb57947..07dc65e 100644
--- a/source/config.sub
+++ b/source/config.sub
@@ -244,6 +244,7 @@ case $basic_machine in
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
+ | sw_64 \
| aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
@@ -368,6 +369,7 @@ case $basic_machine in
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
+ | sw_64-* \
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
diff --git a/source/config/mh-sw_64-linux-cc b/source/config/mh-sw_64-linux-cc
new file mode 100644
index 0000000..f27259a
--- /dev/null
+++ b/source/config/mh-sw_64-linux-cc
@@ -0,0 +1,87 @@
+## -*-makefile-*-
+## Copyright (C) 2016 and later: Unicode, Inc. and others.
+## License & terms of use: http://www.unicode.org/copyright.html
+## Sw-64-Linux-specific setup
+## Copyright (c) 1999-2006, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Commands to generate dependency files
+#GEN_DEPS.c= $(CC) $(DEFS) $(CPPFLAGS) -MD -c -msg_quiet
+#GEN_DEPS.cc= $(CXX) $(DEFS) $(CPPFLAGS) -D__USE_STD_IOSTREAM -c -MD -msg_quiet
+
+## Flags for position independent code
+SHAREDLIBCFLAGS = -fPIC
+SHAREDLIBCXXFLAGS = -fPIC
+SHAREDLIBCPPFLAGS = -DPIC
+
+## Additional flags when building libraries and with threads
+THREADSCPPFLAGS = -D_REENTRANT
+LIBCPPFLAGS =
+
+# The tests need complete IEEE floating point support
+CFLAGS += -ieee
+CXXFLAGS += -ieee
+
+## Commands to compile
+COMPILE.c= $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) -c -signed -accept nogccinline
+COMPILE.cc= $(CXX) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) -c -signed -D__USE_STD_IOSTREAM -accept nogcc_inline
+
+
+## Commands to link
+LINK.c= $(CC) -call_shared $(CFLAGS) $(LDFLAGS)
+LINK.cc= $(CXX) -call_shared $(CXXFLAGS) $(LDFLAGS)
+
+## Compiler switch to embed a runtime search path
+LD_RPATH=
+LD_RPATH_PRE= -Wl,-rpath,
+
+## Compiler switch to embed a library name
+LD_SONAME = -Wl,-soname -Wl,$(notdir $(MIDDLE_SO_TARGET))
+
+## Shared object suffix
+SO = so
+## Non-shared intermediate object suffix
+STATIC_O = ao
+
+## Compilation rules
+%.$(STATIC_O): $(srcdir)/%.c
+ $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $<
+%.o: $(srcdir)/%.c
+ $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
+
+%.$(STATIC_O): $(srcdir)/%.cpp
+ $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
+%.o: $(srcdir)/%.cpp
+ $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
+
+
+## Dependency rules
+#%.d: $(srcdir)/%.c
+# @echo "generating dependency information for $<"
+# @$(SHELL) -ec '$(GEN_DEPS.c) $< \
+# | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
+# [ -s $@ ] || rm -f $@'
+
+#%.d: $(srcdir)/%.cpp
+# @echo "generating dependency information for $<"
+# @$(SHELL) -ec '$(GEN_DEPS.cc) $< \
+# | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
+# [ -s $@ ] || rm -f $@'
+#
+## Versioned libraries rules
+
+%.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION)
+ $(RM) $@ && ln -s ${<F} $@
+%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
+ $(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@
+
+## Bind internal references
+
+# LDflags that pkgdata will use
+BIR_LDFLAGS= -Wl,-Bsymbolic
+
+# Dependencies [i.e. map files] for the final library
+BIR_DEPS=
+
+## End Linux-specific setup
+
diff --git a/source/config/mh-sw_64-linux-gcc b/source/config/mh-sw_64-linux-gcc
new file mode 100644
index 0000000..a3531d2
--- /dev/null
+++ b/source/config/mh-sw_64-linux-gcc
@@ -0,0 +1,85 @@
+## -*-makefile-*-
+## Copyright (C) 2016 and later: Unicode, Inc. and others.
+## License & terms of use: http://www.unicode.org/copyright.html
+## Linux-specific setup
+## Copyright (c) 1999-2009, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Commands to generate dependency files
+GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS)
+GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS)
+
+## Flags for position independent code
+SHAREDLIBCFLAGS = -fPIC
+SHAREDLIBCXXFLAGS = -fPIC
+SHAREDLIBCPPFLAGS = -DPIC
+
+## Additional flags when building libraries and with threads
+THREADSCPPFLAGS = -D_REENTRANT
+LIBCPPFLAGS =
+
+# The tests need complete IEEE floating point support
+CFLAGS += -mieee
+CXXFLAGS += -mieee
+
+## Compiler switch to embed a runtime search path
+LD_RPATH=
+LD_RPATH_PRE= -Wl,-rpath,
+
+## Compiler switch to embed a library name
+LD_SONAME = -Wl,-soname -Wl,$(notdir $(MIDDLE_SO_TARGET))
+
+
+## Shared library options
+LD_SOOPTIONS= -Wl,-Bsymbolic
+
+## Shared object suffix
+SO = so
+## Non-shared intermediate object suffix
+STATIC_O = ao
+
+## Compilation rules
+%.$(STATIC_O): $(srcdir)/%.c
+ $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $<
+%.o: $(srcdir)/%.c
+ $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
+
+%.$(STATIC_O): $(srcdir)/%.cpp
+ $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
+%.o: $(srcdir)/%.cpp
+ $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
+
+
+## Dependency rules
+%.d: $(srcdir)/%.c
+ @echo "generating dependency information for $<"
+ @$(SHELL) -ec '$(GEN_DEPS.c) $< \
+ | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
+ [ -s $@ ] || rm -f $@'
+
+%.d: $(srcdir)/%.cpp
+ @echo "generating dependency information for $<"
+ @$(SHELL) -ec '$(GEN_DEPS.cc) $< \
+ | sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
+ [ -s $@ ] || rm -f $@'
+
+## Versioned libraries rules
+
+%.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION)
+ $(RM) $@ && ln -s ${<F} $@
+%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
+ $(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@
+
+# The type of assembly to write for generating an object file
+GENCCODE_ASSEMBLY=-a gcc
+
+## Bind internal references
+
+# LDflags that pkgdata will use
+BIR_LDFLAGS= -Wl,-Bsymbolic
+
+# Dependencies [i.e. map files] for the final library
+BIR_DEPS=
+
+## End Linux-specific setup
+
diff --git a/source/configure b/source/configure
index a2ff7e4..a190250 100755
--- a/source/configure
+++ b/source/configure
@@ -5249,6 +5249,12 @@ case "${host}" in
else
icu_cv_host_frag=mh-solaris
fi ;;
+sw_64*-*-linux-gnu)
+ if test "$GCC" = yes; then
+ icu_cv_host_frag=mh-sw_64-linux-gcc
+ else
+ icu_cv_host_frag=mh-sw_64-linux-cc
+ fi ;;
alpha*-*-linux-gnu)
if test "$GCC" = yes; then
icu_cv_host_frag=mh-alpha-linux-gcc
@@ -6511,7 +6517,7 @@ if test "$CC" = ccc; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"C compiler set to CCC ${CC}\" " >&5
$as_echo "\"C compiler set to CCC ${CC}\" " >&6; }
case "${host}" in
- alpha*-*-*) U_HAVE_INTTYPES_H=0;
+ alpha*-*-* | sw_64*-*-*) U_HAVE_INTTYPES_H=0;
CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INTTYPES_H=0"
esac
fi
diff --git a/source/configure.ac b/source/configure.ac
index 425fdc7..6acf133 100644
--- a/source/configure.ac
+++ b/source/configure.ac
@@ -685,7 +685,7 @@ fi
if test "$CC" = ccc; then
AC_MSG_RESULT("C compiler set to CCC ${CC}" )
case "${host}" in
- alpha*-*-*) U_HAVE_INTTYPES_H=0;
+ alpha*-*-* | sw_64*-*-*) U_HAVE_INTTYPES_H=0;
CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_INTTYPES_H=0"
esac
fi
diff --git a/source/i18n/double-conversion-utils.h b/source/i18n/double-conversion-utils.h
index c937463..7dcdbf8 100644
--- a/source/i18n/double-conversion-utils.h
+++ b/source/i18n/double-conversion-utils.h
@@ -122,7 +122,7 @@ int main(int argc, char** argv) {
defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \
defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
- defined(__SH4__) || defined(__alpha__) || \
+ defined(__SH4__) || defined(__alpha__) || defined(__sw_64__) || \
defined(_MIPS_ARCH_MIPS32R2) || defined(__ARMEB__) ||\
defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \
defined(__riscv) || defined(__e2k__) || \
--
2.33.0

View File

@ -1,6 +1,6 @@
Name: icu
Version: 72.1
Release: 1
Release: 4
Summary: International Components for Unicode
License: MIT and UCD and Public Domain
URL: http://site.icu-project.org/
@ -12,6 +12,13 @@ Requires: lib%{name} = %{version}-%{release}
Patch1: gennorm2-man.patch
Patch2: icuinfo-man.patch
Patch3: backport-remove-TestJitterbug6175.patch
%ifarch loongarch
Patch4: 0001-add-support-loongarch64.patch
%endif
%ifarch sw_64
Patch5: icu-Add-sw64-architecture.patch
%endif
%description
Tools and utilities for developing with icu.
@ -128,15 +135,26 @@ LD_LIBRARY_PATH=lib:stubdata:tools/ctestfw:$LD_LIBRARY_PATH bin/uconv -l
%changelog
* Sat Nov 05 2022 zhouwenpei <zhouwenpei1@h-partners.com> - 72.1-1
* Mon Nov 21 2022 zhouwenpei<zhouwenpei1@h-partners.com> - 72.1-4
- Optimize the patch for add loongarch64 architecture
* Mon Nov 21 2022 wuzx <wuzx1226@qq.com> - 72.1-3
- Add sw64 architecture
* Fri Nov 18 2022 huajingyun <huajingyun@loongson.cn> - 72.1-2
- add loongarch64 support
* Tue Nov 15 2022 zhouwenpei <zhouwenpei1@h-partners.com> - 72.1-1
- update to icu4c-72.1
* Sat Jun 25 2020 hanhui <hanhui15@h-partners.com> - 69.1-3
- fix build failed
* Thu Jul 16 2020 hanhui <hanhui15@h-partners.com> - 69.1-2
- delete libicu*.so.67*
* Mon Nov 29 2021 xingxing <xingxing9@huawei.com> - 69.1-1
* Sun Nov 07 2021 sdlzx <hdu_sdlzx@163.com> - 69.1
- update to icu4c-69.1
- replate libicu*.so.62*whith libicu*.so.67*
* Wed Oct 21 2020 jinzhimin<jinzhimin2@huawei.com> - 67.1-2
- modify buildrequire to python3