Dynamic Libraries

Marek Prochazka Marek.Prochazka at scisys.co.uk
Thu Sep 14 09:44:50 UTC 2006


Please, anyone having a hint how to deal with the problem described
below? Or should I consider the issue being hard to solve in an easy way
and hence Cexp not being able to use on sparc-rtems? Sorry but I have to
keep pushing as I have to decide reasonably quickly whether I can use
Cexp for my project or not.

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