diff options
author | Rui Ueyama <ruiu@google.com> | 2013-09-13 21:14:18 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2013-09-13 21:14:18 +0000 |
commit | ec9bb694bd2e9cb950b9de06140fc6441d9835f0 (patch) | |
tree | 19e25ecaa665ec55b250ac688f48df6c82bf3269 | |
parent | a8ce9529c34682ab252b5655ce09a6cd4aabcd81 (diff) | |
download | bcm5719-llvm-ec9bb694bd2e9cb950b9de06140fc6441d9835f0.tar.gz bcm5719-llvm-ec9bb694bd2e9cb950b9de06140fc6441d9835f0.zip |
Revert "[PECOFF] Allocate storage for .drective in the reader ..."
This reverts r189881 because that patch caused dangling StringRefs.
llvm-svn: 190725
-rw-r--r-- | lld/lib/Driver/WinLinkDriver.cpp | 8 | ||||
-rw-r--r-- | lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp | 11 |
2 files changed, 9 insertions, 10 deletions
diff --git a/lld/lib/Driver/WinLinkDriver.cpp b/lld/lib/Driver/WinLinkDriver.cpp index 1f211832e35..747786a79ac 100644 --- a/lld/lib/Driver/WinLinkDriver.cpp +++ b/lld/lib/Driver/WinLinkDriver.cpp @@ -364,12 +364,12 @@ bool WinLinkDriver::parse(int argc, const char *argv[], PECOFFLinkingContext &ct case OPT_entry: // handle /entry - ctx.setEntrySymbolName(inputArg->getValue()); + ctx.setEntrySymbolName(ctx.allocateString(inputArg->getValue())); break; case OPT_libpath: // handle /libpath - ctx.appendInputSearchPath(inputArg->getValue()); + ctx.appendInputSearchPath(ctx.allocateString(inputArg->getValue())); break; case OPT_force: @@ -424,12 +424,12 @@ bool WinLinkDriver::parse(int argc, const char *argv[], PECOFFLinkingContext &ct case OPT_incl: // handle /incl - ctx.addInitialUndefinedSymbol(inputArg->getValue()); + ctx.addInitialUndefinedSymbol(ctx.allocateString(inputArg->getValue())); break; case OPT_out: // handle /out - ctx.setOutputPath(inputArg->getValue()); + ctx.setOutputPath(ctx.allocateString(inputArg->getValue())); break; case OPT_INPUT: diff --git a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp index beddcf14f84..2e1695394af 100644 --- a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp +++ b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp @@ -126,7 +126,7 @@ private: SectionToAtomsT; public: - FileCOFF(const PECOFFLinkingContext &context, + FileCOFF(const LinkingContext &context, std::unique_ptr<llvm::MemoryBuffer> mb, error_code &ec) : File(mb->getBufferIdentifier(), kindObject), _context(context) { llvm::OwningPtr<llvm::object::Binary> bin; @@ -666,7 +666,7 @@ private: ArrayRef<uint8_t> contents; if (error_code ec = _obj->getSectionContents(section, contents)) return ec; - _directives = _context.allocateString(ArrayRefToString(contents)); + _directives = std::move(ArrayRefToString(contents)); } return error_code::success(); } @@ -678,7 +678,7 @@ private: atom_collection_vector<AbsoluteAtom> _absoluteAtoms; // The contents of .drectve section. - StringRef _directives; + std::string _directives; // A map from symbol to its name. All symbols should be in this map except // unnamed ones. @@ -703,7 +703,7 @@ private: _definedAtomLocations; mutable llvm::BumpPtrAllocator _alloc; - const PECOFFLinkingContext &_context; + const LinkingContext &_context; }; class BumpPtrStringSaver : public llvm::cl::StringSaver { @@ -781,8 +781,7 @@ private: std::vector<std::unique_ptr<File> > &result) const { // Parse the memory buffer as PECOFF file. error_code ec; - std::unique_ptr<FileCOFF> file( - new FileCOFF(_PECOFFLinkingContext, std::move(mb), ec)); + std::unique_ptr<FileCOFF> file(new FileCOFF(_context, std::move(mb), ec)); if (ec) return ec; |