Like I said, this is the internal contents of the note. readelf tells you the sizes and locations of the note, and if those are sane, you can look at the data directly and interpret according to the struct type. This is what you have to do to have anything to say about whether the dumping is being done correctly or not. Please do it.
Here is what I got from the core file (using a bit of mmap() magic, so hopefully it is correct), I took and formated it a bit so that it is a bit easier on the eyes. Some values look quite bogus; like most of the pr_*id regs. If you want to check it yourself, I can always send you the core dump, it is only 30k compressed. ,---- | (gdb) print *u | $2 = {sysname = "GNU", '\0' <repeats 1020 times>, | nodename = "hurd", '\0' <repeats 1019 times>, | release = "0.3", '\0' <repeats 1020 times>, | version = "GNUmach-1.2/Hurd-0.3", '\0' <repeats 1003 times>, | machine = "i386-AT386", '\0' <repeats 1013 times>} | (gdb) print *pi | $3 = {pr_flag = 3, | pr_nlwp = 2, | pr_pid = 23268, | pr_ppid = 694, | pr_pgid = 23268, | pr_sid = 694, | pr_uid = 4294967295, | pr_euid = 0, | pr_gid = 4294967295, | pr_egid = 4294967295, | pr_size = 611418112, | pr_rssize = 2654208, | pr_pctcpu = 0, | pr_pctmem = 54, | pr_start = {tv_sec = 1076231792, tv_nsec = 760000000}, | pr_time = {tv_sec = 0, tv_nsec = 10000000}, | pr_ctime = {tv_sec = 0, tv_nsec = 0}, | pr_reserved1 = {0, 0}, | pr_fname = '\0' <repeats 15 times>, | pr_psargs = "/sub-hurd/bin/gencat", '\0' <repeats 59 times>, | pr_wstat = 5503, | pr_argc = 1, | pr_argv = 16874516, | pr_envp = 16874524} | (gdb) print *ps | $4 = {pr_flags = 3, | pr_nlwp = 2, | pr_pid = 23268, | pr_ppid = 694, | pr_pgid = 23268, | pr_sid = 694, | pr_utime = {tv_sec = 0, tv_nsec = 0}, | pr_stime = {tv_sec = 0, tv_nsec = 10000000}, | pr_cutime = {tv_sec = 0, tv_nsec = 0}, | pr_cstime = {tv_sec = 0, tv_nsec = 0}} | (gdb) print *l1 | $5 = {pr_flags = 0, | pr_lwpid = 0, | pr_cursig = 0, | pr_info = {si_signo = 0, si_code = 0, si_errno = 0}, | pr_reg = {31, 31, 31, 31, 0, 3, 16873244, 2, 18340376, | 18579400, 0, -25, 0, 0, 17004764, 23, 17004764, 23, 17004764}, | pr_fpreg = {fp_reg_set = {fpchip_state = {state = {0 <repeats 27 times>}, | status = 0}, | fp_emul_space = {fp_emul = '\0' <repeats 245 times>, | fp_epad = "\000"}, | f_fpregs = {0 <repeats 62 times>}}, | f_wregs = {0 <repeats 33 times>}}} | (gdb) print *l2 | $6 = {pr_flags = 0, | pr_lwpid = 1, | pr_cursig = 0, | pr_info = {si_signo = 0, si_code = 0, si_errno = 0}, | pr_reg = {31, 31, 31, 31, 0, 2, 18616156, 0, 18340376, | 1, 18615940, -25, 0, 0, 17004764, 23, 17004764, 23, 17004764}, | pr_fpreg = {fp_reg_set = {fpchip_state = {state = {0 <repeats 27 times>}, | status = 0}, | fp_emul_space = {fp_emul = '\0' <repeats 245 times>, | fp_epad = "\000"}, | f_fpregs = {0 <repeats 62 times>}}, | f_wregs = {0 <repeats 33 times>}}} | (gdb) `---- The configure checks for the fields of lwpstatus_t are what I had in mind. Look at bfd/elf.c and see the various HAVE_* macros that elfcore_grok_lwpstatus depends on. Make sure your bfd/config.h defines all the ones that should exist looking at Hurd's <sys/procfs.h>. Looks sane, HAVE_LWPSTATUS_T, HAVE_LWPSTATUS_T_PR_FPREG, and HAVE_LWPSTATUS_T_PR_REG, are defined. > But looking at the source, there isn't a configure check for > pr_fpreg to go with the bfd/elf.c code > (elfcore_grok_lwpstatus). That would explain that. > > This didn't work, produced the same output as without it (and > yes, I did regenerate configure). And removed config.cache, I hope? I forgot to re-run autoheader. GDB is not silent about the size mis-match about fpregset. But it still doesn't read the core dumps like it should. ,---- | hurd:/ams# ./sources.redhat.com/sources.redhat.com/obj/gdb/gdb /sub-hurd/bin/gencat core.23268 | GNU gdb 2004-02-04-cvs | Copyright 2004 Free Software Foundation, Inc. | GDB is free software, covered by the GNU General Public License, and you are | welcome to change it and/or distribute copies of it under certain conditions. | Type "show copying" to see the conditions. | There is absolutely no warranty for GDB. Type "show warranty" for details. | This GDB was configured as "i386-unknown-gnu0.3"... | | warning: core file may not match specified executable file. | Core was generated by `/sub-hurd/bin/gencat'. | Reading symbols from /lib/libc.so.0.3...done. | Loaded symbols for /lib/libc.so.0.3 | Reading symbols from /lib/ld.so.1...done. | Loaded symbols for /lib/ld.so.1 | Reading symbols from /lib/libmachuser.so.1...done. | Loaded symbols for /lib/libmachuser.so.1 | Reading symbols from /lib/libhurduser.so.0.3...done. | Loaded symbols for /lib/libhurduser.so.0.3 | #0 0x00000000 in ?? () | (gdb) `---- _______________________________________________ Bug-hurd mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-hurd