[devel] Компоновка VBoxSVC в новых сборках VirtualBox

Evgeny Sinelnikov sin на altlinux.ru
Пт Июл 22 22:59:01 UTC 2011


Здравствуйте,

прошу помощи, уже очень давно у меня перестала проходить проверка с
verify-elf для VBoxSVC. Проблема выглядит так:
...
verify-elf: WARNING: ./usr/lib64/virtualbox/VBoxSVC: RPATH entry found:
/usr/lib64/virtualbox
verify-elf: ERROR: ./usr/lib64/virtualbox/VBoxSVC: undefined symbol:
_ZN3xml8Document17createRootElementEPKcS2_
either the file containing the function 'PATMSetPIF_EndProc' or the file
containing the function 'PATMClearPIF' is not compiled with -fpic/-fPIC
either the file containing the function 'PATMClearPIF_EndProc' or the file
containing the function 'PATMClearInhibitIRQFaultIF0' is not compiled with
-fpic/-fPIC
either the file containing the function
'PATMClearInhibitIRQFaultIF0_EndProc' or the file containing the function
'PATMClearInhibitIRQContIF0' is not compiled with -fpic/-fPIC
either the file containing the function 'PATMClearInhibitIRQContIF0_EndProc'
or the file containing the function 'PATMCliReplacement' is not compiled
with -fpic/-fPIC
either the file containing the function 'PATMCliReplacement_EndProc' or the
file containing the function 'PATMStiReplacement' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMStiReplacement_EndProc' or the
file containing the function 'PATMTrapEntry' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMTrapEntry_EndProc' or the file
containing the function 'PATMTrapEntryErrorCode' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMTrapEntryErrorCode_EndProc' or
the file containing the function 'PATMIntEntry' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMIntEntry_EndProc' or the file
containing the function 'PATMIntEntryErrorCode' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMIntEntryErrorCode_EndProc' or
the file containing the function 'PATMPopf32Replacement' is not compiled
with -fpic/-fPIC
either the file containing the function 'PATMPopf32Replacement_EndProc' or
the file containing the function 'PATMPopf32Replacement_NoExit' is not
compiled with -fpic/-fPIC
either the file containing the function
'PATMPopf32Replacement_NoExit_EndProc' or the file containing the function
'PATMPopf16Replacement' is not compiled with -fpic/-fPIC
either the file containing the function 'PATMPopf16Replacement_EndProc' or
the file containing the function 'PATMPopf16Replacement_NoExit' is not
compiled with -fpic/-fPIC
either the file containing the function
'PATMPopf16Replacement_NoExit_EndProc' or the file containing the function
'PATMPushf32Replacement' is not compiled with -fpic/-fPIC
either the file containing the function 'PATMPushf32Replacement_EndProc' or
the file containing the function 'PATMPushf16Replacement' is not compiled
with -fpic/-fPIC
either the file containing the function 'PATMPushf16Replacement_EndProc' or
the file containing the function 'PATMPushCSReplacement' is not compiled
with -fpic/-fPIC
either the file containing the function 'PATMPushCSReplacement_EndProc' or
the file containing the function 'PATMIretReplacement' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMIretReplacement_EndProc' or the
file containing the function 'PATMIretFunction' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMIretFunction_EndProc' or the
file containing the function 'PATMCpuidReplacement' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMCpuidReplacement_EndProc' or
the file containing the function 'PATMJEcxReplacement' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMJEcxReplacement_EndProc' or the
file containing the function 'PATMLoopReplacement' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMLoopReplacement_EndProc' or the
file containing the function 'PATMLoopZReplacement' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMLoopZReplacement_EndProc' or
the file containing the function 'PATMLoopNZReplacement' is not compiled
with -fpic/-fPIC
either the file containing the function 'PATMLoopNZReplacement_EndProc' or
the file containing the function 'PATMLookupAndCall' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMLookupAndCall_EndProc' or the
file containing the function 'PATMLookupAndJump' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMLookupAndJump_EndProc' or the
file containing the function 'PATMCall' is not compiled with -fpic/-fPIC
either the file containing the function 'PATMCall_EndProc' or the file
containing the function 'PATMCallIndirect' is not compiled with -fpic/-fPIC
either the file containing the function 'PATMCallIndirect_EndProc' or the
file containing the function 'PATMJumpIndirect' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMJumpIndirect_EndProc' or the
file containing the function 'PATMRet' is not compiled with -fpic/-fPIC
either the file containing the function 'PATMRet_EndProc' or the file
containing the function 'PATMRetFunction' is not compiled with -fpic/-fPIC
either the file containing the function 'PATMRetFunction_EndProc' or the
file containing the function 'PATMCheckIF' is not compiled with -fpic/-fPIC
either the file containing the function 'PATMCheckIF_EndProc' or the file
containing the function 'PATMJumpToGuest_IF1' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMJumpToGuest_IF1_EndProc' or the
file containing the function 'PATMMovFromSS' is not compiled with
-fpic/-fPIC
either the file containing the function 'PATMMovFromSS_EndProc' or the file
containing the function 'PATMInterruptFlag' is not compiled with -fpic/-fPIC
verify-elf: WARNING: ./usr/lib64/virtualbox/VBoxVMM.so: TEXTREL entry found:
0x0000000000000000
ошибка: Неверный код возврата из /home/sin/tmp/rpm-tmp.84694 (%install)

Проблема комплексная... Первое, что не удаётся - это проверка для символа
_ZN3xml8Document17createRootElementEPKcS2_

Если развернуть все проверки, то получается следующий вывод:

$ LD_TRACE_LOADED_OBJECTS=1 LD_WARN=1 LD_BIND_NOW=1 LD_DEBUG=
LD_LIBRARY_VERSION= "/lib64/ld-linux-x86-64.so.2" --library-path
"/home/sin/tmp/virtualbox-buildroot/usr/lib64/virtualbox"
"/home/sin/tmp/virtualbox-buildroot/usr/lib64/virtualbox/VBoxSVC"
        linux-vdso.so.1 =>  (0x00007fffb29c3000)
        VBoxRT.so => /usr/lib64/virtualbox/VBoxRT.so (0x00007f25562a6000)
        VBoxDDU.so => /usr/lib64/virtualbox/VBoxDDU.so (0x00007f255605f000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2555e18000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f2555c14000)
        VBoxXPCOM.so => /usr/lib64/virtualbox/VBoxXPCOM.so
(0x00007f25558f8000)
        libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x00007f25556cf000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f25553c9000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f25551b2000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f2554e49000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f2554c0d000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f25549f3000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f25547eb000)
        libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f2554436000)
        libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007f25540dc000)
        libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x00007f2553e7d000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f25565c1000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f2553bfb000)
        libidn.so.11 => /usr/lib64/libidn.so.11 (0x00007f25539c7000)
        libssh2.so.1 => /usr/lib64/libssh2.so.1 (0x00007f25537a0000)
        libssl.so.10 => /lib64/libssl.so.10 (0x00007f255353d000)
        libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f255329d000)
        libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f2553076000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f2552e71000)
        libkrb5support.so.0 => /lib64/libkrb5support.so.0
(0x00007f2552c69000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f2552a66000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f255284e000)
undefined symbol: _ZN3xml8Document17createRootElementEPKcS2_
(/home/sin/tmp/virtualbox-buildroot/usr/lib64/virtualbox/VBoxSVC)

$ nm -D /home/sin/tmp/virtualbox-buildroot/usr/lib64/virtualbox/VBoxRT.so
|grep createRootElement
0000000000040de0 T _ZN3xml8Document17createRootElementEPKcS2_

То есть линковка вроде сделана, символ в библиотеке есть, а проверка
выявляет ошибку. Стоит отметить, что символ используется в двух разных
единицах трансляции.



-- 
Sin (Sinelnikov Evgeny)
Etersoft
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20110723/acece4f4/attachment.html>


Подробная информация о списке рассылки Devel