diff --git a/benchmarks/gem_syslatency.c b/benchmarks/gem_syslatency.c
index 7671dc4..3ac9544 100644
--- a/benchmarks/gem_syslatency.c
+++ b/benchmarks/gem_syslatency.c
@@ -44,7 +44,11 @@
 
 #include <linux/unistd.h>
 
-#define sigev_notify_thread_id _sigev_un._tid
+#ifndef __GLIBC__
+#include "signal_compat.h"
+#endif
+
+#define sigev_notify_thread_id sigev_notify_function
 
 static volatile int done;
 
diff --git a/lib/igt_aux.c b/lib/igt_aux.c
index 578f857..3e98cf0 100644
--- a/lib/igt_aux.c
+++ b/lib/igt_aux.c
@@ -31,6 +31,7 @@
 #endif
 #include <stdio.h>
 #include <fcntl.h>
+#include <limits.h> // PATH_MAX
 #include <sys/stat.h>
 #include <sys/ioctl.h>
 #include <string.h>
@@ -73,6 +74,12 @@
 #include <libgen.h>   /* for dirname() */
 #endif
 
+#ifndef __GLIBC__
+#include "signal_compat.h"
+#endif
+
+//#include <asm-generic/siginfo.h>
+
 /**
  * SECTION:igt_aux
  * @short_description: Auxiliary libraries and support functions
diff --git a/lib/igt_aux.h b/lib/igt_aux.h
index 04d2290..a0ada9e 100644
--- a/lib/igt_aux.h
+++ b/lib/igt_aux.h
@@ -46,7 +46,7 @@
 #  define gettid() (pid_t)(syscall(__NR_gettid))
 # endif
 #endif
-#define sigev_notify_thread_id _sigev_un._tid
+#define sigev_notify_thread_id sigev_notify_function
 
 /* auxialiary igt helpers from igt_aux.c */
 /* generally useful helpers */
diff --git a/lib/igt_eld.c b/lib/igt_eld.c
index 3d7fd4d..d51774b 100644
--- a/lib/igt_eld.c
+++ b/lib/igt_eld.c
@@ -29,6 +29,7 @@
 #include <stdint.h>
 #include <stdio.h>
 #include <string.h>
+#include <limits.h>
 
 #include "igt_core.h"
 #include "igt_eld.h"
diff --git a/lib/igt_halffloat.c b/lib/igt_halffloat.c
index 08ab05f..7d6a6e6 100644
--- a/lib/igt_halffloat.c
+++ b/lib/igt_halffloat.c
@@ -162,7 +162,7 @@ static inline float _half_to_float(uint16_t val)
 	return fi.f;
 }
 
-#if defined(__x86_64__) && !defined(__clang__)
+#if defined(__x86_64__) && !defined(__clang__) && defined(__GLIBC__)
 #pragma GCC push_options
 #pragma GCC target("f16c")
 
diff --git a/lib/igt_x86.c b/lib/igt_x86.c
index 6ac700d..ddf5edd 100644
--- a/lib/igt_x86.c
+++ b/lib/igt_x86.c
@@ -190,7 +190,7 @@ char *igt_x86_features_to_string(unsigned features, char *line)
 }
 #endif
 
-#if defined(__x86_64__) && !defined(__clang__)
+#if defined(__x86_64__) && !defined(__clang__) && defined(__GLIBC__)
 #pragma GCC push_options
 #pragma GCC target("sse4.1")
 #pragma GCC diagnostic ignored "-Wpointer-arith"
diff --git a/lib/signal_compat.h b/lib/signal_compat.h
new file mode 100644
index 0000000..acae648
--- /dev/null
+++ b/lib/signal_compat.h
@@ -0,0 +1,4 @@
+#define SIGEV_SIGNAL    0       /* notify via signal */
+#define SIGEV_NONE      1       /* other notification: meaningless */
+#define SIGEV_THREAD    2       /* deliver via thread creation */
+#define SIGEV_THREAD_ID 4       /* deliver to thread */
diff --git a/tests/drm_read.c b/tests/drm_read.c
index cfb1c04..18be922 100644
--- a/tests/drm_read.c
+++ b/tests/drm_read.c
@@ -220,7 +220,7 @@ static void test_short_buffer_wakeup(int in, enum pipe pipe)
 		pthread_mutex_unlock(&w.mutex);
 
 		/* Give each thread a chance to sleep in drm_read() */
-		pthread_yield();
+		sched_yield();
 
 		/* One event should wake all threads as none consume */
 		generate_event(w.fd, pipe);
diff --git a/tests/kms_hdmi_inject.c b/tests/kms_hdmi_inject.c
index 8c0d133..f272418 100644
--- a/tests/kms_hdmi_inject.c
+++ b/tests/kms_hdmi_inject.c
@@ -25,7 +25,7 @@
 #include "config.h"
 
 #include <dirent.h>
-
+#include <limits.h>
 #include "igt.h"
 #include "igt_edid.h"
 #include "igt_eld.h"
diff --git a/tests/kms_sysfs_edid_timing.c b/tests/kms_sysfs_edid_timing.c
index 1201388..e75c7e9 100644
--- a/tests/kms_sysfs_edid_timing.c
+++ b/tests/kms_sysfs_edid_timing.c
@@ -24,6 +24,7 @@
 
 #include <dirent.h>
 #include <fcntl.h>
+#include <limits.h>
 #include <sys/stat.h>
 
 #define THRESHOLD_PER_CONNECTOR	10
diff --git a/tests/i915/gem_close_race.c b/tests/i915/gem_close_race.c
index 57e0048..ad5f504 100644
--- a/tests/i915/gem_close_race.c
+++ b/tests/i915/gem_close_race.c
@@ -51,7 +51,11 @@
 static uint32_t devid;
 static bool has_64bit_relocations;
 
-#define sigev_notify_thread_id _sigev_un._tid
+#ifndef __GLIBC__
+#include "signal_compat.h"
+#endif
+
+#define sigev_notify_thread_id sigev_notify_function
 
 static void selfcopy(int fd, uint32_t handle, int loops)
 {
diff --git a/tests/i915/i915_pm_rpm.c b/tests/i915/i915_pm_rpm.c
index e2c7ba2..08e44b7 100644
--- a/tests/i915/i915_pm_rpm.c
+++ b/tests/i915/i915_pm_rpm.c
@@ -36,6 +36,7 @@
 #include <unistd.h>
 #include <fcntl.h>
 #include <dirent.h>
+#include <limits.h>
 #include <sys/ioctl.h>
 #include <sys/mman.h>
 #include <sys/types.h>
diff --git a/tests/panfrost_submit.c b/tests/panfrost_submit.c
index 13ce85b..ceb2e6d 100644
--- a/tests/panfrost_submit.c
+++ b/tests/panfrost_submit.c
@@ -68,7 +68,7 @@ static void check_error(int fd, struct panfrost_submit *submit)
 static void check_fb(int fd, struct panfrost_bo *bo)
 {
         int gpu_prod_id = igt_panfrost_get_param(fd, DRM_PANFROST_PARAM_GPU_PROD_ID);
-        __uint32_t *fbo;
+        uint32_t *fbo;
         int i;
 
         fbo = bo->map;
