[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: xinit: Exec format error. Binary file not executable.
現実逃避しまくり (pmap.c の実装はほとんど終ってるのに…) の電通大の齊藤です。
kernel では sprintf しかなくて恐かったので snprintf を作ったのですが
(「全て」を snprintf 化するつもりは僕にはありません)、この時に気がついた
のが kern/subr_prf.c::kprintf() の
> rflag: ch = *fmt++;
> reswitch: switch (ch) {
> /* XXX: non-standard '%:' format */
> #ifndef __powerpc__
> case ':':
> if (oflags != TOBUFONLY) {
> cp = va_arg(ap, char *);
> kprintf(cp, oflags, vp,
> NULL, va_arg(ap, va_list));
> }
> continue; /* no output */
> #endif
> /* XXX: non-standard '%b' format */
> case 'b': {
> char *b, *z;
> int tmp;
これってなぜですか? (素人さんモード)
最近 kern/ とか vm/ の下とか見ることが多いんですけど、
#if でアーキテクチャの区別をしてる部分って結構あるんですね。
ところで
> あとはさいとうさんの教えにしたがって
> % ktrace xinit
> :
> % kdump ktrace.out
> してみるとなにかわかるかも。
僕は、BSD 系に商用ソフトウェアが出ないのは ktrace されたら
いろんなことがすぐわかってしまうからとか本気で思ってました…。
ちなみに、以前某人から ssh を ktrace -i する話を聞いた時に
大ショックを受けました (tcpdump -x と相互に補完できてしまう
のが恐過ぎ)。
----------------------------------------------------------
SAITOH Masanobu (msaitoh@spa.is.uec.ac.jp,
msaitoh@netbsd.org)
University of Electro-Communications
ktrace(1) 普及促進委員会会員