Some further information on this problem. It appears to be data-dependent.
Just to see what happened, I used stock 2.6.7 kernel sources, and the
modules built successfully. So, I took the modpost command from the 2.6.7
tree, and copied it into the 2.6.5 tree. I got the same error. Something
about the 2.6.5 modules is triggering an error in modpost. Using gdb, I was
able to get this backtrace:
Program received signal SIGSEGV, Segmentation fault.
0x00401848 in handle_modversions ()
(gdb) bt
#0 0x00401848 in handle_modversions ()
#1 0x004019e2 in read_symbols ()
#2 0x00401fda in main ()
That seemed like it might be useful, so I re-compiled modpost and it's
sub-modules with -g, and got this:
Program received signal SIGSEGV, Segmentation fault.
0x00401848 in handle_modversions (mod=0x410990, info=0x7fffdfc0,
sym=0x40018dcc,
symname=0x40018ff0 "vfs_readdir") at scripts/modpost.c:344
344 if (strcmp(symname, "_GLOBAL_OFFSET_TABLE_") == 0)
(gdb) bt
#0 0x00401848 in handle_modversions (mod=0x410990, info=0x7fffdfc0,
sym=0x40018dcc,
symname=0x40018ff0 "vfs_readdir") at scripts/modpost.c:344
#1 0x004019e2 in read_symbols (modname=0x7fffe92e "fs/exportfs/exportfs.o")
at scripts/modpost.c:407
#2 0x00401fda in main (argc=4262160, argv=0x7fffe370) at
scripts/modpost.c:601
The corresponding section of code is this:
case SHN_UNDEF:
/* undefined symbol */
if (ELF_ST_BIND(sym->st_info) != STB_GLOBAL)
break;
/* ignore global offset table */
if (strcmp(symname, "_GLOBAL_OFFSET_TABLE_") == 0)
break;
I don't know if this is any more help or not. Does it generate any ideas
from anyone?
Mark Post
-----Original Message-----
From: Post, Mark K
Sent: Tuesday, July 20, 2004 5:18 PM
To: 'Linux390'; '[EMAIL PROTECTED]'
Subject: make modules build error w/ 2.6.5
I'm trying to compile a 2.6.5 kernel and corresponding modules. The kernel
build seems to work fine, but I'm getting this linking error for the
modules:
CC [M] drivers/s390/char/tty3270.o
CC [M] drivers/s390/char/fs3270.o
LD [M] drivers/s390/char/tub3270.o
drivers/s390/char/fs3270.o(.init.text+0x0): In function `init_module':
: multiple definition of `init_module'
drivers/s390/char/tty3270.o(.init.text+0x0): first defined here
ld: Warning: size of symbol `init_module' changed from 250 in
drivers/s390/char/tty3270.o to 100 in drivers/s390/char/fs3270.o
drivers/s390/char/fs3270.o(.exit.text+0x0): In function `cleanup_module':
: multiple definition of `cleanup_module'
drivers/s390/char/tty3270.o(.exit.text+0x0): first defined here
ld: Warning: size of symbol `cleanup_module' changed from 68 in
drivers/s390/char/tty3270.o to 50 in drivers/s390/char/fs3270.o
make[2]: *** [drivers/s390/char/tub3270.o] Error 1
make[1]: *** [drivers/s390/char] Error 2
make: *** [drivers/s390] Error 2
Anyone with any ideas on what might be causing this and/or how to get around
it?
gcc 3.3.4
binutils 2.15.90.0.3
glibc 2.3.2
Mark Post
----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: INFO LINUX-390 or visit
http://www.marist.edu/htbin/wlvindex?LINUX-390