[parisc-linux] ELF32 kernel
Paul Bame
bame@endor.fc.hp.com
Thu, 02 Mar 2000 14:37:49 -0700
= There's a problem when I enable CONFIG_PROC_FS where devinet_init()
= calls register_sysctl_table() with a ctl_table containing a char*
= pointer (for ->procname) containing the value 0x20, which eventually
= dies in strlen() at a lower level.
Actually CONFIG_PROC_FS works, but CONFIG_SYSCTL doesn't, for the
reason above, so I changed defconfig to reflect this.
I tracked the problem down to what appears to be a compiler
bug, in that the devinet_sysctl_table struct in net/ipv4/devinet.c
works well until you try to generate a pointer to the last 'ctl_table'
element inside that struct. This pointer value is bogus, leading to
the misbehavior described above. I can make the problem move around
by inserting fields in the struct, so it appears that gcc can't generate
valid pointers to members past a certain struct size.
This could also be a difficulty for SOM folks who use the compiler
from CVS on puffin.external.hp.com and who configure kernels including
networking.
I'm out of my depth hacking gcc.
-Paul Bame