Subject: invalid conversion from void* to __pthread_st*
To: None <tech-toolchain@NetBSD.org>
From: Thomas Klausner <wiz@NetBSD.org>
List: tech-toolchain
Date: 12/26/2005 10:47:00
Hi!

I'm trying to compile mednafen-0.4.1 on NetBSD-3.99.15/i386.
You can get the mednafen source code at:
	http://mednafen.com/

I get a compilation error in src/cdromif.c:

source='cdromif.cpp' object='cdromif.o' libtool=no  depfile='.deps/cdromif.Po' tmpdepfile='.deps/cdromif.TPo'  depmode=gcc3 /bin/sh ../depcomp  c++ -DLOCALEDIR=\"/usr/pkg/share/locale\" -DHAVE_CONFIG_H -I.. -I../include -I../intl -Ifidlib    -I/usr/pkg/include   -I/usr/pkg/include   -I/usr/pkg/include   -I/usr/X11R6/include  -pthread  -DFIDLIB_LINUX -Wall -Winline -fomit-frame-pointer -ffast-math -finline-limit=6000 -I/usr/pkg/include -DGLX_GLXEXT_LEGACY -I/usr/include -I/usr/pkg/include -I/usr/pkg/include/SDL -D_REENTRANT  -O2 -I/usr/pkg/include -DGLX_GLXEXT_LEGACY -I/usr/include -c -o cdromif.o `test -f 'cdromif.cpp' || echo './'`cdromif.cpp
In file included from /usr/include/g++/bits/stl_alloc.h:89,
                 from /usr/include/g++/vector:68,
                 from state.h:53,
                 from git.h:35,
                 from mednafen.h:10,
                 from cdromif.cpp:4:
/usr/include/g++/bits/stl_threads.h: In constructor `
   std::_Refcount_Base::_Refcount_Base(unsigned int)':
/usr/include/g++/bits/stl_threads.h:74: error: invalid conversion from `void*'
   to `__pthread_st*'
/usr/include/g++/bits/stl_threads.h:74: error: invalid conversion from `void*'
   to `__pthread_st*'
/usr/include/g++/bits/stl_threads.h:74: error: invalid conversion from `void*'
   to `__pthread_st**'
/usr/include/g++/bits/stl_threads.h: At global scope:
/usr/include/g++/bits/stl_threads.h: In instantiation of `__gthread_mutex_t std::_Swap_lock_struct<0>::_S_swap_lock':
/usr/include/g++/bits/stl_threads.h:122:   instantiated from here
/usr/include/g++/bits/stl_threads.h:115: error: invalid conversion from `void*'
   to `__pthread_st*'
/usr/include/g++/bits/stl_threads.h:115: error: invalid conversion from `void*'
   to `__pthread_st*'
/usr/include/g++/bits/stl_threads.h:115: error: invalid conversion from `void*'
   to `__pthread_st**'
cdromif.cpp: In function `void CDIF_Deinit()':
cdromif.cpp:200: error: invalid conversion from `void*' to `SRC_STATE*'
*** Error code 1

I'm curious about the errors in the system header file.
Line 74:
   __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
Line 115:
    _Swap_lock_struct<__dummy>::_S_swap_lock = __GTHREAD_MUTEX_INIT;
And line 122 is:
    __gthread_mutex_lock(&_Swap_lock_struct<0>::_S_swap_lock);

Is this a bug in our header files, or is mednafen doing funny things?

Thanks,
 Thomas