diff -up a/ELF/Config.h b/ELF/Config.h --- a/ELF/Config.h 2023-07-28 09:10:13.000000000 +0200 +++ b/ELF/Config.h 2023-07-28 13:07:56.967731331 +0200 @@ -210,7 +210,7 @@ struct Config { bool armHasMovtMovw = false; bool armJ1J2BranchEncoding = false; bool armCMSESupport = false; - bool asNeeded = false; + bool asNeeded = true; bool armBe8 = false; BsymbolicKind bsymbolic = BsymbolicKind::None; bool callGraphProfileSort; @@ -226,16 +226,16 @@ struct Config { bool ehFrameHdr; bool emitLLVM; bool emitRelocs; - bool enableNewDtags; + bool enableNewDtags = true; bool executeOnly; bool exportDynamic; bool fixCortexA53Errata843419; bool fixCortexA8; bool formatBinary = false; bool fortranCommon; - bool gcSections; + bool gcSections = true; bool gdbIndex; - bool gnuHash = false; + bool gnuHash = true; bool gnuUnique; bool hasDynSymTab; bool ignoreDataAddressEquality; @@ -289,7 +289,7 @@ struct Config { bool useAndroidRelrTags = false; bool warnBackrefs; llvm::SmallVector warnBackrefsExclude; - bool warnCommon; + bool warnCommon = true; bool warnMissingEntry; bool warnSymbolOrdering; bool writeAddends; @@ -319,7 +319,7 @@ struct Config { bool zWxneeded; DiscardPolicy discard; GnuStackKind zGnustack; - ICFLevel icf; + ICFLevel icf = ICFLevel::Safe; OrphanHandlingPolicy orphanHandling; SortSectionPolicy sortSection; StripPolicy strip; @@ -328,7 +328,7 @@ struct Config { Target2Policy target2; bool power10Stubs; ARMVFPArgKind armVFPArgs = ARMVFPArgKind::Default; - BuildIdKind buildId = BuildIdKind::None; + BuildIdKind buildId = BuildIdKind::Sha1; SeparateSegmentKind zSeparate; ELFKind ekind = ELFNoneKind; uint16_t emachine = llvm::ELF::EM_NONE; @@ -340,7 +340,7 @@ struct Config { unsigned ltoPartitions; unsigned ltoo; llvm::CodeGenOpt::Level ltoCgo; - unsigned optimize; + unsigned optimize = 1; StringRef thinLTOJobs; unsigned timeTraceGranularity; int32_t splitStackAdjustSize; diff -up a/ELF/Driver.cpp b/ELF/Driver.cpp --- a/ELF/Driver.cpp 2023-07-28 13:02:17.703516879 +0200 +++ b/ELF/Driver.cpp 2023-07-28 13:02:17.992519613 +0200 @@ -807,10 +807,10 @@ static int getMemtagMode(opt::InputArgLi static ICFLevel getICF(opt::InputArgList &args) { auto *arg = args.getLastArg(OPT_icf_none, OPT_icf_safe, OPT_icf_all); - if (!arg || arg->getOption().getID() == OPT_icf_none) - return ICFLevel::None; - if (arg->getOption().getID() == OPT_icf_safe) + if (!arg || arg->getOption().getID() == OPT_icf_safe) return ICFLevel::Safe; + if (arg->getOption().getID() == OPT_icf_none) + return ICFLevel::None; return ICFLevel::All; } @@ -1199,7 +1199,7 @@ static void readConfigs(opt::InputArgLis args.hasArg(OPT_fix_cortex_a8) && !args.hasArg(OPT_relocatable); config->fortranCommon = args.hasFlag(OPT_fortran_common, OPT_no_fortran_common, false); - config->gcSections = args.hasFlag(OPT_gc_sections, OPT_no_gc_sections, false); + config->gcSections = args.hasFlag(OPT_gc_sections, OPT_no_gc_sections, true); config->gnuUnique = args.hasFlag(OPT_gnu_unique, OPT_no_gnu_unique, true); config->gdbIndex = args.hasFlag(OPT_gdb_index, OPT_no_gdb_index, false); config->icf = getICF(args); @@ -1349,7 +1349,7 @@ static void readConfigs(opt::InputArgLis OPT_use_android_relr_tags, OPT_no_use_android_relr_tags, false); config->warnBackrefs = args.hasFlag(OPT_warn_backrefs, OPT_no_warn_backrefs, false); - config->warnCommon = args.hasFlag(OPT_warn_common, OPT_no_warn_common, false); + config->warnCommon = args.hasFlag(OPT_warn_common, OPT_no_warn_common, true); config->warnSymbolOrdering = args.hasFlag(OPT_warn_symbol_ordering, OPT_no_warn_symbol_ordering, true); config->whyExtract = args.getLastArgValue(OPT_why_extract); @@ -2623,7 +2623,7 @@ void LinkerDriver::link(opt::InputArgLis if (config->emachine == EM_MIPS) config->sysvHash = true; else - config->sysvHash = config->gnuHash = true; + {config->sysvHash = false; config->gnuHash = true;} } // Default output filename is "a.out" by the Unix tradition.