[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Compile error with GNULIB_NAMESPACE on Solaris (stdio.h)
From: |
Christian Biesinger |
Subject: |
Re: Compile error with GNULIB_NAMESPACE on Solaris (stdio.h) |
Date: |
Thu, 21 Nov 2019 16:41:44 -0600 |
On Thu, Nov 21, 2019 at 4:53 AM Bruno Haible <address@hidden> 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 <address@hidden>
>
> 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 <address@hidden>
>
> 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 <address@hidden>
>
> 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 <address@hidden>
>
> 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 <address@hidden>
>
> Disable many _GL_CXXALIASWARN on all platforms other than glibc
> systems.
> Reported by Christian Biesinger <address@hidden> 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.
>