Unable to load interpreter problems (simple debugging patch to find out more about the problem)

Greg Alexander (galexand@sietch.bloomington.in.us)
Thu, 1 May 1997 20:13:07 -0500 (EST)


If you are having the Unable to load interpreter problem, please install
this patch and let me know which load_elf_interp error gets reported.

Greg Alexander
http://www.cia-g.com/~sietch/
----
--- binfmt_elf.c.orig Thu May 1 20:06:12 1997
+++ binfmt_elf.c Thu May 1 20:11:14 1997
@@ -196,19 +196,20 @@
!elf_check_arch(interp_elf_ex->e_machine) ||
(!interpreter_inode->i_op ||
!interpreter_inode->i_op->default_file_ops->mmap)){
+ printk("load_elf_interp: failed consistency checks\n");
return ~0UL;
}

/* Now read in all of the header information */

if (sizeof(struct elf_phdr) * interp_elf_ex->e_phnum > PAGE_SIZE)
- return ~0UL;
+ return printk("load_elf_interp: Wrong header size?\n"),~0UL;

elf_phdata = (struct elf_phdr *)
kmalloc(sizeof(struct elf_phdr) * interp_elf_ex->e_phnum,
GFP_KERNEL);
if (!elf_phdata)
- return ~0UL;
+ return printk("load_elf_interp: Couldn't allocate elf_phdata.\n");~0UL;

/*
* If the size of this structure has changed, then punt, since
@@ -217,7 +218,7 @@
if (interp_elf_ex->e_phentsize != sizeof(struct elf_phdr))
{
kfree(elf_phdata);
- return ~0UL;
+ return printk("load_elf_interp: structure size changed?\n"),~0UL;
}

retval = read_exec(interpreter_inode, interp_elf_ex->e_phoff,
@@ -232,6 +233,7 @@
elf_exec_fileno = open_inode(interpreter_inode, O_RDONLY);
if (elf_exec_fileno < 0) {
kfree(elf_phdata);
+ printk("elf_exec_fileno = %d\n",elf_exec_fileno);
return ~0UL;
}

@@ -264,6 +266,7 @@
/* Real error */
sys_close(elf_exec_fileno);
kfree(elf_phdata);
+ printk("load_elf_interp: error = %d\n",error);
return ~0UL;
}

@@ -627,7 +630,7 @@
kfree(elf_interpreter);

if (elf_entry == ~0UL) {
- printk("Unable to load interpreter\n");
+ printk("Unable to load interpreter: %d\n",interpreter_type);
kfree(elf_phdata);
send_sig(SIGSEGV, current, 0);
return 0;