This is the mail archive of the newlib@sourceware.org mailing list for the newlib 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: [patch] More Arm EABI support routines


On Monday 26 September 2005 14:46, Nick Clifton wrote:
> Hi Paul,
>
> >>>>I'm in two minds about this.  Part of me thinks that this should be in
> >>>>libgcc rather than newlib, since these are documented as part of the
> >>>>standard run-time support for the compiler.

There are already other __aeabi_* routines in libc, so chances are you're 
going to need more than just libgcc anyway.

gcc will already generate calls to normal memcpy without user intervention.

> >>>My reason for putting them in libc was that they're then in the same
> >>>place as the underlying mem* routines.
> >>
> >>But the whole point of these entry points is that they can be more
> >>efficient than the mem* routines.  So long-term we really don't want to
> >>implement them this way.
> > Maybe. I was also thinking that the the C library is more likely to know
> > about target specific properties (size/speed preference, coprocessor
> > support/custom insns, etc) than libgcc.
>
> Nah - libgcc is built along with gcc for a specific target, so it
> actually has a lot of target specific information built into it.  So
> probably the best location for these sources is in gcc/config/arm
> directory.  Then you need to find some way to insert the code into
> libgcc.a.  You could recode the functions into assembler and then move
> them into lib1funcs.asm.  Or you could create a t-arm-eabi file and have
> it define LIB2ADD and then fix the arm-eabi pattern in config.gcc to
> include this extra t-file.

This argument only really holds if you assume the exact target platform can be 
statically determined by gcc.

As soon as you start trying to do dynamic selection you need C library 
specific things to determine which target you're running on.  There is prior 
art for doing this on glibc/linux.

We (CodeSourcery) have already added these routines to glibc, and expect them 
to stay there for the reasons described above.
Adding yet another implementation of memcpy in gcc for newlib targets seems 
like a bad idea. I'd much prefer putting them in newlib so that all the 
memcpy implementations are in the same place.

Paul


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