patch-2.4.20 linux-2.4.20/arch/mips/kernel/irixelf.c
Next file: linux-2.4.20/arch/mips/kernel/irixinv.c
Previous file: linux-2.4.20/arch/mips/kernel/ipc.c
Back to the patch index
Back to the overall index
- Lines: 250
- Date:
Thu Nov 28 15:53:10 2002
- Orig file:
linux-2.4.19/arch/mips/kernel/irixelf.c
- Orig date:
Fri Aug 2 17:39:43 2002
diff -urN linux-2.4.19/arch/mips/kernel/irixelf.c linux-2.4.20/arch/mips/kernel/irixelf.c
@@ -128,7 +128,7 @@
{
start = PAGE_ALIGN(start);
end = PAGE_ALIGN(end);
- if (end <= start)
+ if (end <= start)
return;
do_brk(start, end - start);
}
@@ -158,7 +158,7 @@
elf_caddr_t *argv;
elf_caddr_t *envp;
elf_addr_t *sp, *csp;
-
+
#ifdef DEBUG_ELF
printk("create_irix_tables: p[%p] argc[%d] envc[%d] "
"load_addr[%08x] interp_load_addr[%08x]\n",
@@ -247,7 +247,7 @@
elf_bss = 0;
last_bss = 0;
error = load_addr = 0;
-
+
#ifdef DEBUG_ELF
print_elfhdr(interp_elf_ex);
#endif
@@ -268,7 +268,7 @@
return 0xffffffff;
}
- elf_phdata = (struct elf_phdr *)
+ elf_phdata = (struct elf_phdr *)
kmalloc(sizeof(struct elf_phdr) * interp_elf_ex->e_phnum,
GFP_KERNEL);
@@ -394,7 +394,7 @@
return -ENOEXEC;
/* First of all, some simple consistency checks */
- if((ehp->e_type != ET_EXEC && ehp->e_type != ET_DYN) ||
+ if((ehp->e_type != ET_EXEC && ehp->e_type != ET_DYN) ||
!irix_elf_check_arch(ehp) || !bprm->file->f_op->mmap) {
return -ENOEXEC;
}
@@ -558,7 +558,7 @@
}
/*
- * IRIX maps a page at 0x200000 that holds information about the
+ * IRIX maps a page at 0x200000 that holds information about the
* process and the system, here we map the page and fill the
* structure
*/
@@ -568,7 +568,7 @@
struct prda *pp;
v = do_brk (PRDA_ADDRESS, PAGE_SIZE);
-
+
if (v < 0)
return;
@@ -579,9 +579,9 @@
/* We leave the rest set to zero */
}
-
-
+
+
/* These are the functions used to load ELF style executables and shared
* libraries. There is no binary dependent code anywhere else.
*/
@@ -596,7 +596,7 @@
int retval, has_interp, has_ephdr, size, i;
char *elf_interpreter;
mm_segment_t old_fs;
-
+
load_addr = 0;
has_interp = has_ephdr = 0;
elf_ihdr = elf_ephdr = 0;
@@ -685,7 +685,7 @@
current->mm->mmap = NULL;
current->flags &= ~PF_FORKNOEXEC;
elf_entry = (unsigned int) elf_ex.e_entry;
-
+
/* Do this so that we can load the interpreter, if need be. We will
* change some of these later.
*/
@@ -724,7 +724,7 @@
set_binfmt(&irix_format);
compute_creds(bprm);
current->flags &= ~PF_FORKNOEXEC;
- bprm->p = (unsigned long)
+ bprm->p = (unsigned long)
create_irix_tables((char *)bprm->p, bprm->argc, bprm->envc,
(elf_interpreter ? &elf_ex : NULL),
load_addr, interp_load_addr, regs, elf_ephdr);
@@ -812,30 +812,30 @@
if(elf_ex.e_type != ET_EXEC || elf_ex.e_phnum > 2 ||
!irix_elf_check_arch(&elf_ex) || !file->f_op->mmap)
return -ENOEXEC;
-
+
/* Now read in all of the header information. */
if(sizeof(struct elf_phdr) * elf_ex.e_phnum > PAGE_SIZE)
return -ENOEXEC;
-
- elf_phdata = (struct elf_phdr *)
+
+ elf_phdata = (struct elf_phdr *)
kmalloc(sizeof(struct elf_phdr) * elf_ex.e_phnum, GFP_KERNEL);
if (elf_phdata == NULL)
return -ENOMEM;
-
+
retval = kernel_read(file, elf_ex.e_phoff, (char *) elf_phdata,
sizeof(struct elf_phdr) * elf_ex.e_phnum);
-
+
j = 0;
for(i=0; i<elf_ex.e_phnum; i++)
if((elf_phdata + i)->p_type == PT_LOAD) j++;
-
+
if(j != 1) {
kfree(elf_phdata);
return -ENOEXEC;
}
-
+
while(elf_phdata->p_type != PT_LOAD) elf_phdata++;
-
+
/* Now use mmap to map the library into memory. */
down_write(¤t->mm->mmap_sem);
error = do_mmap(file,
@@ -863,7 +863,7 @@
kfree(elf_phdata);
return 0;
}
-
+
/* Called through irix_syssgi() to map an elf image given an FD,
* a phdr ptr USER_PHDRP in userspace, and a count CNT telling how many
* phdrs there are in the USER_PHDRP array. We return the vaddr the
@@ -1026,7 +1026,7 @@
DUMP_SEEK(roundup((unsigned long)file->f_pos, 4)); /* XXX */
DUMP_WRITE(men->data, men->datasz);
DUMP_SEEK(roundup((unsigned long)file->f_pos, 4)); /* XXX */
-
+
return 1;
end_coredump:
@@ -1072,13 +1072,13 @@
if (maydump(vma))
{
int sz = vma->vm_end-vma->vm_start;
-
+
if (size+sz >= limit)
break;
else
size += sz;
}
-
+
segs++;
}
#ifdef DEBUG
@@ -1105,7 +1105,7 @@
elf.e_shentsize = 0;
elf.e_shnum = 0;
elf.e_shstrndx = 0;
-
+
fs = get_fs();
set_fs(KERNEL_DS);
@@ -1147,7 +1147,7 @@
} else {
*(struct pt_regs *)&prstatus.pr_reg = *regs;
}
-
+
notes[1].name = "CORE";
notes[1].type = NT_PRPSINFO;
notes[1].datasz = sizeof(psinfo);
@@ -1164,7 +1164,7 @@
int i, len;
set_fs(fs);
-
+
len = current->mm->arg_end - current->mm->arg_start;
len = len >= ELF_PRARGSZ ? ELF_PRARGSZ : len;
copy_from_user(&psinfo.pr_psargs,
@@ -1201,7 +1201,7 @@
for(i = 0; i < numnote; i++)
sz += notesize(¬es[i]);
-
+
phdr.p_type = PT_NOTE;
phdr.p_offset = offset;
phdr.p_vaddr = 0;
@@ -1217,7 +1217,7 @@
/* Page-align dumped data. */
dataoff = offset = roundup(offset, PAGE_SIZE);
-
+
/* Write program headers for segments dump. */
for(vma = current->mm->mmap, i = 0;
i < segs && vma != NULL; vma = vma->vm_next) {
@@ -1227,7 +1227,7 @@
i++;
sz = vma->vm_end - vma->vm_start;
-
+
phdr.p_type = PT_LOAD;
phdr.p_offset = offset;
phdr.p_vaddr = vma->vm_start;
@@ -1246,17 +1246,17 @@
for(i = 0; i < numnote; i++)
if (!writenote(¬es[i], file))
goto end_coredump;
-
+
set_fs(fs);
DUMP_SEEK(dataoff);
-
+
for(i = 0, vma = current->mm->mmap;
i < segs && vma != NULL;
vma = vma->vm_next) {
unsigned long addr = vma->vm_start;
unsigned long len = vma->vm_end - vma->vm_start;
-
+
if (!maydump(vma))
continue;
i++;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)