Dear Community, Please let me know if the attached patch is fine.
Thanks, Sangamesh On Tue, Dec 3, 2024 at 11:19 PM swamy sangamesh <swamy.sangam...@gmail.com> wrote: > Hi Eric, > > Thanks for the review. > > I too think removing the define is a better approach and seems these won't > be needed. > From the comment it looks like that these were added long back and > conflicting declarations were their until C23 standard uncovered it. > > If removing define is fine then i can send a final patch. > > Thanks, > Sangamesh > > > > > > On Tue, Dec 3, 2024 at 9:11 AM Eric Gallager <eg...@gwmail.gwu.edu> wrote: > >> On Mon, Dec 2, 2024 at 1:01 PM swamy sangamesh >> <swamy.sangam...@gmail.com> wrote: >> > >> > Dear Community, >> > >> > Please let me know your comment. >> > Or is it more appropriate to have changes with header guard like this ? >> > >> >> I personally think it's better to just remove the define, but if >> you're going to leave it in and guard it with a macro instead, I'd use >> something a bit more specific than just "_AIX". >> >> > --- a/libiberty/getopt.c >> > +++ b/libiberty/getopt.c >> > @@ -25,9 +25,11 @@ >> > ^L >> > /* This tells Alpha OSF/1 not to define a getopt prototype in >> <stdio.h>. >> > Ditto for AIX 3.2 and <stdlib.h>. */ >> > +#ifndef _AIX >> > #ifndef _NO_PROTO >> > # define _NO_PROTO >> > #endif >> > +#endif >> > >> > #ifdef HAVE_CONFIG_H >> > # include <config.h> >> > >> > >> > Thanks, >> > Sangamesh >> > >> > >> > On Thu, Nov 28, 2024 at 11:09 AM Sangamesh Mallayya < >> swamy.sangam...@gmail.com> wrote: >> >> >> >> 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 >> >> >> > >> > >> > -- >> > Thanks & Regards, >> > Sangamesh >> > > > -- > Thanks & Regards, > Sangamesh > -- Thanks & Regards, Sangamesh
0001-aix-Resolve-build-failure-with-default-C23.patch
Description: Binary data