HOME/ NetBSD/ OpenBlockS/ NetBSD/openblocks build.sh 020720
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が作れるんだー。
$Lastupdate: Mon Aug 5 10:53:00 2002 $