Bug 27854

Summary: libOSMesa completely broken - undefined references (Mesa 7.8.1)
Product: Mesa Reporter: Stefan Dirsch <sndirsch>
Component: OtherAssignee: mesa-dev
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: mat
Version: unspecified   
Hardware: Other   
OS: All   
URL: https://bugzilla.novell.com/show_bug.cgi?id=599970
Whiteboard:
i915 platform: i915 features:

Description Stefan Dirsch 2010-04-27 03:43:47 UTC
libOSMesa appears to be completely broken. This is Mesa 7.8.1.

Testcase t.c: (from tulip configure test)

/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char OSMesaCreateContext ();
int
main ()
{
OSMesaCreateContext ();
  ;
  return 0;
}

Compile command:
gcc -DNDEBUG -O3 -funroll-loops -pipe   -DI64 -I/usr/X11R6/include \
-L/usr/lib64 t.c -lOSMesa -I/usr/include -L/usr/lib64 -lGLEW -lGLU -lGL

On 11.2: Produces binary
On Factory:
...
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_create_visual'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_error'
/usr/lib64/libOSMesa.so: undefined reference to `_vbo_InvalidateState'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_resize_framebuffer'
/usr/lib64/libOSMesa.so: undefined reference to `_swrast_choose_line'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_add_renderbuffer'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_create_framebuffer'
/usr/lib64/libOSMesa.so: undefined reference to `_swrast_CreateContext'
/usr/lib64/libOSMesa.so: undefined reference to `_swsetup_DestroyContext'
/usr/lib64/libOSMesa.so: undefined reference to `_swrast_choose_triangle'
/usr/lib64/libOSMesa.so: undefined reference to `_swsetup_CreateContext'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_destroy_visual'
/usr/lib64/libOSMesa.so: undefined reference to
`_mesa_update_framebuffer_visual'
/usr/lib64/libOSMesa.so: undefined reference to `_tnl_DestroyContext'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_enable_2_1_extensions'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_enable_1_4_extensions'
/usr/lib64/libOSMesa.so: undefined reference to `_swsetup_Wakeup'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_reference_renderbuffer'
/usr/lib64/libOSMesa.so: undefined reference to `_swsetup_InvalidateState'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_remove_renderbuffer'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_initialize_context'
/usr/lib64/libOSMesa.so: undefined reference to `_vbo_CreateContext'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_new_renderbuffer'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_meta_init'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_problem'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_enable_1_3_extensions'
/usr/lib64/libOSMesa.so: undefined reference to `_tnl_run_pipeline'
/usr/lib64/libOSMesa.so: undefined reference to `_mesa_get_current_context'
collect2: ld returned 1 exit status
Comment 1 Stefan Dirsch 2010-04-27 03:44:01 UTC
Looks like these symbols are not added to libGL, although they are part of the
static libs (e.g. _mesa_create_visual is defined in libmesa.a, i.e.
src/mesa/main/context.o).

Mesa-7.8.1/src/mesa/drivers/x11> make
/bin/sh ../../../../bin/mklib -o GL -linker 'gcc' -ldflags '' \
                -major 1 -minor 5 -patch 070801 \
                -install ../../../../lib64  \
                -id /usr/lib64/libGL.1.dylib \
                 -lX11 -lXext    -lm -lpthread fakeglx.o glxapi.o xfonts.o
xm_api.o xm_buffer.o xm_dd.o xm_glide.o xm_image.o xm_line.o xm_span.o xm_tri.o
../../../../src/mesa/libmesa.a ../../../../src/mesa/libglapi.a
mklib: Making Linux shared library:  libGL.so.1.5.070801
mklib: Installing libGL.so.1.5.070801 libGL.so.1 libGL.so in ../../../../lib64
Comment 2 Stefan Dirsch 2010-06-25 02:21:14 UTC
Duplicate of Bug #28305? Need to verify that ...
Comment 3 Dan Nicholson 2010-06-25 06:12:37 UTC
(In reply to comment #2)
> Duplicate of Bug #28305? Need to verify that ...

Yes, please try again with 7.8.2. We now always link OSMesa directly against the internal static libs instead of GL. This prevents symbol resolution issues since we build with -fvisibility=hidden by default on gcc.

I'm going to close this assuming it's fixed, but please reopen if not.
Comment 4 Stefan Dirsch 2010-06-25 10:13:13 UTC
Thanks. Looks like this fixes the build of tlprender in tulip.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.