[ARMedslack] Help building poppler

Niels Horn niels.horn at gmail.com
Sat Feb 20 09:55:35 UTC 2010


2010/2/20 Cédric VINCENT <cedric.vincent at gmail.com>:
> Hi Stuart,
>
> I didn't try to build Poppler yet, however I can see that the QtCore
> library in the current ARMedSlack does not provide the same
> signature/mangling for the function "qvsnprintf":
>
>    cedric at metalplug:~$ readelf -sW /usr/lib/qt/lib/libQtCore.so |
> grep qvsnprintf
>      3215: 000adfa0    36 FUNC    GLOBAL DEFAULT   10 _Z10qvsnprintfPcjPKcPv
>
>    cedric at metalplug:~$ c++filt _Z10qvsnprintfPcjPKcPv
>    qvsnprintf(char*, unsigned int, char const*, void*)
>
> Either you built libQtCore with a different version of GCC, or maybe
> the auto-configuration system of Poppler did not detect the right way
> to handle __va_list.
>
> For information, I saw the following warning when compiling another
> C++ project (Squid):
>
>    note: the mangling of ‘va_list’ has changed in GCC 4.4
>
> It means the linker will not be able to resolve the reference with the
> old signature/mangling anymore (for function that use va_list). As a
> conclusion, one has to recompile the library with the same version of
> the GCC compiler.
>
> Regards,
> Cédric.
>

Yep, the name mangling has changed in gcc 4.4 for 'va_list' on the arm
architecture. It's one of these "new features" introduced by the gcc
people so that programmers and maintainers have fun! :)

After compiling poppler, readelf -sW
/tmp/poppler-0.12.3/qt4/src/.libs/libpoppler-qt4.so | grep qvsnprintf
gave:
   966: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND
_Z10qvsnprintfPcjPKcSt9__va_list
  2475: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND
_Z10qvsnprintfPcjPKcSt9__va_list

and c++filt _Z10qvsnprintfPcjPKcSt9__va_list shows:
qvsnprintf(char*, unsigned int, char const*, std::__va_list)

The solution was to recompile the qt library, so that the qvsnprintf
function is mangled in the new way and can be linked to when compiling
poppler.

The really fun part is, that after recompiling qt, poppler will
compile fine, but everything else that uses the function needs to be
recompiled as well :) And that might include several parts of KDE...

Niels


More information about the ARMedslack mailing list