diff --git a/libsel4allocman/src/cspace/two_level.c b/libsel4allocman/src/cspace/two_level.c
index 0cb6d65..4667680 100644
--- a/libsel4allocman/src/cspace/two_level.c
+++ b/libsel4allocman/src/cspace/two_level.c
@@ -28,7 +28,7 @@
        could be a two level cspace and this would still work */
     if(!cspace->second_levels[l1slot]) {
         assert(!"ERROR: Tried make a path to a non existant slot\n");
-        return (cspacepath_t) {0, 0, 0, 0, 0, 0};
+        return (cspacepath_t) {0, 0, 0, 0, 0, 0, 0};
     }
     l1_path = _cspace_single_level_make_path(&cspace->first_level, l1slot);
     l2_path =_cspace_single_level_make_path(&cspace->second_levels[l1slot]->second_level, l2slot);
diff --git a/libsel4test/include/sel4test/prototype.h b/libsel4test/include/sel4test/prototype.h
index 06a7726..a3438bc 100644
--- a/libsel4test/include/sel4test/prototype.h
+++ b/libsel4test/include/sel4test/prototype.h
@@ -23,7 +23,7 @@
  * 
  * @name name of test suite
  */
-void sel4test_start_suite(char *name);
+void sel4test_start_suite(const char *name);
 
 
 /**
@@ -44,14 +44,14 @@
  * Can report multiple errors.
  * This will fail a test case.
  */
-void _sel4test_report_error(char *error, char *file, int line);
+void _sel4test_report_error(const char *error, const char *file, int line);
 
 
 /*
  * Mark the current test as failed. Should
  * only be called once per test case 
  */
-void _sel4test_failure(char *failure, char *file, int line);
+void _sel4test_failure(const char *failure, const char *file, int line);
 
 /*
  * End the current test case
diff --git a/libsel4test/include/sel4test/test.h b/libsel4test/include/sel4test/test.h
index a7a9125..f1644f1 100644
--- a/libsel4test/include/sel4test/test.h
+++ b/libsel4test/include/sel4test/test.h
@@ -76,7 +76,7 @@
 }
 
 /* Fails a test case, stop running the rest of the test, but keep running other tests. */
-static inline int _test_fail(char *condition, char *file, int line)
+static inline int _test_fail(const char *condition, const char *file, int line)
 {
     _sel4test_failure(condition, file, line);
 #ifdef CONFIG_TESTPRINTER_HALT_ON_TEST_FAILURE
@@ -92,7 +92,7 @@
 }
 
 /* Fails a test case, keep running the rest of the test, then keep running other tests. */
-static inline void _test_error(char *condition, char *file, int line)
+static inline void _test_error(const char *condition, const char *file, int line)
 {
 
     _sel4test_report_error(condition, file, line);
@@ -109,7 +109,7 @@
 }
 
 /* Fails a test case, stop everything. */
-static inline void _test_abort(char *condition, char *file, int line)
+static inline void _test_abort(const char *condition, const char *file, int line)
 {
     _sel4test_failure(condition, file, line);
     printf("Halting on fatal assertion...\n");
@@ -224,7 +224,7 @@
  * @param run_test function that runs the tests. 
  *
  */
-void sel4test_run_tests(char *name, int (*run_test)(struct testcase *t));
+void sel4test_run_tests(const char *name, int (*run_test)(struct testcase *t));
 
 /* 
  * Get a testcase.
@@ -232,7 +232,7 @@
  * @param name the name of the test to retrieve.
  * @return the test corresponding to name, NULL if test not found.
  */
-testcase_t* sel4test_get_test(char *name);
+testcase_t* sel4test_get_test(const char *name);
 
 
 bool sel4test_get_result(void);
diff --git a/libsel4test/src/test.c b/libsel4test/src/test.c
index 0f1b1ab..d5b3c5a 100644
--- a/libsel4test/src/test.c
+++ b/libsel4test/src/test.c
@@ -54,7 +54,7 @@
 
 
 void 
-sel4test_start_suite(char *name) {
+sel4test_start_suite(const char *name) {
 
 #ifdef CONFIG_PRINT_XML
     buf_index = 0;
@@ -101,7 +101,7 @@
 }
 
 void 
-_sel4test_report_error(char *error, char *file, int line) {
+_sel4test_report_error(const char *error, const char *file, int line) {
 #ifdef CONFIG_PRINT_XML
     printf("\t\t<error>%s at line %d of file %s</error>\n", error, line, file);
 #else
@@ -112,7 +112,7 @@
 
 
 void 
-_sel4test_failure(char *failure, char *file, int line) {
+_sel4test_failure(const char *failure, const char *file, int line) {
 #ifdef CONFIG_PRINT_XML
     printf("\t\t<failure type=\"failure\">%s at line %d of file %s</failure>\n", failure, line, file);
 #else
@@ -160,7 +160,7 @@
 static USED SECTION("_test_case") struct {} dummy;
 
 testcase_t*
-sel4test_get_test(char *name) 
+sel4test_get_test(const char *name) 
 {
     
     for (testcase_t *t = __start__test_case; t < __stop__test_case; t++) {
@@ -174,7 +174,7 @@
 
 
 void
-sel4test_run_tests(char *name, int (*run_test)(struct testcase *t)) {
+sel4test_run_tests(const char *name, int (*run_test)(struct testcase *t)) {
 
     /* Count how many tests actually exist and allocate space for them */
     int max_tests = (int)(__stop__test_case - __start__test_case);
diff --git a/libsel4utils/include/sel4utils/elf.h b/libsel4utils/include/sel4utils/elf.h
index ab07af7..cd84b94 100644
--- a/libsel4utils/include/sel4utils/elf.h
+++ b/libsel4utils/include/sel4utils/elf.h
@@ -53,7 +53,7 @@
  */
 void *
 sel4utils_elf_load_record_regions(vspace_t *loadee, vspace_t *loader, vka_t *loadee_vka,
-                                  vka_t *loader_vka, char *image_name, sel4utils_elf_region_t *regions, int mapanywhere);
+                                  vka_t *loader_vka, const char *image_name, sel4utils_elf_region_t *regions, int mapanywhere);
 
 /**
  * Wrapper for sel4utils_elf_load_record_regions. Does not record/perform reservations and
@@ -69,7 +69,7 @@
  */
 void *
 sel4utils_elf_load(vspace_t *loadee, vspace_t *loader, vka_t *loadee_vka,
-                   vka_t *loader_vka, char *image_name);
+                   vka_t *loader_vka, const char *image_name);
 
 /**
  * Parses an elf file but does not actually load it. Merely reserves the regions in the vspace
@@ -83,7 +83,7 @@
  * @return The entry point of the elf, NULL on error
  */
 void *
-sel4utils_elf_reserve(vspace_t *loadee, char *image_name, sel4utils_elf_region_t *regions);
+sel4utils_elf_reserve(vspace_t *loadee, const char *image_name, sel4utils_elf_region_t *regions);
 
 /**
  * Parses an elf file and returns the number of loadable regions. The result of this
@@ -94,7 +94,7 @@
  * @return Number of loadable regions in the elf
  */
 int
-sel4utils_elf_num_regions(char *image_name);
+sel4utils_elf_num_regions(const char *image_name);
 
 /**
  * Looks for the __vsyscall section in an elf file and returns the value. This
@@ -104,7 +104,7 @@
  *
  * @return Address of vsyscall function or 0 if not found
  */
-uintptr_t sel4utils_elf_get_vsyscall(char *image_name);
+uintptr_t sel4utils_elf_get_vsyscall(const char *image_name);
 
 #endif /* (defined CONFIG_LIB_SEL4_VKA && defined CONFIG_LIB_SEL4_VSPACE) */
 #endif /* SEL4UTILS_ELF_H */
diff --git a/libsel4utils/include/sel4utils/process.h b/libsel4utils/include/sel4utils/process.h
index ddbe650..03ab1b8 100644
--- a/libsel4utils/include/sel4utils/process.h
+++ b/libsel4utils/include/sel4utils/process.h
@@ -84,7 +84,7 @@
     /* should we handle elf logic at all? */
     bool is_elf;
     /* if so what is the image name? */
-    char *image_name;
+    const char *image_name;
     /* Do you want the elf image preloaded? */
     bool do_elf_load;
 
@@ -201,7 +201,7 @@
  * @return 0 on success, -1 on error.
  */
 int sel4utils_configure_process(sel4utils_process_t *process, vka_t *vka, vspace_t *vspace,
-                                uint8_t priority, char *image_name);
+                                uint8_t priority, const char *image_name);
 
 /**
  * Configure a process with more customisations (Create your own vspace, customise cspace size).
diff --git a/libsel4utils/include/sel4utils/sel4_debug.h b/libsel4utils/include/sel4utils/sel4_debug.h
index 1fe1a76..6dc88fb 100644
--- a/libsel4utils/include/sel4utils/sel4_debug.h
+++ b/libsel4utils/include/sel4utils/sel4_debug.h
@@ -13,8 +13,8 @@
 
 #define	sel4_error(e, str)	((e == seL4_NoError) ? (void)0 : __sel4_error(e, __FILE__, __func__, __LINE__, str))
 
-void __sel4_error(int, const char *, const char *, int, char *);
+void __sel4_error(int, const char *, const char *, int, const char *);
 
-extern char *sel4_errlist[];
+extern const char *sel4_errlist[];
 
 #endif /* _SEL4_DEBUG_ */
diff --git a/libsel4utils/src/elf.c b/libsel4utils/src/elf.c
index 2fe7d78..e14a9e2 100644
--- a/libsel4utils/src/elf.c
+++ b/libsel4utils/src/elf.c
@@ -132,7 +132,7 @@
 }
 
 int
-sel4utils_elf_num_regions(char *image_name)
+sel4utils_elf_num_regions(const char *image_name)
 {
     int i;
     unsigned long elf_size;
@@ -183,7 +183,7 @@
 }
 
 void *
-sel4utils_elf_reserve(vspace_t *loadee, char *image_name, sel4utils_elf_region_t *regions)
+sel4utils_elf_reserve(vspace_t *loadee, const char *image_name, sel4utils_elf_region_t *regions)
 {
     unsigned long elf_size;
     char *elf_file = cpio_get_file(_cpio_archive, image_name, &elf_size);
@@ -226,7 +226,7 @@
 }
 
 void *
-sel4utils_elf_load_record_regions(vspace_t *loadee, vspace_t *loader, vka_t *loadee_vka, vka_t *loader_vka, char *image_name, sel4utils_elf_region_t *regions, int mapanywhere)
+sel4utils_elf_load_record_regions(vspace_t *loadee, vspace_t *loader, vka_t *loadee_vka, vka_t *loader_vka, const char *image_name, sel4utils_elf_region_t *regions, int mapanywhere)
 {
     unsigned long elf_size;
     char *elf_file = cpio_get_file(_cpio_archive, image_name, &elf_size);
@@ -288,7 +288,7 @@
     return error == seL4_NoError ? (void*)(seL4_Word)entry_point : NULL;
 }
 
-uintptr_t sel4utils_elf_get_vsyscall(char *image_name)
+uintptr_t sel4utils_elf_get_vsyscall(const char *image_name)
 {
     unsigned long elf_size;
     char *elf_file = cpio_get_file(_cpio_archive, image_name, &elf_size);
@@ -307,7 +307,7 @@
 }
 
 void *
-sel4utils_elf_load(vspace_t *loadee, vspace_t *loader, vka_t *loadee_vka, vka_t *loader_vka, char *image_name)
+sel4utils_elf_load(vspace_t *loadee, vspace_t *loader, vka_t *loadee_vka, vka_t *loader_vka, const char *image_name)
 {
     return sel4utils_elf_load_record_regions(loadee, loader, loadee_vka, loader_vka, image_name, NULL, 0);
 }
diff --git a/libsel4utils/src/process.c b/libsel4utils/src/process.c
index fe3b992..ed2fb3a 100644
--- a/libsel4utils/src/process.c
+++ b/libsel4utils/src/process.c
@@ -358,7 +358,7 @@
 
 int
 sel4utils_configure_process(sel4utils_process_t *process, vka_t *vka,
-                            vspace_t *vspace, uint8_t priority, char *image_name)
+                            vspace_t *vspace, uint8_t priority, const char *image_name)
 {
     sel4utils_process_config_t config = {
         .is_elf = true,
diff --git a/libsel4utils/src/sel4_debug.c b/libsel4utils/src/sel4_debug.c
index e0ad761..8f64b50 100644
--- a/libsel4utils/src/sel4_debug.c
+++ b/libsel4utils/src/sel4_debug.c
@@ -12,7 +12,7 @@
 #include <stdlib.h> /* For abort() */
 #include <sel4utils/sel4_debug.h>
 
-char *sel4_errlist[] = {
+const char *sel4_errlist[] = {
     "seL4_NoError",
     "seL4_InvalidArgument",
     "seL4_InvalidCapability",
@@ -29,7 +29,7 @@
 
 void
 __sel4_error(int sel4_error, const char *file,
-             const char *function, int line, char * str)
+             const char *function, int line, const char * str)
 {
     fprintf(stderr, "seL4 Error: %s, function %s, file %s, line %d: %s\n",
             sel4_errlist[sel4_error],
