summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-dwp/llvm-dwp.cpp
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2016-03-01 21:24:04 +0000
committerDavid Blaikie <dblaikie@gmail.com>2016-03-01 21:24:04 +0000
commitddb27369a0aaaecaa656e3afe656253a7b52f521 (patch)
tree76a4cfaa5a696adec43e2f369820990f188c0a70 /llvm/tools/llvm-dwp/llvm-dwp.cpp
parentea9f25a740f36305e2265903c5277770d6e977cd (diff)
downloadbcm5719-llvm-ddb27369a0aaaecaa656e3afe656253a7b52f521.tar.gz
bcm5719-llvm-ddb27369a0aaaecaa656e3afe656253a7b52f521.zip
Revert "llvm-dwp: Keep ObjectFiles alive until object emission their contents can be referenced directly rather than copied"
Accidentally committed. This reverts commit r262389. llvm-svn: 262395
Diffstat (limited to 'llvm/tools/llvm-dwp/llvm-dwp.cpp')
-rw-r--r--llvm/tools/llvm-dwp/llvm-dwp.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/llvm/tools/llvm-dwp/llvm-dwp.cpp b/llvm/tools/llvm-dwp/llvm-dwp.cpp
index 131d5b313a3..ceadfb1b9ee 100644
--- a/llvm/tools/llvm-dwp/llvm-dwp.cpp
+++ b/llvm/tools/llvm-dwp/llvm-dwp.cpp
@@ -358,17 +358,11 @@ static std::error_code write(MCStreamer &Out, ArrayRef<std::string> Inputs) {
uint32_t ContributionOffsets[8] = {};
- SmallVector<OwningBinary<object::ObjectFile>, 128> Objects;
- Objects.reserve(Inputs.size());
for (const auto &Input : Inputs) {
auto ErrOrObj = object::ObjectFile::createObjectFile(Input);
if (!ErrOrObj)
return ErrOrObj.getError();
- Objects.push_back(std::move(*ErrOrObj));
-
- auto &Obj = *Objects.back().getBinary();
-
UnitIndexEntry CurEntry = {};
StringRef CurStrSection;
@@ -381,7 +375,7 @@ static std::error_code write(MCStreamer &Out, ArrayRef<std::string> Inputs) {
SmallVector<SmallString<32>, 4> UncompressedSections;
- for (const auto &Section : Obj.sections()) {
+ for (const auto &Section : ErrOrObj->getBinary()->sections()) {
if (Section.isBSS())
continue;
if (Section.isVirtual())
@@ -458,7 +452,8 @@ static std::error_code write(MCStreamer &Out, ArrayRef<std::string> Inputs) {
if (!CurCUIndexSection.empty()) {
DWARFUnitIndex CUIndex(DW_SECT_INFO);
- DataExtractor CUIndexData(CurCUIndexSection, Obj.isLittleEndian(), 0);
+ DataExtractor CUIndexData(CurCUIndexSection,
+ ErrOrObj->getBinary()->isLittleEndian(), 0);
if (!CUIndex.parse(CUIndexData))
return make_error_code(std::errc::invalid_argument);
@@ -496,7 +491,8 @@ static std::error_code write(MCStreamer &Out, ArrayRef<std::string> Inputs) {
if (CurTUIndexSection.empty())
return make_error_code(std::errc::invalid_argument);
DWARFUnitIndex TUIndex(DW_SECT_TYPES);
- DataExtractor TUIndexData(CurTUIndexSection, Obj.isLittleEndian(), 0);
+ DataExtractor TUIndexData(CurTUIndexSection,
+ ErrOrObj->getBinary()->isLittleEndian(), 0);
if (!TUIndex.parse(TUIndexData))
return make_error_code(std::errc::invalid_argument);
addAllTypesFromDWP(Out, TypeIndexEntries, TUIndex, TypesSection,
@@ -541,7 +537,7 @@ static std::error_code write(MCStreamer &Out, ArrayRef<std::string> Inputs) {
writeIndex(Out, MCOFI.getDwarfCUIndexSection(), ContributionOffsets,
IndexEntries);
- Out.Finish();
+
return std::error_code();
}
@@ -612,4 +608,6 @@ int main(int argc, char **argv) {
if (auto Err = write(*MS, InputFiles))
return error(Err.message(), "Writing DWP file");
+
+ MS->Finish();
}
OpenPOWER on IntegriCloud