[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[pbsd-mg2] Re: cross compiler



鈴木(康)です。
<199907120951.SAA12040@shin1.sm.sony.co.jp>の記事において
takemura@sm.sony.co.jpさんは書きました。

  | 
  |  >  | > ちなみに バイナリキット=NetBSD-1.3 のは、 
  |  >  | > gcc version 2.7.2.1
  |  >  | > です。
  |  > 
  |  >  鈴木さんのクロスコンパイラでコンパイルし終わってから
  |  > bcu_vrip.o	pcic_vrgiu.o	vr.o		vrgiu_vrip.o	vrkiu.o
  |  > com_vrip.o	rtc_vrip.o	vrgiu.o		vrip.o
  |  > だけを素のGNUのbinutils-2.9.1.0.19.tar.gzとegcs-1.1.2.tar.gzから
  | 中略
  |  > で作ったコンパイラとリンカでリコンパイルしてみたところ、
  | pcic0 at vrgiu0でブートしました。(dmesgは下のです)
  | 
  | この話を聞くと、compiler の問題というよりは、
  | vrxxx.c のソースに問題があって、私の環境ではたまたま不具合が
  | 表面化しないだけ、という可能性の方が高いようですね。
  | (よくある変数の初期化わすれなど)

telnet が core dump する件があるので、コンパイラ自体の疑いも
拭え切れていません。

また、たけむらさんの修正で、以前からあったバグが表面化したという可能性
もあると思います。


  | ホントに申し訳ないのですが、もし可能ならば、もう少し調べてみては
  | いただけないでしょうか。> 鈴木さんか内山さん

CS12 ではまだ動いていないので、調べたいとは思いますが、
どうすれば良いのでしょうか?

上と同じように、gcc と egcs を混ぜて、絞りこんでみましょうか。
( そもそも同じようになるとは限りませんが。)
# MGII は、17 日に 修理に出そうと思っています。

あと、たけむらさんの環境は、NetBSD-1.3 ですよね。
FreeBSD エミュレータを使えば、バイナリ開発環境を使ってみることができる
と思います。

ちなみに、必要な ランタイムライブラリは、2.2.8 の libc.so.3.1 だけです。
必要なら、それも置いておきますが。

ところで、ちょっと気になっている点が一つあります。

ddb で表示されるときに、main (だけ?) シンボルが表示されますが、
これは、シンボルが中途半端に見えているのでしょうか?

machdep.c を見ると

if (((struct exec *)edata)->a_midmag == 0x07018b00 &&
edata からシンボルテーブルが始まっているように見えますが、

nm で見ると edata は ページ境界にありませんし、
直後から、.bss が始まっているように見えます。

もし、ページ単位でロードすると一部のシンボルが見えるかも知れません。
でも、見えない部分を扱うとき変なことが起きませんでしょうか?

また、ファイル上は、.mdebug が続いています。

というわけで、.mdebug の分サイズだけ、多めにロードするのが正解では
ないでしょうか?

nm の結果
80134ea0 A edata 

objdump の結果
  5 .sbss         00000000  80134ea0  80134ea0  00108ea0  2**0
                  ALLOC
  6 .bss          0001e140  80134ea0  80134ea0  00108ea0  2**4
                  ALLOC
  7 .mdebug       00062110  80152fe0  80152fe0  00108ea0  2**2
                  CONTENTS, READONLY, DEBUGGING

--
					鈴木 康司 @NEC
					suz@hpc.bs1.fc.nec.co.jp
					TEL 0423-33-5381