Bootstrap failure on Sparc Solaris2.8

Josh Loeb sundog@mindspring.com
Wed May 28 19:22:00 GMT 2003


Here is the line from the pre-processed eh_alloc.ii file

static __gthread_mutex_t emergency_mutex ={{0,0,0,0,0}, {{{0}}}, 0};

It looks like __gthread_mutex_t is typedef'd from pthread_mutex_t, which on my system (in /usr/include/sys/types.h)
 is defined as follows (note the first struct has four members, as compared to the five zeroes in the first initializer above):

typedef	struct	_pthread_mutex {		/* = mutex_t in synch.h */
	struct {
		uint16_t	__pthread_mutex_flag1;
		uint8_t		__pthread_mutex_flag2;
		uint8_t		__pthread_mutex_ceiling;
		uint32_t 	__pthread_mutex_type;
	} __pthread_mutex_flags;
	union {
		struct {
			uint8_t	__pthread_mutex_pad[8];
		} __pthread_mutex_lock64;
		upad64_t __pthread_mutex_owner64;
	} __pthread_mutex_lock;
	upad64_t __pthread_mutex_data;
} pthread_mutex_t;

I don't know enough about how everything hangs together to know for sure that's what being used, but it looks like a possible culprit.  I'm wondering if I'm doing something wrong at config time or build time.  Note as well, it appears that this is happening during the 64-bit compile of libstdc++.

--Josh

-------Original Message-------
From: Eric Botcazou <ebotcazou@libertysurf.fr>
Sent: 05/27/03 04:39 PM
To: Josh <sundog@mindspring.com>
Subject: Re: Re: Bootstrap failure on Sparc Solaris2.8

> 
> > /* = DEFAULTMUTEX */
> #if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)
> #define PTHREAD_MUTEX_INITIALIZER       {{0, 0, 0, 0, 0}, {{{0}}}, 0}
> #else
> #define PTHREAD_MUTEX_INITIALIZER       {{0, 0, 0, 0, 0}, {{{0}}}, {0}}
> #endif

They look correct (I have the same lines on a Solaris 8 box that
bootstraps 
without a hitch). Weird.

We need to see the preprocessed file build for eh_alloc.cc: could you
issue 
the complete command line for compiling eh_alloc.cc (it is in your first 
message) with an addtional --save-temps argument? It should give you a .i 
file.

Then identify the new form of the line 81

static __gthread_mutex_t emergency_mutex =__GTHREAD_MUTEX_INIT;

and try to identify the error.

-- 
Eric Botcazou
> 



More information about the Gcc mailing list