[PATCH] D60771: llvm-undname: Add a -raw-input flag to pass a raw buffer to microsoftDemangle
Phabricator via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 16 05:50:00 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL358485: llvm-undname: Add a -raw-file flag to pass a raw buffer to microsoftDemangle (authored by nico, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D60771?vs=195357&id=195362#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D60771/new/
https://reviews.llvm.org/D60771
Files:
llvm/trunk/tools/llvm-undname/llvm-undname.cpp
Index: llvm/trunk/tools/llvm-undname/llvm-undname.cpp
===================================================================
--- llvm/trunk/tools/llvm-undname/llvm-undname.cpp
+++ llvm/trunk/tools/llvm-undname/llvm-undname.cpp
@@ -15,7 +15,9 @@
#include "llvm/ADT/StringRef.h"
#include "llvm/Demangle/Demangle.h"
#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/ErrorOr.h"
#include "llvm/Support/InitLLVM.h"
+#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Process.h"
#include "llvm/Support/WithColor.h"
#include "llvm/Support/raw_ostream.h"
@@ -29,10 +31,12 @@
cl::opt<bool> DumpBackReferences("backrefs", cl::Optional,
cl::desc("dump backreferences"), cl::Hidden,
cl::init(false));
+cl::opt<std::string> RawFile("raw-file", cl::Optional,
+ cl::desc("for fuzzer data"), cl::Hidden);
cl::list<std::string> Symbols(cl::Positional, cl::desc("<input symbols>"),
cl::ZeroOrMore);
-static void msDemangle(const std::string &S) {
+static bool msDemangle(const std::string &S) {
int Status;
MSDemangleFlags Flags = MSDF_None;
if (DumpBackReferences)
@@ -47,6 +51,7 @@
WithColor::error() << "Invalid mangled name\n";
}
std::free(ResultBuf);
+ return Status == llvm::demangle_success;
}
int main(int argc, char **argv) {
@@ -54,6 +59,18 @@
cl::ParseCommandLineOptions(argc, argv, "llvm-undname\n");
+ if (!RawFile.empty()) {
+ ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr =
+ MemoryBuffer::getFileOrSTDIN(RawFile);
+ if (std::error_code EC = FileOrErr.getError()) {
+ WithColor::error() << "Could not open input file \'" << RawFile
+ << "\': " << EC.message() << '\n';
+ return 1;
+ }
+ return msDemangle(FileOrErr->get()->getBuffer()) ? 0 : 1;
+ }
+
+ bool Success = true;
if (Symbols.empty()) {
while (true) {
std::string LineStr;
@@ -74,17 +91,19 @@
outs() << Line << "\n";
outs().flush();
}
- msDemangle(Line);
+ if (!msDemangle(Line))
+ Success = false;
outs() << "\n";
}
} else {
for (StringRef S : Symbols) {
outs() << S << "\n";
outs().flush();
- msDemangle(S);
+ if (!msDemangle(S))
+ Success = false;
outs() << "\n";
}
}
- return 0;
+ return Success ? 0 : 1;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60771.195362.patch
Type: text/x-patch
Size: 2444 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190416/033e6c70/attachment.bin>
More information about the llvm-commits
mailing list