[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#966132: libIntelXvMC and libI810XvMC should link with -lXv



Package: xserver-xorg-video-intel
Version: 2:2.99.917+git20200714-1
Severity: minor
File: /usr/lib/x86_64-linux-gnu/libIntelXvMC.so.1.0.0
User: debian-qa@lists.debian.org
Usertags: undefined-symbol adequate

libIntelXvMC.so and libI810XvMC.so need to link with -lXv, see the
output of adequate, symtree and objdump below. I detected this on amd64
but I assume it also occurs on other architectures.

I filed this bug at severity minor since I'm not sure if there are any
programs using the libIntelXvMC.so and libI810XvMC.so libs and if they
already use the libXv.so symbols and link with the -lXv flag or not.

This bug report brought to you by adequate:

https://bonedaddy.net/pabs3/log/2013/02/23/inadequate-software/

$ lib=/usr/lib/x86_64-linux-gnu/libIntelXvMC.so.1.0.0
$ link=/usr/lib/x86_64-linux-gnu/libXv.so.1.0.0
$ pkg="$(dpkg-query --search "$lib" | sed s/:.*//)"

$ adequate "$pkg"
xserver-xorg-video-intel: undefined-symbol /usr/lib/x86_64-linux-gnu/libI810XvMC.so.1.0.0 => XvGetPortAttribute
xserver-xorg-video-intel: undefined-symbol /usr/lib/x86_64-linux-gnu/libIntelXvMC.so.1.0.0 => XvPutImage
xserver-xorg-video-intel: undefined-symbol /usr/lib/x86_64-linux-gnu/libIntelXvMC.so.1.0.0 => XvCreateImage

$ man adequate | grep -A4 undefined-symbol
       undefined-symbol
           The symbol has not been found in the libraries linked with the binary.  Either the binary either needs to be linked with an additional shared library, or the dependency
           on the shared library package that provides this symbol is too weak.

           References: Debian Policy §3.5, §8.6, §10.2.


$ lddtree "$lib"
libIntelXvMC.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libIntelXvMC.so.1.0.0 (interpreter => none)
    libXvMC.so.1 => /usr/lib/x86_64-linux-gnu/libXvMC.so.1
        libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6
    libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
            ld-linux-x86-64.so.2 => /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
    libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0
    libxcb-util.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-util.so.0
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6
            libbsd.so.0 => /usr/lib/x86_64-linux-gnu/libbsd.so.0
    libdrm_intel.so.1 => /usr/lib/x86_64-linux-gnu/libdrm_intel.so.1
        libpciaccess.so.0 => /usr/lib/x86_64-linux-gnu/libpciaccess.so.0
            libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1
    libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6

$ symtree "$lib"
/usr/lib/x86_64-linux-gnu/libIntelXvMC.so.1.0.0
    libXvMC.so.1 => XvMCQueryExtension,_xvmc_destroy_context,_xvmc_create_context,XvMCQueryVersion,_xvmc_destroy_surface,_xvmc_create_surface
    libX11-xcb.so.1 => XGetXCBConnection
    libX11.so.6 => XFree,XFreeGC,XCreateGC
    libxcb-dri2.so.0 => xcb_dri2_connect_reply,xcb_dri2_connect,xcb_dri2_authenticate,xcb_dri2_connect_device_name,xcb_dri2_connect_device_name_length,xcb_dri2_authenticate_reply,xcb_dri2_query_version_reply,xcb_dri2_id,xcb_dri2_query_version
    libxcb-util.so.0 => xcb_aux_get_screen
    libxcb.so.1 => xcb_get_extension_data
    libdrm_intel.so.1 => drm_intel_gem_bo_unmap_gtt,drm_intel_gem_bo_map_gtt,drm_intel_bo_flink,drm_intel_bo_exec,drm_intel_bo_emit_reloc,drm_intel_bo_subdata,drm_intel_bufmgr_gem_init,drm_intel_bo_unreference,drm_intel_bufmgr_destroy,drm_intel_bufmgr_gem_enable_reuse,drm_intel_bo_alloc
    libdrm.so.2 => drmGetMagic
    libpthread.so.0 => pthread_mutex_lock,pthread_sigmask,close,pthread_mutex_unlock,pthread_mutex_destroy,pthread_mutex_init,open,__errno_location
    libc.so.6 => fopen,strncpy,sigfillset,__stack_chk_fail,pthread_mutex_lock,pthread_mutex_destroy,__assert_fail,calloc,__errno_location,__fprintf_chk,pthread_mutex_unlock,memcpy,memcpy,fclose,malloc,getenv,stderr,sigdelset,pthread_mutex_init,fwrite,close,open,__cxa_finalize,strerror,free
    WEAK => _ITM_deregisterTMCloneTable,__gmon_start__,_ITM_registerTMCloneTable
    UNRESOLVED => XvPutImage,XvCreateImage

$ objdump -T "$link" | grep -E " ($(symtree "$lib" | sed -n 's/    UNRESOLVED => //p' | tr , '|'))$"
0000000000002e00 g    DF .text	00000000000001b3  Base        XvCreateImage
0000000000002fe0 g    DF .text	000000000000023e  Base        XvPutImage

$ lib=/usr/lib/x86_64-linux-gnu/libI810XvMC.so.1.0.0
$ link=/usr/lib/x86_64-linux-gnu/libXv.so.1.0.0

$ lddtree "$lib"
libI810XvMC.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libI810XvMC.so.1.0.0 (interpreter => none)
    libXvMC.so.1 => /usr/lib/x86_64-linux-gnu/libXvMC.so.1
        libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1
            libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6
            libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6
                libbsd.so.0 => /usr/lib/x86_64-linux-gnu/libbsd.so.0
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
            ld-linux-x86-64.so.2 => /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
    libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6

$ symtree "$lib"
/usr/lib/x86_64-linux-gnu/libI810XvMC.so.1.0.0
    libXvMC.so.1 => XvMCQueryExtension,_xvmc_destroy_context,_xvmc_create_context,XvMCQueryVersion,_xvmc_destroy_subpicture,_xvmc_destroy_surface,_xvmc_create_subpicture,_xvmc_create_surface
    libX11.so.6 => XFree,XInternAtom,XGetGeometry,XQueryTree
    libdrm.so.2 => drmUnmap,drmGetMagic,drmUnlock,drmGetLock,drmUnmapBufs,drmAvailable,drmMap,drmOpen,drmCommandWrite,drmCommandNone,drmCommandWriteRead,drmClose
    libc.so.6 => __printf_chk,strncpy,puts,__stack_chk_fail,putchar,calloc,memset,memcpy,memcpy,malloc,usleep,geteuid,__cxa_finalize,free
    WEAK => _ITM_deregisterTMCloneTable,__gmon_start__,_ITM_registerTMCloneTable
    UNRESOLVED => XvGetPortAttribute

$ objdump -T "$link" | grep -E " ($(symtree "$lib" | sed -n 's/    UNRESOLVED => //p' | tr , '|'))$"
0000000000002740 g    DF .text	0000000000000103  Base        XvGetPortAttribute

-- 
bye,
pabs

https://wiki.debian.org/PaulWise

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: