Skip to content

Commit

Permalink
[llvm-objcopy][NFC] Use StringSaver for --keep-global-symbols
Browse files Browse the repository at this point in the history
Summary: Use StringSaver/BumpPtrAlloc when parsing lines from --keep-global-symbols files. This allows us to consistently use StringRef for driver options, which avoids copying the full strings for each object copied, as well as simplifies part of D57517.

Reviewers: jhenderson, evgeny777, alexshap

Subscribers: jakehehrlich

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D57617

llvm-svn: 353068
  • Loading branch information
rupprecht committed Feb 4, 2019
1 parent 0b3cf24 commit 5745c5f
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
13 changes: 8 additions & 5 deletions llvm/tools/llvm-objcopy/CopyConfig.cpp
Expand Up @@ -19,8 +19,8 @@
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compression.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/StringSaver.h"
#include <memory>
#include <string>

namespace llvm {
namespace objcopy {
Expand Down Expand Up @@ -225,8 +225,10 @@ static const MachineInfo &getOutputFormatMachineInfo(StringRef Format) {
return Iter->getValue();
}

static void addGlobalSymbolsFromFile(std::vector<std::string> &Symbols,
static void addGlobalSymbolsFromFile(std::vector<StringRef> &Symbols,
BumpPtrAllocator &Alloc,
StringRef Filename) {
StringSaver Saver(Alloc);
SmallVector<StringRef, 16> Lines;
auto BufOrErr = MemoryBuffer::getFile(Filename);
if (!BufOrErr)
Expand All @@ -238,14 +240,15 @@ static void addGlobalSymbolsFromFile(std::vector<std::string> &Symbols,
// it's not empty.
auto TrimmedLine = Line.split('#').first.trim();
if (!TrimmedLine.empty())
Symbols.push_back(TrimmedLine.str());
Symbols.push_back(Saver.save(TrimmedLine));
}
}

// ParseObjcopyOptions returns the config and sets the input arguments. If a
// help flag is set then ParseObjcopyOptions will print the help messege and
// exit.
DriverConfig parseObjcopyOptions(ArrayRef<const char *> ArgsArr) {
DriverConfig DC;
ObjcopyOptTable T;
unsigned MissingArgumentIndex, MissingArgumentCount;
llvm::opt::InputArgList InputArgs =
Expand Down Expand Up @@ -401,7 +404,8 @@ DriverConfig parseObjcopyOptions(ArrayRef<const char *> ArgsArr) {
for (auto Arg : InputArgs.filtered(OBJCOPY_keep_global_symbol))
Config.SymbolsToKeepGlobal.push_back(Arg->getValue());
for (auto Arg : InputArgs.filtered(OBJCOPY_keep_global_symbols))
addGlobalSymbolsFromFile(Config.SymbolsToKeepGlobal, Arg->getValue());
addGlobalSymbolsFromFile(Config.SymbolsToKeepGlobal, DC.Alloc,
Arg->getValue());
for (auto Arg : InputArgs.filtered(OBJCOPY_globalize_symbol))
Config.SymbolsToGlobalize.push_back(Arg->getValue());
for (auto Arg : InputArgs.filtered(OBJCOPY_weaken_symbol))
Expand All @@ -426,7 +430,6 @@ DriverConfig parseObjcopyOptions(ArrayRef<const char *> ArgsArr) {
if (Config.DecompressDebugSections && !zlib::isAvailable())
error("LLVM was not compiled with LLVM_ENABLE_ZLIB: cannot decompress.");

DriverConfig DC;
DC.CopyConfigs.push_back(std::move(Config));
return DC;
}
Expand Down
5 changes: 3 additions & 2 deletions llvm/tools/llvm-objcopy/CopyConfig.h
Expand Up @@ -14,9 +14,9 @@
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Allocator.h"
// Necessary for llvm::DebugCompressionType::None
#include "llvm/Target/TargetOptions.h"
#include <string>
#include <vector>

namespace llvm {
Expand Down Expand Up @@ -81,7 +81,7 @@ struct CopyConfig {
std::vector<StringRef> SymbolsToRemove;
std::vector<StringRef> SymbolsToWeaken;
std::vector<StringRef> ToRemove;
std::vector<std::string> SymbolsToKeepGlobal;
std::vector<StringRef> SymbolsToKeepGlobal;

// Map options
StringMap<SectionRename> SectionsToRename;
Expand Down Expand Up @@ -112,6 +112,7 @@ struct CopyConfig {
// will contain one or more CopyConfigs.
struct DriverConfig {
SmallVector<CopyConfig, 1> CopyConfigs;
BumpPtrAllocator Alloc;
};

// ParseObjcopyOptions returns the config and sets the input arguments. If a
Expand Down

0 comments on commit 5745c5f

Please sign in to comment.