Skip to contentSkip to conversation

ICU not working on powerpc (ppce500v2)

DISCUSSION Stefano Babic 2 participants 2 messages Jun 3, 2015 – Aug 14, 2015

lore
Share & tools
lore
#0 lore raw

Hi,

I get an issue with icu (54.1, I am testing with Yocto-fido) on powepc (I am testing with a p2020rdb from Freescale). Running icuinfo on target I get:

<icuSystemParams type="icu4c">
<param name="copyright"> Copyright (C) 2014, International Business
Machines Corporation and others. All Rights Reserved. </param>
<param name="product">icu4c</param>
<param name="product.full">International Components for Unicode for
C/C++</param>

    <param name="version">54.1</param>
    <param name="version.unicode">7.0</param>
    <param name="platform.number">4000</param>
    <param name="platform.type">Linux</param>
    <param name="locale.default">en_US_POSIX</param>
    <param name="locale.default.bcp47">en-US-u-va-posix</param>
    <param name="converter.default">US-ASCII</param>
    <param name="icudata.name">icudt54b</param>
    <param name="icudata.path"></param>
  <!-- n="cldr.version" ERROR: U_MISSING_RESOURCE_ERROR -->
  <!-- n="tz.version" ERROR: U_MISSING_RESOURCE_ERROR -->
    <param name="tz.default">Universal</param>
    <param name="cpu.bits">32</param>
    <param name="cpu.big_endian">1</param>
    <param name="os.wchar_width">4</param>
    <param name="os.charset_family">0</param>
    <param name="os.host">powerpc-unknown-linux-gnuspe</param>
    <param name="build.build">x86_64-pc-linux-gnu</param>
    <param name="build.cc">powerpc-linux-gnuspe-gcc -m32 -mcpu=8548
-mabi=spe -mspe -mfloat-gprs=double
--sysroot=/opt/work/sbabic/eldk/p2020rdb/tmp/sysroots/generic-powerpc-e500v2</param>
    <param name="build.cxx">powerpc-linux-gnuspe-g++ -m32 -mcpu=8548
-mabi=spe -mspe -mfloat-gprs=double
--sysroot=/opt/work/sbabic/eldk/p2020rdb/tmp/sysroots/generic-powerpc-e500v2</param>
    <param name="uconfig.internal_digitlist">1</param>
    <param name="uconfig.have_parseallinput">1</param>
    <param name="uconfig.format_fastpaths_49">1</param>

</icuSystemParams>

ICU Initialization returned: U_INVALID_FORMAT_ERROR Plugin file is: /usr/lib/icu/icuplugins54.txt

cldr.version and tz.version report errors and even simple tests do not work. If I copy all .res files (icu54 directory) and then I set ICU_DATA to that directory, it works - that means there should be an issue by generating libicudata with PowerPc, or at least with e500v2.

I did exactly the same tests with an ARM platform (i.MX6), everything works as expected. I suspect some issue due to endianess, but checking the header in the libicudata it looks correct ( at least the first bytes).

I saw :

commit f5205c568cb0d29059c4d8c2dc200e435787f5d8

Author: Khem Raj <[email protected]>
Date:   Sat Feb 15 22:04:05 2014 +0000

icu: Disable the default LDFLAGSICUDT for target compile

and, as it looks like ARM related, I have already tried to revert it, without any success. Does anyone have a hint ?

Best regards,
Stefano Babic

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: [email protected]
=====================================================================
#1 lore raw
Quoted 48 lines · Stefano Babic

Hi,

I get an issue with icu (54.1, I am testing with Yocto-fido) on powepc (I am testing with a p2020rdb from Freescale). Running icuinfo on target I get:

<icuSystemParams type="icu4c">
<param name="copyright"> Copyright (C) 2014, International Business
Machines Corporation and others. All Rights Reserved. </param>
<param name="product">icu4c</param>
<param name="product.full">International Components for Unicode for
C/C++</param>
<param name="version">54.1</param>
<param name="version.unicode">7.0</param>
<param name="platform.number">4000</param>
<param name="platform.type">Linux</param>
<param name="locale.default">en_US_POSIX</param>
<param name="locale.default.bcp47">en-US-u-va-posix</param> <param name="converter.default">US-ASCII</param>
<param name="icudata.name">icudt54b</param>
<param name="icudata.path"></param>
<!-- n="cldr.version" ERROR: U_MISSING_RESOURCE_ERROR --> <!-- n="tz.version" ERROR: U_MISSING_RESOURCE_ERROR -->
<param name="tz.default">Universal</param>
<param name="cpu.bits">32</param>
<param name="cpu.big_endian">1</param>
<param name="os.wchar_width">4</param>
<param name="os.charset_family">0</param>
<param name="os.host">powerpc-unknown-linux-gnuspe</param> <param name="build.build">x86_64-pc-linux-gnu</param> <param name="build.cc">powerpc-linux-gnuspe-gcc -m32 -mcpu=8548

(quoted diff) +0 -4
-mabi=spe -mspe -mfloat-gprs=double
--sysroot=/opt/work/sbabic/eldk/p2020rdb/tmp/sysroots/generic-powerpc-e500v2</param>
   <param name="build.cxx">powerpc-linux-gnuspe-g++ -m32 -mcpu=8548
-mabi=spe -mspe -mfloat-gprs=double
--sysroot=/opt/work/sbabic/eldk/p2020rdb/tmp/sysroots/generic-powerpc-e500v2</param>
   <param name="uconfig.internal_digitlist">1</param>
   <param name="uconfig.have_parseallinput">1</param>
   <param name="uconfig.format_fastpaths_49">1</param>

</icuSystemParams>

ICU Initialization returned: U_INVALID_FORMAT_ERROR Plugin file is: /usr/lib/icu/icuplugins54.txt

Quoted 8 lines

cldr.version and tz.version report errors and even simple tests do not work. If I copy all .res files (icu54 directory) and then I set ICU_DATA to that directory, it works - that means there should be an issue by generating libicudata with PowerPc, or at least with e500v2.

I did exactly the same tests with an ARM platform (i.MX6), everything works as expected. I suspect some issue due to endianess, but checking the header in the libicudata it looks correct ( at least the first bytes).

I think this is right line to follow, difference it that this ppc config is big endian check the .dat files which eventually fold into the .so they should have big endian format if they don’t then you can regenerate them using icupkg -tb, it might be that building the datafiles in cross environment is not working.

Quoted 27 lines

I saw :

commit f5205c568cb0d29059c4d8c2dc200e435787f5d8

Author: Khem Raj <[email protected]>
Date:   Sat Feb 15 22:04:05 2014 +0000

icu: Disable the default LDFLAGSICUDT for target compile

and, as it looks like ARM related, I have already tried to revert it, without any success. Does anyone have a hint ?

Best regards,
Stefano Babic

--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: [email protected]
=====================================================================
--
_______________________________________________
Openembedded-core mailing list [email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core