Skip to content
Snippets Groups Projects
  1. Jan 19, 2024
  2. Jan 18, 2024
    • Gaius Mulley's avatar
      PR modula2/111956 Many powerpc platforms do _not_ have support for IEEE754 · f2872e00
      Gaius Mulley authored
      
      This patch corrects commit
      r14-4149-g81d5ca0b9b8431f1bd7a5ec8a2c94f04bb0cf032 which assummed
      all powerpc platforms would have IEEE754 long double.  The patch
      ensures that cc1gm2 obtains the default IEEE754 long double availability
      from the configure generated tm_defines.  The user command
      line switches -mabi=ibmlongdouble and -mabi=ieeelongdouble are implemented
      to override the configuration defaults.
      
      Bootstrapped on power8 and power9 machines.
      
      gcc/m2/ChangeLog:
      
      	PR modula2/111956
      	* Make-lang.in (host_mc_longreal): Remove.
      	* configure: Regenerate.
      	* configure.ac (M2C_LONGREAL_FLOAT128): Remove.
      	(M2C_LONGREAL_PPC64LE): Remove.
      	* gm2-compiler/M2Options.def (SetIBMLongDouble): New procedure.
      	(GetIBMLongDouble): New procedure function.
      	(SetIEEELongDouble): New procedure.
      	(GetIEEELongDouble): New procedure function.
      	* gm2-compiler/M2Options.mod (SetIBMLongDouble): New procedure.
      	(GetIBMLongDouble): New procedure function.
      	(SetIEEELongDouble): New procedure.
      	(GetIEEELongDouble): New procedure function.
      	(InitializeLongDoubleFlags): New procedure called during
      	module block initialization.
      	* gm2-gcc/m2configure.cc: Remove duplicate includes.
      	(m2configure_M2CLongRealFloat128): Remove.
      	(m2configure_M2CLongRealIBM128): Remove.
      	(m2configure_M2CLongRealLongDouble): Remove.
      	(m2configure_M2CLongRealLongDoublePPC64LE): Remove.
      	(m2configure_TargetIEEEQuadDefault): New function.
      	* gm2-gcc/m2configure.def (M2CLongRealFloat128): Remove.
      	(M2CLongRealIBM128): Remove.
      	(M2CLongRealLongDouble): Remove.
      	(M2CLongRealLongDoublePPC64LE): Remove.
      	(TargetIEEEQuadDefault): New function.
      	* gm2-gcc/m2configure.h (m2configure_M2CLongRealFloat128): Remove.
      	(m2configure_M2CLongRealIBM128): Remove.
      	(m2configure_M2CLongRealLongDouble): Remove.
      	(m2configure_M2CLongRealLongDoublePPC64LE): Remove.
      	(m2configure_TargetIEEEQuadDefault): New function.
      	* gm2-gcc/m2options.h (M2Options_SetIBMLongDouble): New prototype.
      	(M2Options_GetIBMLongDouble): New prototype.
      	(M2Options_SetIEEELongDouble): New prototype.
      	(M2Options_GetIEEELongDouble): New prototype.
      	* gm2-gcc/m2type.cc (build_m2_long_real_node): Re-implement using
      	results of M2Options_GetIBMLongDouble and M2Options_GetIEEELongDouble.
      	* gm2-lang.cc (gm2_langhook_handle_option): Add case
      	OPT_mabi_ibmlongdouble and call M2Options_SetIBMLongDouble.
      	Add case OPT_mabi_ieeelongdouble and call M2Options_SetIEEELongDouble.
      	* gm2config.aci.in: Regenerate.
      	* gm2spec.cc (lang_specific_driver): Remove block defined by
      	M2C_LONGREAL_PPC64LE.
      	Remove case OPT_mabi_ibmlongdouble.
      	Remove case OPT_mabi_ieeelongdouble.
      
      libgm2/ChangeLog:
      
      	PR modula2/111956
      	* Makefile.am (TARGET_LONGDOUBLE_ABI): Remove.
      	* Makefile.in: Regenerate.
      	* libm2cor/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove.
      	* libm2cor/Makefile.in: Regenerate.
      	* libm2iso/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove.
      	* libm2iso/Makefile.in: Regenerate.
      	* libm2log/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove.
      	* libm2log/Makefile.in: Regenerate.
      	* libm2min/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove.
      	* libm2min/Makefile.in: Regenerate.
      	* libm2pim/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove.
      	* libm2pim/Makefile.in: Regenerate.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      f2872e00
  3. Jan 06, 2024
  4. Jan 05, 2024
  5. Dec 23, 2023
  6. Dec 22, 2023
    • Christophe Lyon's avatar
      Allow overriding EXPECT · 05d353b7
      Christophe Lyon authored
      While investigating possible race conditions in the GCC testsuites
      caused by bufferization issues, I wanted to investigate workarounds
      similar to GDB's READ1 [1], and I noticed it was not always possible
      to override EXPECT when running 'make check'.
      
      This patch adds the missing support in various Makefiles.
      
      I was not able to test the patch for all the libraries updated here,
      but I confirmed it works as intended/needed for libstdc++.
      
      libatomic, libitm, libgomp already work as intended because their
      Makefiles do not have:
      MAKEOVERRIDES=
      
      Tested on (native) aarch64-linux-gnu, confirmed the patch introduces
      the behaviour I want in gcc, g++, gfortran and libstdc++.
      
      I updated (but could not test) libgm2, libphobos, libquadmath and
      libssp for consistency since their Makefiles have MAKEOVERRIDES=
      
      libffi, libgo, libsanitizer seem to need a similar update, but they
      are imported from their respective upstream repo, so should not be
      patched here.
      
      [1] https://github.com/bminor/binutils-gdb/blob/master/gdb/testsuite/README#L269
      
      2023-12-21  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	gcc/
      	* Makefile.in: Allow overriding EXEPCT.
      
      	libgm2/
      	* Makefile.am: Allow overriding EXEPCT.
      	* Makefile.in: Regenerate.
      
      	libphobos/
      	* Makefile.am: Allow overriding EXEPCT.
      	* Makefile.in: Regenerate.
      
      	libquadmath/
      	* Makefile.am: Allow overriding EXEPCT.
      	* Makefile.in: Regenerate.
      
      	libssp/
      	* Makefile.am: Allow overriding EXEPCT.
      	* Makefile.in: Regenerate.
      
      	libstdc++-v3/
      	* Makefile.am: Allow overriding EXEPCT.
      	* Makefile.in: Regenerate.
      05d353b7
  7. Dec 14, 2023
  8. Dec 13, 2023
    • Gaius Mulley's avatar
      PR modula2/112921 missing modules shortreal shortstr shortconv convstringshort · 33a3f85e
      Gaius Mulley authored
      
      For completeness here are three SHORTREAL modules which match their
      LONGREAL and REAL counterparts.  The datatype SHORTREAL is a GNU
      extension and these modules were missing.
      
      gcc/m2/ChangeLog:
      
      	PR modula2/112921
      	* gm2-libs-iso/ConvStringShort.def: New file.
      	* gm2-libs-iso/ConvStringShort.mod: New file.
      	* gm2-libs-iso/ShortConv.def: New file.
      	* gm2-libs-iso/ShortConv.mod: New file.
      	* gm2-libs-iso/ShortMath.def: New file.
      	* gm2-libs-iso/ShortMath.mod: New file.
      	* gm2-libs-iso/ShortStr.def: New file.
      	* gm2-libs-iso/ShortStr.mod: New file.
      
      libgm2/ChangeLog:
      
      	PR modula2/112921
      	* libm2iso/Makefile.am (M2DEFS): Add ConvStringShort.def,
      	ShortConv.def, ShortMath.def and ShortStr.def.
      	(M2MODS): Add ConvStringShort.mod,
      	ShortConv.mod, ShortMath.mod and ShortStr.mod.
      	* libm2iso/Makefile.in: Regenerate.
      
      gcc/testsuite/ChangeLog:
      
      	PR modula2/112921
      	* gm2/iso/run/pass/shorttest.mod: New test.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      33a3f85e
    • GCC Administrator's avatar
      Daily bump. · 8a5d6ce0
      GCC Administrator authored
      8a5d6ce0
  9. Dec 12, 2023
    • Gaius Mulley's avatar
      PR modula2/112984 Compiling program with -Wpedantic shows warning in libraries · 01cca857
      Gaius Mulley authored
      
      This patch tidies up the library modules so that -Wpedantic does not
      generate any warnings (apart from two procedures with legitimate infinite
      loops).
      
      gcc/m2/ChangeLog:
      
      	PR modula2/112984
      	* gm2-libs-coroutines/SYSTEM.mod: Remove redundant import of memcpy.
      	* gm2-libs-iso/ClientSocket.mod: Remove redundant import of IOConsts.
      	* gm2-libs-iso/IOChan.mod: Remove redundant import of IOConsts.
      	* gm2-libs-iso/IOLink.mod: Remove redundant import of IOChan and SYSTEM.
      	* gm2-libs-iso/IOResult.mod: Remove redundant import of IOChan.
      	* gm2-libs-iso/LongIO.mod: Remove redundant import of writeString.
      	* gm2-libs-iso/LongWholeIO.mod: Remove redundant import of IOChan.
      	* gm2-libs-iso/M2RTS.mod: Remove redundant import of ADDRESS.
      	* gm2-libs-iso/MemStream.mod: Remove redundant import of ADDRESS.
      	* gm2-libs-iso/RTdata.mod: Remove redundant import of DeviceTablePtr.
      	* gm2-libs-iso/RTfio.mod: Remove redundant import of DeviceTablePtr.
      	* gm2-libs-iso/RTgen.mod: Remove redundant import of DeviceTablePtr.
      	* gm2-libs-iso/RealIO.mod: Remove redundant import of writeString.
      	* gm2-libs-iso/RndFile.mod: Remove redundant import of SYSTEM.
      	* gm2-libs-iso/SYSTEM.mod: Remove redundant import of memcpy.
      	* gm2-libs-iso/ShortWholeIO.mod: Remove redundant import of IOConsts.
      	* gm2-libs-iso/TextIO.mod: Remove redundant import of IOChan.
      	* gm2-libs-iso/TextUtil.mod: Remove redundant import of IOChan.
      	* gm2-libs-iso/WholeIO.mod: Remove redundant import of IOChan.
      	* gm2-libs-log/BitByteOps.mod: Remove redundant import of BYTE.
      	* gm2-libs-log/FileSystem.mod: Remove redundant import of BYTE and ADDRESS.
      	* gm2-libs-log/InOut.mod: Remove redundant import of String.
      	* gm2-libs-log/RealConversions.mod: Remove redundant import of StringToLongreal.
      	* gm2-libs/FIO.mod: Remove redundant import of SIZE.
      	* gm2-libs/FormatStrings.mod: Remove redundant import of String
      	and ConCatChar.
      	* gm2-libs/IO.mod: Remove redundant import of SIZE.
      	* gm2-libs/Indexing.mod: Remove redundant import of ADDRESS.
      	* gm2-libs/M2Dependent.mod: Remove redundant import of SIZE.
      	* gm2-libs/M2RTS.mod: Remove redundant import of ADDRESS.
      	* gm2-libs/OptLib.mod: Remove redundant import of DynamicStrings.
      	* gm2-libs/SYSTEM.mod: Remove redundant import of memcpy.
      	* gm2-libs/StringConvert.mod: Remove redundant import of String.
      
      libgm2/ChangeLog:
      
      	* libm2iso/Makefile.am (libm2iso_la_M2FLAGS): Added line breaks.
      	* libm2iso/Makefile.in: Regenerate.
      	* libm2log/Makefile.am (libm2log_la_M2FLAGS): Added line breaks.
      	* libm2log/Makefile.in: Regenerate.
      	* libm2pim/Makefile.am (libm2pim_la_M2FLAGS): Added line breaks.
      	* libm2pim/Makefile.in: Regenerate.
      
      gcc/testsuite/ChangeLog:
      
      	PR modula2/112984
      	* gm2/switches/pedantic/pass/hello.mod: New test.
      	* gm2/switches/pedantic/pass/switches-pedantic-pass.exp: New test.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      01cca857
  10. Dec 01, 2023
  11. Nov 30, 2023
  12. Nov 14, 2023
  13. Nov 13, 2023
    • Gaius Mulley's avatar
      PR modula2/110779: Add reduced acinclude.m4 to allow interrogation of time features · 00367025
      Gaius Mulley authored
      
      This patch adds libgm2/acinclude.m4 and libgm2/configure.host which
      are reduced versions from libstdc++-v3.  They currently allow for
      discovering the time features available in libc and will be extended
      to discover availability of ieee128 long double support in the near
      future.  These files were also added to provide the functions:
      GLIBCXX_CONFIGURE, GLIBCXX_CHECK_GETTIMEOFDAY and
      GLIBCXX_ENABLE_LIBSTDCXX_TIME called by configure.ac.
      
      libgm2/ChangeLog:
      
      	PR modula2/110779
      	* Makefile.in: Regenerate.
      	* aclocal.m4: Regenerate.
      	* config.h.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac: Remove newline.
      	* libm2cor/Makefile.in: Regenerate.
      	* libm2iso/Makefile.in: Regenerate.
      	* libm2log/Makefile.in: Regenerate.
      	* libm2min/Makefile.in: Regenerate.
      	* libm2pim/Makefile.in: Regenerate.
      	* acinclude.m4: New file.
      	* configure.host: New file.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      00367025
  14. Oct 28, 2023
  15. Oct 27, 2023
    • Gaius Mulley's avatar
      PR modula2/112110: fails to build on freebsd when compiling wrapclock.cc · 32cc0b82
      Gaius Mulley authored
      
      This patch fixes a mangled #if #endif conditional section within
      wrapclock.cc.  The conditional section in wrapclock_timezone
      should return 0 rather than return timezone.
      
      libgm2/ChangeLog:
      
      	PR modula2/112110
      	* libm2iso/wrapclock.cc (timezone): Return 0 if unable
      	to get the timezone from the tm struct.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      32cc0b82
    • Gaius Mulley's avatar
      PR modula2/111530: Build failure on BSD due to getopt_long_only GNU extension dependency · e5f6a5ad
      Gaius Mulley authored
      
      This patch uses the libiberty getopt long functions (wrapped up inside
      libgm2/libm2pim/cgetopt.cc) and only enables this implementation if
      libgm2/configure.ac detects no getopt_long and friends on the target.
      
      gcc/m2/ChangeLog:
      
      	PR modula2/111530
      	* gm2-libs-ch/cgetopt.c (cgetopt_cgetopt_long): Re-format.
      	(cgetopt_cgetopt_long_only): Re-format.
      	(cgetopt_SetOption):  Re-format and assign flag to NULL
      	if name is also NULL.
      	* gm2-libs/GetOpt.def (AddLongOption): Add index parameter
      	and change flag to be a VAR parameter rather than a pointer.
      	(GetOptLong): Re-format.
      	(GetOpt): Correct comment.
      	* gm2-libs/GetOpt.mod: Re-write to rely on cgetopt rather
      	than implement long option creation in GetOpt.
      	* gm2-libs/cgetopt.def (SetOption): has_arg type is INTEGER.
      
      libgm2/ChangeLog:
      
      	PR modula2/111530
      	* Makefile.in: Regenerate.
      	* aclocal.m4: Regenerate.
      	* config.h.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac (AC_CHECK_HEADERS): Include getopt.h.
      	(GM2_CHECK_LIB): getopt_long check.
      	(GM2_CHECK_LIB): getopt_long_only check.
      	* libm2cor/Makefile.in: Regenerate.
      	* libm2iso/Makefile.in: Regenerate.
      	* libm2log/Makefile.in: Regenerate.
      	* libm2min/Makefile.in: Regenerate.
      	* libm2pim/Makefile.in: Regenerate.
      	* libm2pim/cgetopt.cc: Re-write using conditional on configure
      	and long function code from libiberty/getopt.c.
      
      gcc/testsuite/ChangeLog:
      
      	PR modula2/111530
      	* gm2/pimlib/run/pass/testgetopt.mod: New test.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      e5f6a5ad
  16. Oct 26, 2023
  17. Oct 25, 2023
    • Gaius Mulley's avatar
      PR modula2/111955 introduce isnan support to Builtins.def · 8bb655d0
      Gaius Mulley authored
      
      This patch introduces isnan, isnanf and isnanl to Builtins.def.
      It requires fallback functions isnan, isnanf, isnanl to be implemented in
      libgm2/libm2pim/wrapc.cc and gm2-libs-ch/wrapc.c.
      Access to the GCC builtin isnan tree is provided by adding
      an isnan definition and support functions to gm2-gcc/m2builtins.cc.
      
      gcc/m2/ChangeLog:
      
      	PR modula2/111955
      	* gm2-gcc/m2builtins.cc (gm2_isnan_node): New tree.
      	(DoBuiltinIsnan): New function.
      	(m2builtins_BuiltInIsnan): New function.
      	(m2builtins_init): Initialize gm2_isnan_node.
      	(list_of_builtins): Add define for __builtin_isnan.
      	* gm2-libs-ch/wrapc.c (wrapc_isnan): New function.
      	(wrapc_isnanf): New function.
      	(wrapc_isnanl): New function.
      	* gm2-libs/Builtins.def (isnanf): New procedure function.
      	(isnan): New procedure function.
      	(isnanl): New procedure function.
      	* gm2-libs/Builtins.mod:
      	* gm2-libs/wrapc.def (isnan): New function.
      	(isnanf): New function.
      	(isnanl): New function.
      
      libgm2/ChangeLog:
      
      	PR modula2/111955
      	* libm2pim/wrapc.cc (isnan): Export new function.
      	(isnanf): Export new function.
      	(isnanl): Export new function.
      
      gcc/testsuite/ChangeLog:
      
      	PR modula2/111955
      	* gm2/pimlib/run/pass/testnan.mod: New test.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      8bb655d0
  18. Oct 23, 2023
  19. Oct 22, 2023
    • Iain Sandoe's avatar
      Config,Darwin: Allow for configuring Darwin to use embedded runpath. · 6a6d3817
      Iain Sandoe authored
      Recent Darwin versions place contraints on the use of run paths
      specified in environment variables.  This breaks some assumptions
      in the GCC build.
      
      This change allows the user to configure a Darwin build to use
      '@rpath/libraryname.dylib' in library names and then to add an
      embedded runpath to executables (and libraries with dependents).
      
      The embedded runpath is added by default unless the user adds
      '-nodefaultrpaths' to the link line.
      
      For an installed compiler, it means that any executable built with
      that compiler will reference the runtimes installed with the
      compiler (equivalent to hard-coding the library path into the name
      of the library).
      
      During build-time configurations  any "-B" entries will be added to
      the runpath thus the newly-built libraries will be found by exes.
      
      Since the install name is set in libtool, that decision needs to be
      available here (but might also cause dependent ones in Makefiles,
      so we need to export a conditional).
      
      This facility is not available for Darwin 8 or earlier, however the
      existing environment variable runpath does work there.
      
      We default this on for systems where the external DYLD_LIBRARY_PATH
      does not work and off for Darwin 8 or earlier.  For systems that can
      use either method, if the value is unset, we use the default (which
      is currently DYLD_LIBRARY_PATH).
      
      ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Do not add default runpaths to GCC exes
      	when we are building -static-libstdc++/-static-libgcc (the
      	default).
      	* libtool.m4: Add 'enable-darwin-at-runpath'.  Act  on the
      	enable flag to alter Darwin libraries to use @rpath names.
      
      gcc/ChangeLog:
      
      	* aclocal.m4: Regenerate.
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      	* config/darwin.h: Handle Darwin rpaths.
      	* config/darwin.opt: Handle Darwin rpaths.
      	* Makefile.in:  Handle Darwin rpaths.
      
      gcc/ada/ChangeLog:
      
      	* gcc-interface/Makefile.in: Handle Darwin rpaths.
      
      gcc/jit/ChangeLog:
      	* Make-lang.in: Handle Darwin rpaths.
      
      libatomic/ChangeLog:
      
      	* Makefile.am: Handle Darwin rpaths.
      	* Makefile.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      
      libbacktrace/ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      
      libcc1/ChangeLog:
      
      	* configure: Regenerate.
      
      libffi/ChangeLog:
      
      	* Makefile.am: Handle Darwin rpaths.
      	* Makefile.in: Regenerate.
      	* configure: Regenerate.
      
      libgcc/ChangeLog:
      
      	* config/t-slibgcc-darwin: Generate libgcc_s
      	with an @rpath name.
      	* config.host: Handle Darwin rpaths.
      
      libgfortran/ChangeLog:
      
      	* Makefile.am: Handle Darwin rpaths.
      	* Makefile.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths
      
      libgm2/ChangeLog:
      
      	* Makefile.am: Handle Darwin rpaths.
      	* Makefile.in: Regenerate.
      	* aclocal.m4: Regenerate.
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      	* libm2cor/Makefile.am: Handle Darwin rpaths.
      	* libm2cor/Makefile.in: Regenerate.
      	* libm2iso/Makefile.am: Handle Darwin rpaths.
      	* libm2iso/Makefile.in: Regenerate.
      	* libm2log/Makefile.am: Handle Darwin rpaths.
      	* libm2log/Makefile.in: Regenerate.
      	* libm2min/Makefile.am: Handle Darwin rpaths.
      	* libm2min/Makefile.in: Regenerate.
      	* libm2pim/Makefile.am: Handle Darwin rpaths.
      	* libm2pim/Makefile.in: Regenerate.
      
      libgomp/ChangeLog:
      
      	* Makefile.am: Handle Darwin rpaths.
      	* Makefile.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths
      
      libitm/ChangeLog:
      
      	* Makefile.am: Handle Darwin rpaths.
      	* Makefile.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      
      libobjc/ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      
      libphobos/ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      	* libdruntime/Makefile.am: Handle Darwin rpaths.
      	* libdruntime/Makefile.in: Regenerate.
      	* src/Makefile.am: Handle Darwin rpaths.
      	* src/Makefile.in: Regenerate.
      
      libquadmath/ChangeLog:
      
      	* Makefile.am: Handle Darwin rpaths.
      	* Makefile.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      
      libsanitizer/ChangeLog:
      
      	* asan/Makefile.am: Handle Darwin rpaths.
      	* asan/Makefile.in: Regenerate.
      	* configure: Regenerate.
      	* hwasan/Makefile.am: Handle Darwin rpaths.
      	* hwasan/Makefile.in: Regenerate.
      	* lsan/Makefile.am: Handle Darwin rpaths.
      	* lsan/Makefile.in: Regenerate.
      	* tsan/Makefile.am: Handle Darwin rpaths.
      	* tsan/Makefile.in: Regenerate.
      	* ubsan/Makefile.am: Handle Darwin rpaths.
      	* ubsan/Makefile.in: Regenerate.
      
      libssp/ChangeLog:
      
      	* Makefile.am: Handle Darwin rpaths.
      	* Makefile.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      
      libstdc++-v3/ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      	* src/Makefile.am: Handle Darwin rpaths.
      	* src/Makefile.in: Regenerate.
      
      libvtv/ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      
      lto-plugin/ChangeLog:
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      
      zlib/ChangeLog:
      	* configure: Regenerate.
      	* configure.ac: Handle Darwin rpaths.
      6a6d3817
  20. Sep 30, 2023
  21. Sep 29, 2023
    • Gaius Mulley's avatar
      modula2: iso library SysClock.mod and wrapclock.cc fixes. · 5f240871
      Gaius Mulley authored
      
      This patch corrects the C equivalent of m2 LONGINT parameters
      in wrapclock.cc and corrects the SysClock.mod module.
      wrapclock.cc uses a typedef long long int longint_t to match
      m2 LONGINT (rather than unsigned long).  These fixes
      prevent calls to SysClock hanging spinning on an (incorrect)
      large day count from the epoch.
      
      gcc/m2/ChangeLog:
      
      	* gm2-compiler/M2Quads.mod (EndBuildFor): Improve
      	block comments.
      	* gm2-libs-iso/SysClock.mod (ExtractDate): Replace
      	testDays with yearOfDays.  New local variable monthOfDays.
      
      libgm2/ChangeLog:
      
      	* libm2iso/wrapclock.cc (longint_t): New declaration.
      	(GetTimespec): Replace types for sec and nano with
      	longint_t.
      	(SetTimespec): Replace types for sec and nano with
      	longint_t.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      5f240871
  22. Sep 20, 2023
  23. Sep 19, 2023
    • Gaius Mulley's avatar
      PR 108143/modula2 LONGREAL and powerpc64le-linux · 81d5ca0b
      Gaius Mulley authored
      
      This patch introduces a configure for LONGREAL as float128 when
      targetting or hosting cc1gm2 on ppc64le.  It fixes calls to builtins
      and fixes the -fdebug-builtins option.
      
      gcc/ChangeLog:
      
      	* doc/gm2.texi (fdebug-builtins): Correct description.
      
      gcc/m2/ChangeLog:
      
      	* Make-lang.in (host_mc_longreal): Detect hosting on powerpc64le
      	and if so use __float128 for longreal in mc.
      	(MC_ARGS): Append host_mc_longreal.
      	* config-make.in (TEST_TARGET_CPU_DEFAULT): New variable.
      	(TEST_HOST_CPU_DEFAULT): New variable.
      	* configure: Regenerate.
      	* configure.ac (M2C_LONGREAL_FLOAT128): New define set if target
      	is powerpc64le.
      	(M2C_LONGREAL_PPC64LE): New define set if target is powerpc64le.
      	* gm2-compiler/M2GCCDeclare.mod: Correct comment case.
      	* gm2-compiler/M2GenGCC.mod (MaybeDebugBuiltinAlloca): Call
      	SetLastFunction for the builtin function call.
      	(MaybeDebugBuiltinMemcpy): Call SetLastFunction for the builtin
      	function call.
      	(MaybeDebugBuiltinMemset): New procedure function.
      	(MakeCopyUse): Use GNU formatting.
      	(UseBuiltin): Rewrite to check BuiltinExists.
      	(CodeDirectCall): Rewrite to check BuiltinExists and call
      	SetLastFunction.
      	(CodeMakeAdr): Re-format.
      	* gm2-compiler/M2Options.def (SetDebugBuiltins): New procedure.
      	* gm2-compiler/M2Options.mod (SetUninitVariableChecking): Allow
      	"cond" to switch UninitVariableConditionalChecking separately.
      	(SetDebugBuiltins): New procedure.
      	* gm2-compiler/M2Quads.def (BuildFunctionCall): Add parameter
      	ConstExpr.
      	* gm2-compiler/M2Quads.mod (BuildRealProcedureCall): Add parameter
      	to BuildRealFuncProcCall.
      	(BuildRealFuncProcCall): Add ConstExpr parameter.  Pass ConstExpr
      	to BuildFunctionCall.
      	(BuildFunctionCall): Add parameter ConstExpr.  Pass ConstExpr to
      	BuildRealFunctionCall.
      	(BuildConstFunctionCall): Add parameter ConstExpr.  Pass ConstExpr to
      	BuildFunctionCall.
      	(BuildRealFunctionCall): Add parameter ConstExpr.  Pass ConstExpr to
      	BuildRealFuncProcCall.
      	* gm2-compiler/P3Build.bnf (SetOrDesignatorOrFunction): Pass FALSE
      	to BuildFunctionCall.
      	(AssignmentOrProcedureCall): Pass FALSE to BuildFunctionCall.
      	* gm2-compiler/SymbolTable.def (IsProcedureBuiltinAvailable): New
      	procedure function.
      	* gm2-compiler/SymbolTable.mod (CanUseBuiltin): New procedure
      	function.
      	(IsProcedureBuiltinAvailable): New procedure function.
      	* gm2-gcc/m2builtins.cc (DEBUGGING): Undef.
      	(bf_category): New enum type.
      	(struct builtin_function_entry): New field function_avail.
      	(m2builtins_BuiltInMemCopy): Rename from ...
      	(m2builtins_BuiltinMemCopy): ... this.
      	(DoBuiltinMemSet): New function.
      	(m2builtins_BuiltinMemSet): New function.
      	(do_target_support_exists): New function.
      	(target_support_exists): New function.
      	(m2builtins_BuiltinExists): Return true or false.
      	(m2builtins_BuildBuiltinTree): Rename local variables.
      	Replace long_double_type_node with GetM2LongRealType.
      	(m2builtins_init): Use GetM2LongRealType rather than
      	long_double_type_node.
      	* gm2-gcc/m2builtins.def (BuiltInMemCopy): Rename to ...
      	(BuiltinMemCopy): ... this.
      	(BuiltinMemSet): New procedure function.
      	* gm2-gcc/m2builtins.h (m2builtins_BuiltInMemCopy): Rename to ...
      	(m2builtins_BuiltinMemCopy): ... this.
      	(m2builtins_BuiltinMemSet): New procedure function.
      	* gm2-gcc/m2configure.cc (m2configure_M2CLongRealFloat128): New
      	procedure function.
      	(m2configure_M2CLongRealIBM128): New procedure function.
      	(m2configure_M2CLongRealLongDouble): New procedure function.
      	(m2configure_M2CLongRealLongDoublePPC64LE): New procedure function.
      	* gm2-gcc/m2configure.def (M2CLongRealFloat128): New procedure function.
      	(M2CLongRealIBM128): New procedure function.
      	(M2CLongRealLongDouble): New procedure function.
      	(M2CLongRealLongDoublePPC64LE): New procedure function.
      	* gm2-gcc/m2configure.h (m2configure_FullPathCPP): New procedure function.
      	(m2configure_M2CLongRealFloat128): New procedure function.
      	(m2configure_M2CLongRealIBM128): New procedure function.
      	(m2configure_M2CLongRealLongDouble): New procedure function.
      	(m2configure_M2CLongRealLongDoublePPC64LE): New procedure function.
      	* gm2-gcc/m2convert.cc (m2convert_BuildConvert): Use convert_loc.
      	* gm2-gcc/m2options.h (M2Options_SetDebugBuiltins): New function.
      	* gm2-gcc/m2statement.cc (m2statement_BuildAssignmentTree): Set
      	TREE_USED to true.
      	(m2statement_BuildGoto):Set TREE_USED to true.
      	(m2statement_BuildParam): Set TREE_USED to true.
      	(m2statement_BuildBuiltinCallTree): New function.
      	(m2statement_BuildFunctValue): Set TREE_USED to true.
      	* gm2-gcc/m2statement.def (BuildBuiltinCallTree): New procedure function.
      	* gm2-gcc/m2statement.h (m2statement_BuildBuiltinCallTree): New
      	procedure function.
      	* gm2-gcc/m2treelib.cc (m2treelib_DoCall0): Remove spacing.
      	(m2treelib_DoCall1): Remove spacing.
      	(m2treelib_DoCall2): Remove spacing.
      	(m2treelib_DoCall3): Remove spacing.
      	(add_stmt): Rename parameter.
      	* gm2-gcc/m2type.cc (build_set_type): Remove spacing.
      	(build_m2_specific_size_type): Remove spacing.
      	(finish_build_pointer_type): Remove spacing.
      	(m2type_BuildVariableArrayAndDeclare): Remove spacing.
      	(build_m2_short_real_node): Remove spacing.
      	(build_m2_real_node): Remove spacing.
      	(build_m2_long_real_node): Use float128_type_node if
      	M2CLongRealFloat128 is set.
      	(build_m2_ztype_node): Remove spacing.
      	(build_m2_long_int_node): Remove spacing.
      	(build_m2_long_card_node): Remove spacing.
      	(build_m2_short_int_node): Remove spacing.
      	(build_m2_short_card_node): Remove spacing.
      	(build_m2_iso_loc_node): Remove spacing.
      	(m2type_SameRealType): New function.
      	(m2type_InitBaseTypes): Create m2_c_type_node using
      	m2_long_complex_type_node.
      	(m2type_SetAlignment): Tidy up comment.
      	* gm2-gcc/m2type.def (SameRealType):  New procedure function.
      	* gm2-gcc/m2type.h (m2type_SameRealType): New procedure function.
      	* gm2-lang.cc (gm2_langhook_type_for_mode): Build long complex
      	node from m2 language specific long double node.
      	* gm2-libs-log/RealConversions.mod (IsNan): New procedure
      	function.
      	(doPowerOfTen): Re-implement.
      	* gm2-libs/Builtins.mod: Add newline.
      	* gm2-libs/DynamicStrings.def (ReplaceChar): New procedure function.
      	* gm2-libs/DynamicStrings.mod (ReplaceChar): New procedure function.
      	* gm2config.aci.in (M2C_LONGREAL_FLOAT128): New config value.
      	(M2C_LONGREAL_PPC64LE): New config value.
      	* gm2spec.cc (lang_specific_driver): New local variable
      	need_default_mabi set to default value depending upon
      	M2C_LONGREAL_PPC64LE and M2C_LONGREAL_FLOAT128.
      	* lang.opt (Wcase-enum): Moved to correct section.
      	* m2pp.cc (m2pp_real_type): New function.
      	(m2pp_type): Call m2pp_real_type.
      	(m2pp_print_mode): New function.
      	(m2pp_simple_type): Call m2pp_simple_type.
      	(m2pp_float): New function.
      	(m2pp_expression): Call m2pp_float.
      	* mc-boot/GDynamicStrings.cc: Rebuild.
      	* mc-boot/GDynamicStrings.h: Rebuild.
      	* mc-boot/GFIO.cc: Rebuild.
      	* mc-boot/GFIO.h: Rebuild.
      	* mc-boot/GIO.cc: Rebuild.
      	* mc-boot/GRTint.cc: Rebuild.
      	* mc-boot/Gdecl.cc: Rebuild.
      	* mc-boot/GmcOptions.cc: Rebuild.
      	* mc-boot/GmcOptions.h: Rebuild.
      	* mc/decl.mod: Rebuild.
      	* mc/mcOptions.def (getCRealType): New procedure function.
      	(getCLongRealType): New procedure function.
      	(getCShortRealType): New procedure function.
      	* mc/mcOptions.mod (getCRealType): New procedure function.
      	(getCLongRealType): New procedure function.
      	(getCShortRealType): New procedure function.
      
      libgm2/ChangeLog:
      
      	* Makefile.am (TARGET_LONGDOUBLE_ABI): New variable set to
      	-mabi=ieeelongdouble if the target is powerpc64le.
      	(AM_MAKEFLAGS): Append TARGET_LONGDOUBLE_ABI.
      	* Makefile.in: Rebuild.
      	* libm2cor/Makefile.am (AM_MAKEFLAGS): Add CFLAGS_LONGDOUBLE and
      	TARGET_LONGDOUBLE_ABI.
      	(libm2cor_la_CFLAGS): Add TARGET_LONGDOUBLE_ABI.
      	(libm2cor_la_M2FLAGS): Add TARGET_LONGDOUBLE_ABI.
      	* libm2cor/Makefile.in: Rebuild.
      	* libm2iso/Makefile.am (AM_MAKEFLAGS): Add CFLAGS_LONGDOUBLE and
      	TARGET_LONGDOUBLE_ABI.
      	(libm2iso_la_CFLAGS): Add TARGET_LONGDOUBLE_ABI.
      	(libm2iso_la_M2FLAGS): Add TARGET_LONGDOUBLE_ABI.
      	* libm2iso/Makefile.in: Rebuild.
      	* libm2log/Makefile.am (AM_MAKEFLAGS): Add CFLAGS_LONGDOUBLE and
      	TARGET_LONGDOUBLE_ABI.
      	(libm2log_la_CFLAGS): Add TARGET_LONGDOUBLE_ABI.
      	(libm2log_la_M2FLAGS): Add TARGET_LONGDOUBLE_ABI.
      	* libm2log/Makefile.in: Rebuild.
      	* libm2min/Makefile.am (AM_MAKEFLAGS): Add CFLAGS_LONGDOUBLE and
      	TARGET_LONGDOUBLE_ABI.
      	(libm2min_la_CFLAGS): Add TARGET_LONGDOUBLE_ABI.
      	(libm2min_la_M2FLAGS): Add TARGET_LONGDOUBLE_ABI.
      	* libm2min/Makefile.in: Rebuild.
      	* libm2pim/Makefile.am (AM_MAKEFLAGS): Add CFLAGS_LONGDOUBLE and
      	TARGET_LONGDOUBLE_ABI.
      	(libm2pim_la_CFLAGS): Add TARGET_LONGDOUBLE_ABI.
      	(libm2pim_la_M2FLAGS): Add TARGET_LONGDOUBLE_ABI.
      	* libm2pim/Makefile.in: Rebuild.
      
      gcc/testsuite/ChangeLog:
      
      	* gm2/extensions/pass/libc.def: Add spacing.
      	* gm2/pimlib/logitech/run/pass/realconv.mod: Add debugging print.
      	* gm2/switches/uninit-variable-checking/cascade/fail/switches-uninit-variable-checking-cascade-fail.exp:
      	Add -fdebug-builtins flag.
      	* lib/gm2.exp (gm2_target_compile_default): Add
      	-mabi=ieeelongdouble if the target is powerpc.
      	(gm2_link_flags): Add
      	-mabi=ieeelongdouble if the target is powerpc.
      	* gm2/pim/intrinsic/run/pass/cstub.c: New test.
      	* gm2/pim/intrinsic/run/pass/cstub.def: New test.
      	* gm2/pim/intrinsic/run/pass/pim-intrinsic-run-pass.exp: New test.
      	* gm2/pim/intrinsic/run/pass/test.mod: New test.
      	* gm2/pim/run/pass/builtins.mod: New test.
      	* gm2/pim/run/pass/convert1.mod: New test.
      	* gm2/pim/run/pass/longint1.mod: New test.
      	* gm2/pim/run/pass/longint2.mod: New test.
      	* gm2/pim/run/pass/longint3.mod: New test.
      	* gm2/pim/run/pass/longint4.mod: New test.
      	* gm2/pim/run/pass/longint5.mod: New test.
      	* gm2/pim/run/pass/longint6.mod: New test.
      	* gm2/pim/run/pass/longint7.mod: New test.
      	* gm2/pim/run/pass/longint8.mod: New test.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      81d5ca0b
  24. Sep 14, 2023
  25. Sep 13, 2023
    • Gaius Mulley's avatar
      modula2: -Wcase-enum detect singular/plural and use switch during build · 3af2af15
      Gaius Mulley authored
      
      This patch generates a singular or plural message relating to the
      number of enums missing.  Use -Wcase-enum when building of the
      modula-2 libraries and m2/stage2/cc1gm2.
      
      gcc/m2/ChangeLog:
      
      	* Make-lang.in (GM2_FLAGS): Add -Wcase-enum.
      	(GM2_ISO_FLAGS): Add -Wcase-enum.
      	* gm2-compiler/M2CaseList.mod (EnumerateErrors): Issue
      	singular or plural start text prior to the enum list.
      	Remove unused parameter tokenno.
      	(EmitMissingRangeErrors): New procedure.
      	(MissingCaseBounds): Call EmitMissingRangeErrors.
      	(MissingCaseStatementBounds): Call EmitMissingRangeErrors.
      	* gm2-libs-iso/TextIO.mod: Fix spacing.
      
      libgm2/ChangeLog:
      
      	* libm2cor/Makefile.am (libm2cor_la_M2FLAGS): Add
      	-Wcase-enum.
      	* libm2cor/Makefile.in: Regenerate.
      	* libm2iso/Makefile.am (libm2iso_la_M2FLAGS): Add
      	-Wcase-enum.
      	* libm2iso/Makefile.in: Regenerate.
      	* libm2log/Makefile.am (libm2log_la_M2FLAGS): Add
      	-Wcase-enum.
      	* libm2log/Makefile.in: Regenerate.
      	* libm2pim/Makefile.am (libm2pim_la_M2FLAGS): Add
      	-Wcase-enum.
      	* libm2pim/Makefile.in: Regenerate.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      3af2af15
  26. Aug 13, 2023
  27. Aug 12, 2023
    • Gaius Mulley's avatar
      PR modula2/110779 SysClock can not read the clock (Darwin portability fixes) · 63fb0bed
      Gaius Mulley authored
      
      This patch adds corrections to defensively check against glibc functions,
      structures and contains fallbacks.  These fixes were required under Darwin.
      
      gcc/m2/ChangeLog:
      
      	PR modula2/110779
      	* gm2-libs-iso/SysClock.mod (EpochTime): New procedure.
      	(GetClock): Call EpochTime if the C time functions are
      	unavailable.
      	* gm2-libs-iso/wrapclock.def (istimezone): New function
      	definition.
      
      libgm2/ChangeLog:
      
      	PR modula2/110779
      	* configure: Regenerate.
      	* configure.ac: Provide special case test for Darwin cross
      	configuration.
      	(GLIBCXX_CONFIGURE): New statement.
      	(GLIBCXX_CHECK_GETTIMEOFDAY): New statement.
      	(GLIBCXX_ENABLE_LIBSTDCXX_TIME): New statement.
      	* libm2iso/wrapclock.cc: New sys/time.h conditional include.
      	(sys/syscall.h): Conditional include.
      	(unistd.h): Conditional include.
      	(GetTimeRealtime): Re-implement.
      	(SetTimeRealtime): Re-implement.
      	(timezone): Re-implement.
      	(istimezone): New function.
      	(daylight): Re-implement.
      	(isdst): Re-implement.
      	(tzname): Re-implement.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      63fb0bed
  28. Aug 10, 2023
  29. Aug 09, 2023
    • Gaius Mulley's avatar
      PR modula2/110779: libgm2 fix solaris bootstrap check for tm_gmtoff · e3476ed2
      Gaius Mulley authored
      
      This patch defensively checks for every C function and every struct
      used in wrapclock.cc.  It adds return values to GetTimespec and
      SetTimespec to allow the module to return a code representing
      unavailable.
      
      gcc/m2/ChangeLog:
      
      	PR modula2/110779
      	* gm2-libs-iso/SysClock.mod (GetClock): Test GetTimespec
      	return value.
      	(SetClock): Test SetTimespec return value.
      	* gm2-libs-iso/wrapclock.def (GetTimespec): Add integer
      	return type.
      	(SetTimespec): Add integer return type.
      
      libgm2/ChangeLog:
      
      	PR modula2/110779
      	* config.h.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac (AC_CACHE_CHECK): Check for tm_gmtoff field in
      	struct tm.
      	(GM2_CHECK_LIB): Check for daylight, timezone and tzname.
      	* libm2iso/wrapclock.cc (timezone): Guard against absence of
      	struct tm and tm_gmtoff.
      	(daylight): Check for daylight.
      	(timezone): Check for timezone.
      	(isdst): Check for isdst.
      	(tzname): Check for tzname.
      	(GetTimeRealtime): Check for struct timespec.
      	(SetTimeRealtime): Check for struct timespec.
      	(InitTimespec): Check for struct timespec.
      	(KillTimespec): Check for struct timespec.
      	(SetTimespec): Check for struct timespec.
      	(GetTimespec): Check for struct timespec.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      e3476ed2
  30. Aug 08, 2023
  31. Aug 07, 2023
    • Nick Alcock's avatar
      libtool.m4: augment symcode for Solaris 11 · dc17ceb3
      Nick Alcock authored
      This reports common symbols like GNU nm, via a type code of 'C'.
      
      ChangeLog:
      
      	* libtool.m4 (lt_cv_sys_global_symbol_pipe): Augment symcode for
      	Solaris 11.
      
      gcc/ChangeLog:
      
      	* configure: Regenerate.
      
      libatomic/ChangeLog:
      
      	* configure: Regenerate.
      
      libbacktrace/ChangeLog:
      
      	* configure: Regenerate.
      
      libcc1/ChangeLog:
      
      	* configure: Regenerate.
      
      libffi/ChangeLog:
      
      	* configure: Regenerate.
      
      libgfortran/ChangeLog:
      
      	* configure: Regenerate.
      
      libgm2/ChangeLog:
      
      	* configure: Regenerate.
      
      libgomp/ChangeLog:
      
      	* configure: Regenerate.
      
      libitm/ChangeLog:
      
      	* configure: Regenerate.
      
      libobjc/ChangeLog:
      
      	* configure: Regenerate.
      
      libphobos/ChangeLog:
      
      	* configure: Regenerate.
      
      libquadmath/ChangeLog:
      
      	* configure: Regenerate.
      
      libsanitizer/ChangeLog:
      
      	* configure: Regenerate.
      
      libssp/ChangeLog:
      
      	* configure: Regenerate.
      
      libstdc++-v3/ChangeLog:
      
      	* configure: Regenerate.
      
      libvtv/ChangeLog:
      
      	* configure: Regenerate.
      
      lto-plugin/ChangeLog:
      
      	* configure: Regenerate.
      
      zlib/ChangeLog:
      
      	* configure: Regenerate.
      dc17ceb3
    • Alexander von Gluck IV's avatar
      Add support for the haiku operating system · ead5103c
      Alexander von Gluck IV authored
      These are the os support patches we have been grooming and maintaining
      for quite a few years over on git.haiku-os.org.  All of these
      architectures are working and most have been stable for quite some time.
      
      ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Add Haiku to list of ELF OSes
      	* libtool.m4: Update sys_lib_dlsearch_path_spec on Haiku.
      
      gcc/ChangeLog:
      
      	* configure: Regenerate.
      
      libatomic/ChangeLog:
      
      	* configure: Regenerate.
      
      libbacktrace/ChangeLog:
      
      	* configure: Regenerate.
      
      libcc1/ChangeLog:
      
      	* configure: Regenerate.
      
      libffi/ChangeLog:
      
      	* configure: Regenerate.
      
      libgfortran/ChangeLog:
      
      	* configure: Regenerate.
      
      libgm2/ChangeLog:
      
      	* configure: Regenerate.
      
      libgomp/ChangeLog:
      
      	* configure: Regenerate.
      
      libitm/ChangeLog:
      
      	* configure: Regenerate.
      
      libobjc/ChangeLog:
      
      	* configure: Regenerate.
      
      libphobos/ChangeLog:
      
      	* configure: Regenerate.
      
      libquadmath/ChangeLog:
      
      	* configure: Regenerate.
      
      libsanitizer/ChangeLog:
      
      	* configure: Regenerate.
      
      libssp/ChangeLog:
      
      	* configure: Regenerate.
      
      libstdc++-v3/ChangeLog:
      
      	* configure: Regenerate.
      
      libvtv/ChangeLog:
      
      	* configure: Regenerate.
      
      lto-plugin/ChangeLog:
      
      	* configure: Regenerate.
      
      zlib/ChangeLog:
      
      	* configure: Regenerate.
      ead5103c
    • Nick Alcock's avatar
      libtool.m4: fix the NM="/nm/over/here -B/option/with/path" case · f3307109
      Nick Alcock authored
      My previous nm patch handled all cases but one -- if the user set NM in
      the environment to a path which contained an option, libtool's nm
      detection tries to run nm against a copy of nm with the options in it:
      e.g. if NM was set to "nm --blargle", and nm was found in /usr/bin, the
      test would try to run "/usr/bin/nm --blargle /usr/bin/nm --blargle".
      This is unlikely to be desirable: in this case we should run
      "/usr/bin/nm --blargle /usr/bin/nm".
      
      Furthermore, as part of this nm has to detect when the passed-in $NM
      contains a path, and in that case avoid doing a path search itself.
      This too was thrown off if an option contained something that looked
      like a path, e.g. NM="nm -B../prev-gcc"; libtool then tries to run
      "nm -B../prev-gcc nm" which rarely works well (and indeed it looks
      to see whether that nm exists, finds it doesn't, and wrongly concludes
      that nm -p or whatever does not work).
      
      Fix all of these by clipping all options (defined as everything
      including and after the first " -") before deciding whether nm
      contains a path (but not using the clipped value for anything else),
      and then removing all options from the path-modified nm before
      looking to see whether that nm existed.
      
      NM=my-nm now does a path search and runs e.g.
        /usr/bin/my-nm -B /usr/bin/my-nm
      
      NM=/usr/bin/my-nm now avoids a path search and runs e.g.
        /usr/bin/my-nm -B /usr/bin/my-nm
      
      NM="my-nm -p../wombat" now does a path search and runs e.g.
        /usr/bin/my-nm -p../wombat -B /usr/bin/my-nm
      
      NM="../prev-binutils/new-nm -B../prev-gcc" now avoids a path search:
        ../prev-binutils/my-nm -B../prev-gcc -B ../prev-binutils/my-nm
      
      This seems to be all combinations, including those used by GCC bootstrap
      (which, before this commit, fails to bootstrap when configured
      --with-build-config=bootstrap-lto, because the lto plugin is now using
      --export-symbols-regex, which requires libtool to find a working nm,
      while also using -B../prev-gcc to point at the lto plugin associated
      with the GCC just built.)
      
      Regenerate all affected configure scripts.
      
      ChangeLog:
      
      	* libtool.m4 (LT_PATH_NM): Handle user-specified NM with
      	options, including options containing paths.
      
      gcc/ChangeLog:
      
      	* configure: Regenerate.
      
      libatomic/ChangeLog:
      
      	* configure: Regenerate.
      
      libbacktrace/ChangeLog:
      
      	* configure: Regenerate.
      
      libcc1/ChangeLog:
      
      	* configure: Regenerate.
      
      libffi/ChangeLog:
      
      	* configure: Regenerate.
      
      libgfortran/ChangeLog:
      
      	* configure: Regenerate.
      
      libgm2/ChangeLog:
      
      	* configure: Regenerate.
      
      libgomp/ChangeLog:
      
      	* configure: Regenerate.
      
      libitm/ChangeLog:
      
      	* configure: Regenerate.
      
      libobjc/ChangeLog:
      
      	* configure: Regenerate.
      
      libphobos/ChangeLog:
      
      	* configure: Regenerate.
      
      libquadmath/ChangeLog:
      
      	* configure: Regenerate.
      
      libsanitizer/ChangeLog:
      
      	* configure: Regenerate.
      
      libssp/ChangeLog:
      
      	* configure: Regenerate.
      
      libstdc++-v3/ChangeLog:
      
      	* configure: Regenerate.
      
      libvtv/ChangeLog:
      
      	* configure: Regenerate.
      
      lto-plugin/ChangeLog:
      
      	* configure: Regenerate.
      
      zlib/ChangeLog:
      
      	* configure: Regenerate.
      f3307109
    • Nick Alcock's avatar
      libtool.m4: fix nm BSD flag detection · ab422974
      Nick Alcock authored
      Libtool needs to get BSD-format (or MS-format) output out of the system
      nm, so that it can scan generated object files for symbol names for
      -export-symbols-regex support.  Some nms need specific flags to turn on
      BSD-formatted output, so libtool checks for this in its AC_PATH_NM.
      Unfortunately the code to do this has a pair of interlocking flaws:
      
       - it runs the test by doing an nm of /dev/null.  Some platforms
         reasonably refuse to do an nm on a device file, but before now this
         has only been worked around by assuming that the error message has a
         specific textual form emitted by Tru64 nm, and that getting this
         error means this is Tru64 nm and that nm -B would work to produce
         BSD-format output, even though the test never actually got anything
         but an error message out of nm -B.  This is fixable by nm'ing *nm
         itself* (since we necessarily have a path to it).
      
       - the test is entirely skipped if NM is set in the environment, on the
         grounds that the user has overridden the test: but the user cannot
         reasonably be expected to know that libtool wants not only nm but
         also flags forcing BSD-format output.  Worse yet, one such "user" is
         the top-level Cygnus configure script, which neither tests for
         nor specifies any BSD-format flags.  So platforms needing BSD-format
         flags always fail to set them when run in a Cygnus tree, breaking
         -export-symbols-regex on such platforms.  Libtool also needs to
         augment $LD on some platforms, but this is done unconditionally,
         augmenting whatever the user specified: the nm check should do the
         same.
      
         One wrinkle: if the user has overridden $NM, a path might have been
         provided: so we use the user-specified path if there was one, and
         otherwise do the path search as usual.  (If the nm specified doesn't
         work, this might lead to a few extra pointless path searches -- but
         the test is going to fail anyway, so that's not a problem.)
      
      (Tested with NM unset, and set to nm, /usr/bin/nm, my-nm where my-nm is a
      symlink to /usr/bin/nm on the PATH, and /not-on-the-path/my-nm where
      *that* is a symlink to /usr/bin/nm.)
      
      ChangeLog:
      
      	* libtool.m4 (LT_PATH_NM): Try BSDization flags with a user-provided
      	NM, if there is one.  Run nm on itself, not on /dev/null, to avoid
      	errors from nms that refuse to work on non-regular files.  Remove
      	other workarounds for this problem.  Strip out blank lines from the
      	nm output.
      
      fixincludes/ChangeLog:
      
      	* configure: Regenerate.
      
      gcc/ChangeLog:
      
      	* configure: Regenerate.
      
      libatomic/ChangeLog:
      
      	* configure: Regenerate.
      
      libbacktrace/ChangeLog:
      
      	* configure: Regenerate.
      
      libcc1/ChangeLog:
      
      	* configure: Regenerate.
      
      libffi/ChangeLog:
      
      	* configure: Regenerate.
      
      libgfortran/ChangeLog:
      
      	* configure: Regenerate.
      
      libgm2/ChangeLog:
      
      	* configure: Regenerate.
      
      libgomp/ChangeLog:
      
      	* configure: Regenerate.
      
      libitm/ChangeLog:
      
      	* configure: Regenerate.
      
      libobjc/ChangeLog:
      
      	* configure: Regenerate.
      
      libphobos/ChangeLog:
      
      	* configure: Regenerate.
      
      libquadmath/ChangeLog:
      
      	* configure: Regenerate.
      
      libsanitizer/ChangeLog:
      
      	* configure: Regenerate.
      
      libssp/ChangeLog:
      
      	* configure: Regenerate.
      
      libstdc++-v3/ChangeLog:
      
      	* configure: Regenerate.
      
      libvtv/ChangeLog:
      
      	* configure: Regenerate.
      
      lto-plugin/ChangeLog:
      
      	* configure: Regenerate.
      
      zlib/ChangeLog:
      
      	* configure: Regenerate.
      ab422974
    • H.J. Lu's avatar
      GCC: Check if AR works with --plugin and rc · 9c7797a8
      H.J. Lu authored
      AR from older binutils doesn't work with --plugin and rc:
      
      [hjl@gnu-cfl-2 bin]$ touch foo.c
      [hjl@gnu-cfl-2 bin]$ ar --plugin /usr/libexec/gcc/x86_64-redhat-linux/10/liblto_plugin.so rc libfoo.a foo.c
      [hjl@gnu-cfl-2 bin]$ ./ar --plugin /usr/libexec/gcc/x86_64-redhat-linux/10/liblto_plugin.so rc libfoo.a foo.c
      ./ar: no operation specified
      [hjl@gnu-cfl-2 bin]$ ./ar --version
      GNU ar (Linux/GNU Binutils) 2.29.51.0.1.20180112
      Copyright (C) 2018 Free Software Foundation, Inc.
      This program is free software; you may redistribute it under the terms of
      the GNU General Public License version 3 or (at your option) any later version.
      This program has absolutely no warranty.
      [hjl@gnu-cfl-2 bin]$
      
      Check if AR works with --plugin and rc before passing --plugin to AR and
      RANLIB.
      
      ChangeLog:
      
      	* configure: Regenerated.
      	* libtool.m4 (_LT_CMD_OLD_ARCHIVE): Check if AR works with
      	--plugin and rc before enabling --plugin.
      
      config/ChangeLog:
      
      	* gcc-plugin.m4 (GCC_PLUGIN_OPTION): Check if AR works with
      	--plugin and rc before enabling --plugin.
      
      gcc/ChangeLog:
      
      	* configure: Regenerate.
      
      libatomic/ChangeLog:
      
      	* configure: Regenerate.
      
      libbacktrace/ChangeLog:
      
      	* configure: Regenerate.
      
      libcc1/ChangeLog:
      
      	* configure: Regenerate.
      
      libffi/ChangeLog:
      
      	* configure: Regenerate.
      
      libgfortran/ChangeLog:
      
      	* configure: Regenerate.
      
      libgm2/ChangeLog:
      
      	* configure: Regenerate.
      
      libgomp/ChangeLog:
      
      	* configure: Regenerate.
      
      libiberty/ChangeLog:
      
      	* configure: Regenerate.
      
      libitm/ChangeLog:
      
      	* configure: Regenerate.
      
      libobjc/ChangeLog:
      
      	* configure: Regenerate.
      
      libphobos/ChangeLog:
      
      	* configure: Regenerate.
      
      libquadmath/ChangeLog:
      
      	* configure: Regenerate.
      
      libsanitizer/ChangeLog:
      
      	* configure: Regenerate.
      
      libssp/ChangeLog:
      
      	* configure: Regenerate.
      
      libstdc++-v3/ChangeLog:
      
      	* configure: Regenerate.
      
      libvtv/ChangeLog:
      
      	* configure: Regenerate.
      
      lto-plugin/ChangeLog:
      
      	* configure: Regenerate.
      
      zlib/ChangeLog:
      
      	* configure: Regenerate.
      9c7797a8
    • H.J. Lu's avatar
      Sync with binutils: GCC: Pass --plugin to AR and RANLIB · 126f707e
      H.J. Lu authored
      Sync with binutils for building binutils with LTO:
      
      50ad1254d50 GCC: Pass --plugin to AR and RANLIB
      
      Detect GCC LTO plugin.  Pass --plugin to AR and RANLIB to support LTO
      build.
      
      ChangeLog:
      
      	* Makefile.tpl (AR): Add @AR_PLUGIN_OPTION@
      	(RANLIB): Add @RANLIB_PLUGIN_OPTION@.
      	* configure.ac: Include config/gcc-plugin.m4.
      	AC_SUBST AR_PLUGIN_OPTION and RANLIB_PLUGIN_OPTION.
      	* libtool.m4 (_LT_CMD_OLD_ARCHIVE): Pass --plugin to AR and
      	RANLIB if possible.
      	* Makefile.in: Regenerated.
      	* configure: Likewise.
      
      config/ChangeLog:
      
      	* gcc-plugin.m4 (GCC_PLUGIN_OPTION): New.
      
      libiberty/ChangeLog:
      
      	* Makefile.in (AR): Add @AR_PLUGIN_OPTION@
      	(RANLIB): Add @RANLIB_PLUGIN_OPTION@.
      	(configure_deps): Depend on ../config/gcc-plugin.m4.
      	* configure.ac: AC_SUBST AR_PLUGIN_OPTION and
      	RANLIB_PLUGIN_OPTION.
      	* aclocal.m4: Regenerated.
      	* configure: Likewise.
      
      zlib/ChangeLog:
      
      	* configure: Regenerated.
      
      gcc/ChangeLog:
      
      	* configure: Regenerate.
      
      libatomic/ChangeLog:
      
      	* configure: Regenerate.
      
      libbacktrace/ChangeLog:
      
      	* configure: Regenerate.
      
      libcc1/ChangeLog:
      
      	* configure: Regenerate.
      
      libffi/ChangeLog:
      
      	* configure: Regenerate.
      
      libgfortran/ChangeLog:
      
      	* configure: Regenerate.
      
      libgm2/ChangeLog:
      
      	* configure: Regenerate.
      
      libgomp/ChangeLog:
      
      	* configure: Regenerate.
      
      libitm/ChangeLog:
      
      	* configure: Regenerate.
      
      libobjc/ChangeLog:
      
      	* configure: Regenerate.
      
      libphobos/ChangeLog:
      
      	* configure: Regenerate.
      
      libquadmath/ChangeLog:
      
      	* configure: Regenerate.
      
      libsanitizer/ChangeLog:
      
      	* configure: Regenerate.
      
      libssp/ChangeLog:
      
      	* configure: Regenerate.
      
      libstdc++-v3/ChangeLog:
      
      	* configure: Regenerate.
      
      libvtv/ChangeLog:
      
      	* configure: Regenerate.
      
      lto-plugin/ChangeLog:
      
      	* configure: Regenerate.
      126f707e
  32. Aug 06, 2023
  33. Aug 05, 2023
    • Gaius Mulley's avatar
      PR modula2/110779 SysClock can not read the clock · 0826ebd6
      Gaius Mulley authored
      
      This patch completes the implementation of the ISO module
      SysClock.mod.  Three new testcases are provided.  wrapclock.{cc,def}
      are new support files providing access to clock_settime, clock_gettime
      and glibc timezone variables.
      
      gcc/m2/ChangeLog:
      
      	PR modula2/110779
      	* gm2-libs-iso/SysClock.mod: Re-implement using wrapclock.
      	* gm2-libs-iso/wrapclock.def: New file.
      
      libgm2/ChangeLog:
      
      	PR modula2/110779
      	* config.h.in: Regenerate.
      	* configure: Regenerate.
      	* configure.ac (GM2_CHECK_LIB): Check for clock_gettime
      	and clock_settime.
      	* libm2iso/Makefile.am (M2DEFS): Add wrapclock.def.
      	* libm2iso/Makefile.in: Regenerate.
      	* libm2iso/wraptime.cc: Replace HAVE_TIMEVAL with
      	HAVE_STRUCT_TIMEVAL.
      	* libm2iso/wrapclock.cc: New file.
      
      gcc/testsuite/ChangeLog:
      
      	PR modula2/110779
      	* gm2/iso/run/pass/m2date.mod: New test.
      	* gm2/iso/run/pass/testclock.mod: New test.
      	* gm2/iso/run/pass/testclock2.mod: New test.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      0826ebd6
Loading