Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Unified Diff: courgette/program_detector.cc

Issue 2793153003: [Courgette] Refactor: Store Label Annotation in AssemblyProgram for patch generation. (Closed)
Patch Set: Rename *_label_annotation to *_label_annotations. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « courgette/program_detector.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: courgette/program_detector.cc
diff --git a/courgette/program_detector.cc b/courgette/program_detector.cc
index d67dc23fae88d66082beafc33887355473ccdac9..cc0f9ced237136c1ee36e998fd7b3936f95068d6 100644
--- a/courgette/program_detector.cc
+++ b/courgette/program_detector.cc
@@ -46,6 +46,27 @@ std::unique_ptr<Disassembler> DetectDisassembler(const uint8_t* buffer,
return nullptr;
}
+Status ParseDetectedExecutableInternal(
+ const uint8_t* buffer,
+ size_t length,
+ bool annotate_labels,
+ std::unique_ptr<AssemblyProgram>* output) {
+ output->reset();
+
+ std::unique_ptr<Disassembler> disassembler(
+ DetectDisassembler(buffer, length));
+ if (!disassembler)
+ return C_INPUT_NOT_RECOGNIZED;
+
+ std::unique_ptr<AssemblyProgram> program =
+ disassembler->Disassemble(annotate_labels);
+ if (!program.get())
+ return C_DISASSEMBLY_FAILED;
+
+ *output = std::move(program);
+ return C_OK;
+}
+
} // namespace
Status DetectExecutableType(const uint8_t* buffer,
@@ -69,19 +90,14 @@ Status DetectExecutableType(const uint8_t* buffer,
Status ParseDetectedExecutable(const uint8_t* buffer,
size_t length,
std::unique_ptr<AssemblyProgram>* output) {
- output->reset();
-
- std::unique_ptr<Disassembler> disassembler(
- DetectDisassembler(buffer, length));
- if (!disassembler)
- return C_INPUT_NOT_RECOGNIZED;
-
- std::unique_ptr<AssemblyProgram> program = disassembler->Disassemble();
- if (!program.get())
- return C_DISASSEMBLY_FAILED;
+ return ParseDetectedExecutableInternal(buffer, length, false, output);
+}
- *output = std::move(program);
- return C_OK;
+Status ParseDetectedExecutableWithAnnotation(
+ const uint8_t* buffer,
+ size_t length,
+ std::unique_ptr<AssemblyProgram>* output) {
+ return ParseDetectedExecutableInternal(buffer, length, true, output);
}
} // namespace courgette
« no previous file with comments | « courgette/program_detector.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698