* Unhandled relocation of type 11 @ 2005-04-06 21:18 Joshua Lamorie 2005-04-07 9:19 ` Wolfgang Grandegger 0 siblings, 1 reply; 4+ messages in thread From: Joshua Lamorie @ 2005-04-06 21:18 UTC (permalink / raw) To: linuxppc-embedded; +Cc: rtai Please excuse this cross-post, but I think it is of interest to both RTAI and Linux PPC folks. I am making a kernel module (an RTAI task) that needs floating point support so I'm using IBMs perflib floating-point libraries (on a Virtex-II Pro, aka ppc405). This is actually built from Matlab/simulink real-time workshop output (I can't use rtai-lab because I don't think lxrt is available for ppc)... so there end up being many object files to link. So, in the end I have a linker command as follows. powerpc-405-linux-gnu-ld -r -m elf32ppclinux -L/some/directories matlab_root/rtw/c/libsrc/rt_zcfcn.o other.o inputs.o -o module_output.o perflibs/fpopt/libppcfp.a Then I go to insert the module and.... /var/shm # insmod test001_build_rtmodule.o Warning: loading test001_build_rtmodule.o will taint the kernel: non-GPL license - Proprietary See http://www.tux.org/lkml/#export-tainted for information about tainted modules test001_build_rtmodule.o: Unhandled relocation of type 11 for __fixdfsi test001_build_rtmodule.o: Unhandled relocation of type 11 for __fixdfsi Hrmm... so any ideas on what type 11 is? I can see from the code in modutils that this value is inside rel->r_info, such as R_PPC_ADDR32 or R_PPC_ADDR16_HA. But where do I get more info about where r_info gets assigned? Do I need to link libppcfp.a in a particular way? Any hints would be appreciated. Thanks in advance. Joshua -- Xiphos Technologies (514) 848-9640 x227 (514) 848-9644 fax www.xiplink.com _______________________________________________ The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. If you have received this in error, please contact the sender and delete this communication and any copy immediately. Thank you. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Unhandled relocation of type 11 2005-04-06 21:18 Unhandled relocation of type 11 Joshua Lamorie @ 2005-04-07 9:19 ` Wolfgang Grandegger 2005-04-07 14:20 ` Joshua Lamorie 0 siblings, 1 reply; 4+ messages in thread From: Wolfgang Grandegger @ 2005-04-07 9:19 UTC (permalink / raw) To: Joshua Lamorie; +Cc: rtai, linuxppc-embedded Hello, I'm not a linker expert but some time ago I got the gcc soft floating library working for 8xx and 4xx in kernel space. The problem was with PIC. Maybe your library is built with PIC and it's required without. You may want to have a look to: ftp://ftp.denx.de/pub/RTAI/contrib/fp_ppc_8xx.tar.bz2 Wolfgang. On 04/06/2005 11:18 PM Joshua Lamorie wrote: > Please excuse this cross-post, but I think it is of interest to both > RTAI and Linux PPC folks. > > I am making a kernel module (an RTAI task) that needs floating point > support so I'm using IBMs perflib floating-point libraries (on a > Virtex-II Pro, aka ppc405). > > This is actually built from Matlab/simulink real-time workshop output (I > can't use rtai-lab because I don't think lxrt is available for ppc)... > so there end up being many object files to link. > > So, in the end I have a linker command as follows. > > powerpc-405-linux-gnu-ld -r -m elf32ppclinux -L/some/directories > matlab_root/rtw/c/libsrc/rt_zcfcn.o other.o inputs.o -o module_output.o > perflibs/fpopt/libppcfp.a > > Then I go to insert the module and.... > /var/shm # insmod test001_build_rtmodule.o > Warning: loading test001_build_rtmodule.o will taint the kernel: non-GPL > license - Proprietary > See http://www.tux.org/lkml/#export-tainted for information about > tainted modules > test001_build_rtmodule.o: Unhandled relocation of type 11 for __fixdfsi > test001_build_rtmodule.o: Unhandled relocation of type 11 for __fixdfsi > > Hrmm... so any ideas on what type 11 is? I can see from the code in > modutils that this value is inside rel->r_info, such as R_PPC_ADDR32 or > R_PPC_ADDR16_HA. > > But where do I get more info about where r_info gets assigned? Do I > need to link libppcfp.a in a particular way? > > Any hints would be appreciated. > > Thanks in advance. > > Joshua > ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Unhandled relocation of type 11 2005-04-07 9:19 ` Wolfgang Grandegger @ 2005-04-07 14:20 ` Joshua Lamorie 2005-04-08 14:08 ` Joshua Lamorie 0 siblings, 1 reply; 4+ messages in thread From: Joshua Lamorie @ 2005-04-07 14:20 UTC (permalink / raw) To: Wolfgang Grandegger; +Cc: rtai, linuxppc-embedded Gidday there, Thanks for the hint. However I can't see any reference to -fPIC in the makefiles for ppcperflib. One thing I have discovered though is that type 11 is defined in /usr/include/elf.h as R_PPC_ELF14. This error happens twice, for __fixdfsi, and when I look for references to __fixdfsi, I find that there are two calls to... blt __fixdfsi inside ppc_dtoui.S. Looking at the PPC Ref Guide, I see that blt is a mnemonic for bc (branch conditional) and uses a relative offset of 14 bits. In the same function there is also a use of 'bl' (branch, long I think) calling the same __fixdfsi. So I'm going to add a stupid line of assembly to conditionally jump over the branch to __fixdfsi... I hope that will work, but I haven't touched assembly since an 80286. Joshua Wolfgang Grandegger wrote: >Hello, > >I'm not a linker expert but some time ago I got the gcc soft floating >library working for 8xx and 4xx in kernel space. The problem was with >PIC. Maybe your library is built with PIC and it's required without. You >may want to have a look to: > > ftp://ftp.denx.de/pub/RTAI/contrib/fp_ppc_8xx.tar.bz2 > >Wolfgang. > > >On 04/06/2005 11:18 PM Joshua Lamorie wrote: > > >>Please excuse this cross-post, but I think it is of interest to both >>RTAI and Linux PPC folks. >> >>I am making a kernel module (an RTAI task) that needs floating point >>support so I'm using IBMs perflib floating-point libraries (on a >>Virtex-II Pro, aka ppc405). >> >>This is actually built from Matlab/simulink real-time workshop output (I >>can't use rtai-lab because I don't think lxrt is available for ppc)... >>so there end up being many object files to link. >> >>So, in the end I have a linker command as follows. >> >>powerpc-405-linux-gnu-ld -r -m elf32ppclinux -L/some/directories >>matlab_root/rtw/c/libsrc/rt_zcfcn.o other.o inputs.o -o module_output.o >>perflibs/fpopt/libppcfp.a >> >>Then I go to insert the module and.... >>/var/shm # insmod test001_build_rtmodule.o >>Warning: loading test001_build_rtmodule.o will taint the kernel: non-GPL >>license - Proprietary >> See http://www.tux.org/lkml/#export-tainted for information about >>tainted modules >>test001_build_rtmodule.o: Unhandled relocation of type 11 for __fixdfsi >>test001_build_rtmodule.o: Unhandled relocation of type 11 for __fixdfsi >> >>Hrmm... so any ideas on what type 11 is? I can see from the code in >>modutils that this value is inside rel->r_info, such as R_PPC_ADDR32 or >>R_PPC_ADDR16_HA. >> >>But where do I get more info about where r_info gets assigned? Do I >>need to link libppcfp.a in a particular way? >> >>Any hints would be appreciated. >> >>Thanks in advance. >> >>Joshua >> >> >> -- Xiphos Technologies (514) 848-9640 x227 (514) 848-9644 fax www.xiplink.com _______________________________________________ The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. If you have received this in error, please contact the sender and delete this communication and any copy immediately. Thank you. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Unhandled relocation of type 11 2005-04-07 14:20 ` Joshua Lamorie @ 2005-04-08 14:08 ` Joshua Lamorie 0 siblings, 0 replies; 4+ messages in thread From: Joshua Lamorie @ 2005-04-08 14:08 UTC (permalink / raw) To: Joshua Lamorie; +Cc: Wolfgang Grandegger, rtai, linuxppc-embedded [-- Attachment #1: Type: text/plain, Size: 972 bytes --] Yes, this fix appeared to work. It looks like there are just four 14-bit references: ppc_ftoui.S:56: blt __fixsfsi /* return directly from there */ ppc_ftoui.S:61: blt __fixsfsi /* return directly form there */ ppc_dtoui.S:63: blt __fixdfsi ppc_dtoui.S:73: blt __fixdfsi I've sent an email to the sourceforge maintainer, but I haven't heard anything yet. It's a great library, it greatly improves FP performance. Anyone else been using it? Any problems? My fix is attached. Joshua -- Xiphos Technologies (514) 848-9640 x227 (514) 848-9644 fax www.xiplink.com _______________________________________________ The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. If you have received this in error, please contact the sender and delete this communication and any copy immediately. Thank you. [-- Attachment #2: fptoui_module.patch --] [-- Type: text/plain, Size: 2514 bytes --] --- perflibs.orig/fpopt/ppc_dtoui.S 2003-12-12 15:38:02.000000000 -0500 +++ perflibs/fpopt/ppc_dtoui.S 2005-04-08 10:03:19.629210784 -0400 @@ -53,14 +53,26 @@ function_prolog(__fixunsdfsi) /* For negative numbers, just convert to signed integer */ or. r3,r3,r3 - blt __fixdfsi /* return directly from there */ +#if defined(__KERNEL__) && defined(MODULE) + bge positive + bl __fixdfsi /* return directly from there */ +#else + blt __fixdfsi +#endif +positive: rlwinm r8,r3,12,0x000007FF /* extract exponent */ /* For numbers less than maximum positive signed integer, convert normally */ cmpwi r8, 0x041e - blt __fixdfsi /* return directly form there */ +#if defined(__KERNEL__) && defined(MODULE) + bge overmax + bl __fixdfsi /* return directly form there */ +#else + blt __fixdfsi +#endif /* Create stack frame, just to save link register! */ +overmax: mflr r0 /* save link register in caller's stack */ stw r0,4(r1) stwu r1,-STACKSIZE(r1) /* set up stack frame to hold saved regs */ --- perflibs.orig/fpopt/ppc_ftoui.S 2003-12-12 15:38:02.000000000 -0500 +++ perflibs/fpopt/ppc_ftoui.S 2005-04-08 10:06:46.155813968 -0400 @@ -53,14 +53,26 @@ function_prolog(__fixunssfsi) /* For negative numbers, just convert to signed integer */ or. r3,r3,r3 - blt __fixsfsi /* return directly from there */ +#if defined(__KERNEL__) && defined(MODULE) + bge positive + bl __fixsfsi /* return directly from there */ +#else + blt __fixsfsi +#endif +positive: rlwinm r8,r3,9,0x000000FF /* extract exponent */ /* For numbers less than maximum positive signed integer, convert normally */ cmpwi r8, 0x009e - blt __fixsfsi /* return directly form there */ +#if defined(__KERNEL__) && defined(MODULE) + bge overmax + bl __fixsfsi /* return directly form there */ +#else + blt __fixsfsi +#endif /* Create stack frame, just to save link register! */ +overmax: mflr r0 /* save link register in caller's stack */ stw r0,4(r1) stwu r1,-STACKSIZE(r1) /* set up stack frame to hold saved regs */ ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2005-04-08 14:08 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-04-06 21:18 Unhandled relocation of type 11 Joshua Lamorie 2005-04-07 9:19 ` Wolfgang Grandegger 2005-04-07 14:20 ` Joshua Lamorie 2005-04-08 14:08 ` Joshua Lamorie
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).