[waffle] ldd libwaffle

Chad Versace chad.versace at linux.intel.com
Wed Jan 8 15:31:01 PST 2014


+waffle at lists.freedesktop.org

On Wed, Jan 08, 2014 at 11:35:49AM -0800, Jordan Justen wrote:
> Chad,
> 
> What do you see when you use ldd on libwaffle?
> 
> Since it dlopens libraries, I thought we might not see many libraries
> in ldd, but I see:
> 
> $ ldd /usr/lib/x86_64-linux-gnu/libwaffle-1.so.0
>     linux-vdso.so.1 (0x00007fff1b3fe000)
>     libEGL.so.1 => /usr/lib/x86_64-linux-gnu/libEGL.so.1 (0x00007f36c9d46000)
>     libgbm.so.1 => /usr/lib/x86_64-linux-gnu/libgbm.so.1 (0x00007f36c9b3f000)
>     libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f36c98e0000)
>     libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f36c96ce000)
>     libwayland-client.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f36c94c1000)
>     libwayland-egl.so.1 => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f36c92be000)
>     libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f36c90bc000)
>     libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f36c8d81000)
>     libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f36c8b62000)
>     libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f36c895e000)
>     libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f36c8742000)
>     libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f36c8395000)
>     libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 (0x00007f36c8190000)
>     libxcb-xfixes.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-xfixes.so.0 (0x00007f36c7f89000)
>     libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f36c7d7f000)
>     libxcb-shape.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shape.so.0 (0x00007f36c7b7b000)
>     libwayland-server.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-server.so.0 (0x00007f36c796b000)
>     libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f36c775e000)
>     libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00007f36c7538000)
>     libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f36c7325000)
>     libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f36c7122000)
>     libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f36c6f1c000)
>     libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007f36c6d04000)
>     libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007f36c6afe000)
>     libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f36c6800000)
>     librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f36c65f7000)
>     /lib64/ld-linux-x86-64.so.2 (0x00007f36ca196000)
>     libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f36c63ef000)
>     libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f36c61eb000)
>     libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f36c5fe5000)


You see 31 libs, I see 33. The additional libs in my output are libpcre
and libgcc_s, most likely pulled in transitively.

$ ldd /usr/lib64/libwaffle-1.so.0.3.90
	linux-vdso.so.1 =>  (0x00007fff9d1fe000)
	libEGL.so.1 => /lib64/libEGL.so.1 (0x00007f2343ede000)
	libgbm.so.1 => /lib64/libgbm.so.1 (0x00007f2343cd6000)
	libGL.so.1 => /lib64/libGL.so.1 (0x00007f2343a78000)
	libudev.so.1 => /lib64/libudev.so.1 (0x00007f2343866000)
	libwayland-client.so.0 => /lib64/libwayland-client.so.0 (0x00007f2343658000)
	libwayland-egl.so.1 => /lib64/libwayland-egl.so.1 (0x00007f2343456000)
	libX11-xcb.so.1 => /lib64/libX11-xcb.so.1 (0x00007f2343254000)
	libX11.so.6 => /lib64/libX11.so.6 (0x00007f2342f18000)
	libxcb.so.1 => /lib64/libxcb.so.1 (0x00007f2342cfa000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f2342af6000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f23428d9000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f2342518000)
	libxcb-dri2.so.0 => /lib64/libxcb-dri2.so.0 (0x00007f2342313000)
	libxcb-xfixes.so.0 => /lib64/libxcb-xfixes.so.0 (0x00007f234210b000)
	libxcb-render.so.0 => /lib64/libxcb-render.so.0 (0x00007f2341f02000)
	libxcb-shape.so.0 => /lib64/libxcb-shape.so.0 (0x00007f2341cfe000)
	libwayland-server.so.0 => /lib64/libwayland-server.so.0 (0x00007f2341aed000)
	libglapi.so.0 => /lib64/libglapi.so.0 (0x00007f23418c7000)
	libdrm.so.2 => /lib64/libdrm.so.2 (0x00007f23416bb000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f2341497000)
	libXext.so.6 => /lib64/libXext.so.6 (0x00007f2341285000)
	libXdamage.so.1 => /lib64/libXdamage.so.1 (0x00007f2341081000)
	libXfixes.so.3 => /lib64/libXfixes.so.3 (0x00007f2340e7b000)
	libxcb-glx.so.0 => /lib64/libxcb-glx.so.0 (0x00007f2340c64000)
	libXxf86vm.so.1 => /lib64/libXxf86vm.so.1 (0x00007f2340a5e000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f234075b000)
	librt.so.1 => /lib64/librt.so.1 (0x00007f2340553000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f234033d000)
	/lib64/ld-linux-x86-64.so.2 (0x0000003bd2400000)
	libffi.so.6 => /lib64/libffi.so.6 (0x00007f2340134000)
	libXau.so.6 => /lib64/libXau.so.6 (0x00007f233ff30000)
	libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f233fccb000)

Waffle directly links against the window system libraries, such as
libwayland-client, libX11, libxcb. I'd like Waffle to dlopen them, and
I even began working on it once upon a time, but that work never
completed. It just never became high priority for me.

Waffle does not, and *should* not, link to any libGL* libraries, because
Waffle shouldn't depend on any particular GL version installed onto the
system.

It doesn't link to any libGLES, but it unfortunately does link to libGL.
I consider that a bug.  It links to libGL because it contains the GLX
symbols, and I was too lazy at the time to dlsym() the few GLX symbols
that Waffle uses. That should really get fixed.


More information about the waffle mailing list