On Thu, Nov 21, 2019 at 4:53 AM Bruno Haible <[email protected]> wrote: > > Hi Christian, > > > I got a compile error with Gnulib on Solaris 11 / gcc: > > > > $ cat test.cc > > #define GNULIB_NAMESPACE gnulib > > #include "gnulib/config.h" > > #include "stdio.h" > > > > $ g++ test.cc -I gnulib/import/ -I ../gnulib/import/ > > gnulib/import/stdio.h:1717:1: error: ‘int vfprintf(std::FILE*, const > > char*, __va_list)’ conflicts with a previous declaration > > _GL_CXXALIASWARN (vfprintf); > > ^ > > In file included from > > /opt/csw/lib/gcc/sparc-sun-solaris2.10/5.5.0/include-fixed/stdio.h:75:0, > > from gnulib/import/stdio.h:43, > > from test.cc:3: > > /opt/csw/lib/gcc/sparc-sun-solaris2.10/5.5.0/include-fixed/iso/stdio_iso.h:223:12: > > note: previous declaration ‘int std::vfprintf(std::FILE*, const char*, > > __va_list)’ > > extern int vfprintf(FILE *_RESTRICT_KYWD, const char *_RESTRICT_KYWD, > > ^ > > In file included from /usr/include/sys/time.h:480:0, > > from gnulib/import/sys/time.h:39, > > from /usr/include/sys/select.h:28, > > from /usr/include/sys/types.h:664, > > from gnulib/import/sys/types.h:39, > > from gnulib/import/stdio.h:58, > > from test.cc:3: > > > > And lots of other functions. > > This should be fixed by the attached patches. > > To investigate this, > - I created a testdir > $ ./gnulib-tool --create-testdir --dir=/tmp/testdir --single-configure > --with-c++-tests `./posix-modules` > - built it, > - ran > $ make -k > - ran > $ make -k 2>&1 | tee log4 > and collected the resulting log files on various platforms. > > A consequence of these patches is that _GL_CXXALIASWARN can only work > reliably on glibc platforms. On other platforms, I had to disable it > on 112 functions.
Thank you, this does work on Solaris for me now. Christian > 2019-11-21 Bruno Haible <[email protected]> > > pthread-mutex: Fix errors in C++ mode. > * m4/pthread-mutex.m4 (gl_PTHREAD_MUTEX): Test whether > pthread_mutexattr_getrobust exists. If not, define > PTHREAD_MUTEXATTR_ROBUST_UNIMPLEMENTED. > * lib/pthread-mutex.c (pthread_mutexattr_getrobust, > pthread_mutexattr_setrobust): Define also if <pthread.h> exists but > PTHREAD_MUTEXATTR_ROBUST_UNIMPLEMENTED. > * modules/pthread-mutex (configure.ac): Compile pthread-mutex.c also > when <pthread.h> exists but pthread_mutexattr_getrobust needs a gnulib > definition. > > 2019-11-21 Bruno Haible <[email protected]> > > pthread-spin: Fix errors in C++ mode. > * m4/pthread-spin.m4 (gl_PTHREAD_SPIN): Mark the pthread_spin_* > functions as nonexistent when <pthread.h> exists but does not define > the pthread_spinlock_t type. > > 2019-11-21 Bruno Haible <[email protected]> > > math tests: Update after 2019-08-28 change. > * tests/test-math-c++.cc (isfinite, isinf, isnan, signbit): Expect a > return type of 'bool', not 'int'. > > 2019-11-21 Bruno Haible <[email protected]> > > Fix various errors in _GL_CXXALIAS_SYS invocations. > * lib/locale.in.h (freelocale): Use _GL_CXXALIAS_SYS_CAST instead of > _GL_CXXALIAS_SYS. > * lib/pthread.in.h (pthread_mutexattr_gettype, > pthread_mutexattr_getrobust): Likewise. > * lib/stdlib.in.h (srandom, initstate, setstate): Likewise. > * lib/sys_socket.in.h (recv, send): Likewise. > * lib/unistd.in.h (getdtablesize): Likewise. > * lib/sys_select.in.h (select): In C++, write 'timeval' instead of > 'struct timeval'. > > 2019-11-21 Bruno Haible <[email protected]> > > Disable many _GL_CXXALIASWARN on all platforms other than glibc > systems. > Reported by Christian Biesinger <[email protected]> in > <https://lists.gnu.org/archive/html/bug-gnulib/2019-11/msg00066.html>. > * lib/fnmatch.in.h (fnmatch): Disable _GL_CXXALIASWARN invocation on > non-glibc systems. > * lib/locale.in.h (localeconv, setlocale): Likewise. > * lib/math.in.h (cbrt, ceil, copysign, exp2, expm1, floor, fma, fmod, > frexp, hypot, ilogb, log, log10, log1p, log2, logb, modf, remainder, > rint, round, trunc): Likewise. > * lib/monetary.in.h (strfmon_l): Likewise. > * lib/pthread.in.h (pthread_mutexattr_getrobust, > pthread_mutexattr_setrobust, pthread_mutex_lock, pthread_spin_init, > pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock, > pthread_spin_destroy): Likewise. > * lib/signal.in.h (raise, signal): Likewise. > * lib/stdio.in.h (fclose, fflush, fgetc, fgets, fopen, fprintf, fputc, > fputs, fread, freopen, fscanf, fseek, ftell, fwrite, getc, getchar, > perror, printf, putc, putchar, puts, remove, rename, scanf, sprintf, > tmpfile, vfprintf, vprintf, vsprintf): Likewise. > * lib/stdlib.in.h (calloc, malloc, mbtowc, realloc, strtod, wctomb): > Likewise. > * lib/string.in.h (memchr, strncat, strpbrk, strstr, strerror): > Likewise. > * lib/time.in.h (mktime, localtime, ctime, strftime): Likewise. > * lib/wchar.in.h (btowc, wctob, mbsinit, mbrtowc, mbrlen, mbsrtowcs, > wcrtomb, wcsrtombs, wmemchr, wmemcmp, wmemcpy, wmemmove, wmemset, > wcslen, wcscpy, wcsncpy, wcscat, wcsncat, wcscmp, wcsncmp, wcscoll, > wcsxfrm, wcschr, wcsrchr, wcscspn, wcsspn, wcspbrk, wcsstr, wcstok, > wcsftime): Likewise. > * lib/wctype.in.h (iswblank, wctrans, towctrans): Likewise. >
