diff options
-rw-r--r-- | newlib/ChangeLog | 16 | ||||
-rwxr-xr-x | newlib/configure | 2 | ||||
-rw-r--r-- | newlib/configure.host | 32 | ||||
-rw-r--r-- | newlib/configure.in | 2 | ||||
-rwxr-xr-x | newlib/libc/configure | 2 | ||||
-rw-r--r-- | newlib/libc/configure.in | 2 | ||||
-rw-r--r-- | newlib/libc/sys/arm/Makefile.am | 6 | ||||
-rw-r--r-- | newlib/libc/sys/arm/Makefile.in | 8 | ||||
-rw-r--r-- | newlib/libc/sys/arm/aeabi_atexit.c | 10 | ||||
-rwxr-xr-x | newlib/libc/sys/configure | 2 | ||||
-rw-r--r-- | newlib/libc/sys/configure.in | 2 |
11 files changed, 62 insertions, 22 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index fa5a7f1..a980584 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,19 @@ +2005-08-31 Paul Brook <paul@codesourcery.com> + + * configure.host: Set have_crt0 to no for Arm targts when not + providing syscalls. Set sys_dir=arm unconditionally. + Default have_crt0 based on sys_dir. + * configure.in: Use have_crt0. + * libc/configure.in: Ditto. + * libc/sys/configure.in: Ditto. + * configure: Regenerate. + * libc/configure: Regenerate. + * libc/sys/configure: Regenerate. + * libc/sys/arm/Makefile.am (lib_a_SOURCES): Add aeabi_atexit.c. + Only build other files when providing syscalls. + * libc/sys/arm/Makefile.in: Regenerate. + * libc/sys/arm/aeabi_atexit.c: New file. + 2005-08-26 Christopher Faylor <cgf@timesys.com> * libc/include/string.h: Revert previous change. diff --git a/newlib/configure b/newlib/configure index f43bcb1..4a49193 100755 --- a/newlib/configure +++ b/newlib/configure @@ -3205,7 +3205,7 @@ subdirs="${configdirs}" CRT0= CRT0_DIR= -if test -n "${sys_dir}"; then +if test "x${have_crt0}" = "xyes"; then CRT0=crt0.o CRT0_DIR=libc/ fi diff --git a/newlib/configure.host b/newlib/configure.host index 095007a..91dd1e0 100644 --- a/newlib/configure.host +++ b/newlib/configure.host @@ -42,6 +42,8 @@ # oext object file extension - needed for libtool support # crt1 name of crt1 object if one is provided # crt1_dir directory where crt1 object is found +# have_crt0 "yes"/"no" if crt0 is/isn't provided. +# "" if crt0 is provided when sys_dir is set newlib_cflags= libm_machine_dir= @@ -55,6 +57,7 @@ unix_dir= mach_add_setjmp= crt1= crt1_dir= +have_crt0= use_libtool=no have_sys_mach_dir=no default_newlib_io_long_long=no @@ -318,8 +321,9 @@ case "${host}" in sys_dir=arc ;; arm-*-*) - if [ "x${newlib_may_supply_syscalls}" = "xyes" ] ; then - sys_dir=arm + sys_dir=arm + if [ "x${newlib_may_supply_syscalls}" = "xno" ] ; then + have_crt0="no" fi ;; crx*) @@ -332,8 +336,9 @@ case "${host}" in sys_dir= ;; ep9312-*-*) - if [ "x${newlib_may_supply_syscalls}" = "xyes" ] ; then - sys_dir=arm + sys_dir=arm + if [ "x${newlib_may_supply_syscalls}" = "xno" ] ; then + have_crt0="no" fi ;; frv*) @@ -413,13 +418,15 @@ case "${host}" in unix_dir=unix ;; strongarm-*-*) - if [ "x${newlib_may_supply_syscalls}" = "xyes" ] ; then - sys_dir=arm + sys_dir=arm + if [ "x${newlib_may_supply_syscalls}" = "xno" ] ; then + have_crt0="no" fi ;; thumb-*-*) - if [ "x${newlib_may_supply_syscalls}" = "xyes" ] ; then - sys_dir=arm + sys_dir=arm + if [ "x${newlib_may_supply_syscalls}" = "xno" ] ; then + have_crt0="no" fi ;; tic80*) @@ -444,8 +451,9 @@ case "${host}" in sys_dir=w65 ;; xscale-*-*) - if [ "x${newlib_may_supply_syscalls}" = "xyes" ] ; then - sys_dir=arm + sys_dir=arm + if [ "x${newlib_may_supply_syscalls}" = "xno" ] ; then + have_crt0="no" fi ;; z8k-*-coff) @@ -725,3 +733,7 @@ if [ "x${newlib_io_pos_args}" = "x" ]; then newlib_io_pos_args="yes"; fi fi + +if test -z "${have_crt0}" && test -n "${sys_dir}"; then + have_crt0="yes" +fi diff --git a/newlib/configure.in b/newlib/configure.in index 84e1f74..5374d67 100644 --- a/newlib/configure.in +++ b/newlib/configure.in @@ -139,7 +139,7 @@ AC_CONFIG_SUBDIRS(${configdirs}) CRT0= CRT0_DIR= -if test -n "${sys_dir}"; then +if test "x${have_crt0}" = "xyes"; then CRT0=crt0.o CRT0_DIR=libc/ fi diff --git a/newlib/libc/configure b/newlib/libc/configure index bf5a25f..6770f63 100755 --- a/newlib/libc/configure +++ b/newlib/libc/configure @@ -3006,7 +3006,7 @@ subdirs="machine sys" CRT0= -if test -n "${sys_dir}"; then +if test "x${have_crt0}" = "xyes"; then CRT0=crt0.o fi diff --git a/newlib/libc/configure.in b/newlib/libc/configure.in index 0b6f276..d114eb5 100644 --- a/newlib/libc/configure.in +++ b/newlib/libc/configure.in @@ -30,7 +30,7 @@ fi AC_CONFIG_SUBDIRS(machine sys) CRT0= -if test -n "${sys_dir}"; then +if test "x${have_crt0}" = "xyes"; then CRT0=crt0.o fi AC_SUBST(CRT0) diff --git a/newlib/libc/sys/arm/Makefile.am b/newlib/libc/sys/arm/Makefile.am index 76504f9..7749d4a 100644 --- a/newlib/libc/sys/arm/Makefile.am +++ b/newlib/libc/sys/arm/Makefile.am @@ -7,16 +7,18 @@ INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) noinst_LIBRARIES = lib.a if MAY_SUPPLY_SYSCALLS -extra_objs = syscalls.o +extra_objs = libcfunc.o trap.o syscalls.o else extra_objs = endif -lib_a_SOURCES = libcfunc.c trap.S +lib_a_SOURCES = aeabi_atexit.c lib_a_LIBADD = $(extra_objs) lib_a_DEPENDENCIES = $(extra_objs) +if MAY_SUPPLY_SYSCALLS all: crt0.o +endif ACLOCAL_AMFLAGS = -I ../../.. CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host diff --git a/newlib/libc/sys/arm/Makefile.in b/newlib/libc/sys/arm/Makefile.in index 942f909..323db9c 100644 --- a/newlib/libc/sys/arm/Makefile.in +++ b/newlib/libc/sys/arm/Makefile.in @@ -88,10 +88,10 @@ AUTOMAKE_OPTIONS = cygnus INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) noinst_LIBRARIES = lib.a -@MAY_SUPPLY_SYSCALLS_TRUE@extra_objs = syscalls.o +@MAY_SUPPLY_SYSCALLS_TRUE@extra_objs = libcfunc.o trap.o syscalls.o @MAY_SUPPLY_SYSCALLS_FALSE@extra_objs = -lib_a_SOURCES = libcfunc.c trap.S +lib_a_SOURCES = aeabi_atexit.c lib_a_LIBADD = $(extra_objs) lib_a_DEPENDENCIES = $(extra_objs) @@ -106,7 +106,7 @@ LIBRARIES = $(noinst_LIBRARIES) DEFS = @DEFS@ -I. -I$(srcdir) CPPFLAGS = @CPPFLAGS@ LIBS = @LIBS@ -lib_a_OBJECTS = libcfunc.o trap.o +lib_a_OBJECTS = aeabi_atexit.o CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -325,7 +325,7 @@ mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean -all: crt0.o +@MAY_SUPPLY_SYSCALLS_TRUE@all: crt0.o # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/newlib/libc/sys/arm/aeabi_atexit.c b/newlib/libc/sys/arm/aeabi_atexit.c new file mode 100644 index 0000000..4b600e2 --- /dev/null +++ b/newlib/libc/sys/arm/aeabi_atexit.c @@ -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); +} diff --git a/newlib/libc/sys/configure b/newlib/libc/sys/configure index 9f389db..7013ea4 100755 --- a/newlib/libc/sys/configure +++ b/newlib/libc/sys/configure @@ -2993,7 +2993,7 @@ if test -n "${sys_dir}"; then fi CRT0= -if test -n "${sys_dir}"; then +if test "x${have_crt0}" = "xyes"; then CRT0=crt0.o fi diff --git a/newlib/libc/sys/configure.in b/newlib/libc/sys/configure.in index 4a53612..895bdb2 100644 --- a/newlib/libc/sys/configure.in +++ b/newlib/libc/sys/configure.in @@ -22,7 +22,7 @@ if test -n "${sys_dir}"; then fi CRT0= -if test -n "${sys_dir}"; then +if test "x${have_crt0}" = "xyes"; then CRT0=crt0.o fi AC_SUBST(CRT0) |