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

Unsupported relocation type 6 -> RELOC_NUMBER (R_PPC_ADDR16_HA, 6)



>                                           千葉市中央区長洲
>                                                    藤原 誠
ごぶさたしています。
最近やっと作れた 20070203 を使っています (4.99.9)。
  ftp://ftp.ki.nu/pub/NetBSD/snapshot/20070203ts
   このうち
   netbsd-GENERIC_MD.gz
  は (深海さんに教えてもらって) 一部更に patch を当てて作ったものです。
     http://mail-index.netbsd.org/source-changes/2007/04/02/0013.html
  また gengtype-lex.c がないとか言われたりするので、ln -s で教える
  といった手作業が必要だった気がします。  
  
で、最近 meta-pkg/xorg を使って見ようかと思って make 中です。
作業は次のようなものです
────────────────────────────
1. カーネルを作り直す
  ・/dev/pci? を調達する (つばいさん、ごめんなさい)
  ・options INSECURE を追加   

2. /etc/mk.conf に次の文を書いておく
  X11_TYPE=       xorg
  X11BASE=        /usr/pkg/xorg   # important
  X11ROOT_PREFIX= xorg            # /usr/pkg/${X11ROOT_PREFIX}/bin/imake

3. package を作る ( sudo make package clean )
  /usr/pkgsrc/meta-pkg/xorg
  /usr/pkgsrc/fonts/xorg-font*

4. xorgcfg を使って /etc/X11/xorg.conf を作成する
  (この内容は後で少し変更)

5. env PATH=/usr/pkg/xorg/bin:${PATH} startx 
   で起動する
────────────────────────────
ちなみに機械は Mac mini 初期型です。
これでまずは 
xf86MapVidMem: could not mmap screen [s=80000,a=90000000] (Invalid argument)
と言われるのですが、
  http://mail-index.netbsd.org/port-macppc/2004/03/09/0004.html
を見て、それなりに修正します。
そうすると、今度は機械ごと (OS が) 止ってしまいます。全く無反応です。
それで RADEONGetBIOSInfo は呼ばないようにします。
ここまでの変更点は次の通りです。
  http://www.ki.nu/~makoto/diary/attach/2007/20070408-xorg-server.patch
これでかなり進みます。 /var/log/Xorg.0.log は次のようになります。
  http://www.ki.nu/~makoto/diary/attach/2007/20070407-xorg.0.log

で、前置が長かったのですが、ここからが本題です。次の記録の中に、
次のような部分があります。
---------------------------------------
(II) LoadModule: "fb"
(II) Loading /usr/pkg/xorg/lib/modules/libfb.so
dlopen: /usr/pkg/xorg/lib/modules/libfb.so: Unsupported relocation type 6 in non-PLT relocations

(EE) Failed to load /usr/pkg/xorg/lib/modules/libfb.so
(II) UnloadModule: "fb"
(EE) RADEON: Failed to load module "fb" (loader failed, 7)
---------------------------------------
objdump -R で調べると次のような表示が出ます。
---------------------------------------
ttyp2:makoto@mini 1:31:09/070408(...x11/xorg-server)> \
objdump -R /usr/pkg/xorg/lib/modules/libfb.so | \
cut -d ' ' -f 2 |sort | uniq -c
   6 
   1 RELOCATION
   5 R_PPC_ADDR16_HA
   6 R_PPC_ADDR16_LO
 195 R_PPC_ADDR32
 124 R_PPC_JMP_SLOT
   1 R_PPC_NONE
   2 R_PPC_REL24
 388 R_PPC_RELATIVE
ttyp2:makoto@mini 1:31:18/070408(...x11/xorg-server)> 
---------------------------------------
type 6 in non-PLT relocations とは、
  RELOC_NUMBER (R_PPC_ADDR16_HA,	  6)

のことで、つまり上の一番目の R_PPC_ADDR16_HA は、あってはならな
い、と理解しています。xorg の make の時には -fPIC は付いていて
-fPIE は付いていないと思います。それで、

  http://www.jp.netbsd.org/ja/JP/ml/port-powerpc-ja/200410/msg00014.html
に関連する部分を gcc-4 で調べると、どうも、それは修正済の気がし
ます。
さて、何が悪いのでしょうか ? どうすれば直せるでしょうか ?

  (これって関係あるのでしょうか ? binutils-2.17 を使えばいい ?)
  http://sources.redhat.com/ml/binutils/2005-05/msg00391.html

いつもありがとうございます。
---
(藤原)
────────────────
NetBSD 解説
http://www.ki.nu/software/NetBSD2/index.html