This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: powerpc eabi installation and compilation
- From: Nick Garnett <nickg at ecoscentric dot com>
- To: Matthieu dot GIRARDIN at fr dot thalesgroup dot com
- Cc: andrew dot lunn at ascom dot ch, ecos-discuss at sources dot redhat dot com
- Date: 06 Aug 2003 16:10:50 +0100
- Subject: Re: [ECOS] powerpc eabi installation and compilation
- References: <D96E2AFA0DF3D211B13900902745494805DC2A33@HELIOS>
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