[vbox-dev] RuntimeGuestR3Mini linkages with thread.cpp due RT_WITH_ICONV_CACHE

Evgeny Sinelnikov sin at altlinux.ru
Mon Jun 14 14:30:00 GMT 2010


Hello,

During VirtualBox-3.2.4 building to ALTLinux Sisyphus I found a
problem with xorg drivers linkage.
http://git.altlinux.org/tasks/25568/task/log.3
       i586: NEW bad_elf_symbols detected:
xorg-x11-drv-vboxmouse-3.2.4-alt2.i586.rpm
/usr/lib/X11/modules/input/vboxmouse_drv.so     U       rtThreadGet
xorg-x11-drv-vboxvideo-3.2.4-alt2.i586.rpm
/usr/lib/X11/modules/drivers/vboxvideo_drv.so   U       rtThreadGet
       x86_64: NEW bad_elf_symbols detected:
xorg-x11-drv-vboxmouse-3.2.4-alt2.x86_64.rpm
/usr/lib64/X11/modules/input/vboxmouse_drv.so   U       rtThreadGet
xorg-x11-drv-vboxvideo-3.2.4-alt2.x86_64.rpm
/usr/lib64/X11/modules/drivers/vboxvideo_drv.so U       rtThreadGet
2010-Jun-10 22:52:02 :: ELF symbols check FAILED
2010-Jun-10 22:52:02 :: task #25568 for sisyphus FAILED

The problem comes from RuntimeGuestR3Mini linkage without including
thread.o, but with RT_WITH_ICONV_CACHE defined.

RuntimeGuestR3Mini includes src/VBox/Runtime/r3/posix/utf8-posix.cpp,
which consists next code:

DECLINLINE(int) rtStrConvertWrapper(const char *pchInput, size_t
cchInput, const char *pszInputCS,
                                    char **ppszOutput, size_t
cbOutput, const char *pszOutputCS,
                                    unsigned cFactor, RTSTRICONV
enmCacheIdx)
{
#ifdef RT_WITH_ICONV_CACHE
    RTTHREAD hSelf = RTThreadSelf();
    if (hSelf != NIL_RTTHREAD)
    {
        PRTTHREADINT pThread = rtThreadGet(hSelf);
        if (   pThread
            && (pThread->fIntFlags & (RTTHREADINT_FLAGS_ALIEN |
RTTHREADINT_FLAGS_MAIN)) != RTTHREADINT_FLAGS_ALIEN)
            return rtstrConvertCached(pchInput, cchInput, pszInputCS,
                                      (void **)ppszOutput, cbOutput,
pszOutputCS,
                                      cFactor, (iconv_t
*)&pThread->ahIconvs[enmCacheIdx]);
    }
#endif
    return rtStrConvertUncached(pchInput, cchInput, pszInputCS,
                                (void **)ppszOutput, cbOutput,
pszOutputCS,
                                cFactor);
}

I solved this problem with includes patch.
In this patch I replace rtThreadGet() function into common
threadbasic.cpp, which includes into RuntimeGuestR3 and
RuntimeGuestR3Mini.

-- 
Sin (Sinelnikov Evgeny)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: virtualbox-3.2.4-RuntimeGuestR3Mini.patch
Type: text/x-patch
Size: 4559 bytes
Desc: not available
URL: <http://www.virtualbox.org/pipermail/vbox-dev/attachments/20100614/28de8f1b/attachment.bin>


More information about the vbox-dev mailing list