[Uclinux-h8-devel] Re: PIC support

Back to archive index

Yoshinori Sato ysato****@users*****
2004年 2月 9日 (月) 23:28:16 JST


At Sun, 08 Feb 2004 14:09:52 -0500 (EST),
Kazu Hirata wrote:
> 
> 佐藤様、
> 
> > どちらも正常に動作しました。
> > 2の方はnopic用の再配置処理でロード時にアドレス計算していますが、m68kも
> > 同じ仕様なのでこれで問題ないと思います。
> 
> ありがとうございます。追加といってはなんですが、linker relaxation はま
> ともに動きますでしょうか?
> 
>   mov.l @(something @ GOTOFF,er5),erX
> 
> という命令で R_H8_GOT32O を使いまくっていると executable が巨大化して
> しまうので、GOT offset の値が小ければ R_H8_GOT16O に relax して、一命
> 令につき 4 byte 節約する仕組みになっております。こちらで単体試験の際は、
> 問題ありませんでしたが、elf2flt との組合せでうまく動作するか心配です。

今のelf2fltではreloc形式しか受け付けないので、とりあえず問題はありません。
これはこれで困った仕様なのですが…

> > これとは関係ありませんが、gasでR_H8_DIR32が出力されるはずなのに、R_H8_GOT32O
> > が出力されてしまう事があるようです。
> > こののパッチで直りましたが、別の原因があるかもしれません。
> 
> どういった source で起るか教えていただけますでしょうか? PIC の中では 
> R_H8_DIR32 は大域変数の静的な初期化以外はほとんど(全く?)出番がないと思
> うのですが。
> 

あ、picを使わない時です。
mov.l #symbol,erNのsymbolがR_H8_DIR32ではなくR_H8_GOT32Oになります。
ひっかかったのはuClinux-2.4.x/arch/h8300/kernel/syscall.Sです。
困った事に環境を変えると正常に動いてしまうので、どこでも再現できるかどうか
わかりません。

-- 
Yoshinori Sato
<ysato****@users*****>



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