diff options
author | David Howells <dhowells@redhat.com> | 2008-02-08 07:19:28 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-08 12:22:30 -0500 |
commit | 7fa3031500ec9b0a7460c8c23751799006ffee74 (patch) | |
tree | 2a7e9202b35a39dc8217e95825263c0629e67e35 /arch/arm | |
parent | b0b933c08bd5fd053bbba8ba6387f543be03d49f (diff) |
aout: suppress A.OUT library support if !CONFIG_ARCH_SUPPORTS_AOUT
Suppress A.OUT library support if CONFIG_ARCH_SUPPORTS_AOUT is not set.
Not all architectures support the A.OUT binfmt, so the ELF binfmt should not
be permitted to go looking for A.OUT libraries to load in such a case. Not
only that, but under such conditions A.OUT core dumps are not produced either.
To make this work, this patch also does the following:
(1) Makes the existence of the contents of linux/a.out.h contingent on
CONFIG_ARCH_SUPPORTS_AOUT.
(2) Renames dump_thread() to aout_dump_thread() as it's only called by A.OUT
core dumping code.
(3) Moves aout_dump_thread() into asm/a.out-core.h and makes it inline. This
is then included only where needed. This means that this bit of arch
code will be stored in the appropriate A.OUT binfmt module rather than
the core kernel.
(4) Drops A.OUT support for Blackfin (according to Mike Frysinger it's not
needed) and FRV.
This patch depends on the previous patch to move STACK_TOP[_MAX] out of
asm/a.out.h and into asm/processor.h as they're required whether or not A.OUT
format is available.
[jdike@addtoit.com: uml: re-remove accidentally restored code]
Signed-off-by: David Howells <dhowells@redhat.com>
Cc: <linux-arch@vger.kernel.org>
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/kernel/process.c | 29 |
1 files changed, 0 insertions, 29 deletions
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 4f1a03124a74..436380a5f4c7 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -368,35 +368,6 @@ int dump_fpu (struct pt_regs *regs, struct user_fp *fp) | |||
368 | EXPORT_SYMBOL(dump_fpu); | 368 | EXPORT_SYMBOL(dump_fpu); |
369 | 369 | ||
370 | /* | 370 | /* |
371 | * fill in the user structure for a core dump.. | ||
372 | */ | ||
373 | void dump_thread(struct pt_regs * regs, struct user * dump) | ||
374 | { | ||
375 | struct task_struct *tsk = current; | ||
376 | |||
377 | dump->magic = CMAGIC; | ||
378 | dump->start_code = tsk->mm->start_code; | ||
379 | dump->start_stack = regs->ARM_sp & ~(PAGE_SIZE - 1); | ||
380 | |||
381 | dump->u_tsize = (tsk->mm->end_code - tsk->mm->start_code) >> PAGE_SHIFT; | ||
382 | dump->u_dsize = (tsk->mm->brk - tsk->mm->start_data + PAGE_SIZE - 1) >> PAGE_SHIFT; | ||
383 | dump->u_ssize = 0; | ||
384 | |||
385 | dump->u_debugreg[0] = tsk->thread.debug.bp[0].address; | ||
386 | dump->u_debugreg[1] = tsk->thread.debug.bp[1].address; | ||
387 | dump->u_debugreg[2] = tsk->thread.debug.bp[0].insn.arm; | ||
388 | dump->u_debugreg[3] = tsk->thread.debug.bp[1].insn.arm; | ||
389 | dump->u_debugreg[4] = tsk->thread.debug.nsaved; | ||
390 | |||
391 | if (dump->start_stack < 0x04000000) | ||
392 | dump->u_ssize = (0x04000000 - dump->start_stack) >> PAGE_SHIFT; | ||
393 | |||
394 | dump->regs = *regs; | ||
395 | dump->u_fpvalid = dump_fpu (regs, &dump->u_fp); | ||
396 | } | ||
397 | EXPORT_SYMBOL(dump_thread); | ||
398 | |||
399 | /* | ||
400 | * Shuffle the argument into the correct register before calling the | 371 | * Shuffle the argument into the correct register before calling the |
401 | * thread function. r1 is the thread argument, r2 is the pointer to | 372 | * thread function. r1 is the thread argument, r2 is the pointer to |
402 | * the thread function, and r3 points to the exit function. | 373 | * the thread function, and r3 points to the exit function. |