Re: PATCH: Core dumps as a config option

Marty Leisner (leisner@sdsp.mc.xerox.com)
Fri, 1 May 1998 08:00:55 PDT


Can't you set up a global profile not to use core dumps
(i.e. ulimit -c 0)?

Should this be a kernel thing?
>
> This simple patch makes core dumps a config option (which only appears
> when you select support for that binary format). People who use linux for
> offering shell accounts, ftp or WWW servers typically don't use core dumps.
> In fact, only software devlopers are usually interested in core dumps.
>
> (99% of the patch is just adding the CONFIG_{ELF,AOUT}_CORE to all the
> arch/*/defconfig and arch/*/config.in)
>
> Paul.
> --
> main(){long i,f,m=19248;f=open("/dev/tty",0);if(!fork())for(;;i++,ioctl(f,m,
> (1<<23)+(rand()&2047)),ioctl(f,m+2,rand()%8),sleep(1));} /* Linux Console */
>
>
> diff -ur linux-2199/arch/alpha/config.in linux/arch/alpha/config.in
> --- linux-2199/arch/alpha/config.in Fri May 1 15:47:49 1998
> +++ linux/arch/alpha/config.in Fri May 1 15:50:44 1998
> @@ -186,7 +186,13 @@
> bool 'System V IPC' CONFIG_SYSVIPC
> bool 'Sysctl support' CONFIG_SYSCTL
> tristate 'Kernel support for a.out (ECOFF) binaries' CONFIG_BINFMT_AOUT
> +if [ "$CONFIG_BINFMT_AOUT" != "n" ]; then
> + bool 'Include a.out core dump support' CONFIG_AOUT_CORE
> +fi
> tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
> +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
> + bool 'Include ELF core dump support' CONFIG_ELF_CORE
> +fi
> tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
> if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
> tristate 'Kernel support for JAVA binaries (obsolete)' CONFIG_BINFMT_JAVA
> diff -ur linux-2199/arch/alpha/defconfig linux/arch/alpha/defconfig
> --- linux-2199/arch/alpha/defconfig Mon Mar 30 18:21:39 1998
> +++ linux/arch/alpha/defconfig Fri May 1 15:50:44 1998
> @@ -53,7 +53,9 @@
> CONFIG_SYSVIPC=y
> CONFIG_SYSCTL=y
> CONFIG_BINFMT_AOUT=y
> +CONFIG_AOUT_CORE=y
> CONFIG_BINFMT_ELF=y
> +CONFIG_ELF_CORE=y
> # CONFIG_BINFMT_MISC is not set
> CONFIG_BINFMT_EM86=y
> # CONFIG_PARPORT is not set
> diff -ur linux-2199/arch/arm/config.in linux/arch/arm/config.in
> --- linux-2199/arch/arm/config.in Mon Apr 13 04:42:15 1998
> +++ linux/arch/arm/config.in Fri May 1 15:58:25 1998
> @@ -65,7 +65,13 @@
> #bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT
> bool 'Sysctl support' CONFIG_SYSCTL
> tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
> +if [ "$CONFIG_BINFMT_AOUT" != "n" ]; then
> + bool 'Include a.out core dump support' CONFIG_AOUT_CORE
> +fi
> tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
> +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
> + bool 'Include ELF core dump support' CONFIG_ELF_CORE
> +fi
> if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
> # tristate 'Kernel support for JAVA binaries' CONFIG_BINFMT_JAVA
> define_bool CONFIG_BINFMT_JAVA n
> diff -ur linux-2199/arch/arm/defconfig linux/arch/arm/defconfig
> --- linux-2199/arch/arm/defconfig Mon Apr 13 04:42:15 1998
> +++ linux/arch/arm/defconfig Fri May 1 15:50:44 1998
> @@ -36,7 +36,9 @@
> CONFIG_SYSVIPC=y
> CONFIG_SYSCTL=y
> CONFIG_BINFMT_AOUT=y
> +CONFIG_AOUT_CORE=y
> CONFIG_BINFMT_ELF=m
> +CONFIG_ELF_CORE=y
> # CONFIG_BINFMT_JAVA is not set
> CONFIG_PARPORT=y
> CONFIG_PARPORT_PC=y
> diff -ur linux-2199/arch/i386/config.in linux/arch/i386/config.in
> --- linux-2199/arch/i386/config.in Fri May 1 15:47:49 1998
> +++ linux/arch/i386/config.in Fri May 1 15:50:44 1998
> @@ -50,7 +50,13 @@
> bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT
> bool 'Sysctl support' CONFIG_SYSCTL
> tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
> +if [ "$CONFIG_BINFMT_AOUT" != "n" ]; then
> + bool 'Include a.out core dump support' CONFIG_AOUT_CORE
> +fi
> tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
> +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
> + bool 'Include ELF core dump support' CONFIG_ELF_CORE
> +fi
> tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
> if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
> tristate 'Kernel support for JAVA binaries (obsolete)' CONFIG_BINFMT_JAVA
> diff -ur linux-2199/arch/i386/defconfig linux/arch/i386/defconfig
> --- linux-2199/arch/i386/defconfig Fri May 1 15:47:49 1998
> +++ linux/arch/i386/defconfig Fri May 1 15:50:44 1998
> @@ -37,7 +37,9 @@
> # CONFIG_BSD_PROCESS_ACCT is not set
> CONFIG_SYSCTL=y
> CONFIG_BINFMT_AOUT=y
> +CONFIG_AOUT_CORE=y
> CONFIG_BINFMT_ELF=y
> +CONFIG_ELF_CORE=y
> CONFIG_BINFMT_MISC=y
> # CONFIG_VIDEO_SELECT is not set
> # CONFIG_PARPORT is not set
> diff -ur linux-2199/arch/m68k/config.in linux/arch/m68k/config.in
> --- linux-2199/arch/m68k/config.in Mon Mar 30 06:16:12 1998
> +++ linux/arch/m68k/config.in Fri May 1 15:57:36 1998
> @@ -68,7 +68,13 @@
> bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT
> bool 'Sysctl support' CONFIG_SYSCTL
> tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
> +if [ "$CONFIG_BINFMT_AOUT" != "n" ]; then
> + bool 'Include a.out core dump support' CONFIG_AOUT_CORE
> +fi
> tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
> +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
> + bool 'Include ELF core dump support' CONFIG_ELF_CORE
> +fi
> tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
>
> if [ "$CONFIG_AMIGA" = "y" ]; then
> diff -ur linux-2199/arch/m68k/defconfig linux/arch/m68k/defconfig
> --- linux-2199/arch/m68k/defconfig Wed Mar 11 09:43:13 1998
> +++ linux/arch/m68k/defconfig Fri May 1 15:50:44 1998
> @@ -40,7 +40,9 @@
> CONFIG_SYSVIPC=y
> CONFIG_SYSCTL=y
> CONFIG_BINFMT_AOUT=y
> +CONFIG_AOUT_CORE=y
> CONFIG_BINFMT_ELF=y
> +CONFIG_ELF_CORE=y
> CONFIG_ZORRO=y
> # CONFIG_AMIGA_GSP is not set
> # CONFIG_GSP_RESOLVER is not set
> diff -ur linux-2199/arch/mips/config.in linux/arch/mips/config.in
> --- linux-2199/arch/mips/config.in Wed Mar 11 09:43:13 1998
> +++ linux/arch/mips/config.in Fri May 1 16:00:09 1998
> @@ -87,7 +87,9 @@
> define_bool CONFIG_FORWARD_KEYBOARD y
> fi
> define_bool CONFIG_BINFMT_AOUT n
> +# bool 'Include a.out core dump support' CONFIG_AOUT_CORE
> define_bool CONFIG_BINFMT_ELF y
> +bool 'Include ELF core dump support' CONFIG_ELF_CORE
> tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
> if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
> tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
> diff -ur linux-2199/arch/mips/defconfig linux/arch/mips/defconfig
> --- linux-2199/arch/mips/defconfig Thu Dec 11 05:31:09 1997
> +++ linux/arch/mips/defconfig Fri May 1 15:50:44 1998
> @@ -36,6 +36,7 @@
> CONFIG_CPU_LITTLE_ENDIAN=y
> # CONFIG_BINFMT_AOUT is not set
> CONFIG_BINFMT_ELF=y
> +CONFIG_ELF_CORE=y
> # CONFIG_BINFMT_MISC is not set
> CONFIG_NET=y
> CONFIG_SYSVIPC=y
> diff -ur linux-2199/arch/ppc/config.in linux/arch/ppc/config.in
> --- linux-2199/arch/ppc/config.in Fri May 1 15:47:50 1998
> +++ linux/arch/ppc/config.in Fri May 1 15:50:44 1998
> @@ -61,6 +61,7 @@
>
> # only elf supported, a.out is not -- Cort
> define_bool CONFIG_BINFMT_ELF y
> +bool 'Include ELF core dump support' CONFIG_ELF_CORE
> define_bool CONFIG_KERNEL_ELF y
> tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
> tristate 'Kernel support for JAVA binaries (obsolete)' CONFIG_BINFMT_JAVA
> diff -ur linux-2199/arch/ppc/defconfig linux/arch/ppc/defconfig
> --- linux-2199/arch/ppc/defconfig Mon Apr 27 23:54:42 1998
> +++ linux/arch/ppc/defconfig Fri May 1 15:50:45 1998
> @@ -27,6 +27,7 @@
> CONFIG_SYSVIPC=y
> # CONFIG_BSD_PROCESS_ACCT is not set
> CONFIG_BINFMT_ELF=y
> +CONFIG_ELF_CORE=y
> CONFIG_KERNEL_ELF=y
> # CONFIG_BINFMT_MISC is not set
> # CONFIG_BINFMT_JAVA is not set
> diff -ur linux-2199/arch/sparc/config.in linux/arch/sparc/config.in
> --- linux-2199/arch/sparc/config.in Mon Apr 27 23:54:43 1998
> +++ linux/arch/sparc/config.in Fri May 1 15:50:45 1998
> @@ -62,7 +62,13 @@
> bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT
> bool 'Sysctl support' CONFIG_SYSCTL
> tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
> +if [ "$CONFIG_BINFMT_AOUT" != "n" ]; then
> + bool 'Include a.out core dump support' CONFIG_AOUT_CORE
> +fi
> tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
> +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
> + bool 'Include ELF core dump support' CONFIG_ELF_CORE
> +fi
> tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
> if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
> tristate 'Kernel support for JAVA binaries (obsolete)' CONFIG_BINFMT_JAVA
> diff -ur linux-2199/arch/sparc/defconfig linux/arch/sparc/defconfig
> --- linux-2199/arch/sparc/defconfig Mon Apr 27 23:54:43 1998
> +++ linux/arch/sparc/defconfig Fri May 1 15:50:45 1998
> @@ -66,7 +66,9 @@
> # CONFIG_BSD_PROCESS_ACCT is not set
> CONFIG_SYSCTL=y
> CONFIG_BINFMT_AOUT=y
> +CONFIG_AOUT_CORE=y
> CONFIG_BINFMT_ELF=y
> +CONFIG_ELF_CORE=y
> CONFIG_BINFMT_MISC=y
> CONFIG_BINFMT_JAVA=m
>
> diff -ur linux-2199/arch/sparc64/config.in linux/arch/sparc64/config.in
> --- linux-2199/arch/sparc64/config.in Mon Apr 27 23:54:45 1998
> +++ linux/arch/sparc64/config.in Fri May 1 15:50:45 1998
> @@ -56,9 +56,15 @@
> bool 'Sysctl support' CONFIG_SYSCTL
> bool 'Kernel support for Linux/Sparc 32bit binary compatibility' CONFIG_SPARC32_COMPAT
> tristate 'Kernel support for 64-bit ELF binaries' CONFIG_BINFMT_ELF
> +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
> + bool 'Include ELF core dump support' CONFIG_ELF_CORE
> +fi
> if [ "$CONFIG_SPARC32_COMPAT" != "n" ]; then
> tristate 'Kernel support for 32-bit ELF binaries' CONFIG_BINFMT_ELF32
> bool 'Kernel support for 32-bit (ie. SunOS) a.out binaries' CONFIG_BINFMT_AOUT32
> +fi
> +if [ "$CONFIG_BINFMT_AOUT32" != "n" ]; then
> + bool 'Include a.out core dump support' CONFIG_AOUT_CORE
> fi
> if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
> tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
> diff -ur linux-2199/fs/binfmt_aout.c linux/fs/binfmt_aout.c
> --- linux-2199/fs/binfmt_aout.c Mon Apr 27 23:54:59 1998
> +++ linux/fs/binfmt_aout.c Fri May 1 15:51:43 1998
> @@ -6,6 +6,7 @@
>
> #include <linux/module.h>
>
> +#include <linux/config.h>
> #include <linux/sched.h>
> #include <linux/kernel.h>
> #include <linux/mm.h>
> @@ -31,7 +32,11 @@
>
> static int load_aout_binary(struct linux_binprm *, struct pt_regs * regs);
> static int load_aout_library(int fd);
> +#ifdef CONFIG_AOUT_CORE
> static int aout_core_dump(long signr, struct pt_regs * regs);
> +#else
> +#define aout_core_dump NULL
> +#endif
>
> extern void dump_thread(struct pt_regs *, struct user *);
>
> @@ -54,6 +59,8 @@
> MAP_FIXED | MAP_PRIVATE, 0);
> }
>
> +#ifdef CONFIG_AOUT_CORE
> +
> /*
> * These are the only things you should do on a core-file: use only these
> * macros to write out all the necessary info.
> @@ -230,6 +237,7 @@
> MOD_DEC_USE_COUNT;
> return retval;
> }
> +#endif /* CONFIG_AOUT_CORE */
>
> /*
> * create_aout_tables() parses the env- and arg-strings in new user
> diff -ur linux-2199/fs/binfmt_elf.c linux/fs/binfmt_elf.c
> --- linux-2199/fs/binfmt_elf.c Fri May 1 15:47:53 1998
> +++ linux/fs/binfmt_elf.c Fri May 1 15:50:45 1998
> @@ -57,7 +57,7 @@
> * If we don't support core dumping, then supply a NULL so we
> * don't even try.
> */
> -#ifdef USE_ELF_CORE_DUMP
> +#ifdef CONFIG_ELF_CORE
> static int elf_core_dump(long signr, struct pt_regs * regs);
> #else
> #define elf_core_dump NULL
> @@ -909,7 +909,7 @@
> * Note that some platforms still use traditional core dumps and not
> * the ELF core dump. Each platform can select it as appropriate.
> */
> -#ifdef USE_ELF_CORE_DUMP
> +#ifdef CONFIG_ELF_CORE
>
> /*
> * ELF core dumper
> @@ -1326,7 +1326,7 @@
> #endif
> return has_dumped;
> }
> -#endif /* USE_ELF_CORE_DUMP */
> +#endif /* CONFIG_ELF_CORE */
>
> __initfunc(int init_elf_binfmt(void))
> {
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.rutgers.edu

-- 
marty
leisner@sdsp.mc.xerox.com  
The Feynman problem solving Algorithm
        1) Write down the problem
        2) Think real hard
        3) Write down the answer
                Murray Gell-mann in the NY Times

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu