Skip to content
Snippets Groups Projects
  1. Dec 17, 2021
  2. Dec 16, 2021
  3. Dec 15, 2021
    • H.J. Lu's avatar
      Sync with binutils: GCC: Pass --plugin to AR and RANLIB · bf8cdd35
      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/
      
      	* gcc-plugin.m4 (GCC_PLUGIN_OPTION): New.
      
      libiberty/
      
      	* 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/
      
      	* configure: Regenerated.
      bf8cdd35
    • Iain Sandoe's avatar
      configure: Account CXXFLAGS in gcc-plugin.m4. · 3e714cc5
      Iain Sandoe authored
      
      We now use a C++ compiler so that we need to process
      CXXFLAGS as well as CFLAGS in the gcc-plugin config
      fragment.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      config/ChangeLog:
      
      	* gcc-plugin.m4: Save and process CXXFLAGS.
      
      gcc/ChangeLog:
      
      	* configure: Regenerate.
      
      libcc1/ChangeLog:
      
      	* configure: Regenerate.
      3e714cc5
  4. Dec 01, 2021
  5. Nov 30, 2021
    • Iain Buclaw's avatar
      d: Import dmd b8384668f, druntime e6caaab9, phobos 5ab9ad256 (v2.098.0-beta.1) · 5fee5ec3
      Iain Buclaw authored
      The D front-end is now itself written in D, in order to build GDC, you
      will need a working GDC compiler (GCC version 9.1 or later).
      
      GCC changes:
      
          - Add support for bootstrapping the D front-end.
      
      These add the required components in order to have a D front-end written
      in D itself.  Because the compiler front-end only depends on the core
      runtime modules, only libdruntime is built for the bootstrap stages.
      
      D front-end changes:
      
          - Import dmd v2.098.0-beta.1.
      
      Druntime changes:
      
          - Import druntime v2.098.0-beta.1.
      
      Phobos changes:
      
          - Import phobos v2.098.0-beta.1.
      
      The jump from v2.076.1 to v2.098.0 covers nearly 4 years worth of
      development on the D programming language and run-time libraries.
      
      ChangeLog:
      
      	* Makefile.def: Add bootstrap to libbacktrace, libphobos, zlib, and
      	libatomic.
      	* Makefile.in: Regenerate.
      	* Makefile.tpl (POSTSTAGE1_HOST_EXPORTS): Fix command for GDC.
      	(STAGE1_CONFIGURE_FLAGS): Add --with-libphobos-druntime-only if
      	target-libphobos-bootstrap.
      	(STAGE2_CONFIGURE_FLAGS): Likewise.
      	* configure: Regenerate.
      	* configure.ac: Add support for bootstrapping D front-end.
      
      config/ChangeLog:
      
      	* acx.m4 (ACX_PROG_GDC): New m4 function.
      
      gcc/ChangeLog:
      
      	* Makefile.in (GDC): New variable.
      	(GDCFLAGS): New variable.
      	* configure: Regenerate.
      	* configure.ac: Add call to ACX_PROG_GDC.  Substitute GDCFLAGS.
      
      gcc/d/ChangeLog:
      
      	* dmd/MERGE: Merge upstream dmd b8384668f.
      	* Make-lang.in (d-warn): Use strict warnings.
      	(DMD_WARN_CXXFLAGS): Remove.
      	(DMD_COMPILE): Remove.
      	(CHECKING_DFLAGS): Define.
      	(WARN_DFLAGS): Define.
      	(ALL_DFLAGS): Define.
      	(DCOMPILE.base): Define.
      	(DCOMPILE): Define.
      	(DPOSTCOMPILE): Define.
      	(DLINKER): Define.
      	(DLLINKER): Define.
      	(D_FRONTEND_OBJS): Add new dmd front-end objects.
      	(D_GENERATED_SRCS): Remove.
      	(D_GENERATED_OBJS): Remove.
      	(D_ALL_OBJS): Remove D_GENERATED_OBJS.
      	(d21$(exeext)): Build using DLLINKER and -static-libphobos.
      	(d.tags): Remove dmd/*.c and dmd/root/*.c.
      	(d.mostlyclean): Remove D_GENERATED_SRCS, d/idgen$(build_exeext),
      	d/impcnvgen$(build_exeext).
      	(D_INCLUDES): Include $(srcdir)/d/dmd/res.
      	(CFLAGS-d/id.o): Remove.
      	(CFLAGS-d/impcnvtab.o): Remove.
      	(d/%.o): Build using DCOMPILE and DPOSTCOMPILE.  Update dependencies
      	from d/dmd/%.c to d/dmd/%.d.
      	(d/idgen$(build_exeext)): Remove.
      	(d/impcnvgen$(build_exeext)): Remove.
      	(d/id.c): Remove.
      	(d/id.h): Remove.
      	(d/impcnvtab.c): Remove.
      	(d/%.dmdgen.o): Remove.
      	(D_SYSTEM_H): Remove.
      	(d/idgen.dmdgen.o): Remove.
      	(d/impcnvgen.dmdgen.o): Remove.
      	* config-lang.in (boot_language): New variable.
      	* d-attribs.cc: Include dmd/expression.h.
      	* d-builtins.cc: Include d-frontend.h.
      	(build_frontend_type): Update for new front-end interface.
      	(d_eval_constant_expression): Likewise.
      	(d_build_builtins_module): Likewise.
      	(maybe_set_builtin_1): Likewise.
      	(d_build_d_type_nodes): Likewise.
      	* d-codegen.cc (d_decl_context): Likewise.
      	(declaration_reference_p): Likewise.
      	(declaration_type): Likewise.
      	(parameter_reference_p): Likewise.
      	(parameter_type): Likewise.
      	(get_array_length): Likewise.
      	(build_delegate_cst): Likewise.
      	(build_typeof_null_value): Likewise.
      	(identity_compare_p): Likewise.
      	(lower_struct_comparison): Likewise.
      	(build_filename_from_loc): Likewise.
      	(build_assert_call): Remove LIBCALL_SWITCH_ERROR.
      	(build_bounds_index_condition): Call LIBCALL_ARRAYBOUNDS_INDEXP on
      	bounds error.
      	(build_bounds_slice_condition): Call LIBCALL_ARRAYBOUNDS_SLICEP on
      	bounds error.
      	(array_bounds_check): Update for new front-end interface.
      	(checkaction_trap_p): Handle CHECKACTION_context.
      	(get_function_type): Update for new front-end interface.
      	(d_build_call): Likewise.
      	* d-compiler.cc: Remove include of dmd/scope.h.
      	(Compiler::genCmain): Remove.
      	(Compiler::paintAsType): Update for new front-end interface.
      	(Compiler::onParseModule): Likewise.
      	* d-convert.cc (convert_expr): Remove call to LIBCALL_ARRAYCAST.
      	(convert_for_rvalue): Update for new front-end interface.
      	(convert_for_assignment): Likewise.
      	(convert_for_condition): Likewise.
      	(d_array_convert): Likewise.
      	* d-diagnostic.cc (error): Remove.
      	(errorSupplemental): Remove.
      	(warning): Remove.
      	(warningSupplemental): Remove.
      	(deprecation): Remove.
      	(deprecationSupplemental): Remove.
      	(message): Remove.
      	(vtip): New.
      	* d-frontend.cc (global): Remove.
      	(Global::_init): Remove.
      	(Global::startGagging): Remove.
      	(Global::endGagging): Remove.
      	(Global::increaseErrorCount): Remove.
      	(Loc::Loc): Remove.
      	(Loc::toChars): Remove.
      	(Loc::equals): Remove.
      	(isBuiltin): Update for new front-end interface.
      	(eval_builtin): Likewise.
      	(getTypeInfoType): Likewise.
      	(inlineCopy): Remove.
      	* d-incpath.cc: Include d-frontend.h.
      	(add_globalpaths): Call d_gc_malloc to allocate Strings.
      	(add_filepaths): Likewise.
      	* d-lang.cc: Include dmd/id.h, dmd/root/file.h, d-frontend.h.  Remove
      	include of dmd/mars.h, id.h.
      	(entrypoint_module): Remove.
      	(entrypoint_root_module): Remove.
      	(deps_write_string): Update for new front-end interface.
      	(deps_write): Likewise.
      	(d_init_options): Call rt_init.  Remove setting global params that are
      	default initialized by the front-end.
      	(d_handle_option): Handle OPT_fcheckaction_, OPT_fdump_c___spec_,
      	OPT_fdump_c___spec_verbose, OPT_fextern_std_, OPT_fpreview,
      	OPT_revert, OPT_fsave_mixins_, and OPT_ftransition.
      	(d_post_options): Propagate dip1021 and dip1000 preview flags to
      	dip25, and flag_diagnostics_show_caret to printErrorContext.
      	(d_add_entrypoint_module): Remove.
      	(d_parse_file): Update for new front-end interface.
      	(d_type_promotes_to): Likewise.
      	(d_types_compatible_p): Likewise.
      	* d-longdouble.cc (CTFloat::zero): Remove.
      	(CTFloat::one): Remove.
      	(CTFloat::minusone): Remove.
      	(CTFloat::half): Remove.
      	* d-system.h (POSIX): Remove.
      	(realpath): Remove.
      	(isalpha): Remove.
      	(isalnum): Remove.
      	(isdigit): Remove.
      	(islower): Remove.
      	(isprint): Remove.
      	(isspace): Remove.
      	(isupper): Remove.
      	(isxdigit): Remove.
      	(tolower): Remove.
      	(_mkdir): Remove.
      	(INT32_MAX): Remove.
      	(INT32_MIN): Remove.
      	(INT64_MIN): Remove.
      	(UINT32_MAX): Remove.
      	(UINT64_MAX): Remove.
      	* d-target.cc: Include calls.h.
      	(target): Remove.
      	(define_float_constants): Remove initialization of snan.
      	(Target::_init): Update for new front-end interface.
      	(Target::isVectorTypeSupported): Likewise.
      	(Target::isVectorOpSupported): Remove cases for unordered operators.
      	(TargetCPP::typeMangle): Update for new front-end interface.
      	(TargetCPP::parameterType): Likewise.
      	(Target::systemLinkage): Likewise.
      	(Target::isReturnOnStack): Likewise.
      	(Target::isCalleeDestroyingArgs): Define.
      	(Target::preferPassByRef): Define.
      	* d-tree.h (d_add_entrypoint_module): Remove.
      	* decl.cc (gcc_attribute_p): Update for new front-end interface.
      	(apply_pragma_crt): Define.
      	(DeclVisitor::visit(PragmaDeclaration *)): Handle pragmas
      	crt_constructor and crt_destructor.
      	(DeclVisitor::visit(TemplateDeclaration *)): Update for new front-end
      	interface.
      	(DeclVisitor::visit): Likewise.
      	(DeclVisitor::finish_vtable): Likewise.
      	(get_symbol_decl): Error if template has more than one nesting
      	context.  Update for new front-end interface.
      	(make_thunk): Update for new front-end interface.
      	(get_vtable_decl): Likewise.
      	* expr.cc (ExprVisitor::visit): Likewise.
      	(build_return_dtor): Likewise.
      	* imports.cc (ImportVisitor::visit): Likewise.
      	* intrinsics.cc: Include dmd/expression.h.  Remove include of
      	dmd/mangle.h.
      	(maybe_set_intrinsic): Update for new front-end interface.
      	* intrinsics.def (INTRINSIC_ROL): Update intrinsic signature.
      	(INTRINSIC_ROR): Likewise.
      	(INTRINSIC_ROR_TIARG): Likewise.
      	(INTRINSIC_TOPREC): Likewise.
      	(INTRINSIC_TOPRECL): Likewise.
      	(INTRINSIC_TAN): Update intrinsic module and signature.
      	(INTRINSIC_ISNAN): Likewise.
      	(INTRINSIC_ISFINITE): Likewise.
      	(INTRINSIC_COPYSIGN): Define intrinsic.
      	(INTRINSIC_COPYSIGNI): Define intrinsic.
      	(INTRINSIC_EXP): Update intrinsic module.
      	(INTRINSIC_EXPM1): Likewise.
      	(INTRINSIC_EXP2): Likewise.
      	(INTRINSIC_LOG): Likewise.
      	(INTRINSIC_LOG2): Likewise.
      	(INTRINSIC_LOG10): Likewise.
      	(INTRINSIC_POW): Likewise.
      	(INTRINSIC_ROUND): Likewise.
      	(INTRINSIC_FLOORF): Likewise.
      	(INTRINSIC_FLOOR): Likewise.
      	(INTRINSIC_FLOORL): Likewise.
      	(INTRINSIC_CEILF): Likewise.
      	(INTRINSIC_CEIL): Likewise.
      	(INTRINSIC_CEILL): Likewise.
      	(INTRINSIC_TRUNC): Likewise.
      	(INTRINSIC_FMIN): Likewise.
      	(INTRINSIC_FMAX): Likewise.
      	(INTRINSIC_FMA): Likewise.
      	(INTRINSIC_VA_ARG): Update intrinsic signature.
      	(INTRINSIC_VASTART): Likewise.
      	* lang.opt (fcheck=): Add alternate aliases for contract switches.
      	(fcheckaction=): New option.
      	(check_action): New Enum and EnumValue entries.
      	(fdump-c++-spec-verbose): New option.
      	(fdump-c++-spec=): New option.
      	(fextern-std=): New option.
      	(extern_stdcpp): New Enum and EnumValue entries
      	(fpreview=): New options.
      	(frevert=): New options.
      	(fsave-mixins): New option.
      	(ftransition=): Update options.
      	* modules.cc (get_internal_fn): Replace Prot with Visibility.
      	(build_internal_fn): Likewise.
      	(build_dso_cdtor_fn): Likewise.
      	(build_module_tree): Remove check for __entrypoint module.
      	* runtime.def (P5): Define.
      	(ARRAYBOUNDS_SLICEP): Define.
      	(ARRAYBOUNDS_INDEXP): Define.
      	(NEWTHROW): Define.
      	(ADCMP2): Remove.
      	(ARRAYCAST): Remove.
      	(SWITCH_STRING): Remove.
      	(SWITCH_USTRING): Remove.
      	(SWITCH_DSTRING): Remove.
      	(SWITCH_ERROR): Remove.
      	* toir.cc (IRVisitor::visit): Update for new front-end interface.
      	(IRVisitor::check_previous_goto): Remove checks for case and default
      	statements.
      	(IRVisitor::visit(SwitchStatement *)): Remove handling of string
      	switch conditions.
      	* typeinfo.cc: Include d-frontend.h.
      	(get_typeinfo_kind): Update for new front-end interface.
      	(make_frontend_typeinfo): Likewise.
      	(TypeInfoVisitor::visit): Likewise.
      	(builtin_typeinfo_p): Likewise.
      	(get_typeinfo_decl): Likewise.
      	(build_typeinfo): Likewise.
      	* types.cc (valist_array_p): Likewise.
      	(make_array_type): Likewise.
      	(merge_aggregate_types): Likewise.
      	(TypeVisitor::visit(TypeBasic *)): Likewise.
      	(TypeVisitor::visit(TypeFunction *)): Likewise.
      	(TypeVisitor::visit(TypeStruct *)): Update comment.
      	* verstr.h: Removed.
      	* d-frontend.h: New file.
      
      gcc/po/ChangeLog:
      
      	* EXCLUDES: Remove d/dmd sources from list.
      
      gcc/testsuite/ChangeLog:
      
      	* gdc.dg/Wcastresult2.d: Update test.
      	* gdc.dg/asm1.d: Likewise.
      	* gdc.dg/asm2.d: Likewise.
      	* gdc.dg/asm3.d: Likewise.
      	* gdc.dg/gdc282.d: Likewise.
      	* gdc.dg/imports/gdc170.d: Likewise.
      	* gdc.dg/intrinsics.d: Likewise.
      	* gdc.dg/pr101672.d: Likewise.
      	* gdc.dg/pr90650a.d: Likewise.
      	* gdc.dg/pr90650b.d: Likewise.
      	* gdc.dg/pr94777a.d: Likewise.
      	* gdc.dg/pr95250.d: Likewise.
      	* gdc.dg/pr96869.d: Likewise.
      	* gdc.dg/pr98277.d: Likewise.
      	* gdc.dg/pr98457.d: Likewise.
      	* gdc.dg/simd1.d: Likewise.
      	* gdc.dg/simd2a.d: Likewise.
      	* gdc.dg/simd2b.d: Likewise.
      	* gdc.dg/simd2c.d: Likewise.
      	* gdc.dg/simd2d.d: Likewise.
      	* gdc.dg/simd2e.d: Likewise.
      	* gdc.dg/simd2f.d: Likewise.
      	* gdc.dg/simd2g.d: Likewise.
      	* gdc.dg/simd2h.d: Likewise.
      	* gdc.dg/simd2i.d: Likewise.
      	* gdc.dg/simd2j.d: Likewise.
      	* gdc.dg/simd7951.d: Likewise.
      	* gdc.dg/torture/gdc309.d: Likewise.
      	* gdc.dg/torture/pr94424.d: Likewise.
      	* gdc.dg/torture/pr94777b.d: Likewise.
      	* lib/gdc-utils.exp (gdc-convert-args): Handle new compiler options.
      	(gdc-convert-test): Handle CXXFLAGS, EXTRA_OBJC_SOURCES, and ARG_SETS
      	test directives.
      	(gdc-do-test): Only import modules in the test run directory.
      	* gdc.dg/pr94777c.d: New test.
      	* gdc.dg/pr96156b.d: New test.
      	* gdc.dg/pr96157c.d: New test.
      	* gdc.dg/simd_ctfe.d: New test.
      	* gdc.dg/torture/simd17344.d: New test.
      	* gdc.dg/torture/simd20052.d: New test.
      	* gdc.dg/torture/simd6.d: New test.
      	* gdc.dg/torture/simd7.d: New test.
      
      libphobos/ChangeLog:
      
      	* libdruntime/MERGE: Merge upstream druntime e6caaab9.
      	* libdruntime/Makefile.am (D_EXTRA_FLAGS): Build libdruntime with
      	-fpreview=dip1000, -fpreview=fieldwise, and -fpreview=dtorfields.
      	(ALL_DRUNTIME_SOURCES): Add DRUNTIME_DSOURCES_STDCXX.
      	(DRUNTIME_DSOURCES): Update list of C binding modules.
      	(DRUNTIME_DSOURCES_STDCXX): Likewise.
      	(DRUNTIME_DSOURCES_LINUX): Likewise.
      	(DRUNTIME_DSOURCES_OPENBSD): Likewise.
      	(DRUNTIME_DISOURCES): Remove __entrypoint.di.
      	* libdruntime/Makefile.in: Regenerated.
      	* libdruntime/__entrypoint.di: Removed.
      	* libdruntime/gcc/deh.d (_d_isbaseof): Update signature.
      	(_d_createTrace): Likewise.
      	(__gdc_begin_catch): Remove reference to the exception.
      	(_d_throw): Increment reference count of thrown object before unwind.
      	(__gdc_personality): Chain exceptions with  Throwable.chainTogether.
      	* libdruntime/gcc/emutls.d: Update imports.
      	* libdruntime/gcc/sections/elf.d: Update imports.
      	(DSO.moduleGroup): Update signature.
      	* libdruntime/gcc/sections/macho.d: Update imports.
      	(DSO.moduleGroup): Update signature.
      	* libdruntime/gcc/sections/pecoff.d: Update imports.
      	(DSO.moduleGroup): Update signature.
      	* src/MERGE: Merge upstream phobos 5ab9ad256.
      	* src/Makefile.am (D_EXTRA_DFLAGS): Add -fpreview=dip1000 and
      	-fpreview=dtorfields flags.
      	(PHOBOS_DSOURCES): Update list of std modules.
      	* src/Makefile.in: Regenerate.
      	* testsuite/lib/libphobos.exp (libphobos-dg-test): Handle assembly
      	compile types.
      	(dg-test): Override.
      	(additional_prunes): Define.
      	(libphobos-dg-prune): Filter any additional_prunes set by tests.
      	* testsuite/libphobos.aa/test_aa.d: Update test.
      	* testsuite/libphobos.druntime/druntime.exp (version_flags): Add
      	-fversion=CoreUnittest.
      	* testsuite/libphobos.druntime_shared/druntime_shared.exp
      	(version_flags): Add -fversion=CoreUnittest -fversion=Shared.
      	* testsuite/libphobos.exceptions/unknown_gc.d: Update test.
      	* testsuite/libphobos.hash/test_hash.d: Update test.
      	* testsuite/libphobos.phobos/phobos.exp (version_flags): Add
      	-fversion=StdUnittest
      	* testsuite/libphobos.phobos_shared/phobos_shared.exp (version_flags):
      	Likewise.
      	* testsuite/libphobos.shared/host.c: Update test.
      	* testsuite/libphobos.shared/load.d: Update test.
      	* testsuite/libphobos.shared/load_13414.d: Update test.
      	* testsuite/libphobos.thread/fiber_guard_page.d: Update test.
      	* testsuite/libphobos.thread/tlsgc_sections.d: Update test.
      	* testsuite/testsuite_flags.in: Add -fpreview=dip1000 to --gdcflags.
      	* testsuite/libphobos.shared/link_mod_collision.d: Removed.
      	* testsuite/libphobos.shared/load_mod_collision.d: Removed.
      	* testsuite/libphobos.betterc/betterc.exp: New test.
      	* testsuite/libphobos.config/config.exp: New test.
      	* testsuite/libphobos.gc/gc.exp: New test.
      	* testsuite/libphobos.imports/imports.exp: New test.
      	* testsuite/libphobos.lifetime/lifetime.exp: New test.
      	* testsuite/libphobos.unittest/unittest.exp: New test.
      5fee5ec3
  6. Sep 20, 2021
  7. Sep 19, 2021
    • Andrew Pinski's avatar
      Fix PR bootstrap/102389: --with-build-config=bootstrap-lto is broken · 68aace44
      Andrew Pinski authored
      So the problem here is that now the lto-plugin requires NM that works
      with LTO to work so we need to pass down NM just like we do for ranlib
      and ar.
      
      OK? Bootstrapped and tested with --with-build-config=bootstrap-lto on aarch64-linux-gnu.
      Note you need to use binutils 2.35 or later too due to ttps://sourceware.org/PR25355
      (I will submit another patch to improve the installation instructions too).
      
      config/ChangeLog:
      
      	PR bootstrap/102389
      	* bootstrap-lto-lean.mk: Handle NM like RANLIB AND AR.
      	* bootstrap-lto.mk: Likewise.
      68aace44
  8. Aug 19, 2021
  9. Aug 18, 2021
    • Iain Sandoe's avatar
      configure: Allow host fragments to react to --enable-host-shared. · d39367fa
      Iain Sandoe authored
      
      This makes the host_shared value available to host makefile
      fragments.
      
      It uses this to adjust Darwin's mdynamic-no-pic in the case that
      shared host resources are required.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      ChangeLog:
      
      	* Makefile.in: Regenerate.
      	* Makefile.tpl: Make the state of the configured host
      	shared flag available to makefile fragements.
      
      config/ChangeLog:
      
      	* mh-darwin: Require a non-shared host configuration to
      	enable  mdynamic-no-pic where that is supported.
      d39367fa
  10. Jul 10, 2021
  11. Jul 09, 2021
    • Iain Sandoe's avatar
      Darwin, config: Revise host config fragment. · 54258e22
      Iain Sandoe authored
      
      There were two uses for the Darwin host config fragment:
      
      The first is to arrange for targets that support mdynamic-no-pic
      to be built with that enabled (since it makes a significant
      difference to the compiler performance).  We can be more specific
      in the application of this, since it only applies to 32b hosts
      plus powerpc64-darwin9.
      
      The second was to work around a tool bug where -fno-PIE was not
      propagated to the link stage.  This second use is redundant,
      since the buggy toolchain cannot bootstrap current GCC sources
      anyway.
      
      This makes the host fragment more specific and reduces the number
      of toolchains for which it is included which reduces clutter in
      configure lines.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      config/ChangeLog:
      
      	* mh-darwin: Make this specific to handling the
      	mdynamic-no-pic case.
      
      ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Adjust cases for which it is necessary to
      	include the Darwin host config fragment.
      54258e22
  12. Jun 15, 2021
  13. Jun 14, 2021
  14. May 19, 2021
  15. May 18, 2021
  16. May 04, 2021
  17. May 03, 2021
    • H.J. Lu's avatar
      GCC_CET_HOST_FLAGS: Check if host supports multi-byte NOPs · fd7eb4bc
      H.J. Lu authored
      Sync with binutils for PR binutils/27397.  Check if host supports
      multi-byte NOPs before enabling CET on host.
      
      config/
      
      	PR bootstrap/99703
      	* cet.m4 (GCC_CET_HOST_FLAGS): Check if host supports multi-byte
      	NOPs.
      
      libiberty/
      
      	PR bootstrap/99703
      	* configure: Regenerated.
      fd7eb4bc
  18. Apr 14, 2021
  19. Apr 13, 2021
    • Martin Storsjö's avatar
      mh-mingw: Set __USE_MINGW_ACCESS in missed C++ flags variables · 89e95ad2
      Martin Storsjö authored
      This is similar to what was done in
      eea4e2ff (where it was added to
      STAGE*_CXXFLAGS), but this adds the flag to the CXXFLAGS and
      BOOT_CXXFLAGS variables too (as it's already added to CFLAGS and
      BOOT_CFLAGS).
      
      2021-04-09  Martin Storsjö  <martin@martin.st>
      
      config/ChangeLog:
      	* mh-mingw: Set __USE_MINGW_ACCESS in missed C++ flags
      	variables
      89e95ad2
  20. Jan 06, 2021
  21. Jan 05, 2021
    • Rainer Orth's avatar
      build: libcody: Link with -lsocket -lnsl if necessary [PR98316] · a20893cf
      Rainer Orth authored
      With the introduction of C++20 modules and libcody, cc1plus and
      cc1objplus gained a dependency on the socket functions.  Before those
      were merged into libc in Solaris 11.4, one needed to link with -lsocket -lnsl
      on Solaris, so that merge broke the Solaris 11.3 build.
      
      While we already have 4 different checks for those libraries in the
      tree, I decided to import autoconf-archive's AX_LIB_SOCKET_NSL macro
      instead.  At the same time, the patch only links libcody and the
      networking libs where needed (cc1plus, cc1objplus).
      
      Bootstrapped without regressions on i386-pc-solaris2.11 (Solaris 11.3
      and 11.4), sparc-sun-solaris2.11, and x86_64-pc-linux-gnu.
      
      2020-12-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
      
      	c++tools:
      	PR c++/98316
      	* configure.ac: Include ../config/ax_lib_socket_nsl.m4.
      	(NETLIBS): Determine using AX_LIB_SOCKET_NSL.
      	* configure: Regenerate.
      	* Makefile.in (NETLIBS): Define.
      	(g++-mapper-server$(exeext)): Add $(NETLIBS).
      
      	gcc/objcp:
      	PR c++/98316
      	* Make-lang.in (cc1objplus$(exeext)): Add $(CODYLIB), $(NETLIBS).
      
      	gcc/cp:
      	PR c++/98316
      	* Make-lang.in (cc1plus$(exeext)): Add $(CODYLIB), $(NETLIBS).
      
      	gcc:
      	PR c++/98316
      	* configure.ac (NETLIBS): Determine using AX_LIB_SOCKET_NSL.
      	* aclocal.m4, configure: Regenerate.
      	* Makefile.in (NETLIBS): Define.
      	(BACKEND): Remove $(CODYLIB).
      
      	config:
      	PR c++/98316
      	* ax_lib_socket_nsl.m4: Import from autoconf-archive.
      a20893cf
  22. Jan 04, 2021
  23. Jan 03, 2021
    • Mike Frysinger's avatar
      config: import pkg.m4 from pkg-config · 3335c9f9
      Mike Frysinger authored
      We use this in the sim tree currently.  Rather than require people to
      have pkg-config installed, include it in the config/ dir.
      
      config/ChangeLog:
      
      	* pkg.m4: New file from pkg-config-0.29.2.
      3335c9f9
  24. Nov 26, 2020
  25. Nov 25, 2020
    • Matthew Malcomson's avatar
      libsanitizer: mid-end: Introduce stack variable handling for HWASAN · 0854b584
      Matthew Malcomson authored
      Handling stack variables has three features.
      
      1) Ensure HWASAN required alignment for stack variables
      
      When tagging shadow memory, we need to ensure that each tag granule is
      only used by one variable at a time.
      
      This is done by ensuring that each tagged variable is aligned to the tag
      granule representation size and also ensure that the end of each
      object is aligned to ensure the start of any other data stored on the
      stack is in a different granule.
      
      This patch ensures the above by forcing the stack pointer to be aligned
      before and after allocating any stack objects. Since we are forcing
      alignment we also use `align_local_variable` to ensure this new alignment
      is advertised properly through SET_DECL_ALIGN.
      
      2) Put tags into each stack variable pointer
      
      Make sure that every pointer to a stack variable includes a tag of some
      sort on it.
      
      The way tagging works is:
        1) For every new stack frame, a random tag is generated.
        2) A base register is formed from the stack pointer value and this
           random tag.
        3) References to stack variables are now formed with RTL describing an
           offset from this base in both tag and value.
      
      The random tag generation is handled by a backend hook.  This hook
      decides whether to introduce a random tag or use the stack background
      based on the parameter hwasan-random-frame-tag.  Using the stack
      background is necessary for testing and bootstrap.  It is necessary
      during bootstrap to avoid breaking the `configure` test program for
      determining stack direction.
      
      Using the stack background means that every stack frame has the initial
      tag of zero and variables are tagged with incrementing tags from 1,
      which also makes debugging a bit easier.
      
      Backend hooks define the size of a tag, the layout of the HWASAN shadow
      memory, and handle emitting the code that inserts and extracts tags from a
      pointer.
      
      3) For each stack variable, tag and untag the shadow stack on function
         prologue and epilogue.
      
      On entry to each function we tag the relevant shadow stack region for
      each stack variable. This stack region is tagged to match the tag added to
      each pointer to that variable.
      
      This is the first patch where we use the HWASAN shadow space, so we need
      to add in the libhwasan initialisation code that creates this shadow
      memory region into the binary we produce.  This instrumentation is done
      in `compile_file`.
      
      When exiting a function we need to ensure the shadow stack for this
      function has no remaining tags.  Without clearing the shadow stack area
      for this stack frame, later function calls could get false positives
      when those later function calls check untagged areas (such as parameters
      passed on the stack) against a shadow stack area with left-over tag.
      
      Hence we ensure that the entire stack frame is cleared on function exit.
      
      config/ChangeLog:
      
      	* bootstrap-hwasan.mk: Disable random frame tags for stack-tagging
      	during bootstrap.
      
      gcc/ChangeLog:
      
      	* asan.c (struct hwasan_stack_var): New.
      	(hwasan_sanitize_p): New.
      	(hwasan_sanitize_stack_p): New.
      	(hwasan_sanitize_allocas_p): New.
      	(initialize_sanitizer_builtins): Define new builtins.
      	(ATTR_NOTHROW_LIST): New macro.
      	(hwasan_current_frame_tag): New.
      	(hwasan_frame_base): New.
      	(stack_vars_base_reg_p): New.
      	(hwasan_maybe_init_frame_base_init): New.
      	(hwasan_record_stack_var): New.
      	(hwasan_get_frame_extent): New.
      	(hwasan_increment_frame_tag): New.
      	(hwasan_record_frame_init): New.
      	(hwasan_emit_prologue): New.
      	(hwasan_emit_untag_frame): New.
      	(hwasan_finish_file): New.
      	(hwasan_truncate_to_tag_size): New.
      	* asan.h (hwasan_record_frame_init): New declaration.
      	(hwasan_record_stack_var): New declaration.
      	(hwasan_emit_prologue): New declaration.
      	(hwasan_emit_untag_frame): New declaration.
      	(hwasan_get_frame_extent): New declaration.
      	(hwasan_maybe_enit_frame_base_init): New declaration.
      	(hwasan_frame_base): New declaration.
      	(stack_vars_base_reg_p): New declaration.
      	(hwasan_current_frame_tag): New declaration.
      	(hwasan_increment_frame_tag): New declaration.
      	(hwasan_truncate_to_tag_size): New declaration.
      	(hwasan_finish_file): New declaration.
      	(hwasan_sanitize_p): New declaration.
      	(hwasan_sanitize_stack_p): New declaration.
      	(hwasan_sanitize_allocas_p): New declaration.
      	(HWASAN_TAG_SIZE): New macro.
      	(HWASAN_TAG_GRANULE_SIZE): New macro.
      	(HWASAN_STACK_BACKGROUND): New macro.
      	* builtin-types.def (BT_FN_VOID_PTR_UINT8_PTRMODE): New.
      	* builtins.def (DEF_SANITIZER_BUILTIN): Enable for HWASAN.
      	* cfgexpand.c (align_local_variable): When using hwasan ensure
      	alignment to tag granule.
      	(align_frame_offset): New.
      	(expand_one_stack_var_at): For hwasan use tag offset.
      	(expand_stack_vars): Record stack objects for hwasan.
      	(expand_one_stack_var_1): Record stack objects for hwasan.
      	(init_vars_expansion): Initialise hwasan state.
      	(expand_used_vars): Emit hwasan prologue and generate hwasan epilogue.
      	(pass_expand::execute): Emit hwasan base initialization if needed.
      	* doc/tm.texi (TARGET_MEMTAG_TAG_SIZE,TARGET_MEMTAG_GRANULE_SIZE,
      	TARGET_MEMTAG_INSERT_RANDOM_TAG,TARGET_MEMTAG_ADD_TAG,
      	TARGET_MEMTAG_SET_TAG,TARGET_MEMTAG_EXTRACT_TAG,
      	TARGET_MEMTAG_UNTAGGED_POINTER): Document new hooks.
      	* doc/tm.texi.in (TARGET_MEMTAG_TAG_SIZE,TARGET_MEMTAG_GRANULE_SIZE,
      	TARGET_MEMTAG_INSERT_RANDOM_TAG,TARGET_MEMTAG_ADD_TAG,
      	TARGET_MEMTAG_SET_TAG,TARGET_MEMTAG_EXTRACT_TAG,
      	TARGET_MEMTAG_UNTAGGED_POINTER): Document new hooks.
      	* explow.c (get_dynamic_stack_base): Take new `base` argument.
      	* explow.h (get_dynamic_stack_base): Take new `base` argument.
      	* sanitizer.def (BUILT_IN_HWASAN_INIT): New.
      	(BUILT_IN_HWASAN_TAG_MEM): New.
      	* target.def (target_memtag_tag_size,target_memtag_granule_size,
      	target_memtag_insert_random_tag,target_memtag_add_tag,
      	target_memtag_set_tag,target_memtag_extract_tag,
      	target_memtag_untagged_pointer): New hooks.
      	* targhooks.c (HWASAN_SHIFT): New.
      	(HWASAN_SHIFT_RTX): New.
      	(default_memtag_tag_size): New default hook.
      	(default_memtag_granule_size): New default hook.
      	(default_memtag_insert_random_tag): New default hook.
      	(default_memtag_add_tag): New default hook.
      	(default_memtag_set_tag): New default hook.
      	(default_memtag_extract_tag): New default hook.
      	(default_memtag_untagged_pointer): New default hook.
      	* targhooks.h (default_memtag_tag_size): New default hook.
      	(default_memtag_granule_size): New default hook.
      	(default_memtag_insert_random_tag): New default hook.
      	(default_memtag_add_tag): New default hook.
      	(default_memtag_set_tag): New default hook.
      	(default_memtag_extract_tag): New default hook.
      	(default_memtag_untagged_pointer): New default hook.
      	* toplev.c (compile_file): Call hwasan_finish_file when finished.
      0854b584
    • Matthew Malcomson's avatar
      libsanitizer: Add option to bootstrap using HWASAN · 170e618e
      Matthew Malcomson authored
      This is an analogous option to --bootstrap-asan to configure.  It allows
      bootstrapping GCC using HWASAN.
      
      For the same reasons as for ASAN we have to avoid using the HWASAN
      sanitizer when compiling libiberty and the lto-plugin.
      
      Also add a function to query whether -fsanitize=hwaddress has been
      passed.
      
      ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Add --bootstrap-hwasan option.
      
      config/ChangeLog:
      
      	* bootstrap-hwasan.mk: New file.
      
      gcc/ChangeLog:
      
      	* doc/install.texi: Document new option.
      
      libiberty/ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Avoid using sanitizer.
      
      lto-plugin/ChangeLog:
      
      	* Makefile.am: Avoid using sanitizer.
      	* Makefile.in: Regenerate.
      170e618e
  26. Sep 10, 2020
  27. Sep 09, 2020
    • Rainer Orth's avatar
      config: Sync largefile.m4 from binutils-gdb · 0d7d5213
      Rainer Orth authored
      The following patch improves handling of largefile support with procfs
      on 32-bit Solaris.  It has already been approved and installed for
      binutils-gdb in the thread starting at
      
      	[PATCH] Unify Solaris procfs and largefile handling
              https://sourceware.org/pipermail/gdb-patches/2020-June/169977.html
      
      I'm syncing the config/largefile.m4 part to gcc now which is the master
      for config.  Since ACX_LARGEFILE isn't used anywhere in the gcc tree,
      I'm installing it as obvious.
      
      2020-09-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
      
      	config:
      	* largefile.m4: Sync from binutils-gdb.
      0d7d5213
  28. Aug 21, 2020
  29. Aug 20, 2020
  30. Jul 31, 2020
  31. Jul 30, 2020
    • H.J. Lu's avatar
      Require CET support only for the final GCC build · 4712bde3
      H.J. Lu authored
      With --enable-cet, require CET support only for the final GCC build.
      Don't enable CET without CET support for non-bootstrap build, in stage1
      nor for build support.
      
      config/
      
      	PR bootstrap/96202
      	* cet.m4 (GCC_CET_HOST_FLAGS): Don't enable CET without CET
      	support in stage1 nor for build support.
      
      gcc/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      
      libbacktrace/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      
      libcc1/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      
      libcpp/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      
      libdecnumber/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      
      libiberty/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      
      lto-plugin/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      4712bde3
  32. May 30, 2020
  33. May 29, 2020
    • H.J. Lu's avatar
      Avoid nested save_CFLAGS and save_LDFLAGS · 9051b548
      H.J. Lu authored
      Avoid nested save_CFLAGS and save_LDFLAGS by replacing save_CFLAGS and
      save_LDFLAGS with cet_save_CFLAGS and cet_save_LDFLAGS in cet.m4.
      
      config/
      
      	PR bootstrap/95413
      	* cet.m4: Replace save_CFLAGS and save_LDFLAGS with
      	cet_save_CFLAGS and cet_save_LDFLAGS.
      
      gcc/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libatomic/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libbacktrace/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libcc1/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libcpp/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libdecnumber/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libgcc/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libgfortran/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libgomp/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libiberty/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libitm/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libobjc/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libphobos/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libquadmath/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libsanitizer/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libssp/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libstdc++-v3/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      libvtv/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      lto-plugin/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      
      zlib/
      
      	PR bootstrap/95413
      	* configure: Regenerated.
      9051b548
  34. May 18, 2020
    • Jason Merrill's avatar
      bootstrap: Update requirement to C++11. · 5329b59a
      Jason Merrill authored
      There was general agreement last November that we would move to allowing
      C++11 features to be used in GCC 11; this patch implements that direction.
      
      ChangeLog
      2020-05-18  Jason Merrill  <jason@redhat.com>
      
      	* configure.ac: Update bootstrap dialect to -std=c++11.
      
      config/ChangeLog
      2020-05-18  Jason Merrill  <jason@redhat.com>
      
      	* ax_cxx_compile_stdcxx.m4: Import from autoconf archive with
      	an adjustment to try the default mode.
      
      gcc/ChangeLog
      2020-05-18  Jason Merrill  <jason@redhat.com>
      
      	* aclocal.m4: Add ax_cxx_compile_stdcxx.m4.
      	* configure.ac: Use AX_CXX_COMPILE_STDCXX(11).
      5329b59a
  35. May 15, 2020
    • H.J. Lu's avatar
      x86: Also check if -fcf-protection works · 4c1a5d8b
      H.J. Lu authored
      When defaulting CET run-time support to auto, check if -fcf-protection
      works.  Even if the stage1 GCC doesn't support -fcf-protection, since
      the final GCC does, CET run-time support will be enabled by default if
      binutils support CET.
      
      config/
      
      	PR bootstrap/95147
      	* cet.m4 (GCC_CET_FLAGS): Also check if -fcf-protection works
      	when defaulting to auto.
      
      libatomic/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      libbacktrace/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      libgcc/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      libgfortran/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      libgomp/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      libitm/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      libobjc/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      libphobos/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      libquadmath/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      libsanitizer/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      libssp/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      libstdc++-v3/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      libvtv/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      
      zlib/
      
      	PR bootstrap/95147
      	* configure: Regenerated.
      4c1a5d8b
  36. May 14, 2020
    • H.J. Lu's avatar
      x86: Default CET run-time support to auto · 8d286dd1
      H.J. Lu authored
      CET has been added since GCC 8.  This patch defaults CET run-time support
      to auto.  It enables CET run-time support if asssembler supports CET
      instructions and multi-byte NOPs are enabled via SSE2.
      
      config/
      
      	* cet.m4 (GCC_CET_FLAGS): Change default to auto.
      
      gcc/
      
      	* configure: Regenerated.
      
      libatomic/
      
      	* configure: Regenerated.
      
      libbacktrace/
      
      	* configure: Regenerated.
      
      libcc1/
      
      	* configure: Regenerated.
      
      libcpp/
      
      	* configure: Regenerated.
      
      libdecnumber/
      
      	* configure: Regenerated.
      
      libgcc/
      
      	* configure: Regenerated.
      
      libgfortran/
      
      	* configure: Regenerated.
      
      libgomp/
      
      	* configure: Regenerated.
      
      libitm/
      
      	* configure: Regenerated.
      
      libobjc/
      
      	* configure: Regenerated.
      
      libquadmath/
      
      	* configure: Regenerated.
      
      libsanitizer/
      
      	* configure: Regenerated.
      
      libssp/
      
      	* configure: Regenerated.
      
      libstdc++-v3/
      
      	* configure: Regenerated.
      
      libvtv/
      
      	* configure: Regenerated.
      
      zlib/
      
      	* configure: Regenerated.
      8d286dd1
Loading