Skip to contentSkip to conversation

USE_ELF_CORE_DUMP?

PATCH In review Christoph Hellwig 5 participants 7 messages Apr 23, 2009 – Sep 29, 2009

Subsystems (17)
Arm (32-bit) x86 VFS PowerPC +13 more subsystems
lore
Share & tools
lore
#0 lore raw

Currently all architectures but microblaze unconditionally define USE_ELF_CORE_DUMP. The microblaze ommision seems like an error to me, so can we just kill this ifdef and make sure we are the same everywhere?

#1 lore raw
Quoted 4 lines · Christoph Hellwig

Currently all architectures but microblaze unconditionally define USE_ELF_CORE_DUMP. The microblaze ommision seems like an error to me, so can we just kill this ifdef and make sure we are the same everywhere?

That's presumably a leftover from a.out days ... kill it.

Signature · 4 lines
Matthew Wilcox				Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."
#2 lore raw
In reply to Christoph Hellwig
Quoted 5 lines · Christoph Hellwig

Currently all architectures but microblaze unconditionally define USE_ELF_CORE_DUMP. The microblaze ommision seems like an error to me, so can we just kill this ifdef and make sure we are the same everywhere?

Where did you find it?
I haven't seen in in mainline (noMMU kernel). It is in my MMU patches which I want to send for review soon.

For noMMU I use CONFIG_BINFMT_FLAT (binfmt_flat.c) where I don't need USE_ELF_CORE_DUMP
For MMU I use CONFIG_BINFMT_ELF (binfmt_elf.c) where USE_ELF_CORE_DUMP make sense to me.

Can you give me some clue what you are trying to fix?

Thanks,
Michal

Quoted 5 lines

--
To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Signature · 3 lines
Michal Simek, Ing. (M.Eng)
PetaLogix - Linux Solutions for a Reconfigurable World
w: www.petalogix.com p: +61-7-30090663,+42-0-721842854 f: +61-7-30090663
#3 lore raw
Quoted 9 lines · Michal Simek
Quoted 5 lines · Christoph Hellwig

Currently all architectures but microblaze unconditionally define USE_ELF_CORE_DUMP. The microblaze ommision seems like an error to me, so can we just kill this ifdef and make sure we are the same everywhere?

Where did you find it?
I haven't seen in in mainline (noMMU kernel). It is in my MMU patches which I want to send for review soon.

USE_ELF_CORE_DUMP is defined in arch/x86/include/*/elf.h (or sometimes elf_{32,64}.h) on all architectures but microblaze.

Quoted 4 lines

For noMMU I use CONFIG_BINFMT_FLAT (binfmt_flat.c) where I don't need USE_ELF_CORE_DUMP
For MMU I use CONFIG_BINFMT_ELF (binfmt_elf.c) where USE_ELF_CORE_DUMP make sense to me.

USE_ELF_CORE_DUMP only comes into play if CONFIG_ELF_CORE is set, so in the mmu example above. These two are in fact always checked together, so not setting USE_ELF_CORE_DUMP is an obscure way to disable elf core dumps despite CONFIG_ELF_CORE being set.

#4 lore raw

PATCH 1/1 kill USE_ELF_CORE_DUMP

In reply to Michal Simek

Currently all architectures but microblaze unconditionally define USE_ELF_CORE_DUMP. The microblaze ommision seems like an error to me, so let's kill this ifdef and make sure we are the same everywhere.

arch/alpha/include/asm/elf.h +0 -1
Index: linux-2.6/arch/alpha/include/asm/elf.h
===================================================================
@@ -81,7 +81,6 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
 #define ELF_DATA	ELFDATA2LSB
 #define ELF_ARCH	EM_ALPHA
 
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	8192
 
 /* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
arch/arm/include/asm/elf.h +0 -1
Index: linux-2.6/arch/arm/include/asm/elf.h
===================================================================
@@ -98,7 +98,6 @@ extern int elf_check_arch(const struct e
 extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int);
 #define elf_read_implies_exec(ex,stk) arm_elf_read_implies_exec(&(ex), stk)
 
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	4096
 
 /* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
arch/avr32/include/asm/elf.h +0 -1
Index: linux-2.6/arch/avr32/include/asm/elf.h
===================================================================
@@ -77,7 +77,6 @@ typedef struct user_fpu_struct elf_fpreg
 #endif
 #define ELF_ARCH	EM_AVR32
 
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	4096
 
 /* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
arch/blackfin/include/asm/elf.h +0 -1
Index: linux-2.6/arch/blackfin/include/asm/elf.h
===================================================================
@@ -51,7 +51,6 @@ do {											\
 	_regs->p2	= _dynamic_addr;				\
 } while(0)
 
-#define USE_ELF_CORE_DUMP
 #define ELF_FDPIC_CORE_EFLAGS	EF_BFIN_FDPIC
 #define ELF_EXEC_PAGESIZE	4096
 
arch/cris/include/asm/elf.h +0 -2
Index: linux-2.6/arch/cris/include/asm/elf.h
===================================================================
@@ -64,8 +64,6 @@ typedef unsigned long elf_fpregset_t;
 #define EF_CRIS_VARIANT_COMMON_V10_V32	0x00000004
 /* End of excerpt from {binutils}/include/elf/cris.h.  */
 
-#define USE_ELF_CORE_DUMP
-
 #define ELF_EXEC_PAGESIZE	8192
 
 /* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
arch/frv/include/asm/elf.h +0 -1
Index: linux-2.6/arch/frv/include/asm/elf.h
===================================================================
@@ -115,7 +115,6 @@ do {											\
 	__kernel_frame0_ptr->gr29	= 0;						\
 } while(0)
 
-#define USE_ELF_CORE_DUMP
 #define CORE_DUMP_USE_REGSET
 #define ELF_FDPIC_CORE_EFLAGS	EF_FRV_FDPIC
 #define ELF_EXEC_PAGESIZE	16384
arch/h8300/include/asm/elf.h +0 -1
Index: linux-2.6/arch/h8300/include/asm/elf.h
===================================================================
@@ -34,7 +34,6 @@ typedef unsigned long elf_fpregset_t;
 
 #define ELF_PLAT_INIT(_r)	_r->er1 = 0
 
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	4096
 
 /* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
arch/ia64/ia32/elfcore32.h +0 -2
Index: linux-2.6/arch/ia64/ia32/elfcore32.h
===================================================================
@@ -11,8 +11,6 @@
 #include <asm/intrinsics.h>
 #include <asm/uaccess.h>
 
-#define USE_ELF_CORE_DUMP 1
-
 /* Override elfcore.h */
 #define _LINUX_ELFCORE_H 1
 typedef unsigned int elf_greg_t;
arch/ia64/include/asm/elf.h +0 -1
Index: linux-2.6/arch/ia64/include/asm/elf.h
===================================================================
@@ -25,7 +25,6 @@
 #define ELF_DATA	ELFDATA2LSB
 #define ELF_ARCH	EM_IA_64
 
-#define USE_ELF_CORE_DUMP
 #define CORE_DUMP_USE_REGSET
 
 /* Least-significant four bits of ELF header's e_flags are OS-specific.  The bits are
arch/m32r/include/asm/elf.h +0 -1
Index: linux-2.6/arch/m32r/include/asm/elf.h
===================================================================
@@ -102,7 +102,6 @@ typedef elf_fpreg_t elf_fpregset_t;
  */
 #define ELF_PLAT_INIT(_r, load_addr)	(_r)->r0 = 0
 
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	PAGE_SIZE
 
 /*
arch/m68k/include/asm/elf.h +0 -1
Index: linux-2.6/arch/m68k/include/asm/elf.h
===================================================================
@@ -59,7 +59,6 @@ typedef struct user_m68kfp_struct elf_fp
    is actually used on ASV.  */
 #define ELF_PLAT_INIT(_r, load_addr)	_r->a1 = 0
 
-#define USE_ELF_CORE_DUMP
 #ifndef CONFIG_SUN3
 #define ELF_EXEC_PAGESIZE	4096
 #else
arch/mips/include/asm/elf.h +0 -1
Index: linux-2.6/arch/mips/include/asm/elf.h
===================================================================
@@ -326,7 +326,6 @@ extern int dump_task_fpu(struct task_str
 #define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs)			\
 	dump_task_fpu(tsk, elf_fpregs)
 
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	PAGE_SIZE
 
 /* This yields a mask that user programs can use to figure out what
arch/mn10300/include/asm/elf.h +0 -1
Index: linux-2.6/arch/mn10300/include/asm/elf.h
===================================================================
@@ -77,7 +77,6 @@ do {									\
 	_ur->a1   = 0;	_ur->a0   = 0;	_ur->d1   = 0;	_ur->d0   = 0;	\
 } while (0)
 
-#define USE_ELF_CORE_DUMP
 #define CORE_DUMP_USE_REGSET
 #define ELF_EXEC_PAGESIZE	4096
 
arch/parisc/include/asm/elf.h +0 -1
Index: linux-2.6/arch/parisc/include/asm/elf.h
===================================================================
@@ -328,7 +328,6 @@ struct pt_regs;	/* forward declaration..
    such function.  */
 #define ELF_PLAT_INIT(_r, load_addr)       _r->gr[23] = 0
 
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	4096
 
 /* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
arch/powerpc/include/asm/elf.h +0 -1
Index: linux-2.6/arch/powerpc/include/asm/elf.h
===================================================================
@@ -170,7 +170,6 @@ typedef elf_fpreg_t elf_vsrreghalf_t32[E
 #define elf_check_arch(x) ((x)->e_machine == ELF_ARCH)
 #define compat_elf_check_arch(x)	((x)->e_machine == EM_PPC)
 
-#define USE_ELF_CORE_DUMP
 #define CORE_DUMP_USE_REGSET
 #define ELF_EXEC_PAGESIZE	PAGE_SIZE
 
arch/s390/include/asm/elf.h +0 -1
Index: linux-2.6/arch/s390/include/asm/elf.h
===================================================================
@@ -143,7 +143,6 @@ extern unsigned int vdso_enabled;
 	} while (0)
 
 #define CORE_DUMP_USE_REGSET
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	4096
 
 /* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
arch/sh/include/asm/elf.h +0 -1
Index: linux-2.6/arch/sh/include/asm/elf.h
===================================================================
@@ -114,7 +114,6 @@ typedef struct user_fpu_struct elf_fpreg
  */
 #define CORE_DUMP_USE_REGSET
 
-#define USE_ELF_CORE_DUMP
 #define ELF_FDPIC_CORE_EFLAGS	EF_SH_FDPIC
 #define ELF_EXEC_PAGESIZE	PAGE_SIZE
 
arch/sparc/include/asm/elf_32.h +0 -2
Index: linux-2.6/arch/sparc/include/asm/elf_32.h
===================================================================
@@ -104,8 +104,6 @@ typedef struct {
 #define ELF_CLASS	ELFCLASS32
 #define ELF_DATA	ELFDATA2MSB
 
-#define USE_ELF_CORE_DUMP
-
 #define ELF_EXEC_PAGESIZE	4096
 
 
arch/sparc/include/asm/elf_64.h +0 -1
Index: linux-2.6/arch/sparc/include/asm/elf_64.h
===================================================================
@@ -152,7 +152,6 @@ typedef struct {
 					 (x)->e_machine == EM_SPARC32PLUS)
 #define compat_start_thread		start_thread32
 
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	PAGE_SIZE
 
 /* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
arch/um/sys-i386/asm/elf.h +0 -1
Index: linux-2.6/arch/um/sys-i386/asm/elf.h
===================================================================
@@ -48,7 +48,6 @@ typedef struct user_i387_struct elf_fpre
 	PT_REGS_EAX(regs) = 0; \
 } while (0)
 
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE 4096
 
 #define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
arch/um/sys-ppc/asm/elf.h +0 -2
Index: linux-2.6/arch/um/sys-ppc/asm/elf.h
===================================================================
@@ -17,8 +17,6 @@ extern long elf_aux_hwcap;
 #define ELF_CLASS ELFCLASS32
 #endif
 
-#define USE_ELF_CORE_DUMP
-
 #define R_386_NONE	0
 #define R_386_32	1
 #define R_386_PC32	2
arch/um/sys-x86_64/asm/elf.h +0 -1
Index: linux-2.6/arch/um/sys-x86_64/asm/elf.h
===================================================================
@@ -104,7 +104,6 @@ extern int elf_core_copy_fpregs(struct t
         clear_thread_flag(TIF_IA32);
 #endif
 
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE 4096
 
 #define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
arch/x86/include/asm/elf.h +0 -1
Index: linux-2.6/arch/x86/include/asm/elf.h
===================================================================
@@ -255,7 +255,6 @@ extern int force_personality32;
 #endif /* !CONFIG_X86_32 */
 
 #define CORE_DUMP_USE_REGSET
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	4096
 
 /* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
arch/xtensa/include/asm/elf.h +0 -1
Index: linux-2.6/arch/xtensa/include/asm/elf.h
===================================================================
@@ -123,7 +123,6 @@ extern void xtensa_elf_core_copy_regs (x
 #define ELF_CLASS	ELFCLASS32
 #define ELF_ARCH	EM_XTENSA
 
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	PAGE_SIZE
 
 /*
fs/binfmt_elf.c +3 -8
Index: linux-2.6/fs/binfmt_elf.c
===================================================================
@@ -44,7 +44,7 @@ static unsigned long elf_map(struct file
  * If we don't support core dumping, then supply a NULL so we
  * don't even try.
  */
-#if defined(USE_ELF_CORE_DUMP) && defined(CONFIG_ELF_CORE)
+#ifdef CONFIG_ELF_CORE
 static int elf_core_dump(long signr, struct pt_regs *regs, struct file *file, unsigned long limit);
 #else
 #define elf_core_dump	NULL
@@ -1101,12 +1101,7 @@ out:
 	return error;
 }
 
-/*
- * Note that some platforms still use traditional core dumps and not
- * the ELF core dump.  Each platform can select it as appropriate.
- */
-#if defined(USE_ELF_CORE_DUMP) && defined(CONFIG_ELF_CORE)
-
+#ifdef CONFIG_ELF_CORE
 /*
  * ELF core dumper
  *
@@ -2063,7 +2058,7 @@ out:
 	return has_dumped;
 }
 
-#endif		/* USE_ELF_CORE_DUMP */
+#endif		/* CONFIG_ELF_CORE */
 
 static int __init init_elf_binfmt(void)
 {
fs/binfmt_elf_fdpic.c +4 -4
Index: linux-2.6/fs/binfmt_elf_fdpic.c
===================================================================
@@ -75,14 +75,14 @@ static int elf_fdpic_map_file_constdisp_
 static int elf_fdpic_map_file_by_direct_mmap(struct elf_fdpic_params *,
 					     struct file *, struct mm_struct *);
 
-#if defined(USE_ELF_CORE_DUMP) && defined(CONFIG_ELF_CORE)
+#ifdef CONFIG_ELF_CORE
 static int elf_fdpic_core_dump(long, struct pt_regs *, struct file *, unsigned long limit);
 #endif
 
 static struct linux_binfmt elf_fdpic_format = {
 	.module		= THIS_MODULE,
 	.load_binary	= load_elf_fdpic_binary,
-#if defined(USE_ELF_CORE_DUMP) && defined(CONFIG_ELF_CORE)
+#ifdef CONFIG_ELF_CORE
 	.core_dump	= elf_fdpic_core_dump,
 #endif
 	.min_coredump	= ELF_EXEC_PAGESIZE,
@@ -1200,7 +1200,7 @@ static int elf_fdpic_map_file_by_direct_
  *
  * Modelled on fs/binfmt_elf.c core dumper
  */
-#if defined(USE_ELF_CORE_DUMP) && defined(CONFIG_ELF_CORE)
+#ifdef CONFIG_ELF_CORE
 
 /*
  * These are the only things you should do on a core-file: use only these
@@ -1825,4 +1825,4 @@ cleanup:
 #undef NUM_NOTES
 }
 
-#endif		/* USE_ELF_CORE_DUMP */
+#endif		/* CONFIG_ELF_CORE */
fs/proc/base.c +2 -2
Index: linux-2.6/fs/proc/base.c
===================================================================
@@ -2200,7 +2200,7 @@ static const struct inode_operations pro
 
 #endif
 
-#if defined(USE_ELF_CORE_DUMP) && defined(CONFIG_ELF_CORE)
+#ifdef CONFIG_ELF_CORE
 static ssize_t proc_coredump_filter_read(struct file *file, char __user *buf,
 					 size_t count, loff_t *ppos)
 {
@@ -2556,7 +2556,7 @@ static const struct pid_entry tgid_base_
 #ifdef CONFIG_FAULT_INJECTION
 	REG("make-it-fail", S_IRUGO|S_IWUSR, proc_fault_inject_operations),
 #endif
-#if defined(USE_ELF_CORE_DUMP) && defined(CONFIG_ELF_CORE)
+#ifdef CONFIG_ELF_CORE
 	REG("coredump_filter", S_IRUGO|S_IWUSR, proc_coredump_filter_operations),
 #endif
 #ifdef CONFIG_TASK_IO_ACCOUNTING
arch/microblaze/include/asm/elf.h +0 -1
Index: linux-2.6/arch/microblaze/include/asm/elf.h
===================================================================
@@ -77,7 +77,6 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
 #define ELF_DATA	ELFDATA2MSB
 #endif
 
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	4096
 
 
arch/score/include/asm/elf.h +0 -1
Index: linux-2.6/arch/score/include/asm/elf.h
===================================================================
@@ -61,7 +61,6 @@ struct task_struct;
 struct pt_regs;
 
 #define CORE_DUMP_USE_REGSET
-#define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE	PAGE_SIZE
 
 /* This yields a mask that user programs can use to figure out what
Acked-by on v1 1/1
#5 lore raw

Re: [PATCH] kill USE_ELF_CORE_DUMP

Quoted 5 lines · Christoph Hellwig

Currently all architectures but microblaze unconditionally define USE_ELF_CORE_DUMP. The microblaze ommision seems like an error to me, so let's kill this ifdef and make sure we are the same everywhere.

Yes, I came to a similar conclusion when I added get_dump_page():
#ifdef'ed it on CONFIG_ELF_CORE, but couldn't see the point of USE_ELF_CORE_DUMP. (Though I missed the microblaze omission).

Acked-by on v1 1/1
#6 lore raw

Re: [PATCH] kill USE_ELF_CORE_DUMP

In reply to Christoph Hellwig
Quoted 3 lines · Christoph Hellwig

Currently all architectures but microblaze unconditionally define USE_ELF_CORE_DUMP. The microblaze ommision seems like an error to me, so let's kill this ifdef and make sure we are the same everywhere.

USE_ELF_CORE_DUMP was introduced in 2.6.11. Already back then all architectures did define it unconditionally in <asm/elf.h> so there may never have been any real use for it.

Ralf