cc'ing since both lists should be included. The m32c has 24-bit pointers and 16-bit size_t. This changes pushing a pointer through a size_t to pushing it through a uintptr_t.
--joel On 11/10/2014 9:36 AM, Joel Sherrill wrote: > 2014-11-10 Joel Sherrill <joel.sherr...@oarcorp.com> > > * src/c++98/mt_allocator.cc: Fix assumption that sizeof(void *) is > equal to sizeof(size_t). The m32c breaks this assumption. > --- > libstdc++-v3/src/c++98/mt_allocator.cc | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/libstdc++-v3/src/c++98/mt_allocator.cc > b/libstdc++-v3/src/c++98/mt_allocator.cc > index 38e17df..04dd8ad 100644 > --- a/libstdc++-v3/src/c++98/mt_allocator.cc > +++ b/libstdc++-v3/src/c++98/mt_allocator.cc > @@ -30,6 +30,7 @@ > #include <ext/concurrence.h> > #include <ext/mt_allocator.h> > #include <cstring> > +#include <stdint.h> > > namespace > { > @@ -74,7 +75,7 @@ namespace > __freelist& freelist = get_freelist(); > { > __gnu_cxx::__scoped_lock sentry(get_freelist_mutex()); > - size_t _M_id = reinterpret_cast<size_t>(__id); > + uintptr_t _M_id = reinterpret_cast<uintptr_t>(__id); > > typedef __gnu_cxx::__pool<true>::_Thread_record _Thread_record; > _Thread_record* __tr = &freelist._M_thread_freelist_array[_M_id - 1]; > @@ -627,7 +628,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > { > __freelist& freelist = get_freelist(); > void* v = __gthread_getspecific(freelist._M_key); > - size_t _M_id = (size_t)v; > + uintptr_t _M_id = (uintptr_t)v; > if (_M_id == 0) > { > { -- Joel Sherrill, Ph.D. Director of Research & Development joel.sherr...@oarcorp.com On-Line Applications Research Ask me about RTEMS: a free RTOS Huntsville AL 35805 Support Available (256) 722-9985