diff --git a/libsel4utils/include/sel4utils/elf.h b/libsel4utils/include/sel4utils/elf.h
index 6703965..cfc81ea 100644
--- a/libsel4utils/include/sel4utils/elf.h
+++ b/libsel4utils/include/sel4utils/elf.h
@@ -64,7 +64,7 @@
  */
 void *
 sel4utils_elf_load_record_regions(vspace_t *loadee, vspace_t *loader, vka_t *loadee_vka,
-                                  vka_t *loader_vka, elf_t *elf, sel4utils_elf_region_t *regions, int mapanywhere);
+                                  vka_t *loader_vka, const elf_t *elf, sel4utils_elf_region_t *regions, int mapanywhere);
 
 /**
  * Wrapper for sel4utils_elf_load_record_regions. Does not record/perform reservations and
@@ -80,7 +80,7 @@
  */
 void *
 sel4utils_elf_load(vspace_t *loadee, vspace_t *loader, vka_t *loadee_vka,
-                   vka_t *loader_vka, elf_t *elf);
+                   vka_t *loader_vka, const elf_t *elf);
 
 /**
  * Parses an elf file but does not actually load it. Merely reserves the regions in the vspace
@@ -94,7 +94,7 @@
  * @return The entry point of the elf, NULL on error
  */
 void *
-sel4utils_elf_reserve(vspace_t *loadee, elf_t *elf, sel4utils_elf_region_t *regions);
+sel4utils_elf_reserve(vspace_t *loadee, const  elf_t *elf, sel4utils_elf_region_t *regions);
 
 /**
  * Parses an elf file and returns the number of loadable regions. The result of this
@@ -105,7 +105,7 @@
  * @return Number of loadable regions in the elf
  */
 int
-sel4utils_elf_num_regions(elf_t *elf);
+sel4utils_elf_num_regions(const elf_t *elf);
 
 /**
  * Looks for the __vsyscall section in an elf file and returns the value. This
@@ -115,7 +115,7 @@
  *
  * @return Address of vsyscall function or 0 if not found
  */
-uintptr_t sel4utils_elf_get_vsyscall(elf_t *elf);
+uintptr_t sel4utils_elf_get_vsyscall(const elf_t *elf);
 
 /**
  * Finds the section_name section in an elf file and returns the address.
@@ -128,7 +128,7 @@
  *
  * @return Address of section or 0 if not found
  */
-uintptr_t sel4utils_elf_get_section(elf_t *elf, const char *section_name, uint64_t *section_size);
+uintptr_t sel4utils_elf_get_section(const elf_t *elf, const char *section_name, uint64_t *section_size);
 
 /**
  * Parses an elf file and returns the number of phdrs. The result of this
@@ -137,7 +137,7 @@
  * @param image_name name of the image in the cpio archive to inspect
  * @return Number of phdrs in the elf
  */
-uint32_t sel4utils_elf_num_phdrs(elf_t *elf);
+uint32_t sel4utils_elf_num_phdrs(const elf_t *elf);
 
 /**
  * Parse an elf file and retrieve all the phdrs
@@ -148,5 +148,5 @@
  *
  * @return Number of phdrs retrieved
  */
-void sel4utils_elf_read_phdrs(elf_t *elf, size_t max_phdrs, Elf_Phdr *phdrs);
+void sel4utils_elf_read_phdrs(const elf_t *elf, size_t max_phdrs, Elf_Phdr *phdrs);
 
diff --git a/libsel4utils/src/elf.c b/libsel4utils/src/elf.c
index 637585e..7bc2f5d 100644
--- a/libsel4utils/src/elf.c
+++ b/libsel4utils/src/elf.c
@@ -31,7 +31,7 @@
 
 static int load_segment(vspace_t *loadee_vspace, vspace_t *loader_vspace,
                         vka_t *loadee_vka, vka_t *loader_vka,
-                        char *src, size_t file_size, int num_regions,
+                        const char *src, size_t file_size, int num_regions,
                         sel4utils_elf_region_t regions[num_regions], int region_index)
 {
     int error = seL4_NoError;
@@ -163,12 +163,12 @@
  * @return 0 on success.
  */
 static int load_segments(vspace_t *loadee_vspace, vspace_t *loader_vspace,
-                         vka_t *loadee_vka, vka_t *loader_vka, elf_t *elf_file,
+                         vka_t *loadee_vka, vka_t *loader_vka, const elf_t *elf_file,
                          int num_regions, sel4utils_elf_region_t regions[num_regions])
 {
     for (int i = 0; i < num_regions; i++) {
         int segment_index = regions[i].segment_index;
-        char *source_addr = elf_getProgramSegment(elf_file, segment_index);
+        const char *source_addr = elf_getProgramSegment(elf_file, segment_index);
         if (source_addr == NULL) {
             return 1;
         }
@@ -183,12 +183,12 @@
     return 0;
 }
 
-static bool is_loadable_section(elf_t *elf_file, int index)
+static bool is_loadable_section(const elf_t *elf_file, int index)
 {
     return elf_getProgramHeaderType(elf_file, index) == PT_LOAD;
 }
 
-static int count_loadable_regions(elf_t *elf_file)
+static int count_loadable_regions(const elf_t *elf_file)
 {
     int num_headers = elf_getNumProgramHeaders(elf_file);
     int loadable_headers = 0;
@@ -202,7 +202,7 @@
     return loadable_headers;
 }
 
-int sel4utils_elf_num_regions(elf_t *elf_file)
+int sel4utils_elf_num_regions(const elf_t *elf_file)
 {
     return count_loadable_regions(elf_file);
 }
@@ -348,7 +348,7 @@
  *
  * @return 0 on success.
  */
-static int read_regions(elf_t *elf_file, size_t total_regions, sel4utils_elf_region_t regions[total_regions])
+static int read_regions(const elf_t *elf_file, size_t total_regions, sel4utils_elf_region_t regions[total_regions])
 {
     int num_headers = elf_getNumProgramHeaders(elf_file);
     int region_id = 0;
@@ -414,7 +414,7 @@
  *
  * @return 0 on success.
  */
-static int elf_reserve_regions_in_vspace(vspace_t *loadee, elf_t *elf_file,
+static int elf_reserve_regions_in_vspace(vspace_t *loadee, const elf_t *elf_file,
                                          int num_regions, sel4utils_elf_region_t regions[num_regions], int mapanywhere)
 {
     int error = read_regions(elf_file, num_regions, regions);
@@ -439,7 +439,7 @@
     return 0;
 }
 
-static void *entry_point(elf_t *elf_file)
+static void *entry_point(const elf_t *elf_file)
 {
     uint64_t entry_point = elf_getEntryPoint(elf_file);
     if ((uint32_t)(entry_point >> 32) != 0) {
@@ -452,7 +452,7 @@
 }
 
 
-void *sel4utils_elf_reserve(vspace_t *loadee, elf_t *elf_file, sel4utils_elf_region_t *regions)
+void *sel4utils_elf_reserve(vspace_t *loadee, const elf_t *elf_file, sel4utils_elf_region_t *regions)
 {
     /* Count number of loadable segments */
     int num_regions = count_loadable_regions(elf_file);
@@ -469,7 +469,7 @@
 }
 
 void *sel4utils_elf_load_record_regions(vspace_t *loadee, vspace_t *loader, vka_t *loadee_vka, vka_t *loader_vka,
-                                        elf_t *elf_file, sel4utils_elf_region_t *regions, int mapanywhere)
+                                        const elf_t *elf_file, sel4utils_elf_region_t *regions, int mapanywhere)
 {
     /* Calculate number of loadable regions.  Use stack array if one wasn't passed in */
     int num_regions = count_loadable_regions(elf_file);
@@ -507,7 +507,7 @@
     return entry_point(elf_file);
 }
 
-uintptr_t sel4utils_elf_get_vsyscall(elf_t *elf_file)
+uintptr_t sel4utils_elf_get_vsyscall(const elf_t *elf_file)
 {
     uintptr_t *addr = (uintptr_t *)sel4utils_elf_get_section(elf_file, "__vsyscall", NULL);
     if (addr) {
@@ -517,11 +517,11 @@
     }
 }
 
-uintptr_t sel4utils_elf_get_section(elf_t *elf_file, const char *section_name, uint64_t *section_size)
+uintptr_t sel4utils_elf_get_section(const elf_t *elf_file, const char *section_name, uint64_t *section_size)
 {
     /* See if we can find the section */
     size_t section_id;
-    void *addr = elf_getSectionNamed(elf_file, section_name, &section_id);
+    const void *addr = elf_getSectionNamed(elf_file, section_name, &section_id);
     if (addr) {
         if (section_size != NULL) {
             *section_size = elf_getSectionSize(elf_file, section_id);
@@ -532,17 +532,18 @@
     }
 }
 
-void *sel4utils_elf_load(vspace_t *loadee, vspace_t *loader, vka_t *loadee_vka, vka_t *loader_vka, elf_t *elf_file)
+void *sel4utils_elf_load(vspace_t *loadee, vspace_t *loader, vka_t *loadee_vka, vka_t *loader_vka,
+                         const elf_t *elf_file)
 {
     return sel4utils_elf_load_record_regions(loadee, loader, loadee_vka, loader_vka, elf_file, NULL, 0);
 }
 
-uint32_t sel4utils_elf_num_phdrs(elf_t *elf_file)
+uint32_t sel4utils_elf_num_phdrs(const elf_t *elf_file)
 {
     return elf_getNumProgramHeaders(elf_file);
 }
 
-void sel4utils_elf_read_phdrs(elf_t *elf_file, size_t max_phdrs, Elf_Phdr *phdrs)
+void sel4utils_elf_read_phdrs(const elf_t *elf_file, size_t max_phdrs, Elf_Phdr *phdrs)
 {
     size_t num_phdrs = elf_getNumProgramHeaders(elf_file);
     for (size_t i = 0; i < num_phdrs && i < max_phdrs; i++) {
diff --git a/libsel4utils/src/process.c b/libsel4utils/src/process.c
index 63a9277..aafafd6 100644
--- a/libsel4utils/src/process.c
+++ b/libsel4utils/src/process.c
@@ -555,7 +555,7 @@
     if (config.is_elf) {
         unsigned long size;
         unsigned long cpio_len = _cpio_archive_end - _cpio_archive;
-        char *file = cpio_get_file(_cpio_archive, cpio_len, config.image_name, &size);
+        char const *file = cpio_get_file(_cpio_archive, cpio_len, config.image_name, &size);
         elf_t elf;
         elf_newFile(file, size, &elf);
 
