MS-DOSでファイルのtruncateを行うときは、writeファンクションコール (AHレジスタ=0x40,INT21)でサイズ(CXレジスタ)に0を指定するそうですが、 FreeBSD 3.x以降に含まれるdoscmdでは、サイズ0を指定してもtruncateされません。
そのため、実行するコマンドによっては、ファイルの最後にゴミが残ってしまいます。 例えばLSI-C試食版に含まれるアセンブラr86は、場合によっては不正な オブジェクトファイルを出力します (LSI-C for WonderWitchに含まれるr86が不正なオブジェクトを出力するのも、 おそらく同じ原因だと思われます)。
この問題に対するパッチです。FreeBSD3.2Rおよび3.5Rで動作を確認しております。 なお、このパッチの前に、ここにある 坂内様のパッチ も当てておいたほうがいいでしょう。
FreeBSD 4.x用のパッチを、安福健太様から頂きました。 上で示した坂内様のパッチも含んでいます。