libiberty/getopt.c file is defining _NO_PROTO which causes conflicting declarations for the functions in AIX header files like stdio.h & stdlib.h. These declarations are being considered as errors in C23 which wasn't the case with C17.
Here is the error we get. /gcc_build/./prev-gcc/xgcc -B/gcc_build/./prev-gcc/ -B/home/sangam/install/GCC/powerpc-ibm-aix7.3.3.0/bin/ -B/home/sangam /install/GCC/powerpc-ibm-aix7.3.3.0/bin/ -B/home/sangam/install/GCC/powerpc-ibm-aix7.3.3.0/lib/ -isystem /home/sangam/ins tall/GCC/powerpc-ibm-aix7.3.3.0/include -isystem /home/sangam/install/GCC/powerpc-ibm-aix7.3.3.0/sys-include -fno-check ing -c -DHAVE_CONFIG_H -g -O2 -fno-checking -I. -I/opt/freeware/src/packages/BUILD/gcc/libiberty/../include -W -Wall -W write-strings -Wc++-compat -Wstrict-prototypes -Wshadow=local -pedantic -D_GNU_SOURCE /opt/freeware/src/packages/BUILD/ gcc/libiberty/getopt.c -o getopt.o In file included from /opt/freeware/src/packages/BUILD/gcc/libiberty/getopt.c:45: /gcc_build/prev-gcc/include-fixed/stdio.h:593:12: error: conflicting types for 'fgetpos64'; have 'int(FILE *, fpos64_t *) ' {aka 'int(FILE *, long long int *)'} 593 | extern int fgetpos64(FILE *, fpos64_t *); | ^~~~~~~~~ /gcc_build/prev-gcc/include-fixed/stdio.h:298:17: note: previous declaration of 'fgetpos64' with type 'int(void)' 298 | extern int fgetpos(); | ^~~~~~~ /gcc_build/prev-gcc/include-fixed/stdio.h:594:14: error: conflicting types for 'fopen64'; have 'FILE *(const char *, cons t char *)' 594 | extern FILE *fopen64(const char *, const char *); | ^~~~~~~ /gcc_build/prev-gcc/include-fixed/stdio.h:259:17: note: previous declaration of 'fopen64' with type 'FILE *(void)' 259 | extern FILE * fopen(); | ^~~~~ /gcc_build/prev-gcc/include-fixed/stdio.h:595:14: error: conflicting types for 'freopen64'; have 'FILE *(const char *, co nst char *, FILE *)' 595 | extern FILE *freopen64(const char *, const char *, FILE *); | ^~~~~~~~~ /gcc_build/prev-gcc/include-fixed/stdio.h:260:17: note: previous declaration of 'freopen64' with type 'FILE *(void)' 260 | extern FILE * freopen(); | ^~~~~~~ /gcc_build/prev-gcc/include-fixed/stdio.h:597:12: error: conflicting types for 'fsetpos64'; have 'int(FILE *, const fpos6 4_t *)' {aka 'int(FILE *, const long long int *)'} 597 | extern int fsetpos64(FILE *, const fpos64_t *); | ^~~~~~~~~ /gcc_build/prev-gcc/include-fixed/stdio.h:300:17: note: previous declaration of 'fsetpos64' with type 'int(void)' 300 | extern int fsetpos(); | ^~~~~~~ In file included from /opt/freeware/src/packages/BUILD/gcc/libiberty/getopt.c:216: /gcc_build/prev-gcc/include-fixed/stdlib.h: In function 'strtold': /gcc_build/prev-gcc/include-fixed/stdlib.h:233:30: error: too many arguments to function 'strtod' Compiled with this patch on RHEL8.10 ppc64le as well. --- libiberty/getopt.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/libiberty/getopt.c b/libiberty/getopt.c index 2f7086cc0c8..48736d4db41 100644 --- a/libiberty/getopt.c +++ b/libiberty/getopt.c @@ -23,12 +23,6 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>. - Ditto for AIX 3.2 and <stdlib.h>. */ -#ifndef _NO_PROTO -# define _NO_PROTO -#endif - #ifdef HAVE_CONFIG_H # include <config.h> #endif -- 2.41.0