https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116181
--- Comment #12 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-14 branch has been updated by Gaius Mulley <ga...@gcc.gnu.org>: https://gcc.gnu.org/g:eed230db42b43806a18a6a13b92657f9665367d3 commit r14-10988-geed230db42b43806a18a6a13b92657f9665367d3 Author: Gaius Mulley <gaiusm...@gmail.com> Date: Tue Nov 26 15:52:55 2024 +0000 [PATCH] PR modula2/116181 fix ODR warnings for C/m2 interface library modules This patch fixes many ODR warnings which appear when compiling the interface files found in gcc/m2/*-ch/ and gcc/m2/{pge,mc}-boot directories. gcc/m2/ChangeLog: PR modula2/116181 * gm2-compiler/ppg.mod (FindStr): Initialize j. * gm2-libs-ch/UnixArgs.cc (_M2_UnixArgs_ctor): Replace M2RTS_RegisterModule with M2RTS_RegisterModule_Cstr. * gm2-libs-ch/dtoa.cc (_M2_dtoa_ctor): Ditto. * gm2-libs-ch/ldtoa.cc (ldtoa_strtold): Cast parameter s for strtod. (_M2_ldtoa_ctor): Replace M2RTS_RegisterModule with M2RTS_RegisterModule_Cstr. * gm2-libs-ch/m2rts.h (M2RTS_RegisterModule_Cstr): New define. (M2RTS_RegisterModule): Remove const. * mc-boot-ch/GSelective.c (Selective_FdIsSet): Return bool rather than int. * mc-boot-ch/Gldtoa.cc (ldtoa_strtold): Change const char to void. Cast s before passing as a parameter to strtod. * mc-boot-ch/Glibc.c (tracedb_open): Replace const char with const void. (libc_perror): Replace char with const char. (libc_printf): Replace char with void. (libc_snprintf): Replace char with void. Add const_cast for parameter to index. Add reinterpret_cast for parameter to vsnprintf. (libc_open): Replace first paramter type char with void. Add vararg for the third parameter. * mc-boot-ch/Gm2rtsdummy.cc (M2RTS_RequestDependant): Remove #if 0 code. (m2pim_M2RTS_RegisterModule): Change const char parameters to void (M2RTS_RegisterModule): Ditto. (_M2_M2RTS_init): Remove #if 0 code. (M2RTS_ConstructModules): Ditto. (M2RTS_Terminate): Ditto. (M2RTS_DeconstructModules): Ditto. (M2RTS_Halt): Ditto. * mc-boot-ch/Gtermios.cc (SetFlag): Return bool. * mc-boot-ch/m2rts.h (M2RTS_RegisterModule_Cstr): New define. (M2RTS_RegisterModule): Change const char parameters to void. * mc-boot/Gdecl.cc: Regenerate. * mc/decl.mod (getNextConstExp): Reimplement. * pge-boot/GDynamicStrings.cc: Regenerate. * pge-boot/GDynamicStrings.h: Ditto. * pge-boot/GM2RTS.h (M2RTS_RegisterModule_Cstr): New function. (M2RTS_RegisterModule): Reformat. * pge-boot/GSymbolKey.cc: Regenerate. * pge-boot/GSysExceptions.cc (_M2_SysExceptions_init): Add correct parameters. (_M2_SysExceptions_fini): Ditto. * pge-boot/GUnixArgs.cc (_M2_UnixArgs_ctor::_M2_UnixArgs_ctor): Replace call to M2RTS_RegisterModule with M2RTS_RegisterModuleCstr. * pge-boot/Gerrno.cc (_M2_errno_init): Add correct parameters. (_M2_errno_fini): Ditto. * pge-boot/Gldtoa.cc (ldtoa_strtold): Replace const char with void. Use reinterpret_cast when passing s to strtod. Replace true with TRUE. * pge-boot/Gldtoa.h (ldtoa_strtold): Tidy up. * pge-boot/Glibc.cc (libc_read): Use size_t as the return type. (libc_write): Ditto. (libc_strlen): Ditto. (libc_perror): Replace char with const char. (libc_printf): Replace char to const char. Cast parameter to index using const_cast. (libc_snprintf): Replace char with void. Cast parameter to index using const_cast. (libc_malloc): Replace parameter type with size_t. (libc_memcpy): Replace third parameter type with size_t. (libc_open): Use varargs. * pge-boot/Glibc.h (libc_perror): Add _string_high parameter. * pge-boot/Gpge.cc: Regenerate. * pge-boot/Gtermios.cc (SetFlag): Replace return type with bool. (_M2_termios_init): Add correct parameters. (_M2_termios_fini): Ditto. * pge-boot/m2rts.h (M2RTS_RegisterModule_Cstr): New define. (M2RTS_RegisterModule): Replace const char with void. (cherry picked from commit 9f3b5c2314239e1d3b6e1722e676ea1935bc2836) Signed-off-by: Gaius Mulley <gaiusm...@gmail.com>