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 1186dbf..1699864 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;
 
@@ -203,7 +203,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 e166d9b..d6fd828 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],
