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