[ELF] - Set Config->SingleRoRx differently. NFC.

Previously Config->SingleRoRx was set in
createFiles() and used HasSections.

This change moves it to readConfigs at place of
common flags handling, and adds logic that sets
this flag separatelly from ScriptParser if SECTIONS present.

llvm-svn: 288021
This commit is contained in:
George Rimar 2016-11-28 10:11:10 +00:00
parent 63bf011003
commit 18a3096282
2 changed files with 6 additions and 6 deletions

View File

@ -530,6 +530,7 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args) {
Config->PrintGcSections = Args.hasArg(OPT_print_gc_sections);
Config->Relocatable = Args.hasArg(OPT_relocatable);
Config->SaveTemps = Args.hasArg(OPT_save_temps);
Config->SingleRoRx = Args.hasArg(OPT_no_rosegment);
Config->Shared = Args.hasArg(OPT_shared);
Config->Target1Rel = getArg(Args, OPT_target1_rel, OPT_target1_abs, false);
Config->Threads = getArg(Args, OPT_threads, OPT_no_threads, true);
@ -696,12 +697,6 @@ void LinkerDriver::createFiles(opt::InputArgList &Args) {
}
}
// -no-rosegment is used to avoid placing read only non-executable sections in
// their own segment. We do the same if SECTIONS command is present in linker
// script. See comment for computeFlags().
Config->SingleRoRx =
Args.hasArg(OPT_no_rosegment) || ScriptConfig->HasSections;
if (Files.empty() && ErrorCount == 0)
error("no input files");
}

View File

@ -1262,6 +1262,11 @@ void ScriptParser::readSearchDir() {
void ScriptParser::readSections() {
Opt.HasSections = true;
// -no-rosegment is used to avoid placing read only non-executable sections in
// their own segment. We do the same if SECTIONS command is present in linker
// script. See comment for computeFlags().
Config->SingleRoRx = true;
expect("{");
while (!Error && !consume("}")) {
StringRef Tok = next();