Dynamic Libraries

Marek Prochazka Marek.Prochazka at scisys.co.uk
Tue Sep 12 16:17:45 UTC 2006


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