[patch] ARM EABI support routine

Jeff Johnston jjohnstn@redhat.com
Wed Aug 24 17:27:00 GMT 2005


This actually opens a small can of worms due to the fact that 
libc/sys/arm should not exist as it does today.  To solve the problem 
with board packages, newlib added the configuration setting: 
--disable-newlib-supplied-syscalls.  At the moment, this removes the 
entire sys/arm directory from building so your file won't get built. 
The irony is that the file you are adding is actually what belongs in 
libc/sys/arm.

So, a change is needed in the configuration files in libc/sys/arm to 
allow only this one file to build in the case of 
--disable-newlib-supplied-syscalls.

There is also the problem with crt0.o.  Currently, the configuration 
checks to see if sys_dir is defined and if yes, expects crt0.o.  This 
could easily be changed by adding a new variable to configure.host which 
specifies no crt0.o regardless.

-- Jeff J.

Paul Brook wrote:
> The attached patch adds an implementation of __aeabi_atexit.
> This routine is required by the Arm EABI. Its purpose issimilar to 
> __cxa_atexit.
> 
> Currently there are implementations of this function in both glibc and 
> libstdc++. I think it makes most sense to put the implementation in libc, and 
> remove the libstdc++ version.
> 
> Tested with cross to arm-none-eabi.
> Ok?
> 
> Paul
> 
> 2005-08-24  Paul Brook  <paul@codesourcery.com>
> 
> 	* libc/sys/arm/Makefile.am (lib_a_SOURCES): Add aeabi_atexit.c.
> 	* libc/sys/arm/Makefile.in: Regenerate.
> 	* libc/sys/arm/aeabi_atexit.c: New file.
> 
> 
> ------------------------------------------------------------------------
> 
> Index: newlib/libc/sys/arm/Makefile.am
> ===================================================================
> RCS file: /var/cvsroot/src-cvs/src/newlib/libc/sys/arm/Makefile.am,v
> retrieving revision 1.4
> diff -u -p -r1.4 Makefile.am
> --- newlib/libc/sys/arm/Makefile.am	9 Jun 2004 19:05:09 -0000	1.4
> +++ newlib/libc/sys/arm/Makefile.am	24 Aug 2005 13:21:37 -0000
> @@ -12,7 +12,7 @@ else
>  extra_objs =
>  endif
>  
> -lib_a_SOURCES = libcfunc.c trap.S
> +lib_a_SOURCES = libcfunc.c trap.S aeabi_atexit.c
>  lib_a_LIBADD = $(extra_objs)
>  lib_a_DEPENDENCIES = $(extra_objs)
>  
> Index: newlib/libc/sys/arm/aeabi_atexit.c
> ===================================================================
> RCS file: newlib/libc/sys/arm/aeabi_atexit.c
> diff -N newlib/libc/sys/arm/aeabi_atexit.c
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ newlib/libc/sys/arm/aeabi_atexit.c	24 Aug 2005 14:21:57 -0000
> @@ -0,0 +1,10 @@
> +#include <stdlib.h>
> +
> +/* Register a function to be called by exit or when a shared library
> +   is unloaded.  This routine is like __cxa_atexit, but uses the
> +   calling sequence required by the ARM EABI.  */
> +int
> +__aeabi_atexit (void *arg, void (*func) (void *), void *d)
> +{
> +  return __cxa_atexit (func, arg, d);
> +}



More information about the Newlib mailing list