Importing rustc-1.47.0
Bug: 171280890
Change-Id: Iac01e5c09a6ae8e508762cd96c2a88d191af4f0e
diff --git a/src/llvm-project/llvm/tools/dsymutil/MachODebugMapParser.cpp b/src/llvm-project/llvm/tools/dsymutil/MachODebugMapParser.cpp
index 3292e94..617b708 100644
--- a/src/llvm-project/llvm/tools/dsymutil/MachODebugMapParser.cpp
+++ b/src/llvm-project/llvm/tools/dsymutil/MachODebugMapParser.cpp
@@ -23,12 +23,14 @@
class MachODebugMapParser {
public:
- MachODebugMapParser(StringRef BinaryPath, ArrayRef<std::string> Archs,
+ MachODebugMapParser(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
+ StringRef BinaryPath, ArrayRef<std::string> Archs,
StringRef PathPrefix = "",
bool PaperTrailWarnings = false, bool Verbose = false)
- : BinaryPath(BinaryPath), Archs(Archs.begin(), Archs.end()),
- PathPrefix(PathPrefix), PaperTrailWarnings(PaperTrailWarnings),
- BinHolder(Verbose), CurrentDebugMapObject(nullptr) {}
+ : BinaryPath(std::string(BinaryPath)), Archs(Archs.begin(), Archs.end()),
+ PathPrefix(std::string(PathPrefix)),
+ PaperTrailWarnings(PaperTrailWarnings), BinHolder(VFS, Verbose),
+ CurrentDebugMapObject(nullptr) {}
/// Parses and returns the DebugMaps of the input binary. The binary contains
/// multiple maps in case it is a universal binary.
@@ -181,7 +183,7 @@
static std::string getArchName(const object::MachOObjectFile &Obj) {
Triple T = Obj.getArchTriple();
- return T.getArchName();
+ return std::string(T.getArchName());
}
std::unique_ptr<DebugMap>
@@ -189,7 +191,8 @@
StringRef BinaryPath) {
loadMainBinarySymbols(MainBinary);
ArrayRef<uint8_t> UUID = MainBinary.getUuid();
- Result = std::make_unique<DebugMap>(MainBinary.getArchTriple(), BinaryPath, UUID);
+ Result =
+ std::make_unique<DebugMap>(MainBinary.getArchTriple(), BinaryPath, UUID);
MainBinaryStrings = MainBinary.getStringTableData();
for (const SymbolRef &Symbol : MainBinary.symbols()) {
const DataRefImpl &DRI = Symbol.getRawDataRefImpl();
@@ -382,7 +385,7 @@
auto Objects = ObjectEntry->getObjectsAs<MachOObjectFile>();
if (!Objects) {
- return errorToErrorCode(ObjectEntry.takeError());
+ return errorToErrorCode(Objects.takeError());
}
std::vector<std::unique_ptr<DebugMap>> Results;
@@ -477,7 +480,7 @@
CurrentObjectAddresses.clear();
for (auto Sym : Obj.symbols()) {
- uint64_t Addr = Sym.getValue();
+ uint64_t Addr = cantFail(Sym.getValue());
Expected<StringRef> Name = Sym.getName();
if (!Name) {
// TODO: Actually report errors helpfully.
@@ -492,12 +495,12 @@
// relocations will use the symbol itself, and won't need an
// object file address. The object file address field is optional
// in the DebugMap, leave it unassigned for these symbols.
- uint32_t Flags = Sym.getFlags();
+ uint32_t Flags = cantFail(Sym.getFlags());
if (Flags & SymbolRef::SF_Absolute) {
CurrentObjectAddresses[*Name] = None;
} else if (Flags & SymbolRef::SF_Common) {
CurrentObjectAddresses[*Name] = None;
- CommonSymbols.push_back(*Name);
+ CommonSymbols.push_back(std::string(*Name));
} else {
CurrentObjectAddresses[*Name] = Addr;
}
@@ -561,7 +564,7 @@
Section = *SectionOrErr;
if (Section == MainBinary.section_end() || Section->isText())
continue;
- uint64_t Addr = Sym.getValue();
+ uint64_t Addr = cantFail(Sym.getValue());
Expected<StringRef> NameOrErr = Sym.getName();
if (!NameOrErr) {
// TODO: Actually report errors helpfully.
@@ -582,20 +585,22 @@
namespace llvm {
namespace dsymutil {
llvm::ErrorOr<std::vector<std::unique_ptr<DebugMap>>>
-parseDebugMap(StringRef InputFile, ArrayRef<std::string> Archs,
+parseDebugMap(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
+ StringRef InputFile, ArrayRef<std::string> Archs,
StringRef PrependPath, bool PaperTrailWarnings, bool Verbose,
bool InputIsYAML) {
if (InputIsYAML)
return DebugMap::parseYAMLDebugMap(InputFile, PrependPath, Verbose);
- MachODebugMapParser Parser(InputFile, Archs, PrependPath, PaperTrailWarnings,
- Verbose);
+ MachODebugMapParser Parser(VFS, InputFile, Archs, PrependPath,
+ PaperTrailWarnings, Verbose);
return Parser.parse();
}
-bool dumpStab(StringRef InputFile, ArrayRef<std::string> Archs,
+bool dumpStab(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
+ StringRef InputFile, ArrayRef<std::string> Archs,
StringRef PrependPath) {
- MachODebugMapParser Parser(InputFile, Archs, PrependPath, false);
+ MachODebugMapParser Parser(VFS, InputFile, Archs, PrependPath, false);
return Parser.dumpStab();
}
} // namespace dsymutil