diff options
Diffstat (limited to 'lld/ELF/Driver.cpp')
| -rw-r--r-- | lld/ELF/Driver.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index bc4b967ccbbb..f573a8d3e19f 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -1410,6 +1410,9 @@ static void readConfigs(Ctx &ctx, opt::InputArgList &args) { ctx.arg.searchPaths = args::getStrings(args, OPT_library_path); ctx.arg.sectionStartMap = getSectionStartMap(ctx, args); ctx.arg.shared = args.hasArg(OPT_shared); + if (args.hasArg(OPT_randomize_section_padding)) + ctx.arg.randomizeSectionPadding = + args::getInteger(args, OPT_randomize_section_padding, 0); ctx.arg.singleRoRx = !args.hasFlag(OPT_rosegment, OPT_no_rosegment, true); ctx.arg.soName = args.getLastArgValue(OPT_soname); ctx.arg.sortSection = getSortSection(ctx, args); @@ -1484,6 +1487,7 @@ static void readConfigs(Ctx &ctx, opt::InputArgList &args) { args, "keep-text-section-prefix", "nokeep-text-section-prefix", false); ctx.arg.zLrodataAfterBss = getZFlag(args, "lrodata-after-bss", "nolrodata-after-bss", false); + ctx.arg.zNoBtCfi = hasZOption(args, "nobtcfi"); ctx.arg.zNodefaultlib = hasZOption(args, "nodefaultlib"); ctx.arg.zNodelete = hasZOption(args, "nodelete"); ctx.arg.zNodlopen = hasZOption(args, "nodlopen"); @@ -2452,7 +2456,7 @@ static void readSymbolPartitionSection(Ctx &ctx, InputSectionBase *s) { sym = readEntry(s->file, rels.rels); else sym = readEntry(s->file, rels.relas); - if (!isa_and_nonnull<Defined>(sym) || !sym->includeInDynsym(ctx)) + if (!isa_and_nonnull<Defined>(sym) || !sym->isExported) return; StringRef partName = reinterpret_cast<const char *>(s->content().data()); @@ -2987,6 +2991,8 @@ template <class ELFT> void LinkerDriver::link(opt::InputArgList &args) { if (!ctx.arg.relocatable) { llvm::TimeTraceScope timeScope("Process symbol versions"); ctx.symtab->scanVersionScript(); + + parseVersionAndComputeIsPreemptible(ctx); } // Skip the normal linked output if some LTO options are specified. |
