compnerd created this revision. compnerd added reviewers: bulbazord, sgraenitz, labath. compnerd added a project: LLDB. Herald added a subscriber: JDevlieghere. Herald added a project: All. compnerd requested review of this revision.
Ensure that we explicitly indicate that we would like the move semantics in the assignment. With MSVC 14.35.32215, the assignment would not trigger a NVRO and copy constructor would be invoked, which resulted in a check failure under `LLVM_ENABLE_ABI_BREAKING_CHANGES`. The error path is meant to log and continue on the failure but would instead abort when built with assertions. Secondary to the assignment cast check, we would not ensure that the error is consumed in the case that logging is disabled. Ensure that we properly drop the error on the floor or we would re-trigger the checked failure. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D147669 Files: lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp Index: lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp =================================================================== --- lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp +++ lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp @@ -865,11 +865,12 @@ // Read each export table entry, ordered by ordinal instead of by name. for (const auto &entry : m_binary->export_directories()) { llvm::StringRef sym_name; - if (auto err = entry.getSymbolName(sym_name)) { + if (auto err = std::move(entry.getSymbolName(sym_name))) { LLDB_LOG(log, "ObjectFilePECOFF::AppendFromExportTable - failed to get export " "table entry name: {0}", llvm::fmt_consume(std::move(err))); + llvm::consumeError(std::move(err)); continue; } Symbol symbol; @@ -886,11 +887,12 @@ // Forwarder exports are redirected by the loader transparently, but keep // it in symtab and make a note using the symbol name. llvm::StringRef forwarder_name; - if (auto err = entry.getForwardTo(forwarder_name)) { + if (auto err = std::move(entry.getForwardTo(forwarder_name))) { LLDB_LOG(log, "ObjectFilePECOFF::AppendFromExportTable - failed to get " "forwarder name of forwarder export '{0}': {1}", sym_name, llvm::fmt_consume(std::move(err))); + llvm::consumeError(std::move(err)); continue; } llvm::SmallString<256> new_name = {symbol.GetDisplayName().GetStringRef(), @@ -901,11 +903,12 @@ } uint32_t function_rva; - if (auto err = entry.getExportRVA(function_rva)) { + if (auto err = std::move(entry.getExportRVA(function_rva))) { LLDB_LOG(log, "ObjectFilePECOFF::AppendFromExportTable - failed to get " "address of export entry '{0}': {1}", sym_name, llvm::fmt_consume(std::move(err))); + llvm::consumeError(std::move(err)); continue; } // Skip the symbol if it doesn't look valid.
Index: lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp =================================================================== --- lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp +++ lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp @@ -865,11 +865,12 @@ // Read each export table entry, ordered by ordinal instead of by name. for (const auto &entry : m_binary->export_directories()) { llvm::StringRef sym_name; - if (auto err = entry.getSymbolName(sym_name)) { + if (auto err = std::move(entry.getSymbolName(sym_name))) { LLDB_LOG(log, "ObjectFilePECOFF::AppendFromExportTable - failed to get export " "table entry name: {0}", llvm::fmt_consume(std::move(err))); + llvm::consumeError(std::move(err)); continue; } Symbol symbol; @@ -886,11 +887,12 @@ // Forwarder exports are redirected by the loader transparently, but keep // it in symtab and make a note using the symbol name. llvm::StringRef forwarder_name; - if (auto err = entry.getForwardTo(forwarder_name)) { + if (auto err = std::move(entry.getForwardTo(forwarder_name))) { LLDB_LOG(log, "ObjectFilePECOFF::AppendFromExportTable - failed to get " "forwarder name of forwarder export '{0}': {1}", sym_name, llvm::fmt_consume(std::move(err))); + llvm::consumeError(std::move(err)); continue; } llvm::SmallString<256> new_name = {symbol.GetDisplayName().GetStringRef(), @@ -901,11 +903,12 @@ } uint32_t function_rva; - if (auto err = entry.getExportRVA(function_rva)) { + if (auto err = std::move(entry.getExportRVA(function_rva))) { LLDB_LOG(log, "ObjectFilePECOFF::AppendFromExportTable - failed to get " "address of export entry '{0}': {1}", sym_name, llvm::fmt_consume(std::move(err))); + llvm::consumeError(std::move(err)); continue; } // Skip the symbol if it doesn't look valid.
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits