Support binary files for backends, fixes #1407

This commit is contained in:
Miodrag Milanovic 2019-09-28 09:28:51 +02:00
parent c372e7baf9
commit d0493925ec
3 changed files with 4 additions and 4 deletions

View File

@ -856,7 +856,7 @@ struct XAigerBackend : public Backend {
} }
break; break;
} }
extra_args(f, filename, args, argidx); extra_args(f, filename, args, argidx, !ascii_mode);
Module *top_module = design->top_module(); Module *top_module = design->top_module();

View File

@ -612,7 +612,7 @@ void Backend::execute(std::vector<std::string> args, RTLIL::Design *design)
delete f; delete f;
} }
void Backend::extra_args(std::ostream *&f, std::string &filename, std::vector<std::string> args, size_t argidx) void Backend::extra_args(std::ostream *&f, std::string &filename, std::vector<std::string> args, size_t argidx, bool bin_output)
{ {
bool called_with_fp = f != NULL; bool called_with_fp = f != NULL;
@ -647,7 +647,7 @@ void Backend::extra_args(std::ostream *&f, std::string &filename, std::vector<st
#endif #endif
} else { } else {
std::ofstream *ff = new std::ofstream; std::ofstream *ff = new std::ofstream;
ff->open(filename.c_str(), std::ofstream::trunc); ff->open(filename.c_str(), bin_output ? (std::ofstream::trunc | std::ofstream::binary) : std::ofstream::trunc);
yosys_output_files.insert(filename); yosys_output_files.insert(filename);
if (ff->fail()) { if (ff->fail()) {
delete ff; delete ff;

View File

@ -109,7 +109,7 @@ struct Backend : Pass
void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE YS_FINAL; void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE YS_FINAL;
virtual void execute(std::ostream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design *design) = 0; virtual void execute(std::ostream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design *design) = 0;
void extra_args(std::ostream *&f, std::string &filename, std::vector<std::string> args, size_t argidx); void extra_args(std::ostream *&f, std::string &filename, std::vector<std::string> args, size_t argidx, bool bin_output = false);
static void backend_call(RTLIL::Design *design, std::ostream *f, std::string filename, std::string command); static void backend_call(RTLIL::Design *design, std::ostream *f, std::string filename, std::string command);
static void backend_call(RTLIL::Design *design, std::ostream *f, std::string filename, std::vector<std::string> args); static void backend_call(RTLIL::Design *design, std::ostream *f, std::string filename, std::vector<std::string> args);