diff --git a/Kernel/Syscalls/execve.cpp b/Kernel/Syscalls/execve.cpp index e6f5e929b0c..a7b1c644c7d 100644 --- a/Kernel/Syscalls/execve.cpp +++ b/Kernel/Syscalls/execve.cpp @@ -469,9 +469,6 @@ KResultOr> Process::find_elf_interpreter_for_exec } if (!interpreter_path.is_empty()) { - // Programs with an interpreter better be relocatable executables or we don't know what to do... - if (elf_header->e_type != ET_DYN) - return KResult(-ENOEXEC); #ifdef EXEC_DEBUG dbg() << "exec(" << path << "): Using program interpreter " << interpreter_path; diff --git a/Libraries/LibELF/Validation.cpp b/Libraries/LibELF/Validation.cpp index 0afa0a54c51..12d7b29d0a1 100644 --- a/Libraries/LibELF/Validation.cpp +++ b/Libraries/LibELF/Validation.cpp @@ -195,11 +195,6 @@ bool validate_program_headers(const Elf32_Ehdr& elf_header, size_t file_size, co auto& program_header = program_header_begin[header_index]; switch (program_header.p_type) { case PT_INTERP: - if (ET_DYN != elf_header.e_type) { - if (verbose) - dbgprintf("Found PT_INTERP header (%zu) in non-DYN ELF object! What? We can't handle this!\n", header_index); - return false; - } // We checked above that file_size was >= buffer size. We only care about buffer size anyway, we're trying to read this! if (program_header.p_offset + program_header.p_filesz > buffer_size) { if (verbose)