Yoshinori Sato
ysato****@users*****
2004年 2月 10日 (火) 20:55:12 JST
At Mon, 09 Feb 2004 11:04:58 -0500 (EST), Kazu Hirata wrote: > > 佐藤様、 > > > 今のelf2fltではreloc形式しか受け付けないので、とりあえず問題はありません。 > > これはこれで困った仕様なのですが… > > linker relaxation が正常に動くとかいう問題の前に、linker relaxation が > 全く使われないということでしょうか。そういうことでしたら、gas に > @GOTOFF を 16-bit displacement (R_H8_GOT16O) と解釈する option でもつ > けようかと思っておりますが、いかがでしょうか。一回の GOT の参照につき > 4 byte の差というのは大きい気がするのですが。 そうです。全く使われません。 ldに-relaxを指定してもwrapper scriptの方で無効にされます。 という状況なので、gas側で処理してしまうのはかなり有効だと思います。 これを根本的に解決するにはldから再配置情報を取り出す必要があります。 > > あ、picを使わない時です。 > > mov.l #symbol,erNのsymbolがR_H8_DIR32ではなくR_H8_GOT32Oになります。 > > ひっかかったのはuClinux-2.4.x/arch/h8300/kernel/syscall.Sです。 > > 困った事に環境を変えると正常に動いてしまうので、どこでも再現できるかどうか > > わかりません。 > > やっと原因が分りました。pic_none に早いうちに初期化する patch で大丈夫 > だと思います。 > > ところで、elf2flt の patch は必要ないかもしれません。というのは、 > R_H8_PCREL32 は .text の中の jump table でしか使われないからです。 > elf2flt は PIC の場合は .text を触らないはずですし。 そうですね。とりあえず無効にした状態でいろいろ試してみます。 -- Yoshinori Sato <ysato****@users*****>