So, the clue is in the last two "notes" from the compiler:
/build/woods/b2/current-amd64-destdir/usr/include/pthread_types.h:170:8: note: '__pthread_cond_st' is not literal because:
170 | struct __pthread_cond_st {
| ^~~~~~~~~~~~~~~~~
/build/woods/b2/current-amd64-destdir/usr/include/pthread_types.h:175:17: note: non-static data member '__pthread_cond_st::ptc_waiters' has volatile type
175 | void *volatile ptc_waiters;
| ^~~~~~~~~~~
These lead me to pthread_types.h, and to the apparent change that may
have introduced the fault (revision 1.25 of pthread_types.h), which
after looking at the full set of changes in 1.25 lead me to find the
definition of __pthread_volatile, and that allowed me to read the
comment about this definition and that suggested the following fix,
which at least allows the compile to continue. I hate C++ and I hate
debugging C++, but here at least I'm grateful someone had already
figured out how to solve the problem and I only had to apply it in one
more place.
If all goes well I should be able to test the build under Xen in the
next few hours.
Index: lib/libpthread/pthread_types.h
===================================================================
RCS file: /cvs/master/m-NetBSD/main/src/lib/libpthread/pthread_types.h,v
retrieving revision 1.25
diff -u -r1.25 pthread_types.h
--- lib/libpthread/pthread_types.h 10 Jun 2020 22:45:15 -0000 1.25
+++ lib/libpthread/pthread_types.h 9 Mar 2021 22:43:05 -0000
@@ -172,7 +172,7 @@
/* Protects the queue of waiters */
__pthread_spin_t ptc_lock;
- void *volatile ptc_waiters;
+ void *__pthread_volatile ptc_waiters;
void *ptc_spare;
pthread_mutex_t *ptc_mutex; /* Current mutex */
--
Greg A. Woods <gwoods%acm.org@localhost>
Kelowna, BC +1 250 762-7675 RoboHack <woods%robohack.ca@localhost>
Planix, Inc. <woods%planix.com@localhost> Avoncote Farms <woods%avoncote.ca@localhost>
Attachment:
pgpvhHn8Cx5MS.pgp
Description: OpenPGP Digital Signature