When running xorg-server, I'm
getting Unsupported relocation type 6 in non-PLT relocations.
I have checked with objdump -R, and it seems to me
xc/programs/Xserver/fb/fbcompose.c
is the one causing this problem. The way I have reached this code was:
- looking the address of problems
ttyp6:makoto@mini 16:54:36/070408(...x11/xorg-server)> \
objdump -R work.mini/xc/programs/Xserver/fb/libfb.so | grep ADDR16
00031542 R_PPC_ADDR16_HA .rodata+0x00031f88
0003154a R_PPC_ADDR16_LO .rodata+0x00031f88
00031592 R_PPC_ADDR16_HA .rodata+0x00031f90
00031596 R_PPC_ADDR16_HA .rodata+0x00031f94
0003159a R_PPC_ADDR16_LO .rodata+0x00031f90
0003159e R_PPC_ADDR16_LO .rodata+0x00031f94
000315ce R_PPC_ADDR16_HA .rodata+0x00031f9c
000315d2 R_PPC_ADDR16_LO .rodata+0x00031f94
000315da R_PPC_ADDR16_HA .rodata+0x00031f98
000315e2 R_PPC_ADDR16_LO .rodata+0x00031f98
000315f2 R_PPC_ADDR16_LO .rodata+0x00031f9c
- looking the code by disassembling:
objdump -d work.mini/xc/programs/Xserver/fb/libfb.so
00031540 <__fixdfdi>:
31540: 3d 20 00 00 lis r9,0
31544: 7c 08 02 a6 mflr r0
31548: c8 09 00 00 lfd f0,0(r9)
3154c: 94 21 ff f0 stwu r1,-16(r1)
31550: ff 81 00 00 fcmpu cr7,f1,f0
31554: 90 01 00 14 stw r0,20(r1)
31558: 41 9c 00 18 blt- cr7,31570 <__fixdfdi+0x30>
<__fixdfdi> ..
__fixdfdi is defined in
lib/libc/quad/fixdfdi.c.
The problem is not in this function but how to reach this address ?
No, this function is compiled in libfb.so.
nm work.mini/xc/programs/Xserver/fb/libfb.so |grep fixdf
00031540 T __fixdfdi
The Mechanism to include 'T __fixdfdi' is this:
- compile fbcompose.c getting fbcompose.o
- this function include the reference to 'U __fixdfdi'
ttyp3:makoto@bologna 7:58:50/070409(...Xserver/fb)> nm fbcompose.o |grep fixdf
U __fixdfdi
- following cc resolves the above undefined reference.
cc -o libfb.so -shared -Wl,-rpath,/usr/pkg/xorg/lib -nostdlib
fbmodule.o fbarc.o fballpriv.o fbbits.o fbblt.o fbbltone.o
fbbstore.o fbcmap.o fbcompose.o fbcopy.o fbedge.o fbfill.o
fbfillrect.o fbfillsp.o fbgc.o fbgetsp.o fbglyph.o fbimage.o
fbline.o fboverlay.o fbpixmap.o fbpoint.o fbpush.o fbscreen.o
fbseg.o fbsetsp.o fbsolid.o fbstipple.o fbtile.o fbtrap.o
fbutil.o fbwindow.o fb24_32.o fbpict.o fbmmx.o fbpseudocolor.o
-Wl,-Bstatic
-lgcc -Wl,-Bdynamic
removing '-lgcc -Wl,-Bdynamic' from Makefile
resolves this problem.
@
then xorg.conf:
(II) XINPUT: Adding extended input device "Keyboard1" (type: KEYBOARD)
Fatal server error:
can't switch keyboard to raw mode. Enable support for it in the kernel
or use for example:
Option "Protocol" "wskbd"
Option "Device" "/dev/wskbd0"
related kernel configurations
options OFB_FAKE_VGA_FB
options RADEONFB_MMAP_BARS
options OFB_FAKE_VGA_FB