[ECOS] How to build big-endian arm libraries for the Intel XScale IXP425

Krishna Ganugapati krishnag@marakicorp.com
Mon Mar 8 20:06:00 GMT 2004


Hello,

I managed to successfully rebuild the toolchain with the new patch(es)
as indicated by Jonathan Lamour. This time around

arm-elf-gcc --print-multi-lib gives me the following

[root@localhost bin]# ./arm-elf-gcc --print-multi-lib
.;
thumb;@mthumb
interwork;@mthumb-interwork
xscale;@mcpu=xscale
strongarm;@mcpu=strongarm1110
armv4t;@mcpu=arm9tdmi
be;@mbig-endian
xscale/be;@mcpu=xscale@mbig-endian
interwork/xscale;@mthumb-interwork@mcpu=xscale
interwork/armv4t;@mthumb-interwork@mcpu=arm9tdmi
interwork/be;@mthumb-interwork@mbig-endian
interwork/xscale/be;@mthumb-interwork@mcpu=xscale@mbig-endian
thumb/interwork;@mthumb@mthumb-interwork
thumb/xscale;@mthumb@mcpu=xscale
thumb/armv4t;@mthumb@mcpu=arm9tdmi
thumb/be;@mthumb@mbig-endian
thumb/xscale/be;@mthumb@mcpu=xscale@mbig-endian
thumb/interwork/xscale;@mthumb@mthumb-interwork@mcpu=xscale
thumb/interwork/armv4t;@mthumb@mthumb-interwork@mcpu=arm9tdmi
thumb/interwork/be;@mthumb@mthumb-interwork@mbig-endian
thumb/interwork/xscale/be;@mthumb@mthumb-interwork@mcpu=xscale@mbig-endian
[root@localhost bin]#


So I presume I've successfully built my big-endian toolchain

configtool does not complain about the toolchain and when I attempt to
build the "default" template for the IXDP425 board, I get the following
error message

sh -c "export PATH=/gnutools/arm-elf/bin:$PATH; unset GDBTK_LIBRARY;
unset GCC_EXEC_PREFIX; export
ECOS_REPOSITORY=/usr/src/eCOS/ecos/packages; make --directory
/opt/ecos/ecos-2.0/tools/bin/untitled1_build"

make: Entering directory `/opt/ecos/ecos-2.0/tools/bin/untitled1_build'
make -r -C hal/common/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/hal/common/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/hal/common/current'
make -r -C io/common/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/io/common/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/io/common/current'
make -r -C io/serial/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/io/serial/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/io/serial/current'
make -r -C infra/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/infra/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/infra/current'
make -r -C kernel/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/kernel/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/kernel/current'
make -r -C services/memalloc/common/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/services/memalloc/common/curre
nt'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/services/memalloc/common/curre
nt'
make -r -C isoinfra/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/isoinfra/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/isoinfra/current'
make -r -C language/c/libc/common/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/common/current
'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/common/current
'
make -r -C language/c/libc/i18n/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/i18n/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/i18n/current'
make -r -C language/c/libc/setjmp/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/setjmp/current
'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/setjmp/current
'
make -r -C language/c/libc/signals/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/signals/curren
t'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/signals/curren
t'
make -r -C language/c/libc/startup/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/startup/curren
t'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/startup/curren
t'
make -r -C language/c/libc/stdio/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/stdio/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/stdio/current'
make -r -C language/c/libc/stdlib/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/stdlib/current
'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/stdlib/current
'
make -r -C language/c/libc/string/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/string/current
'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/string/current
'
make -r -C language/c/libc/time/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/time/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libc/time/current'
make -r -C language/c/libm/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libm/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/language/c/libm/current'
make -r -C io/wallclock/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/io/wallclock/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/io/wallclock/current'
make -r -C error/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/error/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/error/current'
make -r -C hal/arm/arch/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/hal/arm/arch/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/hal/arm/arch/current'
make -r -C hal/arm/xscale/cores/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/hal/arm/xscale/cores/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/hal/arm/xscale/cores/current'
make -r -C hal/arm/xscale/ixp425/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/hal/arm/xscale/ixp425/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/hal/arm/xscale/ixp425/current'
make -r -C hal/arm/xscale/ixdp425/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/hal/arm/xscale/ixdp425/current
'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/hal/arm/xscale/ixdp425/current
'
make -r -C io/pci/current headers
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/io/pci/current'
make[1]: Nothing to be done for `headers'.
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/io/pci/current'
headers finished
make -r -C hal/arm/arch/current arm.inc
make[1]: Entering directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/hal/arm/arch/current'
arm-elf-gcc -mcpu=xscale -mbig-endian -Wall -Wpointer-arith
-Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2
-ffunction-sections -fdata-sections -fno-rtti -fno-exceptions
-mapcs-frame  -I/opt/ecos/ecos-2.0/tools/bin/untitled1_install/include
-I/usr/src/eCOS/ecos/packages/hal/arm/arch/current
-I/usr/src/eCOS/ecos/packages/hal/arm/arch/current/src
-I/usr/src/eCOS/ecos/packages/hal/arm/arch/current/tests -I.
-Wp,-MD,arm.tmp -o hal_mk_defs.tmp -S
/usr/src/eCOS/ecos/packages/hal/arm/arch/current/src/hal_mk_defs.c
make[1]: Leaving directory
`/opt/ecos/ecos-2.0/tools/bin/untitled1_build/hal/arm/arch/current'
cc1: unrecognized option `-Woverloaded-virtual'
make: Leaving directory `/opt/ecos/ecos-2.0/tools/bin/untitled1_build'
cc1: unrecognized option `-fno-rtti'

make[1]: *** [arm.inc] Error 1
make: *** [build] Error 2


Presumably, cc1 is the preprocessor?? Do I need to include some other
options to get support for -fno-rtti (which I presume means don't include
run-time type information) Any idea what I'm doing wrong
here?

Thanks in advance for any help

Krishna

----- Original Message ----- 
From: "Krishna Ganugapati" <krishnag@marakicorp.com>
To: "Jonathan Larmour" <jifl@eCosCentric.com>; "Gary Thomas"
<gary@mlbassoc.com>
Cc: <ecos-discuss@sources.redhat.com>
Sent: Monday, February 23, 2004 1:32 PM
Subject: Re: [ECOS] How to build big-endian arm libraries for the Intel
XScale IXP425


> Jonathan and Gary,
>
> Thank you very much for your help.
>
> I've started a clean build again  this time with the additional big-endian
> patch. Jonathan, I did "/gnutools/tools/bin/arm-elf-gcc -print-multi-lib"
> and as expected, there was no configuration indicating "xscale
big-endian".
>
> - Krishna
> ___________________________________
> Krishna Ganugapati
> Maraki Corporation
> email:  krishnag@marakicorp.com
>
> ----- Original Message -----
> From: "Jonathan Larmour" <jifl@eCosCentric.com>
> To: "Krishna Ganugapati" <krishnag@marakicorp.com>
> Cc: <ecos-discuss@sources.redhat.com>
> Sent: Monday, February 23, 2004 12:55 PM
> Subject: Re: [ECOS] How to build big-endian arm libraries for the Intel
> XScale IXP425
>
>
> > Krishna Ganugapati wrote:
> > >
> > >   a.. binutils-2.13.1-v850-hashtable.patch
> > >   b.. gcc-3.2.1-arm-multilib.patch   ------------> This should have
been
> > > warning enough. Its 2004 - perhaps Gary's patch of May 2003  has
already
> > > been folded appropriately into this  patch... (speculative)
> >
> > IIRC that patch would conflict with the arm multilib one because they
> > affect similar areas in the same file. Although if so I'd expect the
> > toolchain build to fail.
> >
> > Anyway, the "official" way to build is to download
> > http://ecos.sourceware.org/gcc-3.2.1-arm-be.patch and apply that _after_
> > having applied gcc-3.2.1-arm-multilib.patch
> >
> > >   c.. insight-5.3-tcl_win_encoding.patch
> > >  The tools took some amount of time to build, but built flawlessly.
All
> my
> > > tools were stored in /gnutools on my machine.
> > >
> > > I then fired up the configtool - changed the build path to /gnutools
> from
> > > /opt/ecos/gnutools and surprise I saw the message "/gnutools does not
> appear
> > > to contain the build tools - use this folder anyway?"
> >
> > Did you see if there was anything in there? Did the toolchain build
> > definitely succeed?
> >
> > > Questions:
> > >
> > > Am I right in assuming that gcc-3.2.1-arm-multilib.patch that is
> provided
> > > with the toolchain sources is a patch that generates all necessary
> binaries
> > > and libraries for all variants of  arm. More specifically, does this
> patch
> > > once applied force generation of binaries and libraries necessary for
> > > building a big-endian arm target for the Intel XScale IXP425?  If this
> is
> > > correct, my potential moral is now a real moral..
> >
> > It doesn't include big-endian support.
> >
> > > Can I therefore assume that my binaries were successfully built
> >
> > Nope. Look there and find out! In particular from the command line try
> > running "/gnutools/tools/bin/arm-elf-gcc -print-multi-lib" to see if
> > big-endian libraries are included.
> >
> >
> > > Could someone kindly explain to me why this message pops up - the
> toolchain
> > > is nicely installed in /gnutools - I point the "Build Path" to
> /gnutools -
> > > is there anything else I need to do?
> >
> > It probably means there aren't tools there ;-).
> >
> > > Could someone explain what gcc-3.2.1-arm-multilib.patch does? My
reading
> of
> > > diff files is poor.
> >
> > It allows the compiler to support various alternative configurations, or
> > optimisations for certain configurations, specifically:
> >
> > thumb
> > thumb interworking
> > arm9
> > strongarm
> > xscale
> >
> > big-endian is another option, but is included in the separate patch
above.
> >
> > > Might I humbly suggest that the website be updated to indicate that
> ecos2.0
> > > toolchains do not provide the big-endian support for arm - presumably
> for
> > > size reasons and how to go about building a big-endian toolchain?
> >
> > The big-endian patch isn't mentioned in the instructions for rebuilding
> > tools, so I've added that.
> >
> > Jifl
> > --
> > eCosCentric    http://www.eCosCentric.com/    The eCos and RedBoot
experts
> >  >>>>> Visit us in booth 2527 at the Embedded Systems Conference 2004
> <<<<<
> > March 30 - April 1, San Francisco
http://www.esconline.com/electronicaUSA/
> > --["No sense being pessimistic, it wouldn't work anyway"]-- 
Opinions==mine
> >
>
>
> -- 
> Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
> and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
>


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



More information about the Ecos-discuss mailing list