[tex-k] FAIL: tests/ttf.test

Jindrich Novy jnovy at redhat.com
Wed Nov 14 13:15:18 CET 2012


Hello Peter, Norbert,

On Wed, Nov 14, 2012 at 12:59:16PM +0100, Peter Breitenlohner wrote:
> On Fri, 9 Nov 2012, Jindrich Novy wrote:
> 
> >>On Mi, 07 Nov 2012, Peter Breitenlohner wrote:
> >>>according to the msg above the first undefined reference is
> >>>  icu_50::OpenTypeLayoutEngine::characterProcessing(unsigned short const*,
> >>>    int, int, int, signed char, unsigned short*&, icu_50::LEGlyphStorage&,
> >>>    LEErrorCode&)
> >>>so please verify that libs/icu/icu-build/lib/libicule.a defines exactly this.
> >>
> >>nm --demangle libicule.a | grep -i icu_50::OpenTypeLayoutEngine::characterProcessing
> >>
> >>gives me:
> >>
> >>0000000000000000 T
> >>icu_50::OpenTypeLayoutEngine::characterProcessing(char16_t const*, int,
> >>int, int, signed char, char16_t*&, icu_50::LEGlyphStorage&, LEErrorCode&)
> >>
> >>So we would need
> >>	unsigned short	<-> 	char16_t
> >>to make that match.
> >
> >After consultation with gcc guys it turned out that libicu compiles
> >well just with -std=c++11 in CXXFLAGS. The problem is that part of it
> >is built with a different C++ stanard (c++03) what makes some symbols
> >unresolved.
> 
> Hi Jindrich, Norbert, Karl,
> 
> as far as I can see, 'unsigned short' and 'char16_t' are actually the same
> and they are compatible for arg1 (const LEUnicode []) but there is a problem
> with arg6 (LEUnicode*&).  This may or may not be a bug in gcc-4.7.2.

char16_t is keyword only in C++11 standard and newer + it has it's own
mangling. No one guarantees C++03 and C++11 are ABI compatible so the
best way is to compile all either in C++11 or C++03.

> 
> You can avoid this problem by using gcc <=4.6 if possible, or for gcc 4.7
> invoke
>   Build ... CXX="'g++ -std=c++11'" ...
> 
> Note, however, that for gcc 4.7 you need at least svn r28258 because there
> was also a problem with dvisvgm.

Yes, I patched dvisvgm to not to print the version to workaround this
problem with older revisions.

> 
> We'll have to see if the xetex problem disappears with a later gcc version
> or otherwise add -std=c++11 to the xetex specific CXXFLAGS (when using gcc
> 4.7 or later).

I'm Cc-ing Jakub who gave me the C++ related advises. Please feel free to ask
him for details if needed.

Thanks,
Jindrich

-- 
Jindrich Novy <jnovy at redhat.com>   http://people.redhat.com/jnovy/
Kdo víno má a nepije, kdo hrozny má a nejí je, kdo ženu má a nelíbá,
kdo zábavě se vyhýbá, na toho vemte bič a hůl, to není člověk, to je vůl.
--- Jan Werich


More information about the tex-k mailing list