From: <rw...@ea...> - 2001-12-09 05:11:33
|
I don't know if this is an unusual problem or not, but I want to share what I found. I wasn't able to "make" a simple hello.c program in UML using make's default rules. (I couldn't make anything, so I just went for the simplest case). Configuring make with --disable-job-server and default optimization (-g -O2) turned out to be the trick. Originally I had make compiled with the same CFLAGS as the kernel uses to compile. Those flags work fine for most programs. "make hello" would create "hello", but it wouldn't return the bash prompt. Here is the tail end of "strace make hello". write(1, "cc hello.c -o hello\n", 26cc hello.c -o hello ) = 26 pipe([3, 4]) = 0 close(4) = 0 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 brk(0x8074000) = 0x8074000 rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT TERM XCPU XFSZ], NULL, 8) = 0 vfork() = 222 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0, NULL) = 222 --- SIGCHLD (Child exited) --- After compiling make-3.79.1 like this, everything is fine: unset CFLAGS CPPFLAGS /configure --prefix=/usr --disable-nls --disable-job-server make -- Randy Hron |
From: Jeff D. <jd...@ka...> - 2001-12-09 05:30:58
|
rw...@ea... said: > "make hello" would create "hello", but it wouldn't return the bash > prompt. If you hit return, would you get a prompt? And was make's output truncated at the end? If so, this is the console driver flow control bug. Also, see if it happens over a remote login. Jeff |
From: <rw...@ea...> - 2001-12-09 06:00:04
|
On Sun, Dec 09, 2001 at 01:50:47AM -0500, Jeff Dike wrote: > rw...@ea... said: > > "make hello" would create "hello", but it wouldn't return the bash > > prompt. > > If you hit return, would you get a prompt? And was make's output truncated > at the end? If so, this is the console driver flow control bug. Hitting return doesn't give the prompt. I have to do a kill -9 on make's PID. > Also, see if it happens over a remote login. > > Jeff It happens on a telnet session as well. Here is what it looks like: root@uml:/mnt/rushmore/usr/src/sources/h# rm hello root@uml:/mnt/rushmore/usr/src/sources/h# tty /dev/pts/0 root@uml:/mnt/rushmore/usr/src/sources/h# make hello cc hello.c -o hello Killed root@uml:/mnt/rushmore/usr/src/sources/h# root@uml:/mnt/rushmore/usr/src/sources/h# root@uml:/mnt/rushmore/usr/src/sources/h# ./hello hello, world root@uml:/mnt/rushmore/usr/src/sources/h# If I point at the recompiled make, it works normally: root@uml:/mnt/rushmore/usr/src/sources/h# alias make=/mnt/rushmore/usr/bin/make root@uml:/mnt/rushmore/usr/src/sources/h# rm hello root@uml:/mnt/rushmore/usr/src/sources/h# make hello cc hello.c -o hello root@uml:/mnt/rushmore/usr/src/sources/h# -- Randy Hron |
From: Jeff D. <jd...@ka...> - 2001-12-09 15:59:18
|
rw...@ea... said: > Hitting return doesn't give the prompt. I have to do a kill -9 on > make's PID. OK, can you send me the Makefile and hello.c? Jeff |
From: <rw...@ea...> - 2001-12-09 18:23:36
|
On Sun, Dec 09, 2001 at 12:19:11PM -0500, Jeff Dike wrote: > rw...@ea... said: > > Hitting return doesn't give the prompt. I have to do a kill -9 on > > make's PID. > > OK, can you send me the Makefile and hello.c? > > Jeff #include <stdio.h> int main() { printf("hello, world\n"); exit(0); } There is no Makefile. I just used make's default rules. make returns fine in UML after compiling it without optimization and --no-job-server. -- Randy Hron |
From: Jeff D. <jd...@ka...> - 2001-12-09 22:00:43
|
Hmmm, well it seems to work here... usermode:~# cat > hello.c #include <stdio.h> int main() { printf("hello, world\n"); exit(0); } usermode:~# make hello cc hello.c -o hello usermode:~# ./hello hello, world usermode:~# What version of UML are you using? Jeff |
From: <rw...@ea...> - 2001-12-10 05:13:28
|
On Sun, Dec 09, 2001 at 06:20:35PM -0500, Jeff Dike wrote: > Hmmm, well it seems to work here... > > What version of UML are you using? > > Jeff UML version 2.4.15-4 and 2.4.16-1. I really meant for my original post to be a "heads up" and possibly to get some tips on compiling within UML. I've been able to reproduce the phenomenon that make-3.79.1 will not return in UML if built with: CFLAGS="-O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -s" CPPFLAGS="$CPPFLAGS" /configure --prefix=/usr --disable-nls && make make-3.79.1 will work in UML if built with: unset CFLAGS CPPFLAGS /configure --prefix=/usr --disable-nls --no-job-server && make It may be specific to my configuration. Pardon the long email here. These transcripts are in case you're curious. I did 4 scenerios. 1) uml-2.4.15-4 with optimized make 2) uml-2.4.16-1 with optimized make 3) uml-2.4.15-4 with normal make # works fine 4) uml-2.4.16-1 with normal make # works fine Scenerio 1 uml-2.4.15-4 with optimized make ================================================ hrandoz@rushmore:/usr/src/uml/linux$ ./linux eth0=tuntap,,,192.168.0.230 tracing thread pid = 11364 Linux version 2.4.15-greased-turkey-4um (root@rushmore) (gcc version 2.95.3 20010315 (release)) #1 Sat Dec 8 22:31:47 EST 2001 On node 0 totalpages: 8192 zone(0): 0 pages. zone(1): 8192 pages. zone(2): 0 pages. Kernel command line: eth0=tuntap,,,192.168.0.230 root=/dev/ubd0 Calibrating delay loop... 66.19 BogoMIPS Memory: 32244k available Dentry-cache hash table entries: 4096 (order: 3, 32768 bytes) Inode-cache hash table entries: 2048 (order: 2, 16384 bytes) Mount-cache hash table entries: 512 (order: 0, 4096 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 8192 (order: 3, 32768 bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket Starting kswapd pty: 256 Unix98 ptys configured block: 64 slots per queue, batch=16 Netdevice 0 : TUN/TAP backend - IP = 192.168.0.230 PPP generic driver version 2.4.1 PPP Deflate Compression module registered PPP BSD Compression module registered NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP, IGMP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 2048 bind 2048) ip_conntrack (256 buckets, 2048 max) ip_tables: (c)2000 Netfilter core team NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. Initializing stdio console driver Initializing software serial port version 1 mconsole initialized on /tmp/uml/fdjGqc/mconsole Mapper v0.1 reiserfs: checking transaction log (device 62:00) ... Using r5 hash to sort names ReiserFS version 3.6.25 VFS: Mounted root (reiserfs filesystem) readonly. INIT: version 2.83 booting /dev/bd0 on / type reiserfs (rw) Setting hostname to `uml' INIT: Entering runlevel: 3 Cleaning /tmp * insmod tun insmod: a module named tun already exists Using /lib/modules/2.4.17-pre7/kernel/drivers/net/tun.o * ifconfig tap0 192.168.0.230 netmask 255.255.255.255 up * bash -c echo 1 > /proc/sys/net/ipv4/ip_forward * route add -host 192.168.0.250 dev tap0 * bash -c echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp * arp -Ds 192.168.0.250 tap1 pub * arp -Ds 192.168.0.250 eth0 pub You can log into uml with one of you normal accounts or root. The passwords are the same as on rushmore uml login: root Password: root@uml:~# ls -l /usr/bin/make -rwxr-sr-x 1 root kmem 117652 Dec 10 03:29 /usr/bin/make root@uml:~# cksum /usr/bin/make 2197534909 117652 /usr/bin/make root@uml:~# cd /usr/src root@uml:/usr/src# uname -a Linux uml 2.4.15-greased-turkey-4um #1 Sat Dec 8 22:31:47 EST 2001 i686 unknown root@uml:/usr/src# l total 8 -rwxr-xr-x 1 root root 3156 Dec 10 03:42 hello -rw-r--r-- 1 root root 70 Dec 10 03:32 hello.c root@uml:/usr/src# rm hello root@uml:/usr/src# make hello cc -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -s -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -s hello.c -o hello ### ### at this point, make is not returning, so I telnet into the UML. ### hrandoz@rushmore:/usr/src/uml/linux$ telnet uml Trying 192.168.0.250... Connected to jdike.hrandoz.net. Escape character is '^]'. Linux 2.4.15-greased-turkey-4um (jdike.hrandoz.net) (0) uml login: root Password: root@uml:~# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 1.6 1300 516 ? S 03:48 0:00 init root 2 0.0 0.0 0 0 ? SW 03:48 0:00 [keventd] root 3 0.0 0.0 0 0 ? SWN 03:48 0:00 [ksoftirqd_CPU0] root 4 0.0 0.0 0 0 ? SW 03:48 0:00 [kswapd] root 5 0.0 0.0 0 0 ? SW 03:48 0:00 [bdflush] root 6 0.0 0.0 0 0 ? SW 03:48 0:00 [kupdated] root 7 0.0 0.0 0 0 ? SW 03:48 0:00 [kreiserfsd] root 25 0.0 1.9 1352 620 ? S 03:48 0:00 /usr/sbin/syslogd -m0 root 27 0.0 1.5 1292 512 ? S 03:48 0:00 /usr/sbin/klogd -c3 -x root 31 0.0 1.8 1340 584 ? S 03:48 0:00 /usr/sbin/inetd root 33 0.0 3.9 2244 1288 ? S 03:48 0:00 -bash root 41 3.9 2.2 1600 716 ? R 03:48 0:01 make hello root 48 0.0 1.9 1400 640 ? S 03:48 0:00 in.telnetd: alan.hrandoz.net root 49 0.0 3.9 2236 1276 pts/0 R 03:48 0:00 -bash root 54 0.0 2.3 2512 744 pts/0 R 03:48 0:00 ps aux root@uml:~# kill -9 41 root@uml:~# tty /dev/pts/0 root@uml:~# ### ### Back over on the console, make is killed. hello was compiled ### and runs. ### Killed root@uml:/usr/src# ./hello hello world root@uml:/usr/src# type make make is hashed (/usr/bin/make) root@uml:/usr/src# ldd /usr/bin/make libutil.so.1 => /lib/libutil.so.1 (0x40016000) librt.so.1 => /lib/librt.so.1 (0x40019000) libc.so.6 => /lib/libc.so.6 (0x4002b000) libpthread.so.0 => /lib/libpthread.so.0 (0x4014f000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) root@uml:/usr/src# ls -l $(ldd /usr/bin/make|awk '{print $3}') lrwxrwxrwx 1 root root 11 Dec 10 03:31 /lib/ld-linux.so.2 -> ld-2.2.4.so lrwxrwxrwx 1 root root 13 Dec 10 03:31 /lib/libc.so.6 -> libc-2.2.4.so lrwxrwxrwx 1 root root 17 Dec 10 03:31 /lib/libpthread.so.0 -> libpthread-0.9.so lrwxrwxrwx 1 root root 14 Dec 10 03:31 /lib/librt.so.1 -> librt-2.2.4.so lrwxrwxrwx 1 root root 16 Dec 10 03:31 /lib/libutil.so.1 -> libutil-2.2.4.so root@uml:/usr/src# tty /dev/console root@uml:/usr/src# cd /lib root@uml:/lib# ls -l $(ldd /usr/bin/make|awk '{print $1}') lrwxrwxrwx 1 root root 11 Dec 10 03:31 /lib/ld-linux.so.2 -> ld-2.2.4.so lrwxrwxrwx 1 root root 13 Dec 10 03:31 libc.so.6 -> libc-2.2.4.so lrwxrwxrwx 1 root root 17 Dec 10 03:31 libpthread.so.0 -> libpthread-0.9.so lrwxrwxrwx 1 root root 14 Dec 10 03:31 librt.so.1 -> librt-2.2.4.so lrwxrwxrwx 1 root root 16 Dec 10 03:31 libutil.so.1 -> libutil-2.2.4.so root@uml:/lib# ls -ld ld-2.2.4.so libpthread-0.9.so librt-2.2.4.so libutil-2.2.4.so -rwxr-xr-x 1 root root 110863 Aug 23 05:08 ld-2.2.4.so -rwxr-xr-x 1 root root 100514 Aug 23 05:08 libpthread-0.9.so -rwxr-xr-x 1 root root 38611 Aug 23 05:08 librt-2.2.4.so -rwxr-xr-x 1 root root 11642 Aug 23 05:08 libutil-2.2.4.so root@uml:/lib# Scenerio 2 uml-2.4.16-1 with optimized make ================================================ hrandoz@rushmore:/usr/src/uml/linux$ cd ../../*.16/linux hrandoz@rushmore:/usr/src/uml-2.4.16/linux$ ./linux eth0=tuntap,,,192.168.0.230 ubd0=/usr/src/uml/linux/root_fs tracing thread pid = 11837 Linux version 2.4.16-1um (root@rushmore) (gcc version 2.95.3 20010315 (release)) #1 Sun Dec 9 01:15:28 EST 2001 On node 0 totalpages: 8192 zone(0): 0 pages. zone(1): 8192 pages. zone(2): 0 pages. Kernel command line: eth0=tuntap,,,192.168.0.230 ubd0=/usr/src/uml/linux/root_fs root=/dev/ubd0 Calibrating delay loop... 66.19 BogoMIPS Memory: 32244k available Dentry-cache hash table entries: 4096 (order: 3, 32768 bytes) Inode-cache hash table entries: 2048 (order: 2, 16384 bytes) Mount-cache hash table entries: 512 (order: 0, 4096 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 8192 (order: 3, 32768 bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket Starting kswapd pty: 256 Unix98 ptys configured block: 64 slots per queue, batch=16 Netdevice 0 : TUN/TAP backend - IP = 192.168.0.230 PPP generic driver version 2.4.1 PPP Deflate Compression module registered PPP BSD Compression module registered NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP, IGMP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 2048 bind 2048) ip_conntrack (256 buckets, 2048 max) ip_tables: (c)2000 Netfilter core team NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. Initializing stdio console driver Initializing software serial port version 1 mconsole initialized on /tmp/uml/HGsjZj/mconsole Mapper v0.1 reiserfs: checking transaction log (device 62:00) ... Using r5 hash to sort names ReiserFS version 3.6.25 VFS: Mounted root (reiserfs filesystem) readonly. INIT: version 2.83 booting /dev/bd0 on / type reiserfs (rw) Setting hostname to `uml' INIT: Entering runlevel: 3 Cleaning /tmp * insmod tun insmod: a module named tun already exists Using /lib/modules/2.4.17-pre7/kernel/drivers/net/tun.o * ifconfig tap0 192.168.0.230 netmask 255.255.255.255 up * bash -c echo 1 > /proc/sys/net/ipv4/ip_forward * route add -host 192.168.0.250 dev tap0 * bash -c echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp * arp -Ds 192.168.0.250 eth0 pub You can log into uml with one of you normal accounts or root. The passwords are the same as on rushmore uml login: root Password: root@uml:~# cd /usr/src root@uml:/usr/src# rm hello root@uml:/usr/src# make hello cc -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -s -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -s hello.c -o hello Killed root@uml:/usr/src# ./hello hello world root@uml:/usr/src# # # telnet session to kill make hrandoz@rushmore:/usr/src/uml/linux$ telnet uml Trying 192.168.0.250... Connected to jdike.hrandoz.net. Escape character is '^]'. Linux 2.4.16-1um (jdike.hrandoz.net) (0) uml login: root Password: root@uml:~# ps aux|grep make root 39 4.5 2.2 1600 716 ? R 04:15 0:02 make hello root@uml:~# kill -9 39 root@uml:~# Scenerio 3 uml-2.4.15-4 with normal make ============================================= hrandoz@rushmore:/usr/src/uml/linux$ ./linux eth0=tuntap,,,192.168.0.230 ubd0=/usr/src/uml-2.4.16/linux/root_fs tracing thread pid = 12104 Linux version 2.4.15-greased-turkey-4um (root@rushmore) (gcc version 2.95.3 20010315 (release)) #1 Sat Dec 8 22:31:47 EST 2001 On node 0 totalpages: 8192 zone(0): 0 pages. zone(1): 8192 pages. zone(2): 0 pages. Kernel command line: eth0=tuntap,,,192.168.0.230 ubd0=/usr/src/uml-2.4.16/linux/root_fs root=/dev/ubd0 Calibrating delay loop... 64.06 BogoMIPS Memory: 32244k available Dentry-cache hash table entries: 4096 (order: 3, 32768 bytes) Inode-cache hash table entries: 2048 (order: 2, 16384 bytes) Mount-cache hash table entries: 512 (order: 0, 4096 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 8192 (order: 3, 32768 bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket Starting kswapd pty: 256 Unix98 ptys configured block: 64 slots per queue, batch=16 Netdevice 0 : TUN/TAP backend - IP = 192.168.0.230 PPP generic driver version 2.4.1 PPP Deflate Compression module registered PPP BSD Compression module registered NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP, IGMP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 2048 bind 2048) ip_conntrack (256 buckets, 2048 max) ip_tables: (c)2000 Netfilter core team NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. Initializing stdio console driver Initializing software serial port version 1 mconsole initialized on /tmp/uml/RlI5qz/mconsole Mapper v0.1 reiserfs: checking transaction log (device 62:00) ... Using r5 hash to sort names ReiserFS version 3.6.25 VFS: Mounted root (reiserfs filesystem) readonly. INIT: version 2.83 booting /dev/bd0 on / type reiserfs (rw) Setting hostname to `uml2416' INIT: Entering runlevel: 3 Cleaning /tmp * insmod tun insmod: a module named tun already exists Using /lib/modules/2.4.17-pre7/kernel/drivers/net/tun.o * ifconfig tap0 192.168.0.230 netmask 255.255.255.255 up * bash -c echo 1 > /proc/sys/net/ipv4/ip_forward * route add -host 192.168.0.240 dev tap0 * bash -c echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp * arp -Ds 192.168.0.240 eth0 pub You can log into uml2416 with one of you normal accounts or root. The passwords are the same as on rushmore uml2416 login: root Password: root@uml2416:~# ls -l /usr/bin/make -rwxr-sr-x 1 root kmem 119956 Dec 9 04:50 /usr/bin/make root@uml2416:~# cksum /usr/bin/make 1242316696 119956 /usr/bin/make root@uml2416:~# root@uml2416:~# cd /usr/src root@uml2416:/usr/src# make hello make: `hello' is up to date. root@uml2416:/usr/src# rm hello root@uml2416:/usr/src# type make make is hashed (/usr/bin/make) root@uml2416:/usr/src# make hello cc -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -s -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -s hello.c -o hello root@uml2416:/usr/src# ./hello hello world root@uml2416:/usr/src# ldd /usr/bin/make libutil.so.1 => /lib/libutil.so.1 (0x40016000) librt.so.1 => /lib/librt.so.1 (0x40019000) libc.so.6 => /lib/libc.so.6 (0x4002b000) libpthread.so.0 => /lib/libpthread.so.0 (0x4014f000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) root@uml2416:/usr/src# ls -l $(ldd /usr/bin/make|awk '{print $3}') lrwxrwxrwx 1 root root 11 Dec 9 07:49 /lib/ld-linux.so.2 -> ld-2.2.4.so lrwxrwxrwx 1 root root 13 Dec 9 07:49 /lib/libc.so.6 -> libc-2.2.4.so lrwxrwxrwx 1 root root 17 Dec 9 07:49 /lib/libpthread.so.0 -> libpthread-0.9.so lrwxrwxrwx 1 root root 14 Dec 9 07:49 /lib/librt.so.1 -> librt-2.2.4.so lrwxrwxrwx 1 root root 16 Dec 9 07:49 /lib/libutil.so.1 -> libutil-2.2.4.so root@uml2416:/usr/src# cd /lib root@uml2416:/lib# ls -l $(ldd /usr/bin/make|awk '{print $1}') lrwxrwxrwx 1 root root 11 Dec 9 07:49 /lib/ld-linux.so.2 -> ld-2.2.4.so lrwxrwxrwx 1 root root 13 Dec 9 07:49 libc.so.6 -> libc-2.2.4.so lrwxrwxrwx 1 root root 17 Dec 9 07:49 libpthread.so.0 -> libpthread-0.9.so lrwxrwxrwx 1 root root 14 Dec 9 07:49 librt.so.1 -> librt-2.2.4.so lrwxrwxrwx 1 root root 16 Dec 9 07:49 libutil.so.1 -> libutil-2.2.4.so root@uml2416:/lib# ls -l ld-2.2.4.so libpthread-0.9.so librt-2.2.4.so libutil-2.2.4.so -rwxr-xr-x 1 root root 110863 Aug 23 05:08 ld-2.2.4.so -rwxr-xr-x 1 root root 100514 Aug 23 05:08 libpthread-0.9.so -rwxr-xr-x 1 root root 38611 Aug 23 05:08 librt-2.2.4.so -rwxr-xr-x 1 root root 11642 Aug 23 05:08 libutil-2.2.4.so root@uml2416:/lib# halt Broadcast message from root (console) (Mon Dec 10 04:25:27 2001): The system is going down for system halt NOW! INIT: Switching to runlevel: 0 INIT: Sending processes started by init the TERM signal INIT: Sending processes started by init the KILL signal Power down. hrandoz@rushmore:/usr/src/uml/linux$ Scenerio 4 uml-2.4.15-4 with normal make ============================================= hrandoz@rushmore:/usr/src/uml/linux$ hrandoz@rushmore:/usr/src/uml/linux$ cd ../../u*.16/linux hrandoz@rushmore:/usr/src/uml-2.4.16/linux$ ./linux eth0=tuntap,,,192.168.0.230 ubd0=/usr/src/uml-2.4.16/linux/root_fs tracing thread pid = 12390 Linux version 2.4.16-1um (root@rushmore) (gcc version 2.95.3 20010315 (release)) #1 Sun Dec 9 01:15:28 EST 2001 On node 0 totalpages: 8192 zone(0): 0 pages. zone(1): 8192 pages. zone(2): 0 pages. Kernel command line: eth0=tuntap,,,192.168.0.230 ubd0=/usr/src/uml-2.4.16/linux/root_fs root=/dev/ubd0 Calibrating delay loop... 73.40 BogoMIPS Memory: 32244k available Dentry-cache hash table entries: 4096 (order: 3, 32768 bytes) Inode-cache hash table entries: 2048 (order: 2, 16384 bytes) Mount-cache hash table entries: 512 (order: 0, 4096 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 8192 (order: 3, 32768 bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket Starting kswapd pty: 256 Unix98 ptys configured block: 64 slots per queue, batch=16 Netdevice 0 : TUN/TAP backend - IP = 192.168.0.230 PPP generic driver version 2.4.1 PPP Deflate Compression module registered PPP BSD Compression module registered NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP, IGMP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 2048 bind 2048) ip_conntrack (256 buckets, 2048 max) ip_tables: (c)2000 Netfilter core team NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. Initializing stdio console driver Initializing software serial port version 1 mconsole initialized on /tmp/uml/wkWGPs/mconsole Mapper v0.1 reiserfs: checking transaction log (device 62:00) ... Using r5 hash to sort names ReiserFS version 3.6.25 VFS: Mounted root (reiserfs filesystem) readonly. INIT: version 2.83 booting /dev/bd0 on / type reiserfs (rw) Setting hostname to `uml2416' INIT: Entering runlevel: 3 Cleaning /tmp * insmod tun insmod: a module named tun already exists Using /lib/modules/2.4.17-pre7/kernel/drivers/net/tun.o * ifconfig tap0 192.168.0.230 netmask 255.255.255.255 up * bash -c echo 1 > /proc/sys/net/ipv4/ip_forward * route add -host 192.168.0.240 dev tap0 * bash -c echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp * arp -Ds 192.168.0.240 eth0 pub You can log into uml2416 with one of you normal accounts or root. The passwords are the same as on rushmore uml2416 login: root Password: root@uml2416:~# cd /usr/src root@uml2416:/usr/src# make hello make: `hello' is up to date. root@uml2416:/usr/src# rm hello root@uml2416:/usr/src# make hello cc -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -s -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -s hello.c -o hello root@uml2416:/usr/src# type cc cc is /usr/bin/cc root@uml2416:/usr/src# ls -l /usr/bin/cc lrwxrwxrwx 1 root root 3 Dec 9 07:49 /usr/bin/cc -> gcc root@uml2416:/usr/src# ls -l /usr/bin/gcc -rwxr-xr-x 1 root root 64644 Aug 17 03:47 /usr/bin/gcc root@uml2416:/usr/src# ldd /usr/bin/gcc libc.so.6 => /lib/libc.so.6 (0x40016000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) root@uml2416:/usr/src# ls -l /lib/libc.so.6 /lib/ld-linux.so.2 lrwxrwxrwx 1 root root 11 Dec 9 07:49 /lib/ld-linux.so.2 -> ld-2.2.4.so lrwxrwxrwx 1 root root 13 Dec 9 07:49 /lib/libc.so.6 -> libc-2.2.4.so root@uml2416:/usr/src# ls -l /lib/libc-2.2.4.so -rwxr-xr-x 1 root root 1448241 Aug 23 04:56 /lib/libc-2.2.4.so root@uml2416:/usr/src# ls -l /usr/bin/make -rwxr-sr-x 1 root kmem 119956 Dec 9 04:50 /usr/bin/make root@uml2416:/usr/src# In conclusion, make-3.79.1 works in UML when I build it is built with default optimizations. -- Randy Hron |
From: Jeff D. <jd...@ka...> - 2001-12-10 06:03:57
|
rw...@ea... said: > I really meant for my original post to be a "heads up" and possibly > to get some tips on compiling within UML. You don't need any tips. If a normal process (which make is) behaves differently on UML than on the host, then it's (most likely) a UML bug. One of my standard tests before making a UML release is a kernel build, so whatever is wrong is somewhat subtle. Make isn't generically broken under UML. When make hangs, can you 'cat /proc/<pid of make>/status'? If you see this: SigPnd: 0000000000010000 SigBlk: 0000000000010000 then make isn't noticing that gcc finished because it's blocking SIGCHLD, and that would make me suspect that I'm not restoring a signal mask properly when returning from a handler. Jeff |
From: <rw...@ea...> - 2001-12-10 07:07:01
|
On Mon, Dec 10, 2001 at 02:23:48AM -0500, Jeff Dike wrote: > When make hangs, can you 'cat /proc/<pid of make>/status'? If you see this: > > SigPnd: 0000000000010000 > SigBlk: 0000000000010000 > > then make isn't noticing that gcc finished because it's blocking SIGCHLD, and > that would make me suspect that I'm not restoring a signal mask properly when > returning from a handler. > > Jeff root@uml:/proc/40# l total 0 -r--r--r-- 1 root root 0 Dec 10 06:46 cmdline lrwxrwxrwx 1 root root 0 Dec 10 06:46 cwd -> /usr/src -r-------- 1 root root 0 Dec 10 06:46 environ lrwxrwxrwx 1 root root 0 Dec 10 06:46 exe -> /usr/bin/make dr-x------ 2 root root 0 Dec 10 06:46 fd -r--r--r-- 1 root root 0 Dec 10 06:46 maps -rw------- 1 root root 0 Dec 10 06:46 mem lrwxrwxrwx 1 root root 0 Dec 10 06:46 root -> / -r--r--r-- 1 root root 0 Dec 10 06:46 stat -r--r--r-- 1 root root 0 Dec 10 06:46 statm -r--r--r-- 1 root root 0 Dec 10 06:46 status root@uml:/proc/40# cat status Name: make State: R (running) Tgid: 40 Pid: 40 PPid: 33 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 3 0 FDSize: 256 Groups: 0 VmSize: 1600 kB VmLck: 0 kB VmRSS: 716 kB VmData: 108 kB VmStk: 16 kB VmExe: 112 kB VmLib: 1276 kB SigPnd: 0000000000000000 SigBlk: 0000000000010000 SigIgn: 8000000000000000 SigCgt: 0000000381814207 CapInh: 0000000000000000 CapPrm: 00000000fffffeff CapEff: 00000000fffffeff root@uml:/proc/40# ls -l fd total 0 lrwx------ 1 root root 64 Dec 10 06:48 0 -> /dev/console lrwx------ 1 root root 64 Dec 10 06:48 1 -> /dev/console lrwx------ 1 root root 64 Dec 10 06:48 2 -> /dev/console lr-x------ 1 root root 64 Dec 10 06:48 3 -> pipe:[50] root@uml:/proc/40# The process was running on /dev/console so I thought perhaps the make issue was related to <ctrl c> not working in UML on /dev/console on my system. I killed the process above from a telnet session. Then I ran make from telnet (pts/0). make on /dev/pts/0 didn't return either. <ctrl c> wouldn't kill make either. Finally I did a second telnet and kill -9. After killing make on /dev/pts/0, <ctrl c> starting working again. -- Randy Hron |