In AIX, build fails while trying to compile gcc/diagnostics/sarif-sink.cc.
Here is the snapshot of the error we are getting.
In file included from /opt/freeware/src/packages/BUILD/gcc/gcc/system.h:46,
from /opt/freeware/src/packages/BUILD/gcc/gcc/diagnostics/sarif-sink.cc:34:
/opt/freeware/lib/gcc/powerpc-ibm-aix7.3.0.0/13/include-fixed/stdio.h:593:12: error: conflicting declaration of C function 'int fgetpos64(FILE*, fpos64_t*)'
593 | extern int fgetpos64(FILE *, fpos64_t *);
| ^~~~~~~~~
This happens when we include sys/types.h before defining _LARGE_FILES.
We can see similar errors with this sample program.
#include <sys/types.h>
#define _LARGE_FILES 1
#include <stdio.h>
int main()
{
return 0;
}
In gcc/diagnostics/sarif-sink.cc we are including config.h after #include <sys/un.h> which intern
including sys/types.h and causing the conflicting errors.
Including config.h before including sys/un.h should solve this error.
The patch is to fix the build break on AIX.
gcc/ChangeLog:
* diagnostics/sarif-sink.cc: Move config.h at the begining.
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+#include "config.h"
+
#ifdef __MINGW32__
#include <winsock2.h>
#include <afunix.h>
#include <sys/socket.h>
#endif
-#include "config.h"
#define INCLUDE_LIST
#define INCLUDE_MAP
#define INCLUDE_STRING