From: SAITOU Toshihide 
<[&#x30E1;&#x30FC;&#x30EB;&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x4FDD;&#x8B77;]>
 Date: Tue, 18 Mar 2008 21:46:27 +0900

:> FreeBSD 6-STABLE から FreeBSD 7.0-RELEASE にソース・アップデー
:> トしたら翻訳魂というプログラムが動かなくなったようです.

私も古いプログラム (a.outバイナリでファイルのタイムスタンプは 1997 年…)
が FreeBSD 7 では動かなかったのですが解決策はありました。

FreeBSD6→FreeBSD7 ではカーネルコンフィグレーションファイルにおける
COMPAT_43 オプションが COMPAT_43 と COMPAT_43TTY に分かれた(?)ようです
ね。ソースや議論は追い掛けていないので詳細は事情を知っている方に教えて
頂きたいですが。。

GENERIC カーネルには COMPAT_43TTY しか入っていないので COMPAT_43 機能が
必要な古いバイナリを動かすには COMPAT_43 を追加したカーネルを作らない
といけないのでしょう。

# /sys/conf/NOTES
options COMPAT_43
options COMPAT_43TTY

# /sys/i386/conf/GENERIC
options COMPAT_43TTY # BSD 4.3 TTY compat [KEEP THIS!]


FreeBSD6 で動いていて FreeBSD7 で駄目、compat.sigactionで Function not
implementedというのは私の場合と同様なので試してみる価値はあるのでは。

:> # /usr/local/honyaku/bin/honyakuserver
:> Bad system call: 12 (core dumped)
:> 
:> # truss /usr/local/honyaku/bin/honyakuserver
:> socket(PF_INET,SOCK_STREAM,0)                    = 3 (0x3)
:> setsockopt(0x3,0xffff,0x4,0xbfbfed24,0x4,0xbfbfed94) = 0 (0x0)
:> bind(3,{ AF_INET 0.0.0.0:2744 },16)              = 0 (0x0)
:> listen(0x3,0x5,0xbfbfed94,0x1,0xbfbfed8c,0x0)    = 0 (0x0)
:> compat.sigaction(0x2,0xbfbfdee4,0xbfbfded8,0x0,0x0,0x0) ERR#78 'Function not 
implemented'
:> SIGNAL 12 (SIGSYS)
:> 
:> # ldd /usr/local/honyaku/bin/honyakuserver 
:> ldd: /usr/local/honyaku/bin/honyakuserver: not a dynamic executable
:> 
:> これには何か対処法はあるでしょうか?
:> 
:> もういっそ逆変換で辞書引き(英和・和英)できる Wnn9 とかだし
:> てくれないかなぁ.
:> 
:> 齊藤@湖西市
:> # それから黒箱(ARM, PowerPC)に FreeBSD はインストールできないですかね?

こっちは分かりません

# ちなみに古いa.outバイナリを動かすには COMPAT_AOUT オプション付の
# カーネルを作り、かつ共有ライブラリを使っていたら a.out用の
# libc.so.*.* 等をどこかから引っ張り出して /usr/lib/compat/aout/ に置
# いておく…などの作業が必要です。

日野

メールによる返信