On Wed, 1 Mar 2023 at 16:24, James K. Lowden <jklowden@xxxxxxxxxxxxxxx> wrote: > > On Wed, 1 Mar 2023 06:33:25 +0000 > "Kondreddy, Vinay Kumar via Gcc" <gcc@xxxxxxxxxxx> wrote: > > > /usr/include/sys/time.h:110:16: error: redefinition of 'struct sigset_t' > > typedef struct sigset_t { > > ^ > > In file included from /opt/freeware/lib/gcc/powerpc-ibm-aix7.1.0.0/4.8.3/include-fixed/stdio.h:479:0, > > from /app/amatch/tst/code/src/c/PushOfPayables.c:180: > > /opt/freeware/lib/gcc/powerpc-ibm-aix7.1.0.0/4.8.3/include-fixed/sys/types.h:345:16: note: originally defined here > > The question you're asking is about the C language, not the gcc > compiler. > > > We are using GCC 4.8.3 > > I see no evidence of that. Your "make" output shows: > > > Pro*C/C++: Release 19.0.0.0.0 > > The error says what it means: struct sigset_t is defined twice. It > cannot be, because the compiler cannot serve two masters. That is, > there can be only one definition for each type. > > Based on the directory names, > > /opt/freeware/lib/gcc/powerpc-ibm-aix7.1.0.0/... > and > /usr/include/sys/time.h > > it would seem that copy of sys/types.h was either installed by the Pro*C/C++ compiler, or installed for the sake of that compiler. That's a gcc path, and contains the "fixincludes" version of the system stdlib.h It looks to me like GCC was built against AIX 7.1.0.0 when struct sigset_t was defined in stdlib.h, but now it's being compiled on a different version of AIX where sigset_t is defined in time.h The solution is to re-generate the fixincludes headers, using the mkheader script that I mentioned in my reply. That will sync GCC's "fixed" stdlib.h with the current version of stdlib.h on the machine. > Perhaps the last time your application was compiled, there was only one C compiler installed on the machine. Now, it would seem there are two. > > You need to decide which compiler to use, and which libraries and header files to use with it. > > --jkl