Dynamic Libraries

Marek Prochazka Marek.Prochazka at scisys.co.uk
Thu Sep 14 15:50:11 UTC 2006


Thanks for this hint, I'll look at the binutils discussion on this
issue.
Marek


> AFAIK this is an ld issue not specifically Cexp.  I saw this 
> message about
> this error message on an  old thread on the binutils list 
> (typed in so I 
> hope
> the URL is right):
> 
> http://sourceware.org/ml/binutils/2003-04/msg00540.html
> 
> Maybe you can tell from that discussion what is going on with 
> this linker
> script.  I don't think this is as much SPARC specific as an 
> odd side-effect
> of your test case and linker script.
> 
> --joel
> > Thanks.
> >
> > Best regards,
> > Marek Prochazka
> >
> >   
> >> -----Original Message-----
> >> From: Marek Prochazka [mailto:Marek.Prochazka at scisys.co.uk] 
> >> Sent: 12 September 2006 17:18
> >> To: Till Straumann
> >> Cc: rtems-users at rtems.com
> >> Subject: RE: Dynamic Libraries
> >>
> >> Hi,
> >>
> >> I have successfully linked a Cexp "loader" application on 
> >> Linux and was
> >> able to load modules at runtime. Quite good stuff!
> >>
> >> When I am trying to do the same for sparc-rtems target, I get the
> >> following message when linking:
> >>
> >> /opt/rtems-4.6/lib/gcc-lib/sparc-rtems/3.2.3/../../../../sparc
> >> -rtems/bin
> >> /ld: ADDR forward reference of section .text
> >>
> >> My link_helper file looks like this:
> >>
> >> __cexp__dummy_alias_0 = ADDR( .text ) ;
> >> __cexp__dummy_alias_1 = ADDR( .data ) ;
> >> __cexp__dummy_alias_2 = ADDR( .bss ) ;
> >> __cexp__dummy_alias_3 = ADDR( .jcr ) ;
> >>
> >> Corresponding part of mysymbtab.c is
> >>
> >> static CexpSymRec systemSymbols[] = {
> >> 	{
> >> 		.name       =".text",
> >> 		.value.ptv  =(void*)&__cexp__dummy_alias_0,
> >> 		.value.type =TVoid,
> >> 		.size       =0,
> >> 		.flags      =0|CEXP_SYMFLG_SECT,
> >> 	},
> >> 	{
> >> 		.name       =".data",
> >> 		.value.ptv  =(void*)&__cexp__dummy_alias_1,
> >> 		.value.type =TVoid,
> >> 		.size       =0,
> >> 		.flags      =0|CEXP_SYMFLG_SECT,
> >> 	},
> >> 	{
> >> 		.name       =".bss",
> >> 		.value.ptv  =(void*)&__cexp__dummy_alias_2,
> >> 		.value.type =TVoid,
> >> 		.size       =0,
> >> 		.flags      =0|CEXP_SYMFLG_SECT,
> >> 	},
> >> 	{
> >> 		.name       =".jcr",
> >> 		.value.ptv  =(void*)&__cexp__dummy_alias_3,
> >> 		.value.type =TVoid,
> >> 		.size       =0,
> >> 		.flags      =0|CEXP_SYMFLG_SECT,
> >> 	},
> >> 	...
> >>
> >> I have built libcexp for sparc-rtems and xsyms on Linux for 
> >> sparc-rtems
> >> target. When I tried to build xsyms on top of libelf (--disable-bfd
> >> --disable-cexp) then the mysymtab.c file generated by xsyms 
> >> is actually
> >> a binary file - so I do not know how use it.
> >>
> >> Any hints related to this?
> >>
> >> Many thanks,
> >> Marek
> >>
> >>
> >>     
> >>> -----Original Message-----
> >>> From: Marek Prochazka [mailto:Marek.Prochazka at scisys.co.uk] 
> >>> Sent: 12 September 2006 09:28
> >>> To: Till Straumann
> >>> Cc: rtems-users at rtems.com
> >>> Subject: RE: Dynamic Libraries
> >>>
> >>> Hi,
> >>>
> >>> thanks, this helped me to link it! BTW my version of the 
> >>>       
> >> README file,
> >>     
> >>> which comes from Cexp 1.5 sources downloaded from the Cexp 
> >>>       
> >> home page,
> >>     
> >>> does not mention the trick with "> link_helper" in points 
> 2) and 4).
> >>>
> >>> Regards,
> >>> Marek
> >>>
> >>>       
> >>>> Allan is correct. RTMF (see step 4), please [from the README]:
> >>>>
> >>>>  >  1) compile and link all sources, libraries etc.; build an 
> >>>> executable
> >>>>  >  2) xsyms -C executable  mysymtab.c > link_helper
> >>>>  >  3) compile mysymtab.c (set -I to Cexp source directory, since
> >>>>  >     cexpsyms.h is included)
> >>>>  >  4) link application again, but this time add 
> >>>>         
> >> 'mysymtab.c' to the
> >>     
> >>>>  >     list of sources and 'link_helper' to the list of files to
> >>>>  >     be linked.
> >>>>  >  NOTE: Step 1) linking succeeds without a symtab.o 
> >>>>         
> >>> because there's
> >>>       
> >>>>  >        a weak NULL-ptr alias for the builtin symtab.
> >>>>
> >>>> HTH
> >>>> -- Till
> >>>>
> >>>>         
> >>>       
> >>     
> >
> >   
> 
> 




More information about the users mailing list