I have been playing with ffmpeg using x265 codec 
(https://bitbucket.org/multicoreware/x265/wiki/Home) and in order to 
eliminate any possible issues due to potentially limited NUMA support in 
OSV I have been trying to rebuild libx265.so from sources and disabling 
NUMA options.

For whatever reason which I do not understand the recompiled version of 
libx265.so depends on libmvec.so whereas the version of libx265.so  that 
get by installing the distribution development does not:

-- distribution version
ldd /usr/lib/x86_64-linux-gnu/libx265.so.160
linux-vdso.so.1 (0x00007ffff8d8c000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
(0x00007f74effd1000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f74effcb000)
libnuma.so.1 => /usr/lib/x86_64-linux-gnu/libnuma.so.1 (0x00007f74efdc0000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 
(0x00007f74efc36000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f74efaa9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f74ef8bf000)
/lib64/ld-linux-x86-64.so.2 (0x00007f74f10f5000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f74ef8a3000)

-- rebuilt version
ldd build/linux/8bit/libx265.so.160 
linux-vdso.so.1 (0x00007ffd83bdb000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
(0x00007fdcaf4de000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fdcaf4d8000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 
(0x00007fdcaf34e000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fdcaf1c1000)
* libmvec.so.1 => /lib/x86_64-linux-gnu/libmvec.so.1 (0x00007fdcaf195000)*
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdcaefab000)
/lib64/ld-linux-x86-64.so.2 (0x00007fdcb07bd000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fdcaef8f000)

where my image looks like it:
Adding /libenviron.so...
Adding /libvdso.so...
Adding /zpool.so...
Adding /libzfs.so...
Adding /libuutil.so...
Adding /zfs.so...
Adding /tools/mkfs.so...
Adding /tools/cpiod.so...
Adding /tools/mount-nfs.so...
Adding /tools/umount.so...
Adding /usr/lib/libgcc_s.so.1...
Adding /etc/hosts...
Link /etc/mnttab to /proc/mounts ...
Adding /etc/fstab...
Adding /dev...
Adding /proc...
Adding /tmp...
Adding /usr/lib/libz.so.1...
Adding /libavformat.so.58...
Adding /libswresample.so.3...
Adding /libswscale.so.5...
Adding /libavfilter.so.7...
Adding /ffmpeg.so...
Adding /libpostproc.so.55...
Adding /libavdevice.so.58...
Adding /libavcodec.so.58...
Adding /libavutil.so.56...
Adding /usr/lib/libx265.so.160...
Adding /usr/lib/libmvec.so.1...

When I try to start OSv with the rebuilt version I get the error about bout 
missing _rtld_global_ro symbol which I believe is part of glibc. When I 
remove libmvec then it complains about missing vector functions like 
_ZGVdN4v_log that libmvec provides and apparently x265 sources depend on. I 
have not found any reference to those mvec funcions directly in x265 source 
code so maybe it is gcc automatically compiling code to use those.

The version of x265 is the same for both distribution and compiled from 
sources version of library. I am not 100% about the compile options. The 
compiled one uses gcc 8.2, the distribution one uses 7.3.

It seems to me that OSv should provide those glibc vector functions 
(https://github.com/sgallagher/glibc/blob/master/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist)
 
but I also do not understand why the distribution version of libx265 does 
NOT depend on libmvec whereas the compiled from sources does. Any ideas?

Waldek

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to