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