mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Merge 6da26921d8 into b8b0f80f79
				
					
				
			This commit is contained in:
		
						commit
						77f8ff43bf
					
				
					 3 changed files with 27 additions and 3 deletions
				
			
		|  | @ -354,6 +354,21 @@ static void log_error_with_prefix(std::string_view prefix, std::string str) | |||
| 
 | ||||
| 	log_check_expected(); | ||||
| 
 | ||||
| 	int lineno = 1; | ||||
| 	if ( !log_line_number.empty() ) { | ||||
| 	  log("Error while executing script:\n\t"); | ||||
| 	  log( log_line_number.begin()->c_str() ); | ||||
| 	  log("\n"); | ||||
|           log_line_number.erase(log_line_number.begin()); | ||||
| 	  log("---------------------------------\n"); | ||||
| 	  for(const std::string& script_line : log_line_number) { | ||||
| 	    const char* pfx = (lineno == log_line_number.size()) ? "-->" : "   "; | ||||
| 	    log("%s%d %s\n",pfx,lineno++,script_line.c_str()); | ||||
| 	  } | ||||
| 	  log("---------------------------------\n"); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	if (log_error_atexit) | ||||
| 		log_error_atexit(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -43,6 +43,7 @@ | |||
| #  endif | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| #if defined(_MSC_VER) | ||||
| // At least this is not in MSVC++ 2013.
 | ||||
| #  define __PRETTY_FUNCTION__ __FUNCTION__ | ||||
|  | @ -95,6 +96,7 @@ YOSYS_NAMESPACE_BEGIN | |||
| struct log_cmd_error_exception { }; | ||||
| 
 | ||||
| extern std::vector<FILE*> log_files; | ||||
| extern std::vector<std::string> log_line_number; | ||||
| extern std::vector<std::ostream*> log_streams; | ||||
| extern std::vector<std::string> log_scratchpads; | ||||
| extern std::map<std::string, std::set<std::string>> log_hdump; | ||||
|  |  | |||
|  | @ -166,7 +166,7 @@ int run_command(const std::string &command, std::function<void(const std::string | |||
| 		return -1; | ||||
| 
 | ||||
| 	std::string line; | ||||
| 	char logbuf[128]; | ||||
| 	char logbuf[128]={0,}; | ||||
| 	while (fgets(logbuf, 128, f) != NULL) { | ||||
| 		line += logbuf; | ||||
| 		if (!line.empty() && line.back() == '\n') | ||||
|  | @ -672,8 +672,10 @@ static void handle_label(std::string &command, bool &from_to_active, const std:: | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| std::vector<std::string> log_line_number; | ||||
| bool run_frontend(std::string filename, std::string command, RTLIL::Design *design, std::string *from_to_label) | ||||
| { | ||||
|         log_line_number.clear(); | ||||
| 	if (design == nullptr) | ||||
| 		design = yosys_design; | ||||
| 
 | ||||
|  | @ -718,7 +720,6 @@ bool run_frontend(std::string filename, std::string command, RTLIL::Design *desi | |||
| 	{ | ||||
| 		std::string run_from, run_to; | ||||
| 		bool from_to_active = true; | ||||
| 
 | ||||
| 		if (from_to_label != NULL) { | ||||
| 			size_t pos = from_to_label->find(':'); | ||||
| 			if (pos == std::string::npos) { | ||||
|  | @ -743,13 +744,19 @@ bool run_frontend(std::string filename, std::string command, RTLIL::Design *desi | |||
| 		if (f == NULL) | ||||
| 			log_error("Can't open script file `%s' for reading: %s\n", filename, strerror(errno)); | ||||
| 
 | ||||
| 		{ | ||||
| 		  std::stringstream ss; | ||||
| 		  ss << "Running " << command << " on file '" << filename << "'"; | ||||
| 		  log_line_number.push_back(ss.str()); | ||||
| 		}		 | ||||
| 		FILE *backup_script_file = Frontend::current_script_file; | ||||
| 		Frontend::current_script_file = f; | ||||
| 
 | ||||
| 		try { | ||||
| 			std::string command; | ||||
| 			while (fgetline(f, command)) { | ||||
| 				while (!command.empty() && command[command.size()-1] == '\\') { | ||||
| 			  log_line_number.push_back(command); | ||||
| 			  while (!command.empty() && command[command.size()-1] == '\\') { | ||||
| 					std::string next_line; | ||||
| 					if (!fgetline(f, next_line)) | ||||
| 						break; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue