diff -Naur newlib-1.17.0.orig/newlib/ChangeLog.rtems newlib-1.17.0/newlib/ChangeLog.rtems --- newlib-1.17.0.orig/newlib/ChangeLog.rtems 1970-01-01 01:00:00.000000000 +0100 +++ newlib-1.17.0/newlib/ChangeLog.rtems 2009-09-03 16:22:08.000000000 +0200 @@ -0,0 +1,63 @@ +2009-07-27 Ralf Corsépius + + * libc/sys/rtems/crt0.c: Add _isatty_r. + +2009-07-06 Joel Sherrill + + * libc/include/sys/features.h: Define _UNIX98_THREAD_MUTEX_ATTRIBUTES. + +2009-05-05 Ralf Corsépius + + * configure.host: Remove -DMISSING_SYSCALL_NAMES. + +2009-03-11 Ralf Corsépius + + * libc/stdlib/assert.c: Don't build __assert_func. + * libc/sys/rtems/crt0.c: Add __assert_func. + +2009-03-09 Ralf Corsépius + + * libc/machine/powerpc/times.c: Remove. + * libc/machine/powerpc/Makefile.am: Remove times.c. + * libc/machine/powerpc/Makefile.in: Regenerate. + +2009-02-24 Ralf Corsépius + + * libc/unix/ttyname.c: Sync with newlib-cvs. + * configure.host: Add -DHAVE_BLKSIZE to newlib_cflags. + +2009-02-22 Ralf Corsépius + + * libc/sys/rtems/machine/stdint.h: Add __lm32__. + * libc/machine/lm32/configure.in: Set AC_CONFIG_SRC to setjmp.S. + * libc/machine/lm32/configure: Regenerate. + +2009-02-20 Ralf Corsépius + + * libc/unix/Makefile.in: Regenerate. + +2009-02-20 Craig Howland on behalf of + Sebastian Huber + + * libc/unix/ttyname.c: Remove ttyname_r() (to a new file to avoid + coupling ttyname_r() and ttyname() due to the latter's large buffer). + * libc/unix/ttyname_r.c: New file to hold ttyname_r(), previously in + ttyname.c. + * libc/unix/ttyname.h: New file (common size definition for the 2 + ttyname*c files that are now split). + * libc/unix/Makefile.am (ELIX_2_SOURCES): Add ttyname_r.c. + +2009-02-16 Ralf Corsépius + + * libc/sys/rtems/sys/param.h: + Update copyright notice from FreeBSD. + Remove HZ. + Add #include + Remove priority handling (moved to sys/priority.h). + Remove CLBYTES (Unused, abandoned in BSD). + +2009-02-06 Ralf Corsépius + + * libc/include/sched.h: + Remove (collides with RTEMS's schedul.h). + diff -Naur newlib-1.17.0.orig/newlib/configure.host newlib-1.17.0/newlib/configure.host --- newlib-1.17.0.orig/newlib/configure.host 2008-12-18 00:09:09.000000000 +0100 +++ newlib-1.17.0/newlib/configure.host 2009-09-06 06:37:51.000000000 +0200 @@ -537,7 +537,7 @@ *-*-rtems*) default_newlib_io_long_long="yes" default_newlib_io_c99_formats="yes" - newlib_cflags="${newlib_cflags} -DMALLOC_PROVIDED -DEXIT_PROVIDED -DMISSING_SYSCALL_NAMES -DSIGNAL_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_NANOSLEEP -DHAVE_FCNTL" + newlib_cflags="${newlib_cflags} -DMALLOC_PROVIDED -DEXIT_PROVIDED -DSIGNAL_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_NANOSLEEP -DHAVE_BLKSIZE -DHAVE_FCNTL" # turn off unsupported items in posix directory newlib_cflags="${newlib_cflags} -D_NO_GETLOGIN -D_NO_GETPWENT -D_NO_GETUT -D_NO_GETPASS -D_NO_SIGSET" ;; diff -Naur newlib-1.17.0.orig/newlib/libc/include/inttypes.h newlib-1.17.0/newlib/libc/include/inttypes.h --- newlib-1.17.0.orig/newlib/libc/include/inttypes.h 2005-12-16 20:03:12.000000000 +0100 +++ newlib-1.17.0/newlib/libc/include/inttypes.h 2009-09-03 16:22:08.000000000 +0200 @@ -163,12 +163,12 @@ /* 64-bit types */ -#if __have_longlong64 -#define __PRI64(x) __STRINGIFY(ll##x) -#define __SCN64(x) __STRINGIFY(ll##x) -#elif __have_long64 +#if __have_long64 #define __PRI64(x) __STRINGIFY(l##x) #define __SCN64(x) __STRINGIFY(l##x) +#elif __have_longlong64 +#define __PRI64(x) __STRINGIFY(ll##x) +#define __SCN64(x) __STRINGIFY(ll##x) #else #define __PRI64(x) __STRINGIFY(x) #define __SCN64(x) __STRINGIFY(x) @@ -217,12 +217,12 @@ #endif /* max-bit types */ -#if __have_longlong64 -#define __PRIMAX(x) __STRINGIFY(ll##x) -#define __SCNMAX(x) __STRINGIFY(ll##x) -#elif __have_long64 +#if __have_long64 #define __PRIMAX(x) __STRINGIFY(l##x) #define __SCNMAX(x) __STRINGIFY(l##x) +#elif __have_longlong64 +#define __PRIMAX(x) __STRINGIFY(ll##x) +#define __SCNMAX(x) __STRINGIFY(ll##x) #else #define __PRIMAX(x) __STRINGIFY(x) #define __SCNMAX(x) __STRINGIFY(x) @@ -242,12 +242,12 @@ #define SCNxMAX __SCNMAX(x) /* ptr types */ -#if __have_longlong64 -#define __PRIPTR(x) __STRINGIFY(ll##x) -#define __SCNPTR(x) __STRINGIFY(ll##x) -#elif __have_long64 +#if __have_long64 #define __PRIPTR(x) __STRINGIFY(l##x) #define __SCNPTR(x) __STRINGIFY(l##x) +#elif __have_longlong64 +#define __PRIPTR(x) __STRINGIFY(ll##x) +#define __SCNPTR(x) __STRINGIFY(ll##x) #else #define __PRIPTR(x) __STRINGIFY(x) #define __SCNPTR(x) __STRINGIFY(x) diff -Naur newlib-1.17.0.orig/newlib/libc/include/machine/ieeefp.h newlib-1.17.0/newlib/libc/include/machine/ieeefp.h --- newlib-1.17.0.orig/newlib/libc/include/machine/ieeefp.h 2008-12-11 21:05:38.000000000 +0100 +++ newlib-1.17.0/newlib/libc/include/machine/ieeefp.h 2009-09-03 16:22:08.000000000 +0200 @@ -62,8 +62,12 @@ # define __IEEE_BIG_ENDIAN # endif #else -# define __IEEE_BIG_ENDIAN # ifdef __ARMEL__ +# define __IEEE_LITTLE_ENDIAN +# else +# define __IEEE_BIG_ENDIAN +# endif +# ifdef __ARMWEL__ # define __IEEE_BYTES_LITTLE_ENDIAN # endif #endif diff -Naur newlib-1.17.0.orig/newlib/libc/include/machine/setjmp.h newlib-1.17.0/newlib/libc/include/machine/setjmp.h --- newlib-1.17.0.orig/newlib/libc/include/machine/setjmp.h 2008-12-11 21:05:38.000000000 +0100 +++ newlib-1.17.0/newlib/libc/include/machine/setjmp.h 2009-09-03 16:22:08.000000000 +0200 @@ -27,7 +27,7 @@ /* necv70 was 9 as well. */ -#ifdef __mc68000__ +#if defined(__m68k__) || defined(__mc68000__) /* * onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6, * fp2-fp7 for 68881. diff -Naur newlib-1.17.0.orig/newlib/libc/include/sched.h newlib-1.17.0/newlib/libc/include/sched.h --- newlib-1.17.0.orig/newlib/libc/include/sched.h 2007-09-21 23:02:15.000000000 +0200 +++ newlib-1.17.0/newlib/libc/include/sched.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,14 +0,0 @@ -#ifndef _SCHED_H_ -#define _SCHED_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef __cplusplus -} -#endif - -#endif /* _SCHED_H_ */ diff -Naur newlib-1.17.0.orig/newlib/libc/include/stdint.h newlib-1.17.0/newlib/libc/include/stdint.h --- newlib-1.17.0.orig/newlib/libc/include/stdint.h 2008-12-10 22:27:58.000000000 +0100 +++ newlib-1.17.0/newlib/libc/include/stdint.h 2009-09-03 16:22:08.000000000 +0200 @@ -475,6 +475,9 @@ #define UINTMAX_C(x) x##UL #endif +#ifdef __rtems__ +#include +#endif #ifdef __cplusplus } diff -Naur newlib-1.17.0.orig/newlib/libc/include/sys/features.h newlib-1.17.0/newlib/libc/include/sys/features.h --- newlib-1.17.0.orig/newlib/libc/include/sys/features.h 2008-12-12 18:16:03.000000000 +0100 +++ newlib-1.17.0/newlib/libc/include/sys/features.h 2009-09-03 16:22:08.000000000 +0200 @@ -73,6 +73,9 @@ #define _POSIX_INTERRUPT_CONTROL 1 #define _POSIX_ADVISORY_INFO 1 +/* UNIX98 added some new pthread mutex attributes */ +#define _UNIX98_THREAD_MUTEX_ATTRIBUTES 1 + #endif #ifdef __svr4__ diff -Naur newlib-1.17.0.orig/newlib/libc/include/sys/_types.h newlib-1.17.0/newlib/libc/include/sys/_types.h --- newlib-1.17.0.orig/newlib/libc/include/sys/_types.h 2007-09-18 22:05:17.000000000 +0200 +++ newlib-1.17.0/newlib/libc/include/sys/_types.h 2009-09-03 16:22:08.000000000 +0200 @@ -84,4 +84,7 @@ typedef void *_iconv_t; #endif +typedef long * __intptr_t; +typedef unsigned long* __uintptr_t; + #endif /* _SYS__TYPES_H */ diff -Naur newlib-1.17.0.orig/newlib/libc/machine/arm/machine/endian.h newlib-1.17.0/newlib/libc/machine/arm/machine/endian.h --- newlib-1.17.0.orig/newlib/libc/machine/arm/machine/endian.h 2004-05-07 22:29:24.000000000 +0200 +++ newlib-1.17.0/newlib/libc/machine/arm/machine/endian.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,12 +0,0 @@ -/* ARM configuration file */ - -#ifndef _MACHINE_ENDIAN_H -# define _MACHINE_ENDIAN_H - -#ifdef __ARMEB__ -#define BYTE_ORDER BIG_ENDIAN -#else -#define BYTE_ORDER LITTLE_ENDIAN -#endif - -#endif diff -Naur newlib-1.17.0.orig/newlib/libc/machine/lm32/configure newlib-1.17.0/newlib/libc/machine/lm32/configure --- newlib-1.17.0.orig/newlib/libc/machine/lm32/configure 2008-12-22 20:45:44.000000000 +0100 +++ newlib-1.17.0/newlib/libc/machine/lm32/configure 2009-09-03 16:22:08.000000000 +0200 @@ -271,7 +271,7 @@ PACKAGE_STRING='newlib 1.17.0' PACKAGE_BUGREPORT='' -ac_unique_file="setjmp.s" +ac_unique_file="setjmp.S" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAY_SUPPLY_SYSCALLS_TRUE MAY_SUPPLY_SYSCALLS_FALSE newlib_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB READELF ac_ct_READELF MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CCAS CCASFLAGS NEWLIB_CFLAGS LDFLAGS ELIX_LEVEL_0_TRUE ELIX_LEVEL_0_FALSE ELIX_LEVEL_1_TRUE ELIX_LEVEL_1_FALSE ELIX_LEVEL_2_TRUE ELIX_LEVEL_2_FALSE ELIX_LEVEL_3_TRUE ELIX_LEVEL_3_FALSE ELIX_LEVEL_4_TRUE ELIX_LEVEL_4_FALSE USE_LIBTOOL_TRUE USE_LIBTOOL_FALSE OBJEXT oext aext lpfx libm_machine_dir machine_dir sys_dir LIBOBJS LTLIBOBJS' ac_subst_files='' diff -Naur newlib-1.17.0.orig/newlib/libc/machine/lm32/configure.in newlib-1.17.0/newlib/libc/machine/lm32/configure.in --- newlib-1.17.0.orig/newlib/libc/machine/lm32/configure.in 2008-12-11 21:05:38.000000000 +0100 +++ newlib-1.17.0/newlib/libc/machine/lm32/configure.in 2009-09-03 16:22:08.000000000 +0200 @@ -3,7 +3,7 @@ AC_PREREQ(2.59) AC_INIT([newlib],[NEWLIB_VERSION]) -AC_CONFIG_SRCDIR([setjmp.s]) +AC_CONFIG_SRCDIR([setjmp.S]) dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake. AC_CONFIG_AUX_DIR(../../../..) diff -Naur newlib-1.17.0.orig/newlib/libc/machine/powerpc/Makefile.am newlib-1.17.0/newlib/libc/machine/powerpc/Makefile.am --- newlib-1.17.0.orig/newlib/libc/machine/powerpc/Makefile.am 2007-05-24 19:33:35.000000000 +0200 +++ newlib-1.17.0/newlib/libc/machine/powerpc/Makefile.am 2009-09-03 16:22:08.000000000 +0200 @@ -10,7 +10,7 @@ AM_CFLAGS = -I $(srcdir)/../../stdio -I $(srcdir)/../../stdlib -lib_a_SOURCES = setjmp.S times.c +lib_a_SOURCES = setjmp.S lib_a_CCASFLAGS=$(AM_CCASFLAGS) lib_a_CFLAGS=$(AM_CFLAGS) lib_a_LIBADD = @extra_objs@ diff -Naur newlib-1.17.0.orig/newlib/libc/machine/powerpc/Makefile.in newlib-1.17.0/newlib/libc/machine/powerpc/Makefile.in --- newlib-1.17.0.orig/newlib/libc/machine/powerpc/Makefile.in 2009-06-29 11:05:21.000000000 +0200 +++ newlib-1.17.0/newlib/libc/machine/powerpc/Makefile.in 2009-09-03 16:22:08.000000000 +0200 @@ -39,8 +39,7 @@ DIST_COMMON = $(srcdir)/../../../../config.guess \ $(srcdir)/../../../../config.sub $(srcdir)/Makefile.in \ $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(srcdir)/../../../../mkinstalldirs \ - $(srcdir)/../../../../compile + $(am__configure_deps) $(srcdir)/../../../../mkinstalldirs subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../../../acinclude.m4 \ @@ -54,7 +53,7 @@ LIBRARIES = $(noinst_LIBRARIES) ARFLAGS = cru lib_a_AR = $(AR) $(ARFLAGS) -am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT) lib_a-times.$(OBJEXT) +am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT) lib_a_OBJECTS = $(am_lib_a_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) depcomp = @@ -128,11 +127,6 @@ USE_LIBTOOL_FALSE = @USE_LIBTOOL_FALSE@ USE_LIBTOOL_TRUE = @USE_LIBTOOL_TRUE@ VERSION = @VERSION@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_READELF = @ac_ct_READELF@ -ac_ct_STRIP = @ac_ct_STRIP@ aext = @aext@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ @@ -148,6 +142,9 @@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ extra_objs = @extra_objs@ extra_sources = @extra_sources@ @@ -156,12 +153,14 @@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libm_machine_dir = @libm_machine_dir@ +localedir = @localedir@ localstatedir = @localstatedir@ lpfx = @lpfx@ machine_dir = @machine_dir@ @@ -170,8 +169,10 @@ newlib_basedir = @newlib_basedir@ oext = @oext@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sys_dir = @sys_dir@ @@ -182,7 +183,7 @@ AM_CCASFLAGS = $(INCLUDES) noinst_LIBRARIES = lib.a AM_CFLAGS = -I $(srcdir)/../../stdio -I $(srcdir)/../../stdlib -lib_a_SOURCES = setjmp.S times.c +lib_a_SOURCES = setjmp.S lib_a_CCASFLAGS = $(AM_CCASFLAGS) lib_a_CFLAGS = $(AM_CFLAGS) lib_a_LIBADD = @extra_objs@ @@ -193,7 +194,7 @@ all: all-am .SUFFIXES: -.SUFFIXES: .S .c .o .obj +.SUFFIXES: .S .o .obj am--refresh: @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @@ -252,18 +253,6 @@ lib_a-setjmp.obj: setjmp.S $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-setjmp.obj `if test -f 'setjmp.S'; then $(CYGPATH_W) 'setjmp.S'; else $(CYGPATH_W) '$(srcdir)/setjmp.S'; fi` - -.c.o: - $(COMPILE) -c $< - -.c.obj: - $(COMPILE) -c `$(CYGPATH_W) '$<'` - -lib_a-times.o: times.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-times.o `test -f 'times.c' || echo '$(srcdir)/'`times.c - -lib_a-times.obj: times.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-times.obj `if test -f 'times.c'; then $(CYGPATH_W) 'times.c'; else $(CYGPATH_W) '$(srcdir)/times.c'; fi` uninstall-info-am: ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) diff -Naur newlib-1.17.0.orig/newlib/libc/machine/powerpc/times.c newlib-1.17.0/newlib/libc/machine/powerpc/times.c --- newlib-1.17.0.orig/newlib/libc/machine/powerpc/times.c 2002-07-22 22:26:51.000000000 +0200 +++ newlib-1.17.0/newlib/libc/machine/powerpc/times.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,36 +0,0 @@ -/* Time support routines for PowerPC. - * - * Written by Aldy Hernandez. - */ - -#include <_ansi.h> -#include -#include -#include -#include - -clock_t -times (struct tms *tp) -{ - struct rusage usage; - union { - struct rusage r; - /* Newlib's rusage has only 2 fields. We need to make room for - when we call the system's rusage. This should be enough. */ - int filler[32]; - } host_ru; - - getrusage (RUSAGE_SELF, (void *)&host_ru); - - if (tp) - { - tp->tms_utime = host_ru.r.ru_utime.tv_sec * 1000 - + host_ru.r.ru_utime.tv_usec; - tp->tms_stime = host_ru.r.ru_stime.tv_sec * 1000 - + host_ru.r.ru_stime.tv_usec; - tp->tms_cutime = 0; /* user time, children */ - tp->tms_cstime = 0; /* system time, children */ - } - - return tp->tms_utime; -} diff -Naur newlib-1.17.0.orig/newlib/libc/stdlib/assert.c newlib-1.17.0/newlib/libc/stdlib/assert.c --- newlib-1.17.0.orig/newlib/libc/stdlib/assert.c 2007-06-27 14:44:41.000000000 +0200 +++ newlib-1.17.0/newlib/libc/stdlib/assert.c 2009-09-03 16:22:08.000000000 +0200 @@ -47,6 +47,9 @@ #include #include +#if !defined(__rtems__) +/* RTEMS has a version of its own */ + /* func can be NULL, in which case no function information is given. */ void _DEFUN (__assert_func, (file, line, func, failedexpr), @@ -62,6 +65,7 @@ abort(); /* NOTREACHED */ } +#endif void _DEFUN (__assert, (file, line, failedexpr), diff -Naur newlib-1.17.0.orig/newlib/libc/sys/rtems/crt0.c newlib-1.17.0/newlib/libc/sys/rtems/crt0.c --- newlib-1.17.0.orig/newlib/libc/sys/rtems/crt0.c 2008-12-12 18:11:33.000000000 +0100 +++ newlib-1.17.0/newlib/libc/sys/rtems/crt0.c 2009-09-06 06:40:24.000000000 +0200 @@ -12,15 +12,20 @@ #include +#include // sigset_t +#include // struct timespec + void rtems_provides_crt0( void ) {} /* dummy symbol so file always has one */ -/* RTEMS provides some of its own routines including a Malloc family */ +#define RTEMS_STUB(ret, func) \ +ret rtems_stub_##func {}; \ +ret func -void *malloc() { return 0; } -void *realloc() { return 0; } -void free() { ; } -void abort() { ; } -int raise() { return -1; } +/* RTEMS provides some of its own routines including a Malloc family */ +RTEMS_STUB(void *,malloc(size_t s)) { return 0; } +RTEMS_STUB(void *,realloc(void* p, size_t s)) { return 0; } +RTEMS_STUB(void, free(void)) { ; } +RTEMS_STUB(_PTR, calloc(struct _reent *r, size_t s1, size_t s2)) {} #if defined(__GNUC__) /* @@ -43,54 +48,88 @@ int rtems_gxx_recursive_mutex_unlock() { return -1; } #endif +/* stubs for functions RTEMS provides */ +RTEMS_STUB(int, close (int fd)) { return -1; } +RTEMS_STUB(int, dup2(int oldfd, int newfd)) { return -1; } +RTEMS_STUB(int, fcntl( int fd, int cmd, ... /* arg */ )) { return -1; } +RTEMS_STUB(pid_t, fork(void)) { return -1; } +RTEMS_STUB(int, fstat(int fd, struct stat *buf)) { return -1; } +RTEMS_STUB(int, getdents(int fd, void *dp, int count)) { return -1; } +RTEMS_STUB(char *, getlogin(void)) { return 0; } +RTEMS_STUB(struct passwd *, getpwnam(const char *name)) { return 0; } +RTEMS_STUB(struct passwd *, getpwuid(uid_t uid)) { return 0; } +RTEMS_STUB(uid_t, getuid(void)) { return 0; } +RTEMS_STUB(int, nanosleep(const struct timespec *req, struct timespec *rem)) { return -1; } +RTEMS_STUB(_off_t, lseek(int fd, _off_t offset, int whence)) { return -1; } +RTEMS_STUB(int, lstat(const char *path, struct stat *buf)) { return -1; } +RTEMS_STUB(int, open(const char *pathname, int flags, int mode)) { return -1; } +RTEMS_STUB(int, pipe(int pipefd[2])) { return -1; } +RTEMS_STUB(_ssize_t, read(int fd, void *buf, size_t count)) { return -1; } +RTEMS_STUB(int, sigfillset(sigset_t *set)) { return -1; } +RTEMS_STUB(int, sigprocmask(int how, const sigset_t *set, sigset_t *oldset)) { return -1; } +RTEMS_STUB(int, stat(const char *path, struct stat *buf)) { return -1; } +RTEMS_STUB(int, unlink(const char *pathname)) { return -1; } +RTEMS_STUB(pid_t, vfork(void)) { return -1; } +RTEMS_STUB(int, waitpid (pid_t pid, int *status, int options)) { return -1; } +RTEMS_STUB(_ssize_t, write (int fd, const void *buf, size_t nbytes)) { return -1; } + /* stubs for functions from reent.h */ -int _close_r (struct _reent *r, int fd) { return -1; } -#if NOT_USED_BY_RTEMS -int _execve_r (struct _reent *r, char *, char **, char **) { return -1; } -#endif -int _fcntl_r ( struct _reent *ptr, int fd, int cmd, int arg ) { return -1;} -#if NOT_USED_BY_RTEMS -int _fork_r (struct _reent *r) { return -1; } -#endif -int _fstat_r (struct _reent *r, int fd, struct stat *buf) { return -1; } -int _getpid_r (struct _reent *r) { return -1; } -int _kill_r ( struct _reent *r, int pid, int sig ) { return -1; } -int _link_r ( struct _reent *ptr, const char *existing, const char *new) { return -1; } -_off_t _lseek_r ( struct _reent *ptr, int fd, _off_t offset, int whence ) { return -1; } -int _open_r (struct _reent *r, const char *buf, int flags, int mode) { return -1; } -_ssize_t _read_r (struct _reent *r, int fd, void *buf, size_t nbytes) { return -1; } -#if NOT_USED_BY_RTEMS -void *_sbrk_r (struct _reent *r, ptrdiff_t) { return -1; } -#endif -int _stat_r (struct _reent *r, const char *path, struct stat *buf) { return -1; } -_CLOCK_T_ _times_r (struct _reent *r, struct tms *ptms) { return -1; } -int _unlink_r (struct _reent *r, const char *path) { return -1; } -#if NOT_USED_BY_RTEMS -int _wait_r (struct _reent *r, int *) { return -1; } -#endif -_ssize_t _write_r (struct _reent *r, int fd, const void *buf, size_t nbytes) { return -1; } - -int isatty( int fd ) { return -1; } - -_realloc_r() {} -_calloc_r() {} -_malloc_r() {} -_free_r() {} - -/* stubs for functions required by libc/posix */ -int getdents(int fd, void *dp, int count) { return -1; } -struct timespec; -int nanosleep(const struct timespec *req, struct timespec *rem) { return -1; } -int _execve(const char *path, char * const *argv, char * const *envp) { return -1; } -int _exit(int status) { return -1; } - -/* gcc can implicitly generate references to these */ -/* strcmp() {} */ -/* strcpy() {} */ -/* strlen() {} */ -/* memcmp() {} */ -/* memcpy() {} */ -/* memset() {} */ +RTEMS_STUB(int, _close_r (struct _reent *r, int fd)) { return -1; } +#if defined(_NO_EXECVE) +RTEMS_STUB(int, _execve_r (struct _reent *r, char *, char **, char **)) { return -1; } +#endif +RTEMS_STUB(int, _fcntl_r (struct _reent *ptr, int fd, int cmd, int arg )) { return -1; } +#if !(defined (REENTRANT_SYSCALLS_PROVIDED) || defined (NO_EXEC)) +#ifndef NO_FORK +/* cf. newlib/libc/reent/execr.c */ +RTEMS_STUB(int, _fork_r (struct _reent *r)) { return -1; } +#endif +#endif +RTEMS_STUB(int, _fstat_r (struct _reent *r, int fd, struct stat *buf)) { return -1; } +RTEMS_STUB(int, _getpid_r (struct _reent *r)) { return -1; } +RTEMS_STUB(int, _gettimeofday_r(struct _reent *r, struct timeval *tp, void *tzp)) { return 0; } +RTEMS_STUB(int, _isatty_r (struct _reent *r, int fd)) { return isatty( fd ); } +RTEMS_STUB(int, _kill_r (struct _reent *r, int pid, int sig )) { return -1; } +#if !defined(REENTRANT_SYSCALLS_PROVIDED) +/* cf. newlib/libc/reent/linkr.c */ +RTEMS_STUB(int, _link_r (struct _reent *, const char *, const char *)) { return -1; } +#endif +RTEMS_STUB(_off_t, _lseek_r ( struct _reent *ptr, int fd, _off_t offset, int whence )) { return -1; } +RTEMS_STUB(int, _open_r (struct _reent *r, const char *buf, int flags, int mode)) { return -1; } +RTEMS_STUB(_ssize_t, _read_r (struct _reent *r, int fd, void *buf, size_t nbytes)) { return -1; } +RTEMS_STUB(int, _rename_r (struct _reent *r, const char *a, const char *b)){ return -1; } +#if !(defined (REENTRANT_SYSCALLS_PROVIDED) || defined (MALLOC_PROVIDED)) +/* cf. newlib/libc/reent/sbrkr.c */ +RTEMS_STUB(void *,_sbrk_r (struct _reent *r, ptrdiff_t)) { return -1; } +#endif +RTEMS_STUB(int, _stat_r (struct _reent *r, const char *path, struct stat *buf)) { return -1; } +RTEMS_STUB(_CLOCK_T_, _times_r (struct _reent *r, struct tms *ptms)) { return -1; } +RTEMS_STUB(int, _unlink_r (struct _reent *r, const char *path)) { return -1; } +#if !(defined (REENTRANT_SYSCALLS_PROVIDED) || defined (NO_EXEC)) +/* cf. newlib/libc/reent/execr.c */ +RTEMS_STUB(int, _wait_r (struct _reent *r, int *)) { return -1; } +#endif +RTEMS_STUB(_ssize_t, _write_r (struct _reent *r, int fd, const void *buf, size_t nbytes)) { return -1; } + + +RTEMS_STUB(int, _execve(const char *path, char * const *argv, char * const *envp)) { return -1; } +RTEMS_STUB(void, _exit(int status)) { return ; } + +/* Pulled in by newlib/libc/posix/glob.c */ +#ifndef _NO_GLOB +#ifndef __NETBSD_SYSCALLS +RTEMS_STUB(int, issetugid (void)) { return 0; } +#endif +#endif + +/* stdlib.h */ +RTEMS_STUB(_PTR, _realloc_r(struct _reent *r, _PTR p, size_t s)) {} +RTEMS_STUB(_PTR, _calloc_r(struct _reent *r, size_t s1, size_t s2)) {} +RTEMS_STUB(_PTR, _malloc_r(struct _reent *r, size_t s)) {} +RTEMS_STUB(_VOID, _free_r(struct _reent *r, _PTR p)) {} + +/* stubs for functions required by libc/stdlib */ +RTEMS_STUB(void, __assert_func(const char *file, int line, const char *failedexpr)) {} /* The PowerPC expects certain symbols to be defined in the linker script. */ diff -Naur newlib-1.17.0.orig/newlib/libc/sys/rtems/crt0.c~ newlib-1.17.0/newlib/libc/sys/rtems/crt0.c~ --- newlib-1.17.0.orig/newlib/libc/sys/rtems/crt0.c~ 1970-01-01 01:00:00.000000000 +0100 +++ newlib-1.17.0/newlib/libc/sys/rtems/crt0.c~ 2009-09-04 17:44:49.000000000 +0200 @@ -0,0 +1,194 @@ +/* + * RTEMS Fake crt0 + * + * Each RTEMS BSP provides its own crt0 and linker script. Unfortunately + * this means that crt0 and the linker script are not available as + * each tool is configured. Without a crt0 and linker script, some + * targets do not successfully link "conftest.c" during the configuration + * process. So this fake crt0.c provides all the symbols required to + * successfully link a program. The resulting program will not run + * but this is enough to satisfy the autoconf macro AC_PROG_CC. + */ + +#include + +#include // sigset_t +#include // struct timespec + +void rtems_provides_crt0( void ) {} /* dummy symbol so file always has one */ + +#define RTEMS_STUB(ret, func) \ +ret rtems_stub_##func {}; \ +ret func + +/* RTEMS provides some of its own routines including a Malloc family */ +RTEMS_STUB(void *,malloc(size_t s)) { return 0; } +RTEMS_STUB(void *,realloc(void* p, size_t s)) { return 0; } +RTEMS_STUB(void, free(void)) { ; } +RTEMS_STUB(_PTR, calloc(struct _reent *r, size_t s1, size_t s2)) {} + +#if defined(__GNUC__) +/* + * stubs for libstdc++ rtems-threads support functions from gcc/gthr-rtems.h + */ +int rtems_gxx_once() { return -1; } +int rtems_gxx_key_create() { return -1; } +int rtems_gxx_key_delete() { return -1; } +void *rtems_gxx_getspecific() { return 0; } +int rtems_gxx_setspecific() { return -1; } + +void rtems_gxx_mutex_init() { } +int rtems_gxx_mutex_lock() { return -1; } +int rtems_gxx_mutex_trylock() { return -1; } +int rtems_gxx_mutex_unlock() { return -1; } + +void rtems_gxx_recursive_mutex_init() { } +int rtems_gxx_recursive_mutex_lock() { return -1; } +int rtems_gxx_recursive_mutex_trylock() { return -1; } +int rtems_gxx_recursive_mutex_unlock() { return -1; } +#endif + +/* stubs for functions RTEMS provides */ +RTEMS_STUB(int, close (int fd)) { return -1; } +RTEMS_STUB(int, dup2(int oldfd, int newfd)) { return -1; } +RTEMS_STUB(int, fcntl( int fd, int cmd, ... /* arg */ )) { return -1; } +RTEMS_STUB(pid_t, fork(void)) { return -1; } +RTEMS_STUB(int, fstat(int fd, struct stat *buf)) { return -1; } +RTEMS_STUB(int, getdents(int fd, void *dp, int count)) { return -1; } +RTEMS_STUB(char *, getlogin(void)) { return 0; } +RTEMS_STUB(struct passwd *, getpwnam(const char *name)) { return 0; } +RTEMS_STUB(struct passwd *, getpwuid(uid_t uid)) { return 0; } +RTEMS_STUB(uid_t, getuid(void)) { return 0; } +RTEMS_STUB(int, nanosleep(const struct timespec *req, struct timespec *rem)) { return -1; } +RTEMS_STUB(_off_t, lseek(int fd, _off_t offset, int whence)) { return -1; } +RTEMS_STUB(int, lstat(const char *path, struct stat *buf)) { return -1; } +RTEMS_STUB(int, open(const char *pathname, int flags, int mode)) { return -1; } +RTEMS_STUB(int, pipe(int pipefd[2])) { return -1; } +RTEMS_STUB(_ssize_t, read(int fd, void *buf, size_t count)) { return -1; } +RTEMS_STUB(int, sigfillset(sigset_t *set)) { return -1; } +RTEMS_STUB(int, sigprocmask(int how, const sigset_t *set, sigset_t *oldset)) { return -1; } +RTEMS_STUB(int, stat(const char *path, struct stat *buf)) { return -1; } +RTEMS_STUB(int, unlink(const char *pathname)) { return -1; } +RTEMS_STUB(pid_t, vfork(void)) { return -1; } +RTEMS_STUB(int, waitpid (pid_t pid, int *status, int options)) { return -1; } +RTEMS_STUB(_ssize_t, write (int fd, const void *buf, size_t nbytes)) { return -1; } + +/* stubs for functions from reent.h */ +RTEMS_STUB(int, _close_r (struct _reent *r, int fd)) { return -1; } +#if defined(_NO_EXECVE) +RTEMS_STUB(int, _execve_r (struct _reent *r, char *, char **, char **)) { return -1; } +#endif +RTEMS_STUB(int, _fcntl_r (struct _reent *ptr, int fd, int cmd, int arg )) { return -1; } +#if !(defined (REENTRANT_SYSCALLS_PROVIDED) || defined (NO_EXEC)) +#ifndef NO_FORK +/* cf. newlib/libc/reent/execr.c */ +RTEMS_STUB(int, _fork_r (struct _reent *r)) { return -1; } +#endif +#endif +RTEMS_STUB(int, _fstat_r (struct _reent *r, int fd, struct stat *buf)) { return -1; } +RTEMS_STUB(int, _getpid_r (struct _reent *r)) { return -1; } +RTEMS_STUB(int, _gettimeofday_r(struct _reent *r, struct timeval *tp, void *tzp)) { return 0; } +RTEMS_STUB(int, _isatty_r (struct _reent *r, int fd)) { return isatty( fd ); } +RTEMS_STUB(int, _kill_r (struct _reent *r, int pid, int sig )) { return -1; } +#if !defined(REENTRANT_SYSCALLS_PROVIDED) +/* cf. newlib/libc/reent/linkr.c */ +RTEMS_STUB(int, _link_r (struct _reent *, const char *, const char *)) { return -1; } +#endif +RTEMS_STUB(_off_t, _lseek_r ( struct _reent *ptr, int fd, _off_t offset, int whence )) { return -1; } +RTEMS_STUB(int, _open_r (struct _reent *r, const char *buf, int flags, int mode)) { return -1; } +RTEMS_STUB(_ssize_t, _read_r (struct _reent *r, int fd, void *buf, size_t nbytes)) { return -1; } +RTEMS_STUB(int, _rename_r (struct _reent *r, const char *a, const char *b)){ return -1; } +#if !(defined (REENTRANT_SYSCALLS_PROVIDED) || defined (MALLOC_PROVIDED)) +/* cf. newlib/libc/reent/sbrkr.c */ +RTEMS_STUB(void *,_sbrk_r (struct _reent *r, ptrdiff_t)) { return -1; } +#endif +RTEMS_STUB(int, _stat_r (struct _reent *r, const char *path, struct stat *buf)) { return -1; } +RTEMS_STUB(_CLOCK_T_, _times_r (struct _reent *r, struct tms *ptms)) { return -1; } +RTEMS_STUB(int, _unlink_r (struct _reent *r, const char *path)) { return -1; } +#if !(defined (REENTRANT_SYSCALLS_PROVIDED) || defined (NO_EXEC)) +/* cf. newlib/libc/reent/execr.c */ +RTEMS_STUB(int, _wait_r (struct _reent *r, int *)) { return -1; } +#endif +RTEMS_STUB(_ssize_t, _write_r (struct _reent *r, int fd, const void *buf, size_t nbytes)) { return -1; } + + +RTEMS_STUB(int, _execve(const char *path, char * const *argv, char * const *envp)) { return -1; } +RTEMS_STUB(void, _exit(int status)) { return ; } + +/* Pulled in by newlib/libc/posix/glob.c */ +#ifndef __NETBSD_SYSCALLS +RTEMS_STUB(int, issetugid (void)) { return 0; } +#endif + + +/* stdlib.h */ +RTEMS_STUB(_PTR, _realloc_r(struct _reent *r, _PTR p, size_t s)) {} +RTEMS_STUB(_PTR, _calloc_r(struct _reent *r, size_t s1, size_t s2)) {} +RTEMS_STUB(_PTR, _malloc_r(struct _reent *r, size_t s)) {} +RTEMS_STUB(_VOID, _free_r(struct _reent *r, _PTR p)) {} + +/* stubs for functions required by libc/stdlib */ +RTEMS_STUB(void, __assert_func(const char *file, int line, const char *failedexpr)) {} + +/* The PowerPC expects certain symbols to be defined in the linker script. */ + +#if defined(__PPC__) + int __SDATA_START__; int __SDATA2_START__; + int __GOT_START__; int __GOT_END__; + int __GOT2_START__; int __GOT2_END__; + int __SBSS_END__; int __SBSS2_END__; + int __FIXUP_START__; int __FIXUP_END__; + int __EXCEPT_START__; int __EXCEPT_END__; + int __init; int __fini; + int __CTOR_LIST__; int __CTOR_END__; + int __DTOR_LIST__; int __DTOR_END__; +#endif + +/* The SH expects certain symbols to be defined in the linker script. */ + +#if defined(__sh__) +int __EH_FRAME_BEGIN__; +#endif + +/* The hppa expects this to be defined in the real crt0.s. + * Also for some reason, the hppa1.1 does not find atexit() + * during the AC_PROG_CC tests. + */ + +#if defined(__hppa__) +/* + asm ( ".subspa \$GLOBAL\$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=40"); + asm ( ".export \$global\$" ); + asm ( "\$global\$:"); +*/ + + asm (".text"); + asm (".global"); + asm (".EXPORT $$dyncall,ENTRY"); + asm ("$$dyncall:"); + int atexit(void (*function)(void)) { return 0; } +#endif + + +/* + * The AMD a29k generates code expecting the following. + */ + +#if defined(_AM29000) || defined(_AM29K) +asm (".global V_SPILL, V_FILL" ); +asm (".global V_EPI_OS, V_BSD_OS" ); + +asm (".equ V_SPILL, 64" ); +asm (".equ V_FILL, 65" ); + +asm (".equ V_BSD_OS, 66" ); +asm (".equ V_EPI_OS, 69" ); +#endif + +#if defined(__AVR__) +/* + * Initial stack pointer address "__stack" + * hard coded into GCC instead of providing it through ldscripts + */ +const char* __stack ; +#endif diff -Naur newlib-1.17.0.orig/newlib/libc/sys/rtems/machine/stdint.h newlib-1.17.0/newlib/libc/sys/rtems/machine/stdint.h --- newlib-1.17.0.orig/newlib/libc/sys/rtems/machine/stdint.h 1970-01-01 01:00:00.000000000 +0100 +++ newlib-1.17.0/newlib/libc/sys/rtems/machine/stdint.h 2009-09-03 16:22:08.000000000 +0200 @@ -0,0 +1,48 @@ +/* + * + */ +#ifndef _MACHINE_STDINT_H +#define _MACHINE_STDINT_H + +#ifndef _STDINT_H +#error machine/stdint.h is an internal file and must not be directly included +#endif + +#ifndef __rtems__ +#error machine/stdint.h is an RTEMS specific internal file and must not be used otherwise +#endif + +#if defined(__m32c__) || defined(__m32r__) || defined(__lm32__) +#if (__SIZEOF_PTRDIFF_T__ == __SIZEOF_LONG__) +#define __ptrint_t_long_defined 1 +#endif +#if (__SIZEOF_PTRDIFF_T__ == __SIZEOF_INT__) +#define __ptrint_t_int_defined 1 +#endif +#endif + +#if defined(__sparc__) \ + || defined(__powerpc__) || defined(__PPC__) \ + || defined(__mips__) \ + || defined(__sh__) \ + || defined(__AVR__) \ + || defined(_C4x) || defined(_C3x) \ + || defined(__H8300__) +/* PTRDIFF_TYPE = int */ +#define __ptrint_t_int_defined 1 +#endif + +#if defined(__i386__) \ + || defined(__m68k__) \ + || defined(__bfin__) \ + || defined(__arm__) \ + || defined(__H8300S__) || defined(__H8300H__) || defined(__H8300SX__) \ +/* PTRDIFF_TYPE = long */ +#define __ptrint_t_long_defined 1 +#endif + +#if !defined(__ptrint_t_int_defined) && !defined(__ptrint_t_long_defined) +#error Failed to determine ptrint_t +#endif + +#endif diff -Naur newlib-1.17.0.orig/newlib/libc/sys/rtems/sys/param.h newlib-1.17.0/newlib/libc/sys/rtems/sys/param.h --- newlib-1.17.0.orig/newlib/libc/sys/rtems/sys/param.h 2008-11-17 23:05:12.000000000 +0100 +++ newlib-1.17.0/newlib/libc/sys/rtems/sys/param.h 2009-09-03 16:22:08.000000000 +0200 @@ -15,10 +15,6 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -47,7 +43,6 @@ #include #include -# define HZ (60) # define PATHSIZE (1024) /* end of from newlib's */ @@ -86,13 +81,13 @@ #define MAXHOSTNAMELEN 256 /* max hostname size */ /* More types and definitions used throughout the kernel. */ -#ifdef KERNEL +#if defined(KERNEL) || defined(_KERNEL) #include #include #include #include -#include #include +#include #ifndef FALSE #define FALSE 0 @@ -109,23 +104,6 @@ #include #include -/* - * Priorities. Note that with 32 run queues, differences less than 4 are - * insignificant. - */ -#define PSWP 0 -#define PVM 4 -#define PINOD 8 -#define PRIBIO 16 -#define PVFS 20 -#define PZERO 22 /* No longer magic, shouldn't be here. XXX */ -#define PSOCK 24 -#define PWAIT 32 -#define PLOCK 36 -#define PPAUSE 40 -#define PUSER 50 -#define MAXPRI 127 /* Priorities range from 0 through MAXPRI. */ - #define PRIMASK 0x0ff #define PCATCH 0x100 /* OR'd with pri for tsleep to check signals */ @@ -136,15 +114,6 @@ #define CMASK 022 /* default file mask: S_IWGRP|S_IWOTH */ #define NODEV (dev_t)(-1) /* non-existent device */ -/* - * Clustering of hardware pages on machines with ridiculously small - * page sizes is done here. The paging subsystem deals with units of - * CLSIZE pte's describing PAGE_SIZE (from machine/machparam.h) pages each. - */ -#if 0 -#define CLBYTES (CLSIZE*PAGE_SIZE) -#endif - #define CBLOCK 128 /* Clist block size, must be a power of 2. */ #define CBQSIZE (CBLOCK/NBBY) /* Quote bytes/cblock - can do better. */ /* Data chars/clist. */ @@ -200,7 +169,7 @@ #define powerof2(x) ((((x)-1)&(x))==0) /* Macros for min/max. */ -#ifndef KERNEL +#if !(defined(KERNEL) || defined(_KERNEL)) #define MIN(a,b) (((a)<(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b)) #endif diff -Naur newlib-1.17.0.orig/newlib/libc/unix/Makefile.am newlib-1.17.0/newlib/libc/unix/Makefile.am --- newlib-1.17.0.orig/newlib/libc/unix/Makefile.am 2006-05-02 00:01:07.000000000 +0200 +++ newlib-1.17.0/newlib/libc/unix/Makefile.am 2009-09-03 16:22:08.000000000 +0200 @@ -12,7 +12,8 @@ ## Distinguish different EL/IX level interfaces ELIX_2_SOURCES = \ - ttyname.c + ttyname.c \ + ttyname_r.c ELIX_4_SOURCES = \ basename.c \ diff -Naur newlib-1.17.0.orig/newlib/libc/unix/Makefile.in newlib-1.17.0/newlib/libc/unix/Makefile.in --- newlib-1.17.0.orig/newlib/libc/unix/Makefile.in 2009-06-29 11:05:21.000000000 +0200 +++ newlib-1.17.0/newlib/libc/unix/Makefile.in 2009-09-03 16:22:08.000000000 +0200 @@ -59,7 +59,7 @@ lib_a_LIBADD = am__objects_1 = lib_a-getcwd.$(OBJEXT) lib_a-pread.$(OBJEXT) \ lib_a-pwrite.$(OBJEXT) lib_a-sigset.$(OBJEXT) -am__objects_2 = lib_a-ttyname.$(OBJEXT) +am__objects_2 = lib_a-ttyname.$(OBJEXT) lib_a-ttyname_r.$(OBJEXT) am__objects_3 = lib_a-basename.$(OBJEXT) lib_a-dirname.$(OBJEXT) \ lib_a-getlogin.$(OBJEXT) lib_a-getpass.$(OBJEXT) \ lib_a-getpwent.$(OBJEXT) lib_a-getut.$(OBJEXT) @@ -74,7 +74,7 @@ LTLIBRARIES = $(noinst_LTLIBRARIES) libunix_la_LIBADD = am__objects_5 = getcwd.lo pread.lo pwrite.lo sigset.lo -am__objects_6 = ttyname.lo +am__objects_6 = ttyname.lo ttyname_r.lo am__objects_7 = basename.lo dirname.lo getlogin.lo getpass.lo \ getpwent.lo getut.lo @ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@am__objects_8 = $(am__objects_6) \ @@ -278,7 +278,8 @@ sigset.c ELIX_2_SOURCES = \ - ttyname.c + ttyname.c \ + ttyname_r.c ELIX_4_SOURCES = \ basename.c \ @@ -402,6 +403,12 @@ lib_a-ttyname.obj: ttyname.c $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-ttyname.obj `if test -f 'ttyname.c'; then $(CYGPATH_W) 'ttyname.c'; else $(CYGPATH_W) '$(srcdir)/ttyname.c'; fi` +lib_a-ttyname_r.o: ttyname_r.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-ttyname_r.o `test -f 'ttyname_r.c' || echo '$(srcdir)/'`ttyname_r.c + +lib_a-ttyname_r.obj: ttyname_r.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-ttyname_r.obj `if test -f 'ttyname_r.c'; then $(CYGPATH_W) 'ttyname_r.c'; else $(CYGPATH_W) '$(srcdir)/ttyname_r.c'; fi` + lib_a-basename.o: basename.c $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-basename.o `test -f 'basename.c' || echo '$(srcdir)/'`basename.c diff -Naur newlib-1.17.0.orig/newlib/libc/unix/ttyname.c newlib-1.17.0/newlib/libc/unix/ttyname.c --- newlib-1.17.0.orig/newlib/libc/unix/ttyname.c 2008-11-18 23:55:06.000000000 +0100 +++ newlib-1.17.0/newlib/libc/unix/ttyname.c 2009-09-03 16:22:08.000000000 +0200 @@ -28,67 +28,14 @@ * SUCH DAMAGE. */ -#include -#include -#include +#include "ttyname.h" + #include #include -#include #include -#include <_syslist.h> #include -static char ttyname_buf[sizeof (_PATH_DEV) + MAXNAMLEN] = _PATH_DEV; - -/* - * ttyname_r() - POSIX 1003.1b 4.7.2 - Determine Terminal Device Name - */ -int -_DEFUN( ttyname_r,(fd, name, namesize), - int fd _AND - char *name _AND - size_t namesize) -{ - struct stat sb; - struct dirent *dirp; - DIR *dp; - struct stat dsb; - char buf[sizeof(ttyname_buf)]; - - /* Must be a terminal. */ - if (!isatty(fd)) - return ENOTTY; - - /* Must be a character device. */ - if (fstat (fd, &sb) || !S_ISCHR (sb.st_mode)) - return ENOTTY; - - if ((dp = opendir (_PATH_DEV)) == NULL) - return EBADF; - - strcpy(buf, _PATH_DEV); - while ((dirp = readdir (dp)) != NULL) - { - if (dirp->d_ino != sb.st_ino) - continue; - strcpy (buf + sizeof (_PATH_DEV) - 1, dirp->d_name); - if (stat (buf, &dsb) || sb.st_dev != dsb.st_dev || - sb.st_ino != dsb.st_ino) - continue; - (void) closedir (dp); - if(strlen(buf) < namesize) /* < to account for terminating null */ - { - strcpy(name, buf); - return 0; - } - else - { - return ERANGE; - } - } - (void) closedir (dp); - return EBADF; -} +static char ttyname_buf[TTYNAME_BUFSIZE] = _PATH_DEV; /* * ttyname() - POSIX 1003.1b 4.7.2 - Determine Terminal Device Name diff -Naur newlib-1.17.0.orig/newlib/libc/unix/ttyname.h newlib-1.17.0/newlib/libc/unix/ttyname.h --- newlib-1.17.0.orig/newlib/libc/unix/ttyname.h 1970-01-01 01:00:00.000000000 +0100 +++ newlib-1.17.0/newlib/libc/unix/ttyname.h 2009-09-03 16:22:08.000000000 +0200 @@ -0,0 +1,6 @@ +/* Common defines for ttyname.c and ttyname_r.c */ + +#include /* For MAXNAMLEN */ +#include /* For _PATH_DEV */ + +#define TTYNAME_BUFSIZE (sizeof (_PATH_DEV) + MAXNAMLEN) diff -Naur newlib-1.17.0.orig/newlib/libc/unix/ttyname_r.c newlib-1.17.0/newlib/libc/unix/ttyname_r.c --- newlib-1.17.0.orig/newlib/libc/unix/ttyname_r.c 1970-01-01 01:00:00.000000000 +0100 +++ newlib-1.17.0/newlib/libc/unix/ttyname_r.c 2009-09-03 16:22:08.000000000 +0200 @@ -0,0 +1,93 @@ +#ifndef _NO_TTYNAME +/* + * Copyright (c) 1988 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "ttyname.h" + +#include +#include +#include +#include +#include +#include +#include +#include <_syslist.h> +#include + +/* + * ttyname_r() - POSIX 1003.1b 4.7.2 - Determine Terminal Device Name + */ +int +_DEFUN( ttyname_r,(fd, name, namesize), + int fd _AND + char *name _AND + size_t namesize) +{ + struct stat sb; + struct dirent *dirp; + DIR *dp; + struct stat dsb; + char buf[TTYNAME_BUFSIZE]; + + /* Must be a terminal. */ + if (!isatty(fd)) + return ENOTTY; + + /* Must be a character device. */ + if (fstat (fd, &sb) || !S_ISCHR (sb.st_mode)) + return ENOTTY; + + if ((dp = opendir (_PATH_DEV)) == NULL) + return EBADF; + + strcpy(buf, _PATH_DEV); + while ((dirp = readdir (dp)) != NULL) + { + if (dirp->d_ino != sb.st_ino) + continue; + strcpy (buf + sizeof (_PATH_DEV) - 1, dirp->d_name); + if (stat (buf, &dsb) || sb.st_dev != dsb.st_dev || + sb.st_ino != dsb.st_ino) + continue; + (void) closedir (dp); + if(strlen(buf) < namesize) /* < to account for terminating null */ + { + strcpy(name, buf); + return 0; + } + else + { + return ERANGE; + } + } + (void) closedir (dp); + return EBADF; +} + +#endif /* !_NO_TTYNAME */ diff -Naur newlib-1.17.0.orig/newlib/Makefile.am newlib-1.17.0/newlib/Makefile.am --- newlib-1.17.0.orig/newlib/Makefile.am 2008-01-21 19:29:17.000000000 +0100 +++ newlib-1.17.0/newlib/Makefile.am 2009-09-03 16:22:08.000000000 +0200 @@ -81,7 +81,7 @@ libc.a endif -noinst_DATA = stmp-targ-include +BUILT_SOURCES = stmp-targ-include toollib_DATA = $(CRT0) $(CRT1) @@ -186,9 +186,6 @@ $(CRT1_DIR)$(CRT1): ; @true - -all-recursive: stmp-targ-include - # The targ-include directory just holds the includes files for the # particular system and machine we have been configured for. It is # used while building. diff -Naur newlib-1.17.0.orig/newlib/Makefile.in newlib-1.17.0/newlib/Makefile.in --- newlib-1.17.0.orig/newlib/Makefile.in 2009-06-29 11:05:19.000000000 +0200 +++ newlib-1.17.0/newlib/Makefile.in 2009-09-03 16:22:08.000000000 +0200 @@ -106,7 +106,7 @@ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive toollibDATA_INSTALL = $(INSTALL_DATA) -DATA = $(noinst_DATA) $(toollib_DATA) +DATA = $(toollib_DATA) ETAGS = etags CTAGS = ctags DEJATOOL = $(PACKAGE) @@ -350,7 +350,7 @@ @USE_LIBTOOL_FALSE@toollib_LIBRARIES = libm.a \ @USE_LIBTOOL_FALSE@ libc.a -noinst_DATA = stmp-targ-include +BUILT_SOURCES = stmp-targ-include toollib_DATA = $(CRT0) $(CRT1) # The functions ldexp, frexp and modf are traditionally supplied in @@ -409,7 +409,7 @@ # dejagnu support RUNTESTFLAGS = -all: newlib.h +all: $(BUILT_SOURCES) newlib.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: @@ -714,14 +714,16 @@ done check-am: $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU -check: check-recursive +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(DATA) newlib.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollibdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done -install: install-recursive +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive @@ -746,6 +748,7 @@ maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-recursive clean-am: clean-generic clean-libtool clean-toollibLIBRARIES \ @@ -864,8 +867,6 @@ $(CRT1_DIR)$(CRT1): ; @true -all-recursive: stmp-targ-include - # The targ-include directory just holds the includes files for the # particular system and machine we have been configured for. It is # used while building.