Change return type of cpuinfo_initialize to bool
diff --git a/include/cpuinfo.h b/include/cpuinfo.h
index 69923d1..2916a42 100644
--- a/include/cpuinfo.h
+++ b/include/cpuinfo.h
@@ -499,7 +499,7 @@
 extern "C" {
 #endif
 
-void CPUINFO_ABI cpuinfo_initialize(void);
+bool CPUINFO_ABI cpuinfo_initialize(void);
 
 void CPUINFO_ABI cpuinfo_deinitialize(void);
 
diff --git a/src/init.c b/src/init.c
index a877f23..1ec13c0 100644
--- a/src/init.c
+++ b/src/init.c
@@ -27,7 +27,7 @@
 	static pthread_once_t init_guard = PTHREAD_ONCE_INIT;
 #endif
 
-void CPUINFO_ABI cpuinfo_initialize(void) {
+bool CPUINFO_ABI cpuinfo_initialize(void) {
 #if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
 	#if defined(__MACH__) && defined(__APPLE__)
 		pthread_once(&init_guard, &cpuinfo_x86_mach_init);
@@ -49,6 +49,7 @@
 #else
 	#error Unsupported target architecture
 #endif
+	return (cpuinfo_processors != NULL) && (cpuinfo_cores != NULL) && (cpuinfo_packages != NULL);
 }
 
 void CPUINFO_ABI cpuinfo_deinitialize(void) {
diff --git a/tools/cache-info.c b/tools/cache-info.c
index a4ca3e8..ba0706f 100644
--- a/tools/cache-info.c
+++ b/tools/cache-info.c
@@ -1,4 +1,5 @@
 #include <stdio.h>
+#include <stdlib.h>
 #include <inttypes.h>
 
 #include <cpuinfo.h>
@@ -55,7 +56,10 @@
 }
 
 int main(int argc, char** argv) {
-	cpuinfo_initialize();
+	if (!cpuinfo_initialize()) {
+		fprintf(stderr, "failed to initialize CPU information\n");
+		exit(EXIT_FAILURE);
+	}
 	if (cpuinfo_get_l1i_caches_count() != 0 && (cpuinfo_get_l1i_cache(0)->flags & CPUINFO_CACHE_UNIFIED) == 0) {
 		report_cache(cpuinfo_get_l1i_caches_count(), cpuinfo_get_l1i_cache(0), 1, "instruction");
 	}
diff --git a/tools/cpu-info.c b/tools/cpu-info.c
index e1a193b..e74c0ec 100644
--- a/tools/cpu-info.c
+++ b/tools/cpu-info.c
@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include <stdint.h>
+#include <stdlib.h>
 #include <inttypes.h>
 
 #include <cpuinfo.h>
@@ -184,7 +185,10 @@
 }
 
 int main(int argc, char** argv) {
-	cpuinfo_initialize();
+	if (!cpuinfo_initialize()) {
+		fprintf(stderr, "failed to initialize CPU information\n");
+		exit(EXIT_FAILURE);
+	}
 	#ifdef __ANDROID__
 		printf("SoC name: %s\n", cpuinfo_get_package(0)->name);
 		printf("GPU name: %s\n", cpuinfo_get_package(0)->gpu_name);
diff --git a/tools/isa-info.c b/tools/isa-info.c
index ceeb0d3..a1ed249 100644
--- a/tools/isa-info.c
+++ b/tools/isa-info.c
@@ -1,9 +1,13 @@
 #include <stdio.h>
+#include <stdlib.h>
 
 #include <cpuinfo.h>
 
 int main(int argc, char** argv) {
-	cpuinfo_initialize();
+	if (!cpuinfo_initialize()) {
+		fprintf(stderr, "failed to initialize CPU information\n");
+		exit(EXIT_FAILURE);
+	}
 
 #if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64