Report libovni version from trace
This commit is contained in:
		
							parent
							
								
									93fdfd51de
								
							
						
					
					
						commit
						855dd76678
					
				| @ -169,6 +169,61 @@ create_loom(struct system *sys, const char *relpath) | |||||||
| 	return loom; | 	return loom; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static int | ||||||
|  | report_libovni_version(struct system *sys) | ||||||
|  | { | ||||||
|  | 	int mixed = 0; | ||||||
|  | 	int first = 1; | ||||||
|  | 	const char *version; | ||||||
|  | 	const char *commit; | ||||||
|  | 	for (struct thread *th = sys->threads; th; th = th->gnext) { | ||||||
|  | 		if (th->meta == NULL) { | ||||||
|  | 			err("thread has no metadata %s", th->id); | ||||||
|  | 			return -1; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		const char *t_version = json_object_dotget_string(th->meta, "ovni.lib.version"); | ||||||
|  | 
 | ||||||
|  | 		if (t_version == NULL) { | ||||||
|  | 			err("missing ovni.lib.version key in thread metadata: %s", th->id); | ||||||
|  | 			return -1; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		const char *t_commit = json_object_dotget_string(th->meta, "ovni.lib.commit"); | ||||||
|  | 
 | ||||||
|  | 		if (t_commit == NULL) { | ||||||
|  | 			err("missing ovni.lib.commit key in thread metadata: %s", th->id); | ||||||
|  | 			return -1; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if (first) { | ||||||
|  | 			version = t_version; | ||||||
|  | 			commit = t_commit; | ||||||
|  | 			first = 0; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if (strcmp(t_version, version) != 0) { | ||||||
|  | 			warn("thread is using a different libovni version (%s): %s", | ||||||
|  | 					t_version, th->id); | ||||||
|  | 			mixed = 1; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if (strcmp(t_commit, commit) != 0) { | ||||||
|  | 			warn("thread is using a different libovni commit (%s): %s", | ||||||
|  | 					t_commit, th->id); | ||||||
|  | 			mixed = 1; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if (mixed) { | ||||||
|  | 		warn("mixed versions of libovni detected"); | ||||||
|  | 	} else { | ||||||
|  | 		info("generated with libovni version %s commit %s", version, commit); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| static int | static int | ||||||
| create_system(struct system *sys, struct trace *trace) | create_system(struct system *sys, struct trace *trace) | ||||||
| { | { | ||||||
| @ -547,6 +602,11 @@ system_init(struct system *sys, struct emu_args *args, struct trace *trace) | |||||||
| 		return -1; | 		return -1; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	if (report_libovni_version(sys) != 0) { | ||||||
|  | 		err("report_libovni_version failed"); | ||||||
|  | 		return -1; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	/* Load the clock offsets table */ | 	/* Load the clock offsets table */ | ||||||
| 	if (load_clock_offsets(&sys->clkoff, args) != 0) { | 	if (load_clock_offsets(&sys->clkoff, args) != 0) { | ||||||
| 		err("load_clock_offsets() failed"); | 		err("load_clock_offsets() failed"); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user