rem: dprintf("load_module_image failed: %s\n", strerror(image));
add: dprintf("load_module_image(%s) failed: %s\n", path, strerror(image));
context: load_module_image(const char *path, module_image **_moduleImage){	module_image *moduleImage;	status_t status;	image_id image;	TRACE(("load_module_image(path = \"%s\", _image = %p)\n", path, _moduleImage));	ASSERT(_moduleImage != NULL);	image = load_kernel_add_on(path);	if (image < 0) {		dprintf("load_module_image failed: %s\n", strerror(image));		return image;	}	moduleImage = (module_image *)malloc(sizeof(module_image));	if (!moduleImage) {		status = B_NO_MEMORY;		goto err;	}	if (get_image_symbol(image, "modules", B_SYMBOL_TYPE_DATA,			(void **)&moduleImage->info) != B_OK) {		TRACE(("load_module_image: Failed to load \"%s\" due to lack of 'modules' symbol\n", path));		status = B_BAD_TYPE;		goto err1;	}	moduleImage->dependencies = NULL;	get_image_symbol(image, "module_dependencies", B_SYMBOL_TYPE_DATA,		(void **)&moduleImage->dependencies);		// this is allowed to be NULL	moduleImage->path = strdup(path);	if (!moduleImage->path) {		status = B_NO_MEMORY;		goto err1;	}	moduleImage->image = image;	moduleImage->ref_count = 0;	moduleImage->keep_loaded = false;	recursive_lock_lock(&sModulesLock);	hash_insert(sModuleImagesHash, moduleImage);	recursive_lock_unlock(&sModulesLock);	*_moduleImage = moduleImage;	return B_OK;err1:	free(moduleImage);err:	unload_kernel_add_on(image);	return status;}