diff options
Diffstat (limited to 'contrib/llvm-project/lld/ELF/Driver.cpp')
-rw-r--r-- | contrib/llvm-project/lld/ELF/Driver.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/contrib/llvm-project/lld/ELF/Driver.cpp b/contrib/llvm-project/lld/ELF/Driver.cpp index dd17adc4dbea..6c0fd3139e87 100644 --- a/contrib/llvm-project/lld/ELF/Driver.cpp +++ b/contrib/llvm-project/lld/ELF/Driver.cpp @@ -290,7 +290,7 @@ void LinkerDriver::addFile(StringRef path, bool withLOption) { // Add a given library by searching it from input search paths. void LinkerDriver::addLibrary(StringRef name) { if (Optional<std::string> path = searchLibrary(name)) - addFile(*path, /*withLOption=*/true); + addFile(saver().save(*path), /*withLOption=*/true); else error("unable to find library -l" + name, ErrorTag::LibNotFound, {name}); } @@ -809,13 +809,10 @@ static OrphanHandlingPolicy getOrphanHandling(opt::InputArgList &args) { // --build-id=sha1 are actually tree hashes for performance reasons. static std::pair<BuildIdKind, std::vector<uint8_t>> getBuildId(opt::InputArgList &args) { - auto *arg = args.getLastArg(OPT_build_id, OPT_build_id_eq); + auto *arg = args.getLastArg(OPT_build_id); if (!arg) return {BuildIdKind::None, {}}; - if (arg->getOption().getID() == OPT_build_id) - return {BuildIdKind::Fast, {}}; - StringRef s = arg->getValue(); if (s == "fast") return {BuildIdKind::Fast, {}}; @@ -1691,8 +1688,10 @@ void LinkerDriver::inferMachineType() { static uint64_t getMaxPageSize(opt::InputArgList &args) { uint64_t val = args::getZOptionValue(args, OPT_z, "max-page-size", target->defaultMaxPageSize); - if (!isPowerOf2_64(val)) + if (!isPowerOf2_64(val)) { error("max-page-size: value isn't a power of 2"); + return target->defaultMaxPageSize; + } if (config->nmagic || config->omagic) { if (val != target->defaultMaxPageSize) warn("-z max-page-size set, but paging disabled by omagic or nmagic"); @@ -1706,8 +1705,10 @@ static uint64_t getMaxPageSize(opt::InputArgList &args) { static uint64_t getCommonPageSize(opt::InputArgList &args) { uint64_t val = args::getZOptionValue(args, OPT_z, "common-page-size", target->defaultCommonPageSize); - if (!isPowerOf2_64(val)) + if (!isPowerOf2_64(val)) { error("common-page-size: value isn't a power of 2"); + return target->defaultCommonPageSize; + } if (config->nmagic || config->omagic) { if (val != target->defaultCommonPageSize) warn("-z common-page-size set, but paging disabled by omagic or nmagic"); |