Last modified: Jan 09 04:28 JST 2003

自作のプログラムとか - パッチ篇

他の方が作られたプログラム・ソフトウェアに対するパッチです。 ここにあるパッチはすべて非公式ですので、自己責任でご使用ください。 元となっている素晴らしいソフトウェアを開発・公開されている 開発者の皆様に感謝。

WindowMaker 0.61.1 で 8方向移動 (Feb 20, 2000 / 493 bytes)
WindowMaker でキーボードを使ってアクティブウィンドウを移動するとき、 カーソルキーの他に hjkl キーが使えますが、これに加えて yubn キーで斜め方向の移動もできるようにするパッチです (そういうゲームに慣れた人用)。 また移動の決定もスペースキーでも出来るようになります。
  • WindowMaker 0.62.1 では patch コマンドがオフセットを報告しますが一応使えるようです。
  • WindowMaker 0.63.1〜0.80.0 にはそのままでは当たりませんが patch に -l (--ignore-whitespace) オプションをつけると一応使えるようです (なんていい加減な)。
Linux modutils で gzip されたモジュールを自動展開する (Jan 15, 2002 / 5364 bytes)
そのまんまです。 gzip -9r /lib/modules/x.y.z/kernel とかやっておいても、 modprobe が透過的に圧縮されたモジュールを展開して読み込むようにします (もちろん insmod hoge.o.gz もできます)。 … という機能自体は、実は modutils 2.3.12 から既に組み込まれている (ただしコンパイルオプションになっていて、既定値ではコンパイルされません) のですが、そっちは zlib を使って展開するようになっているのに対して このパッチでは外部プログラム (gzip) を使っています。 ルートパーティションに libz.so.* を置きたくない (*) という貧乏症(?) の人やシステムユーティリティにいろんなライブラリを組み込むのはどうも、という心配症の人向けです ;-)
(*)
ルートパーティションに gzip を置くのは FHS でも要求されているので問題はないでしょう。たぶん。
使用上の注意
  • コンパイルするには Autoconf が必要です。このパッチをあてたら、まず autoconf を実行して configure を再生成してください。
  • パッチは modutils 2.4.12 用になっていますが、 (例によって) 2.4.15 でも patch コマンドがオフセットを報告するものの一応使えるようです。
  • /lib/modules/x.y.z/kernel の下のモジュールを圧縮したときは、 depmod -a を実行してください。 これを忘れるとモジュールの自動ロードができなくなります。
  • pcmcia-cs を使っている場合は /lib/modules/x.y.z/pcmcia にあるシンボリックリンクを張り直し、また /etc/rc.d/init.d/pcmcia などを修正する必要があるかも知れません。
  • 圧縮ファイルの展開時には /tmp (または環境変数 TMPDIR で指定されたディレクトリ) に一時ファイルを作ります。ブート初期の rc スクリプトなどで用いる場合は特に注意してください。
Xvnc & Xsun 共存パッチ (Jun 03, 2002 / 1775 bytes)
SunOS 5.x (Solaris 2.x, 7, 8, 9) で VNC の X サーバ (Xvnc) と標準の X サーバ (/usr/openwin/bin/Xsun) を併用しようとすると、「Xsun がいったん立ち上がってしまうと 多くのユーザは Xvnc を起動できなくなる」(*) という現象が 起こります。このパッチは Xvnc の動作を Xsun の 動作に合わせることによってこの状況を回避します。 UNIX 版 VNC のソースパッケージに含まれている Xvnc の ソースツリーにこのパッチを当ててコンパイルした後、 できた Xvnc所属グループ root で set-gid にしてインストールしてください。
GNU Emacs 21.2 の複数デプス対応パッチ (Aug 04, 2002 / 1679 bytes)
Sun の FFB グラフィックアクセラレータ (Ultra-2 の Creator など) では、デフォルトの 8ビットデプスと同時に24ビットデプスのプレーンが利用できます。 一方、 GNU Emacs の X ウィンドウシステム対応コードには少し問題があって、 複数のデプスを持つデバイスでもデフォルトのデプスしか使えません (デフォルト以外のデプスを指定すると起動時に Segmentation fault や X のプロトコルエラーなどで落ちてしまいます)。 この問題を解決するためのパッチです。これで Emacs を24ビットカラーモードで使うことができ、カラーフラッシュの起きない快適な Emacs ライフを楽しめます。 :-)

binutils 編

GNU binutils に対するパッチです。なぜかいろいろ変なことを思いつきます。 :-)

GNU assember のソース行番号制御を修正する (Mar 24, 2001 / 442 bytes)
GNU assembler (gas) では多くの C コンパイラと同じように 「# 123 "hoge.S"」のようなディレクティブによる 論理ソースファイル名・行番号の制御ができることになっていますが、 i386 など特定のコンフィギュレーションではこの機能が動作しません (アセンブラのエラーなどが一時ファイルや標準入力について報告されてしまう)。 これを修正するパッチです。 Cプリプロセッサを併用してアセンブラでプログラムするときに便利です。
  • gas のマニュアルでは、この機能自体は deprecated とされています (私には便利なのですが…)。
  • パッチは binutils 2.11.90.0.1 の gas に対するものですが、 変更点は2箇所 (3行追加するだけ) なので、他のバージョンにも 簡単に使えると思います (相変らずいい加減だ)。
  • C のインラインアセンブラには効果はありません、念のため。
binutils 2.12.1 省スペース化パッチ (Jun 09, 2002 / 13375 bytes)
GNU Binutilsarranlibobjcopystrip をそれぞれ一つの実行ファイルにまとめるパッチです。 これは現在の Binutils のリリースでは「封じ」られていますが、 もともと Binutils に含まれている機能です。 このパッチはそれを復活しているだけです。パッチを当てたら ./configure--enable-single-binary オプションをつけてコンパイルしてください。 数10KB (以上) のディスク容量が節約できます :-)
Verilog HEX形式対応パッチ (Jun 18, 2002 / 10214 bytes)
Cadence Design Systems 社の論理シミュレータ「Verilog-XL」の $readmemh システムタスクで読み込むことができる16進テキスト形式のファイルを 読み書きする機能を BFD ライブラリ (binutils などで使われているバイナリファイルを読み書きするためのライブラリ) に追加します。 BFD ターゲット名は vhex (= Verilog Hex) なので、例えば
objcopy -O vhex file.bin file.hex
とすれば入力ファイル file.bin (実行可能ファイルなど) から Verilog-XL で読める16進ファイル file.hex を生成できます。 なおこのターゲットでは1ワードは 8 ビットになります。 16/32/64ビットワード構成を使う機能、また逆に16進ファイルを読む機能の ためのコードも一応入れていますが、あまり真面目にテストしていないので 特に注意してください。

雑多なパッチ

GNU tar に librt を使わせないパッチ (Dec 30, 2002 / 1528 bytes)
バージョン 1.13.12 以降の GNU tar では高精度の時間を得るために clock_gettime 関数を使おうとします。この関数が libc に含まれていないシステム (glibc ベースのシステムや Solaris など) では librtlibposix4 を探して見つかればそれを用いるようですが、 たかだか転送レートの算出のためだけ (1.13.25 現在) に余計な共有ライブラリに依存するのはあまり好ましくありません (と思う)。 そこでこれらの外部ライブラリを探さないようにするパッチです。

KMC のトップページ / 1つ上のディレクトリのインデックス / このディレクトリのインデックス
tak@kmc.gr.jp