This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: powerpc eabi installation and compilation


Matthieu.GIRARDIN@fr.thalesgroup.com writes:

> test_main.c: In function `init_mf_lgb_radio':
> test_main.c:297: warning: extern declaration of `cyg_error_get_errno_p'
> doesn't match global one

This looks like you have a definition for errno on line 297, something
like:

extern int errno;

In eCos errno is defined as a macro that calls a function
(cyg_error_get_errno_p()) to access a per-thread variable. You should
just take that definition out and use the one from errno.h.


> /opt/ecos.ppc/gnutools/powerpc-eabi/bin/../lib/gcc-lib/powerpc-eabi/3.2.1/..
> /../../../powerpc-eabi/bin/ld: warning: no memory region specified for
> section `.eh_frame'
> /opt/ecos.ppc/gnutools/powerpc-eabi/bin/../lib/gcc-lib/powerpc-eabi/3.2.1/..
> /../../../powerpc-eabi/bin/ld: section .eh_frame [00003200 -> 0000336f]
> overlaps section .text [00003200 -> 00027c67]

This I am not sure about. I just did a full build of eCos for the psim
target with no problems. Check your
hal/powerpc/arch/current/src/powerpc.ld file and make sure it has the
following in it:

    __GOT2_START__ = ABSOLUTE(.); *(.got2) __GOT2_END__ = ABSOLUTE(.);        \
    __GOT_START = ABSOLUTE(.); _GLOBAL_OFFSET_TABLE_ = ABSOLUTE(. + 32768);   \
    _SDA_BASE_ = ABSOLUTE(.); *(.got.plt) *(.got)                             \
    __GOT_END__ = ABSOLUTE(.);  *(.dynamic)                                   \
    *(.eh_frame)                                                              \
      /* We want the small data sections together, so single-instruction */   \
      /* offsets can access them all, and initialized data all before    */   \
      /* uninitialized, so we can shorten the on-disk segment size.      */   \
    __SDATA_START__ = ABSOLUTE(.); *(.sdata) *(.sdata.*)                      \
    __SDATA2_START__ = ABSOLUTE(.); *(.sdata2*) }                             \


Its that .eh_frame line that needs to be present. Also check that the
target.ld file also has that line in it.

-- 
Nick Garnett                    eCos Kernel Architect
http://www.ecoscentric.com      The eCos and RedBoot experts


-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]