Hello all,
I'm building a powerpc cross of gcc-4.2.2 on RH 7.2 host and ran into this:
-> gdb build/genattrtab.orig core.20423
GNU gdb Red Hat Linux (5.2-2)
Copyright 2002 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-redhat-linux"...
warning: core file may not match specified executable file.
Core was generated by `build/genattrtab
../../gcc/config/rs6000/rs6000.md insn-conditions.md'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/i686/libc.so.6...done.
Loaded symbols for /lib/i686/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
#0 attr_rtx_1 (code=AND, p=0xbfffe3d4) at ../../gcc/genattrtab.c:409
409 if (h->hashcode == hashcode
Breakpoint 1 at 0x8054d45: file ../../gcc/errors.c, line 132.
Breakpoint 2 at 0x8054cac: file ../../gcc/errors.c, line 96.
Breakpoint 3 at 0x4202bbea
Breakpoint 4 at 0x4202a758
(gdb) p h
$1 = (struct attr_hash *) 0x90000036
(gdb) p *h
Cannot access memory at address 0x90000036
(gdb) l
404 return rt_val;
405 }
406
407 hashcode = ((HOST_WIDE_INT) code + RTL_HASH (arg0) +
RTL_HASH (arg1));
408 for (h = attr_hash_table[hashcode % RTL_HASH_SIZE]; h; h =
h->next)
409 if (h->hashcode == hashcode
410 && GET_CODE (h->u.rtl) == code
411 && XEXP (h->u.rtl, 0) == arg0
412 && XEXP (h->u.rtl, 1) == arg1)
413 return h->u.rtl;
(gdb)
Host compiler details:
-> gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-113)
The bug is very hardly reproducable; on FC6 I was unable to reproduce after
running test loop overnight.
Has anyone seen this before?
I see that by design it is impossible for h->next to point to outside
of valid entry.
Currently, I'm running a loop with genattrtab linked with dmalloc. May
be this will
shed some light...
Thanks for any help.
Regards,
Sergei