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.

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 before sys/un.h for non 
__MINGW32__ targets.
---
 gcc/diagnostics/sarif-sink.cc | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gcc/diagnostics/sarif-sink.cc b/gcc/diagnostics/sarif-sink.cc
index 1356919ff80..43a4f1a3d91 100644
--- a/gcc/diagnostics/sarif-sink.cc
+++ b/gcc/diagnostics/sarif-sink.cc
@@ -18,15 +18,19 @@ You should have received a copy of the GNU General Public 
License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
+#ifndef __MINGW32__
+#include "config.h"
+#endif
+
 #ifdef __MINGW32__
 #include <winsock2.h>
 #include <afunix.h>
+#include "config.h"
 #else
 #include <sys/un.h>
 #include <sys/socket.h>
 #endif
 
-#include "config.h"
 #define INCLUDE_LIST
 #define INCLUDE_MAP
 #define INCLUDE_STRING
-- 
2.41.0

Reply via email to