[Uclinux-h8-devel] Re: PIC support

Back to archive index

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*****>



Uclinux-h8-devel メーリングリストの案内
Back to archive index