Modules in 1.3.10 and other things

Andrew Pollard (andrew@zycad.com)
Sun, 16 Jul 95 19:31:10 BST


Hello World,

I have been using/trying to use the 1.3.10 kernel.... here are a number of
comments.....

For information I am running gcc-2.6.2, libc-4.6.27, modules-1.2.8 on a
16M 486DX2/66.

[ I haven't braved ELF yet :-) BTW when is a newer libc-5 coming out? I seem
to remember hearing that there are bugs in the current libc-5.0.9 version ]

Problems when configuring the kernel with module support:
[ I have been getting something similar for ages... I just don't like getting
warnings while compiling things :-) ]

-------------------------------------------------------------------------------
make[1]: Entering directory `/usr/src/linux-1.3.10/kernel'
gcc -D__KERNEL__ -I/usr/src/linux-1.3.10/include -Wall -Wstrict-prototypes -O2
-fomit-frame-pointer -pipe -m486 -E -DCONFIG_MODVERSIONS -D__GENKSYMS__ ksyms.c
| /sbin/genksyms -w /usr/src/linux-1.3.10/include/linux/modules
genksyms "ksyms.c": warning: symbol [do_mmap]: unknown 'struct sem_undo'
genksyms "ksyms.c": warning: symbol [do_mmap]: unknown 'struct sem_queue'
genksyms "ksyms.c": warning: symbol [do_mmap]: unknown 'struct minix_super_bloc
k'
genksyms "ksyms.c": warning: symbol [do_mmap]: unknown 'struct ext2_super_block
'
genksyms "ksyms.c": warning: symbol [inet_add_protocol]: unknown 'struct sock'
genksyms "ksyms.c": warning: symbol [inet_add_protocol]: unknown 'struct ip_mc_
list'
genksyms "ksyms.c": warning: symbol [inet_add_protocol]: unknown 'struct udphdr
'
updating /usr/src/linux-1.3.10/include/linux/modversions.h
-------------------------------------------------------------------------------

Problems with make modules:
[ several compiler warnings, and a total failure with the scsi stuff ]

-------------------------------------------------------------------------------
make[1]: Entering directory `/usr/src/linux-1.3.10/kernel'
make[1]: Nothing to be done for `modules'.
make[1]: Leaving directory `/usr/src/linux-1.3.10/kernel'
make[1]: Entering directory `/usr/src/linux-1.3.10/drivers'
set -e; for i in block char net scsi ; do make -C $i modules; done

make[2]: Entering directory `/usr/src/linux-1.3.10/drivers/block'
[ all ok ]
make[2]: Leaving directory `/usr/src/linux-1.3.10/drivers/block'

make[2]: Entering directory `/usr/src/linux-1.3.10/drivers/char'
[ all ok ]
make[2]: Leaving directory `/usr/src/linux-1.3.10/drivers/char'

make[2]: Entering directory `/usr/src/linux-1.3.10/drivers/net'
[ most ok ]
gcc -D__KERNEL__ -I/usr/src/linux-1.3.10/include -Wall -Wstrict-prototypes -O2
-fomit-frame-pointer -pipe -m486 -DMODULE -DCONFIG_MODVERSIONS -c 3c501.c
3c501.c:78: warning: `version' defined but not used
3c501.c:312: warning: `el_open' defined but not used
3c501.c:334: warning: `el_start_xmit' defined but not used
3c501.c:630: warning: `el1_close' defined but not used
3c501.c:650: warning: `el1_get_stats' defined but not used
3c501.c:663: warning: `set_multicast_list' defined but not used
gcc -D__KERNEL__ -I/usr/src/linux-1.3.10/include -Wall -Wstrict-prototypes -O2
-fomit-frame-pointer -pipe -m486 -DMODULE -DCONFIG_MODVERSIONS -c wavelan.c
wavelan.c: In function `wavelan_dev_show':
wavelan.c:2450: warning: int format, long int arg (arg 2)
gcc -D__KERNEL__ -I/usr/src/linux-1.3.10/include -Wall -Wstrict-prototypes -O2
-fomit-frame-pointer -pipe -m486 -DMODULE -DCONFIG_MODVERSIONS -DDE4X5_DEBUG=1
-DDE4X5_AUTOSENSE=AUTO -c de4x5.c
de4x5.c: In function `de4x5_queue_pkt':
de4x5.c:976: warning: int format, long int arg (arg 4)
make[2]: Leaving directory `/usr/src/linux-1.3.10/drivers/net'

make[2]: Entering directory `/usr/src/linux-1.3.10/drivers/scsi'
make[2]: *** No rule to make target `scsi_syms.ver'. Stop.
make[2]: Leaving directory `/usr/src/linux-1.3.10/drivers/scsi'
make[1]: *** [modules] Error 2
make[1]: Leaving directory `/usr/src/linux-1.3.10/drivers'
make: *** [modules] Error 2
-------------------------------------------------------------------------------

Sound driver problems:
-------------------------------------------------------------------------------
....
The sound driver is now configured.
Usage: hostname [-f] [name]
make[1]: Leaving directory `/usr/src/linux-1.3.10/drivers/sound'

The makefile drivers/sound/Makefile line 52 calls hostname -d to get the
domainname, but Slackware 2.2 doesn't support that option (you need domainname
instead)
-------------------------------------------------------------------------------

Other problems:
-------------------------------------------------------------------------------
While trying to compile tcl7.4, the autoconfigure stuff complains about having
a buggy vfork inplementation...

> checking Solaris 2.4 vfork/signal bug... buggy

It seems that the child can override the the SIGCHLD signal handler.
I assume linux *shouldn't* have this bug... but it seems to :-(
[ I guess this may be in libc, not the kernel - I'm using 4.6.27 ]

Here's the bit of the configure script that does the test...

#--------------------------------------------------------------------
# Check to see whether the system provides a vfork kernel call.
# If not, then use fork instead. Also, check for a problem with
# Solaris 2.4 and vforks and signals that can core dumps can occur
# if a vforked child resets a signal handler. If the problem
# exists, then use fork instead of vfork.
#--------------------------------------------------------------------

if test "$tcl_ok" = 1; then
echo $ac_n "checking Solaris 2.4 vfork/signal bug""... $ac_c" 1>&6;
if test "$cross_compiling" = yes; then
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
#line 2064 "configure"
#include "confdefs.h"

#include <stdio.h>
#include <signal.h>
#include <sys/wait.h>
int gotSignal = 0;
sigProc(sig)
int sig;
{
gotSignal = 1;
}
main()
{
int pid, sts;
(void) signal(SIGCHLD, sigProc);
pid = vfork();
if (pid < 0) {
exit(1);
} else if (pid == 0) {
(void) signal(SIGCHLD, SIG_DFL);
_exit(0);
} else {
(void) wait(&sts);
}
exit((gotSignal) ? 0 : 1);
}
EOF
eval $ac_link
if test -s conftest && (./conftest; exit) 2>/dev/null; then
echo "$ac_t""ok" 1>&6
else

echo "$ac_t""buggy" 1>&6
tcl_ok=0

fi
fi
rm -fr conftest*
fi
rm -f core
if test "$tcl_ok" = 0; then
cat >> confdefs.h <<\EOF
#define vfork fork
EOF

fi
-------------------------------------------------------------------------------

Also, what is the status of the kerneld stuff for 1.3.x? I'd like to try
this lot out again (I tried briefly with 1.2.8 and it sort of worked as far as
I can remember).

Another thing, is there any real need to use the new IDE controller stuff if
all you have is hard disks? I ask because the new stuff needs me to put
hdb=noprobe as a boot option, whereas the old stuff didn't (I read about this
in the readme) - I've got a 1Gb WD31000H disk.

Any comments on this lot?

PS. I haven't received a kernel digest for about 10 days now.. Has something
gone horribly wrong? Someone please mail me if they see this. Anyway I reported
a problem with 1.3.9 about the old IDE hd controller not compiling, and this
was fixed in 1.3.10... was my message seen (or more likely, did someone else
(or others) spot the problem)? Possibly ignore that lot, just spotted that I
got three of them over the weekend....

Andrew
===============================================================================
| Andrew Pollard, Zycad RP Division (InCA) UK | Work: andrew@zycad.com |
| Tel:+44(0)1344 51515 Fax:+44(0)1344 421231 | Home: Andrew@odie.demon.co.uk |
===============================================================================