Bug 27854 - libOSMesa completely broken - undefined references (Mesa 7.8.1)
Summary: libOSMesa completely broken - undefined references (Mesa 7.8.1)
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Other (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: mesa-dev
QA Contact:
URL: https://bugzilla.novell.com/show_bug....
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-04-27 03:43 UTC by Stefan Dirsch
Modified: 2010-06-25 10:13 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

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.