On Mon, Jul 12, 2021 at 10:26:47AM +0200, Florian Weimer via Gcc-patches wrote: > <limits.h> is included indirectly in the #pragma GCC visibility hidden > block. With glibc 2.34, <limits.h> needs a declaration of the sysconf > function, and including it under hidden visibility turns other calls > to sysconf into hidden references, leading to a linker failure. > > libgomp/ChangeLog: > > * libgomp.h: Include <limits.h>.
If this is because of the config/linux/sem.h #include <limits.h>, I'd prefer not to include that header instead, we rely on being compiled by GCC anyway (and clang/icc support __INT_MAX__ anyway). Or e.g. config/posix/sem.h uses #ifdef HAVE_ATTRIBUTE_VISIBILITY # pragma GCC visibility push(default) #endif #include <semaphore.h> #ifdef HAVE_ATTRIBUTE_VISIBILITY # pragma GCC visibility pop #endif 2021-07-12 Jakub Jelinek <ja...@redhat.com> Florian Weimer <fwei...@redhat.com> * config/linux/sem.h: Don't include limits.h. (SEM_WAIT): Define to -__INT_MAX__ - 1 instead of INT_MIN. --- libgomp/config/linux/sem.h.jj 2021-01-18 07:18:42.360339646 +0100 +++ libgomp/config/linux/sem.h 2021-07-12 15:18:10.121178404 +0200 @@ -33,10 +33,8 @@ #ifndef GOMP_SEM_H #define GOMP_SEM_H 1 -#include <limits.h> /* For INT_MIN */ - typedef int gomp_sem_t; -#define SEM_WAIT INT_MIN +#define SEM_WAIT (-__INT_MAX__ - 1) #define SEM_INC 1 extern void gomp_sem_wait_slow (gomp_sem_t *, int); Jakub