Re: Core files in 2.1.7x

Andreas Schwab (schwab@issan.informatik.uni-dortmund.de)
12 Dec 1997 12:08:35 +0100


Jos=E9?= Luis =?ISO-8859-1?Q?S=E1nchez <ISO-8859-1> writes:

|> Hello:
|> I'm using the 2.1.72 kernel. I think that since version 2.1.70 (I
|> don't remember very well) gdb is not capable to handle core files. It
|> crash with a core file!!!! :-)

|> I have gdb 4.16, binutils 2.8.1.015, ld.so 1.9.16, libc 5.4.41.

|> What's wrong???

This is a binary compatibility problem. Please try this patch:

--- linux/fs/binfmt_elf.c.~2~ Fri Nov 7 20:01:04 1997
+++ linux/fs/binfmt_elf.c Tue Dec 2 16:46:17 1997
@@ -1162,8 +1162,8 @@
notes[0].datasz = sizeof(prstatus);
notes[0].data = &prstatus;
prstatus.pr_info.si_signo = prstatus.pr_cursig = signr;
- prstatus.pr_sigpend = current->signal;
- prstatus.pr_sighold = current->blocked;
+ prstatus.pr_sigpend = current->signal.sig[0];
+ prstatus.pr_sighold = current->blocked.sig[0];
psinfo.pr_pid = prstatus.pr_pid = current->pid;
psinfo.pr_ppid = prstatus.pr_ppid = current->p_pptr->pid;
psinfo.pr_pgrp = prstatus.pr_pgrp = current->pgrp;
--- linux/include/linux/elfcore.h.~1~ Fri Aug 9 19:38:19 1996
+++ linux/include/linux/elfcore.h Tue Dec 2 16:44:32 1997
@@ -41,8 +41,8 @@
#endif
struct elf_siginfo pr_info; /* Info associated with signal */
short pr_cursig; /* Current signal */
- sigset_t pr_sigpend; /* Set of pending signals */
- sigset_t pr_sighold; /* Set of held signals */
+ unsigned long pr_sigpend; /* Set of pending signals */
+ unsigned long pr_sighold; /* Set of held signals */
#if 0
struct sigaltstack pr_altstack; /* Alternate stack info */
struct sigaction pr_action; /* Signal action for current sig */

-- 
Andreas Schwab                                      "And now for something
schwab@issan.informatik.uni-dortmund.de              completely different"
schwab@gnu.org