HOME/ NetBSD/ OpenBlockS/ NetBSD/openblocks build.sh 020720

NetBSD/openblocks 2002-07-20なsourceをbuildする

NetBSD-currentの2002-07-20のソースを取り出す。

# mkdir /usr/20020720
# cd /usr/20020720
# cvs -d /usr/cvsroot checkout -D "20020720-UTC" src

ftp://nandra.iri.co.jpから取得したファイルを展開する。

入れ換えるファイルは次のとおり。

# cd src/sys/arch
# mv powerpc powerpc.org
# mv macppc macppc.org
# tar xvzf macppc-020720.tar.gz
# mv powerpc powerpc.macppc.0720
# tar xvzf mpc860-020720.tar.gz
# cd ../../lib/libc/arch
# mv powerpc powerpc.org
# tar xvzf libc-020720.tar.gz

DESTDIRを作る。

# mkdir -p /usr/DESTDIR/mpc860/20020731

ついでに${DESTDIR}/usr/include/mpc860をsys/arch/mpc860/include にシンボリックリンクを張る。

# mkdir -p /usr/DESTDIR/mpc860/20020731/usr/include
# ln -s /usr/20020720/src/sys/arch/mpc860/include /usr/DESTDIR/mpc860/20020731/usr/include

includeファイルが足りないのでsys/arch/macppc, sys/arch/powerpc からシンボリックリンクでごまかす。 ごまかし用のshell scriptは次のとおり。

SRCROOT=/usr/20020720/src
DESTDIR=/usr/DESTDIR/mpc860/20020731
MACPPC=${SRCROOT}/sys/arch/macppc/include
POWERPC=${SRCROOT}/sys/arch/powerpc/include
MPC860=${SRCROOT}/sys/arch/mpc860/include

ln -s ${MACPPC}/adbsys.h ${MPC860}
ln -s ${POWERPC}/bat.h ${MPC860}
ln -s ${MACPPC}/grfioctl.h ${MPC860}
ln -s ${POWERPC}/ipkdb.h ${MPC860}
ln -s ${MACPPC}/keyboard.h ${MPC860}
touch ${MPC860}/machine_type.h
ln -s ${MACPPC}/z8530var.h ${MPC860}

ln -s ${MPC860} ${DESTDIR}/usr/include/mpc860

次のようなエラーが出てコンパイルが通らないのでsys/lkm/Makefileのnetinet, vfsをコメントアウトする。

dependall ===> sys/lkm/netinet/if_ipl
CC=/usr/20020714/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc /usr/20020714/src/tools/obj/tools.NetBSD-1.6D-i386/bin/nbmkdep -a  -DIPFILTER_LOG -I/usr/20020714/src/sys/netinet -DUSE_INET6 -DIPFILTER_LKM -nostdinc -I. -I/usr/20020714/src/sys/lkm/netinet/if_ipl -isystem /usr/20020714/src/sys -isystem /usr/20020714/src/sys/arch -D_KERNEL -D_LKM  /usr/20020714/src/sys/netinet/ip_fil.c /usr/20020714/src/sys/netinet/fil.c /usr/20020714/src/sys/lkm/netinet/if_ipl/mln_ipl.c /usr/20020714/src/sys/netinet/ip_nat.c /usr/20020714/src/sys/netinet/ip_frag.c /usr/20020714/src/sys/netinet/ip_state.c /usr/20020714/src/sys/netinet/ip_proxy.c /usr/20020714/src/sys/netinet/ip_auth.c /usr/20020714/src/sys/netinet/ip_log.c
/usr/20020714/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2 -ffreestanding  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -DIPFILTER_LOG -I/usr/20020714/src/sys/netinet -DUSE_INET6 -DIPFILTER_LKM -nostdinc -I. -I/usr/20020714/src/sys/lkm/netinet/if_ipl -isystem /usr/20020714/src/sys -isystem /usr/20020714/src/sys/arch -D_KERNEL -D_LKM  -c /usr/20020714/src/sys/netinet/ip_fil.c
cc1: warnings being treated as errors
machine/pmap.h:246: warning: `pmap_update_pg' declared `static' but never defined
machine/pmap.h:247: warning: `pmap_update_2pg' declared `static' but never defined
*** Error code 1

Stop.
# cd /usr/20020720/src/sys/lkm/
# cp Makefile Makefile.org
# vi Makefile

Makefileの修正はnetinet, vfsを削るだけ。

--- Makefile.org        Wed Jul 31 23:08:32 2002
+++ Makefile    Wed Jul 31 23:08:44 2002
@@ -1,5 +1,5 @@
 # $NetBSD: Makefile,v 1.4 2000/12/08 23:06:34 jdolecek Exp $
 
-SUBDIR=        arch compat exec misc netinet vfs syscall
+SUBDIR=        arch compat exec misc syscall
 
 .include 

buildする。

# ./build.sh -D /usr/DESTDIR/mpc860/20020731 -a powerpc -m mpc860 > 20020731.mpc860.log 2>&1

kernelを作るまえに、sys/arch/mpc860/conf/MPC860にpatchをあてる。 やっていることは、カーネルのコピー先とgcc, ldを new toolchainで作ったものに変えているだけ。

--- MPC860.org	Sun Jul 14 23:22:49 2002
+++ MPC860	Wed Jul 31 12:15:11 2002
@@ -4,9 +4,10 @@
 
 maxusers	16
 
-makeoptions	CC="gcc3"
-makeoptions	COPY_KERNEL="/export/openblocks"
+makeoptions     CC="/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc"
+makeoptions     LD="/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-ld"
 
+makeoptions	COPY_KERNEL="/usr/DESTDIR/mpc860"
 options 	openblocks
 
 # Standard system options

kernelを作る。

# config MPC860
# cd ../compile/MPC860
# /usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/nbmake-mpc860 depend
# /usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/nbmake-mpc860
# cd /usr/DESTDIR/mpc860
# cp netbsd ./20020731

/etcを作る。etc.mpc860がないので、etc.macppcにシンボリックリンクを張る。

# cd /usr/20020720/src/etc
# ln -s etc.macppc etc.mpc860
# /usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/nbmake-mpc860 install-etc-files

/etcの設定を行う。rc.confでrc.configured=YESにして、fstabをtouchする。

# cd /usr/DESTDIR/mpc860/20020731/etc
# touch fstab
# vi rc.conf

devを作る。ftp://nandra.iri.co.jp/pub/NetBSD/mpc860/MAKEDEV.mpc860 を使う。

# cd /usr/DESTDIR/mpc860/20020731/dev
# sh MAKEDEV.mpc860 all

bootpとNFSの設定をしたらブートする。


>> OpenBlockS Boot, Revision 1.1
>> (root@ppr.home.tokuda.net, Sat Apr 20 11:00:28 JST 2002)
Using IP address: 192.168.100.60
root addr=192.168.100.36 path=/usr/DESTDIR/mpc860/20020731
1155028+135148 [89+72752+54234]=0x15a264
 start=0x10000
ssym = 14afc0, esym = 173000
[ using 163904 bytes of netbsd ELF symbol table ]
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 1.6D (MPC860) #0: Thu Aug  1 03:06:27 JST 2002
    tokuda@r1:/usr/20020720/src/sys/arch/mpc860.0720/compile/MPC860
total memory = 16384 KB
avail memory = 13516 KB
using 230 buffers containing 920 KB of memory
mainbus0 (root)
cpu0 at mainbus0: 860 (Revision 0)
pbus0 at mainbus0
scc0 at pbus0: vec 9 (console)
fec0 at pbus0: vec 7 address 00:80:6d:47:29:d5
tqphy0 at fec0 phy 1: 78Q2120 10/100 media interface, rev. 11
tqphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
sce0 at pbus0: vec 9 address 00:80:6d:47:29:d6
wdc0 at pbus0: vec 8
wd0 at wdc0 channel 0 drive 0: 
wd0: drive supports 16-sector PIO transfers, LBA addressing
wd0: 777 MB, 1580 cyl, 16 head, 63 sec, 512 bytes/sect x 1592728 sectors
wd0: drive supports PIO mode 4, DMA mode 2
boot device: fec0
root on fec0
nfs_boot: trying DHCP/BOOTP
nfs_boot: BOOTP next-server: 192.168.100.36
nfs_boot: my_name=obs.home.tokuda.net
nfs_boot: my_addr=192.168.100.60
nfs_boot: my_mask=255.255.255.0
root on r1:/usr/DESTDIR/mpc860/20020731
root file system type: nfs
Wed Jul 31 14:16:27 UTC 2002
Starting file system checks:
mount: /: unknown special file or file system.
Setting tty flags.
ttyflags: open /dev/ttyE0: No such file or directory
Setting sysctl variables:
Starting network.
Hostname: obs.home.tokuda.net
Configuring network interfaces: fec0.
add net default: gateway 192.168.100.1
Adding interface aliases:
Building databases...
Segmentation fault - core dumped
Segmentation fault - core dumped
Segmentation fault - core dumped
Starting syslogd.
Segmentation fault - core dumped
Checking for core dump...
savecore: no core dump (no dumpdev)
Mounting all filesystems...
Clearing /tmp.
Segmentation fault - core dumped
Checking quotas:Segmentation fault - core dumped
 done.
Segmentation fault - core dumped
Setting securelevel: kern.securelevel: 0 -> 1
Segmentation fault - core dumped
Starting virecover.
starting local daemons:.
Updating motd.
Segmentation fault - core dumped
Segmentation fault - core dumped
Starting inetd.
Segmentation fault - core dumped
Starting cron.
Segmentation fault - core dumped
Wed Jul 31 14:17:04 UTC 2002
Jul 31 14:17:06 init: getty repeating too quickly on port /dev/tty00,
sleeping
Jul 31 14:17:07 init: getty repeating too quickly on port /dev/ttyE0,
sleeping

ここまでが2002-07-31の結果。

ここからが2002-08-01の結果。

つばいさんからのメール で動いているlibc.so.12.85, cmpを試してみてねというメールをもらったので試してみる。

ファイルは次のものを使用した (ディレクトリ名が tmpなのでしばらくすると消えているかも)。

展開したファイルを配置する。XXXX.orgは元のファイル。 cmpもlibc.soもサイズは結構違う。

tokuda@r1{114}> ls -l /usr/DESTDIR/mpc860/20020731/usr/lib/libc.*
-r--r--r--  1 root  wheel  1617890 Aug  1 00:29 /usr/DESTDIR/mpc860/20020731/usr/lib/libc.a
lrwxr-xr-x  1 root  wheel       13 Aug  1 00:29 /usr/DESTDIR/mpc860/20020731/usr/lib/libc.so@ -> libc.so.12.85
lrwxr-xr-x  1 root  wheel       13 Aug  1 00:29 /usr/DESTDIR/mpc860/20020731/usr/lib/libc.so.12@ -> libc.so.12.85
-r--r--r--  1 root  wheel   844353 Aug  2 07:36 /usr/DESTDIR/mpc860/20020731/usr/lib/libc.so.12.85
-r--r--r--  1 root  wheel   863477 Aug  2 07:33 /usr/DESTDIR/mpc860/20020731/usr/lib/libc.so.12.85.org
tokuda@r1{115}> ls -l /usr/DESTDIR/mpc860/20020731/usr/bin/cmp*
-r-xr-xr-x  1 root  wheel  12343 Aug  2 07:35 /usr/DESTDIR/mpc860/20020731/usr/bin/cmp*
-r-xr-xr-x  1 root  wheel   9624 Aug  2 07:33 /usr/DESTDIR/mpc860/20020731/usr/bin/cmp.org*
tokuda@r1{116}> 

ブートしてみるとやっぱりSegmentation fault。

coreの様子はこんな感じ。

tokuda@r1{107}> ls -l
total 1072
-rw-------  1 root  wheel   69632 Aug  2 11:00 cmp.core
-rw-------  1 root  wheel   94208 Aug  2 11:00 cron.core
-rw-------  1 root  wheel   69632 Aug  2 11:00 dev_mkdb.core
-rw-------  1 root  wheel   86016 Aug  2 11:00 getty.core
-rw-------  1 root  wheel   90112 Aug  2 11:00 grep.core
-rw-------  1 root  wheel   94208 Aug  2 11:00 inetd.core
-rw-------  1 root  wheel   86016 Aug  2 11:00 install.core
-rw-------  1 root  wheel   77824 Aug  2 11:00 kvm_mkdb.core
-rw-------  1 root  wheel  159744 Aug  2 11:00 quotacheck.core
-rw-------  1 root  wheel   73728 Aug  2 11:00 quotaon.core
-rw-------  1 root  wheel   94208 Aug  2 11:00 sed.core
-rw-------  1 root  wheel   90112 Aug  2 11:00 syslogd.core
tokuda@r1{108}> 

libc.so.12.85, cmpが元のやつは次のとおり。

tokuda@r1{110}> ls -l
total 1076
-rw-------  1 root  wheel   73728 Aug  2 11:04 cmp.org.core
-rw-------  1 root  wheel   94208 Aug  2 11:04 cron.core
-rw-------  1 root  wheel   69632 Aug  2 11:04 dev_mkdb.core
-rw-------  1 root  wheel   86016 Aug  2 11:04 getty.core
-rw-------  1 root  wheel   90112 Aug  2 11:04 grep.core
-rw-------  1 root  wheel   94208 Aug  2 11:04 inetd.core
-rw-------  1 root  wheel   86016 Aug  2 11:04 install.core
-rw-------  1 root  wheel   77824 Aug  2 11:04 kvm_mkdb.core
-rw-------  1 root  wheel  159744 Aug  2 11:04 quotacheck.core
-rw-------  1 root  wheel   73728 Aug  2 11:04 quotaon.core
-rw-------  1 root  wheel   94208 Aug  2 11:04 sed.core
-rw-------  1 root  wheel   90112 Aug  2 11:04 syslogd.core
tokuda@r1{111}>

cmpに関してはcoreのサイズが違う。

藤原さんも同様のSegmentation faultが出ているらしい。 coreのサイズを比べると同じものもあるし、そうでないものもある。なぜだろう?

あとはコンパイラのバージョンとか最適化の関係などだろうか。 powerpc用のgcc-3を作るというのは大変かなぁ。

ここまでが2002-08-01の結果。

ここからが2002-08-02の結果。

つばいさんから再び情報が。kernelとld.elf_soを試してみてね、 というメールを頂く。

kernel, libc.so, ld.elf_soのパターンの組合せを何通りか試してみた。 全部試そうかと思ったんだけど、なんとなく傾向がつかめたので。

番号 kernel libc.so ld.elf_so 結果
0 オリジナル オリジナル オリジナル Segmentation fault嵐
1 椿井版 オリジナル オリジナル Segmentation fault嵐
2 オリジナル 椿井版 オリジナル Segmentation fault嵐
3 オリジナル オリジナル 椿井版 大成功 (Segmentation faultなし)
4 椿井版 オリジナル 椿井版 大成功 (Segmentation faultなし)
5 椿井版 椿井版 椿井版 大成功 (Segmentation faultなし)

この結果からld.elf_soが重要ということに思える。

では、なぜld.elf_soがうまく作れないのかという原因がわかれば良いのかな。 ld.elf_soってなにするもの?

boot時のメッセージ。

>> OpenBlockS Boot, Revision 1.1
>> (root@ppr.home.tokuda.net, Sat Apr 20 11:00:28 JST 2002)
Using IP address: 192.168.100.60
root addr=192.168.100.36 path=/usr/DESTDIR/mpc860/20020731
1124536+135144 [89+68864+53981]=0x151b18
 start=0x10000
ssym = 1438a0, esym = 16a000
[ using 157536 bytes of netbsd ELF symbol table ]
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 1.6D (MPC860) #0: Fri Aug  2 04:11:31 JST 2002
    tsubai@erika:/a/0720/src/sys/arch/mpc860/compile/MPC860
total memory = 16384 KB
avail memory = 13552 KB
using 230 buffers containing 920 KB of memory
mainbus0 (root)
cpu0 at mainbus0: 860 (Revision 0)
pbus0 at mainbus0
scc0 at pbus0: vec 9 (console)
fec0 at pbus0: vec 7 address 00:80:6d:47:29:d5
tqphy0 at fec0 phy 1: 78Q2120 10/100 media interface, rev. 11
tqphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
sce0 at pbus0: vec 9 address 00:80:6d:47:29:d6
wdc0 at pbus0: vec 8
wd0 at wdc0 channel 0 drive 0: 
wd0: drive supports 16-sector PIO transfers, LBA addressing
wd0: 777 MB, 1580 cyl, 16 head, 63 sec, 512 bytes/sect x 1592728 sectors
wd0: drive supports PIO mode 4, DMA mode 2
boot device: fec0
root on fec0
nfs_boot: trying DHCP/BOOTP
nfs_boot: BOOTP next-server: 192.168.100.36
nfs_boot: my_name=obs.home.tokuda.net
nfs_boot: my_addr=192.168.100.60
nfs_boot: my_mask=255.255.255.0
root on r1:/usr/DESTDIR/mpc860/20020731
root file system type: nfs
Fri Aug  2 18:02:46 UTC 2002
Starting file system checks:
mount: /: unknown special file or file system.
Setting tty flags.
ttyflags: open /dev/ttyE0: No such file or directory
Setting sysctl variables:
Starting network.
Hostname: obs.home.tokuda.net
Configuring network interfaces: fec0.
add net default: gateway 192.168.100.1
Adding interface aliases:
Building databases...
kvm_mkdb: machdep.booted_kernel: the value is not available: No such
file or directory
Starting syslogd.
Checking for core dump...
savecore: no core dump (no dumpdev)
Mounting all filesystems...
Clearing /tmp.
Checking quotas: done.
Setting securelevel: kern.securelevel: 0 -> 1
/etc/rc: WARNING: No swap space configured!
Starting virecover.
starting local daemons:.
Updating motd.
Starting inetd.
Starting cron.
Fri Aug  2 18:03:20 UTC 2002
Aug  2 18:03:23 obs getty[164]: /dev/ttyE0: No such file or directory

NetBSD/mpc860 (obs.home.tokuda.net) (tty00)

login: 

ここまでが2002-08-02の結果。

ここからが2002-08-03の結果。

ld.elf_soについて椿井さんからメールを頂く。dynamic link なファイルを実行するために必須なものなんだそう。 dynamic linkなファイルを実行する前にはかならずld.elf_soと 実行されるファイルがメモリにロードされ、ld.elf_soが実行され、 必要な仕事をしてから本来の実行ファイルを実行するそうです。

詳しくは、man ld.elf_soする、と言っても英語です...

で、根源的な問題としてld.elf_soが変なのはなぜかという話。 関係ないだろうけどgccのオプションが違うんじゃないかということで、 椿井さんの-fpic -Oというオプションを真似てみようかと思う。

自分で実行したbuild.shのlogを見ると、 たしかにld.elf_soのコンパイル時には-O2オプションとなっている。

dependall ===> libexec/ld.elf_so
CC=/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc /usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/nbmkdep -a  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -traditional-cpp /usr/20020720/src/libexec/ld.elf_so/arch/powerpc/rtld_start.S
CC=/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc /usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/nbmkdep -a  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  /usr/20020720/src/libexec/ld.elf_so/arch/powerpc/ppc_reloc.c /usr/20020720/src/libexec/ld.elf_so/rtld.c /usr/20020720/src/libexec/ld.elf_so/reloc.c /usr/20020720/src/libexec/ld.elf_so/symbol.c /usr/20020720/src/libexec/ld.elf_so/malloc.c /usr/20020720/src/libexec/ld.elf_so/xmalloc.c /usr/20020720/src/libexec/ld.elf_so/xprintf.c /usr/20020720/src/libexec/ld.elf_so/debug.c /usr/20020720/src/libexec/ld.elf_so/map_object.c /usr/20020720/src/libexec/ld.elf_so/load.c /usr/20020720/src/libexec/ld.elf_so/search.c /usr/20020720/src/libexec/ld.elf_so/headers.c /usr/20020720/src/libexec/ld.elf_so/paths.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc   -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c -traditional-cpp /usr/20020720/src/libexec/ld.elf_so/arch/powerpc/rtld_start.S
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/arch/powerpc/ppc_reloc.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/rtld.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/reloc.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/symbol.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/malloc.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/xmalloc.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/xprintf.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/debug.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/map_object.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/load.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/search.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/headers.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O2  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/paths.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-ld  -Bshareable -Bsymbolic -e .rtld_start --script /usr/20020720/src/libexec/ld.elf_so/arch/powerpc/ld.so.script -o ld.elf_so rtld_start.o ppc_reloc.o rtld.o reloc.o symbol.o malloc.o xmalloc.o xprintf.o debug.o map_object.o load.o search.o headers.o paths.o -L/usr/20020720/src/lib/libc/obj -L/usr/DESTDIR/mpc860/20020731/usr/lib -non_shared -lc_pic
PATH=/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/lib/groff:${PATH} /usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/nbgroff -Tascii -mtty-char -mandoc /usr/20020720/src/libexec/ld.elf_so/ld.elf_so.1  > ld.elf_so.cat1.tmp && mv ld.elf_so.cat1.tmp ld.elf_so.cat1

で、-O2を-Oにするにはlibexec/ld.elf_so/Makefile, share/mk/sys.mk をみるとDBGというのが-O2と記述しているようなので、 libexec/ld.elf_so/Makefileをいじる。

--- ./libexec/ld.elf_so/Makefile.org	Sun Aug  4 21:55:56 2002
+++ ./libexec/ld.elf_so/Makefile	Sun Aug  4 21:56:08 2002
@@ -40,7 +40,7 @@
 CPPFLAGS+= -D_RTLD_SOURCE
 #CPPFLAGS+= -DRTLD_DEBUG
 #CPPFLAGS+= -DRTLD_DEBUG_RELOC
-#DBG=	-g
+DBG=	-O
 
 .if ${SHLIBDIR} != ${LIBDIR}
 CPPFLAGS+= -DRTLD_DEFAULT_LIBRARY_PATH=\"${SHLIBDIR}:${LIBDIR}\"

実行すると確かに-Oになってcompileされている模様。 -fpicは最初からついていたのでとくに指定はしなかった。

r1# cd /usr/20020720/src/libexec/ld.elf_so/
r1# ls obj
.depend         ld.elf_so.cat1  map_object.o    rtld.o          xmalloc.o
debug.o         ld.elf_so.org   paths.o         rtld_start.o    xprintf.o
headers.o       load.o          ppc_reloc.o     search.o
ld.elf_so       malloc.o        reloc.o         symbol.o
r1# mv obj/ld.elf_so ld.elf_so.org
r1# /usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/nbmake-mpc860 clean
rm -f rtld_start.o ppc_reloc.o rtld.o reloc.o symbol.o malloc.o xmalloc.o xprintf.o debug.o map_object.o load.o search.o headers.o paths.o  ppc_reloc.ln rtld.ln reloc.ln symbol.ln malloc.ln xmalloc.ln xprintf.ln debug.ln map_object.ln load.ln search.ln headers.ln paths.ln
rm -f a.out [Ee]rrs mklog core *.core ld.elf_so
r1# /usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/nbmake-mpc860
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc   -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c -traditional-cpp /usr/20020720/src/libexec/ld.elf_so/arch/powerpc/rtld_start.S
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/arch/powerpc/ppc_reloc.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/rtld.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/reloc.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/symbol.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/malloc.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/xmalloc.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/xprintf.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/debug.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/map_object.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/load.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/search.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/headers.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-gcc -O  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized  -Werror  -fpic -msoft-float -DELFSIZE=32 -DVARPSZ -I/usr/20020720/src/libexec/ld.elf_so -DLIBDIR=\"/usr/lib\" -D_PATH_RTLD=\"/usr/libexec/ld.elf_so\" -I/usr/20020720/src/libexec/ld.elf_so -DDEBUG -DRTLD_LOADER -D_RTLD_SOURCE -nostdinc -isystem /usr/DESTDIR/mpc860/20020731/usr/include  -c /usr/20020720/src/libexec/ld.elf_so/paths.c
/usr/20020720/src/tools/obj/tools.NetBSD-1.6D-i386/bin/powerpc--netbsd-ld  -Bshareable -Bsymbolic -e .rtld_start --script /usr/20020720/src/libexec/ld.elf_so/arch/powerpc/ld.so.script -o ld.elf_so rtld_start.o ppc_reloc.o rtld.o reloc.o symbol.o malloc.o xmalloc.o xprintf.o debug.o map_object.o load.o search.o headers.o paths.o -L/usr/20020720/src/lib/libc/obj -L/usr/DESTDIR/mpc860/20020731/usr/lib -non_shared -lc_pic
r1# ls -l obj/ld.elf_so*
-rwxr-xr-x  1 root  wheel  63180 Aug  5 00:56 obj/ld.elf_so
-rw-r--r--  1 root  wheel   6829 Aug  1 01:02 obj/ld.elf_so.cat1
-rwxr-xr-x  1 root  wheel  63057 Aug  1 01:02 obj/ld.elf_so.org
r1# 

たしかにサイズの違うbinaryが生成されている。 このファイルをlibexecにcopyする。

このld.elf_soで動かしてみるが、Segmentation fault嵐。 椿井さんのkernelでもオリジナルのkernelでもSegmentation fault。 うーん、どうやったら動くld.elf_soが作れるんだー。


HOME/ NetBSD/ OpenBlockS/ NetBSD/openblocks build.sh 020720

$Lastupdate: Mon Aug 5 10:53:00 2002 $