These pthread_mutex_t were obviously meant to be __gthread_mutex_t. See other declarations. Not being that, broke cris-elf build at r264070, restored with this patch. Also regtested on native x86_64-pc-linux-gnu.
I'm not sure know why no other bare-iron target saw this, but perhaps it's because my newlib is a bit dated (...looks... yes, looks like newlib has grown pthreads since then, but that doesn't excuse this flaw). Still, there may be other similar flaws behind #ifdefs, this is just a build-fixing patch. Committed as obvious. libgfortran: * io/async.h: Use __gthread_mutex_t, not pthread_mutex_t. Index: libgfortran/io/async.h =================================================================== --- libgfortran/io/async.h (revision 264070) +++ libgfortran/io/async.h (working copy) @@ -337,8 +337,8 @@ struct adv_cond typedef struct async_unit { - pthread_mutex_t io_lock; /* Lock for doing actual I/O. */ - pthread_mutex_t lock; /* Lock for manipulating the queue structure. */ + __gthread_mutex_t io_lock; /* Lock for doing actual I/O. */ + __gthread_mutex_t lock; /* Lock for manipulating the queue structure. */ bool empty; struct { brgds, H-P