This is the mail archive of the newlib@sourceware.cygnus.com 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] |
Hi, I have been behind in cleaning up my patch queue. Attached is the patch that is distributed with RTEMS for newlib 1.8.1. I think it has a ChangeLog entry for each of the changes. If there are any problems or questions with this patch, feel free to ask. Thanks. --joel Joel Sherrill Director of Research & Development joel@OARcorp.com On-Line Applications Research Ask me about RTEMS: a free RTOS Huntsville AL 35805 Support Available (256) 722-9985
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/ChangeLog newlib-1.8.1/newlib/ChangeLog
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/ChangeLog Mon Jun 1 10:51:07 1998
--- newlib-1.8.1/newlib/ChangeLog Mon Jan 25 15:19:46 1999
***************
*** 1,3 ****
--- 1,53 ----
+ Tue Jan 19 10:18:34 CST 1999 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
+
+ * libc/machine/sh/*.S: Most were broken either for SH1 (invalid
+ instructions) or for later tool versions that supported the SH4.
+
+ Wed Jan 13 16:43:02 CST 1999 Joel Sherrill <joel@OARcorp.com>
+
+ * configure.in: Corrected feature defines.
+ * libc/include/stdio.h: Defined NULL as simple 0.
+ * libc/include/stdlib.h: Defined NULL as simple 0.
+ * libc/include/string.h: Defined NULL as simple 0.
+ * libc/include/sys/stat.h: Added protototype for RTEMS mknod.
+ * libc/include/sys/stat.h: mkfifo() should take const path arg.
+ * libc/include/sys/unistd.h: pathconf() should take const path arg.
+ * libc/include/unistd.h: Enabled usleep(), ftruncate(), and truncate()
+ prototypes for RTEMS.
+ * libc/include/unistd.h: Added defines for _POSIX_JOB_CONTROL,
+ _POSIX_SAVED_IDS, and _POSIX_VERSION for RTEMS.
+ * libc/include/unistd.h: Added defines for _PC_ASYNC_IO,
+ _PC_PRIO_IO, and _PC_SYNC_IO.
+ * libc/include/time.h: Defined NULL as simple 0.
+ * libc/machine/i386/setjmp.h: New file.
+ * libc/machine/i960/Makefile.in: Now builds setjmp.S.
+ * libc/machine/i960/setjmp.S: Commented out .link_pix directive.
+ * libc/posix/rewinddir.c: Fixed to use much simpler implementation.
+ * libc/stdio/tmpnam.c: Always make the returned name usable.
+ * libc/sys/rtems/crt0.c: New version that passes all autoconf tests.
+ * libc/sys/rtems/sys/dirent.h: New file.
+ * libc/sys/rtems/sys/types.h: Added dev_t.
+
+ 1998-12-15 Nick Clifton <nickc@cygnus.com>
+
+ * libc/string/memchr.c: Treat 'c' argument as an unsigned byte not
+ a signed int.
+
+ Thu Mar 26 08:13:52 CST 1998 Eric Norum <eric@skatter.usask.ca>
+
+ * libc/machine/m68k/Makefile.in: Added references to strcpy and strlen.
+ * libc/machine/m68k/strcpy.c: New file.
+ * libc/machine/m68k/strlen.c: New file.
+
+ Thu May 21 12:31:38 CDT 1998 Eric Norum <eric@skatter.usask.ca>
+
+ * libc/string/strerror.c: Added socket error messages.
+
+
+ Tue Mar 31 09:55:39 CST 1998 Joel Sherrill <joel@OARcorp.com
+
+ * configure.in: Added posix_dir to RTEMS target.
+
Fri May 29 03:04:29 1998 Geoffrey Noer <noer@cygnus.com>
* libc/include/sys/fcntl.h: add _close proto for Cygwin32
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/configure.in newlib-1.8.1/newlib/configure.in
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/configure.in Mon Jun 1 10:51:08 1998
--- newlib-1.8.1/newlib/configure.in Mon Feb 8 11:21:04 1999
***************
*** 191,196 ****
--- 191,197 ----
;;
*-*-rtems*) # generic RTEMS support
sys_dir=rtems
+ posix_dir=posix
;;
a29k-*-*)
sys_dir=a29khif
***************
*** 286,292 ****
#
# NOTE: When newlib malloc uses a semaphore, RTEMS will switch to that.
*-*-rtems*)
! target_cflags="${target_cflags} -DHAVE_GETTIMEOFDAY -DMALLOC_PROVIDED -DEXIT_PROVIDED -DMISSING_SYSCALL_NAMES -DSIGNAL_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED"
;;
# VxWorks supplies its own version of malloc, and the newlib one
# doesn't work because VxWorks does not have sbrk.
--- 287,293 ----
#
# NOTE: When newlib malloc uses a semaphore, RTEMS will switch to that.
*-*-rtems*)
! target_cflags="${target_cflags} -DHAVE_GETTIMEOFDAY -DMALLOC_PROVIDED -DEXIT_PROVIDED -DMISSING_SYSCALL_NAMES -DSIGNAL_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_OPENDIR"
;;
# VxWorks supplies its own version of malloc, and the newlib one
# doesn't work because VxWorks does not have sbrk.
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/include/stdio.h newlib-1.8.1/newlib/libc/include/stdio.h
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/include/stdio.h Fri May 29 17:02:43 1998
--- newlib-1.8.1/newlib/libc/include/stdio.h Mon Jan 25 15:19:46 1999
***************
*** 81,87 ****
#define _IONBF 2 /* setvbuf should set unbuffered */
#ifndef NULL
! #define NULL 0L
#endif
#define BUFSIZ 1024
--- 81,87 ----
#define _IONBF 2 /* setvbuf should set unbuffered */
#ifndef NULL
! #define NULL 0
#endif
#define BUFSIZ 1024
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/include/stdlib.h newlib-1.8.1/newlib/libc/include/stdlib.h
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/include/stdlib.h Fri May 29 17:02:43 1998
--- newlib-1.8.1/newlib/libc/include/stdlib.h Mon Jan 25 15:19:46 1999
***************
*** 31,37 ****
} ldiv_t;
#ifndef NULL
! #define NULL 0L
#endif
#define EXIT_FAILURE 1
--- 31,37 ----
} ldiv_t;
#ifndef NULL
! #define NULL 0
#endif
#define EXIT_FAILURE 1
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/include/string.h newlib-1.8.1/newlib/libc/include/string.h
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/include/string.h Fri May 29 17:02:43 1998
--- newlib-1.8.1/newlib/libc/include/string.h Mon Jan 25 15:19:46 1999
***************
*** 17,23 ****
#include <stddef.h>
#ifndef NULL
! #define NULL 0L
#endif
_PTR _EXFUN(memchr,(const _PTR, int, size_t));
--- 17,23 ----
#include <stddef.h>
#ifndef NULL
! #define NULL 0
#endif
_PTR _EXFUN(memchr,(const _PTR, int, size_t));
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/include/sys/stat.h newlib-1.8.1/newlib/libc/include/sys/stat.h
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/include/sys/stat.h Fri May 29 17:02:45 1998
--- newlib-1.8.1/newlib/libc/include/sys/stat.h Mon Jan 25 15:19:46 1999
***************
*** 120,128 ****
int _EXFUN(fchmod,(int _fd, mode_t _mode));
int _EXFUN(fstat,( int _fd, struct stat *_sbuf ));
int _EXFUN(mkdir,( const char *_path, mode_t _mode ));
! int _EXFUN(mkfifo,( char *_path, mode_t _mode ));
int _EXFUN(stat,( const char *_path, struct stat *_sbuf ));
mode_t _EXFUN(umask,( mode_t _mask ));
/* Provide prototypes for most of the _<systemcall> names that are
provided in newlib for some compilers. */
--- 120,132 ----
int _EXFUN(fchmod,(int _fd, mode_t _mode));
int _EXFUN(fstat,( int _fd, struct stat *_sbuf ));
int _EXFUN(mkdir,( const char *_path, mode_t _mode ));
! int _EXFUN(mkfifo,( const char *_path, mode_t _mode ));
int _EXFUN(stat,( const char *_path, struct stat *_sbuf ));
mode_t _EXFUN(umask,( mode_t _mask ));
+
+ #if defined(__rtems__)
+ int _EXFUN(mknod,( const char *_path, mode_t _mode, dev_t dev ));
+ #endif
/* Provide prototypes for most of the _<systemcall> names that are
provided in newlib for some compilers. */
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/include/sys/unistd.h newlib-1.8.1/newlib/libc/include/sys/unistd.h
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/include/sys/unistd.h Fri May 29 17:02:46 1998
--- newlib-1.8.1/newlib/libc/include/sys/unistd.h Mon Jan 25 15:19:46 1999
***************
*** 52,58 ****
int _EXFUN(isatty, (int _fildes ));
int _EXFUN(link, (const char *_path1, const char *_path2 ));
off_t _EXFUN(lseek, (int _fildes, off_t _offset, int _whence ));
! long _EXFUN(pathconf, (char *_path, int _name ));
int _EXFUN(pause, (void ));
int _EXFUN(pipe, (int _fildes[2] ));
int _EXFUN(read, (int _fildes, void *_buf, size_t _nbyte ));
--- 52,58 ----
int _EXFUN(isatty, (int _fildes ));
int _EXFUN(link, (const char *_path1, const char *_path2 ));
off_t _EXFUN(lseek, (int _fildes, off_t _offset, int _whence ));
! long _EXFUN(pathconf, (const char *_path, int _name ));
int _EXFUN(pause, (void ));
int _EXFUN(pipe, (int _fildes[2] ));
int _EXFUN(read, (int _fildes, void *_buf, size_t _nbyte ));
***************
*** 83,89 ****
int _EXFUN(_unlink, (const char *_path ));
int _EXFUN(_write, (int _fildes, const void *_buf, size_t _nbyte ));
! #ifdef __CYGWIN32__
unsigned _EXFUN(usleep, (unsigned int _useconds ));
int _EXFUN(ftruncate, (int fd, off_t length));
int _EXFUN(truncate, (const char *, off_t length));
--- 83,89 ----
int _EXFUN(_unlink, (const char *_path ));
int _EXFUN(_write, (int _fildes, const void *_buf, size_t _nbyte ));
! #if defined(__CYGWIN32__) || defined(__rtems__)
unsigned _EXFUN(usleep, (unsigned int _useconds ));
int _EXFUN(ftruncate, (int fd, off_t length));
int _EXFUN(truncate, (const char *, off_t length));
***************
*** 101,111 ****
--- 101,127 ----
# define SEEK_CUR 1
# define SEEK_END 2
+ /*
+ * RTEMS adheres to a later version of POSIX -- 1003.1b.
+ *
+ * XXX this version string should change.
+ */
+
+ #ifdef __rtems__
+ #ifndef _POSIX_JOB_CONTROL
+ # define _POSIX_JOB_CONTROL 1
+ #endif
+ #ifndef _POSIX_SAVED_IDS
+ # define _POSIX_SAVED_IDS 1
+ #endif
+ # define _POSIX_VERSION 199009L
+ #else
#ifdef __svr4__
# define _POSIX_JOB_CONTROL 1
# define _POSIX_SAVED_IDS 1
# define _POSIX_VERSION 199009L
#endif
+ #endif
#ifdef __CYGWIN32__
# define _POSIX_JOB_CONTROL 1
***************
*** 139,144 ****
--- 155,163 ----
# define _PC_CHOWN_RESTRICTED 6
# define _PC_NO_TRUNC 7
# define _PC_VDISABLE 8
+ # define _PC_ASYNC_IO 9
+ # define _PC_PRIO_IO 10
+ # define _PC_SYNC_IO 11
# ifndef _POSIX_SOURCE
# define MAXNAMLEN 1024
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/include/time.h newlib-1.8.1/newlib/libc/include/time.h
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/include/time.h Fri May 29 17:02:43 1998
--- newlib-1.8.1/newlib/libc/include/time.h Mon Jan 25 15:19:46 1999
***************
*** 13,19 ****
#include "_ansi.h"
#ifndef NULL
! #define NULL 0L
#endif
#define CLOCKS_PER_SEC 1000 /* Machine dependent */
--- 13,19 ----
#include "_ansi.h"
#ifndef NULL
! #define NULL 0
#endif
#define CLOCKS_PER_SEC 1000 /* Machine dependent */
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/i386/setjmp.h newlib-1.8.1/newlib/libc/machine/i386/setjmp.h
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/i386/setjmp.h Wed Dec 31 18:00:00 1969
--- newlib-1.8.1/newlib/libc/machine/i386/setjmp.h Mon Jan 25 15:19:46 1999
***************
*** 0 ****
--- 1,41 ----
+ /*
+ ** Copyright (C) 1991 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
+ **
+ ** This file is distributed under the terms listed in the document
+ ** "copying.dj", available from DJ Delorie at the address above.
+ ** A copy of "copying.dj" should accompany this file; if not, a copy
+ ** should be available from where this file was obtained. This file
+ ** may not be distributed without a verbatim copy of "copying.dj".
+ **
+ ** This file is distributed WITHOUT ANY WARRANTY; without even the implied
+ ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+ #ifndef _SETJMP_H_
+ #define _SETJMP_H_
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+ typedef struct {
+ unsigned long eax;
+ unsigned long ebx;
+ unsigned long ecx;
+ unsigned long edx;
+ unsigned long esi;
+ unsigned long edi;
+ unsigned long ebp;
+ unsigned long esp;
+ unsigned long eip;
+ } jmp_buf[1];
+
+ extern int setjmp(jmp_buf);
+ extern void longjmp(jmp_buf, int);
+
+ #ifdef __cplusplus
+ }
+ #endif
+
+ #endif
+
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/i960/Makefile.in newlib-1.8.1/newlib/libc/machine/i960/Makefile.in
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/i960/Makefile.in Fri May 29 17:02:55 1998
--- newlib-1.8.1/newlib/libc/machine/i960/Makefile.in Mon Jan 25 15:19:46 1999
***************
*** 25,31 ****
#### Host, target, and site specific Makefile fragments come in here.
###
! OFILES=\
all: lib.a
--- 25,36 ----
#### Host, target, and site specific Makefile fragments come in here.
###
! # Eventually these all should be made to work
! #OFILES = memccpy.o memchr.o memcmp.o memcpy.o memset.o setjmp.o strchr.o \
! #strcmp.o strcpy.o strcspn.o strdup.o strlen.o strncat.o strncmp.o \
! #strncpy.o strpbrk.o strrchr.o
!
! OFILES=setjmp.o
all: lib.a
***************
*** 43,45 ****
--- 48,52 ----
Makefile: Makefile.in $(host_makefile_frag) $(target_makefile_frag)
$(SHELL) config.status
+
+
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/i960/setjmp.S newlib-1.8.1/newlib/libc/machine/i960/setjmp.S
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/i960/setjmp.S Fri May 29 17:02:56 1998
--- newlib-1.8.1/newlib/libc/machine/i960/setjmp.S Mon Jan 25 15:19:46 1999
***************
*** 35,41 ****
/******************************************************************************/
.file "setjmp.as"
.text
! .link_pix
.align 4
.globl _setjmp
--- 35,41 ----
/******************************************************************************/
.file "setjmp.as"
.text
! /* .link_pix */
.align 4
.globl _setjmp
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/m68k/Makefile.in newlib-1.8.1/newlib/libc/machine/m68k/Makefile.in
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/m68k/Makefile.in Fri May 29 17:03:00 1998
--- newlib-1.8.1/newlib/libc/machine/m68k/Makefile.in Mon Jan 25 15:19:46 1999
***************
*** 27,35 ****
SFILES= setjmp.S
! OFILES= setjmp.o
! CFILES=
all: lib.a
lib.a: $(OFILES)
--- 27,35 ----
SFILES= setjmp.S
! CFILES= strcpy.c strlen.c
! OFILES= setjmp.o strcpy.o strlen.o
all: lib.a
lib.a: $(OFILES)
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/m68k/strcpy.c newlib-1.8.1/newlib/libc/machine/m68k/strcpy.c
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/m68k/strcpy.c Wed Dec 31 18:00:00 1969
--- newlib-1.8.1/newlib/libc/machine/m68k/strcpy.c Mon Jan 25 15:19:46 1999
***************
*** 0 ****
--- 1,36 ----
+ /*
+ * C library strcpy routine
+ *
+ * This routine has been optimized for the CPU32+.
+ * It should run on all 68k machines.
+ *
+ * W. Eric Norum
+ * Saskatchewan Accelerator Laboratory
+ * University of Saskatchewan
+ * Saskatoon, Saskatchewan, CANADA
+ * eric@skatter.usask.ca
+ */
+
+ #include <string.h>
+
+ /*
+ * Copy bytes using CPU32+ loop mode if possible
+ */
+
+ char *
+ strcpy (char *to, const char *from)
+ {
+ char *pto = to;
+ unsigned int n = 0xFFFF;
+
+ asm volatile ("1:\n"
+ "\tmove.b (%0)+,(%1)+\n"
+ #if defined(__mcpu32__)
+ "\tdbeq %2,1b\n"
+ #endif
+ "\tbne.b 1b\n" :
+ "=a" (from), "=a" (pto), "=d" (n) :
+ "0" (from), "1" (pto), "2" (n) :
+ "cc", "memory");
+ return to;
+ }
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/m68k/strlen.c newlib-1.8.1/newlib/libc/machine/m68k/strlen.c
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/m68k/strlen.c Wed Dec 31 18:00:00 1969
--- newlib-1.8.1/newlib/libc/machine/m68k/strlen.c Mon Jan 25 15:19:46 1999
***************
*** 0 ****
--- 1,35 ----
+ /*
+ * C library strlen routine
+ *
+ * This routine has been optimized for the CPU32+.
+ * It should run on all 68k machines.
+ *
+ * W. Eric Norum
+ * Saskatchewan Accelerator Laboratory
+ * University of Saskatchewan
+ * Saskatoon, Saskatchewan, CANADA
+ * eric@skatter.usask.ca
+ */
+
+ #include <string.h>
+
+ /*
+ * Test bytes using CPU32+ loop mode if possible.
+ */
+ size_t
+ strlen (const char *str)
+ {
+ unsigned int n = ~0;
+ const char *cp = str;
+
+ asm volatile ("1:\n"
+ "\ttst.b (%0)+\n"
+ #if defined(__mcpu32__)
+ "\tdbeq %1,1b\n"
+ #endif
+ "\tbne.b 1b\n" :
+ "=a" (cp), "=d" (n) :
+ "0" (cp), "1" (n) :
+ "cc");
+ return (cp - str) - 1;
+ }
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/sh/memcpy.S newlib-1.8.1/newlib/libc/machine/sh/memcpy.S
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/sh/memcpy.S Fri May 29 17:03:05 1998
--- newlib-1.8.1/newlib/libc/machine/sh/memcpy.S Mon Jan 25 15:19:46 1999
***************
*** 33,39 ****
#include "asm.h"
#if (defined (__sh2__) || defined (__sh3__) || defined (__SH3E__) \
! || defined (__SH4__)) || defined(__SH4_SINGLE_ONLY__)
#define DELAYED_BRANCHES
#define SL(branch, dest, in_slot, in_slot_arg2) \
branch##.s dest; in_slot, in_slot_arg2
--- 33,40 ----
#include "asm.h"
#if (defined (__sh2__) || defined (__sh3__) || defined (__SH3E__) \
! || defined (__SH4__)) || defined(__SH4_SINGLE__) \
! || defined(__SH4_SINGLE_ONLY__)
#define DELAYED_BRANCHES
#define SL(branch, dest, in_slot, in_slot_arg2) \
branch##.s dest; in_slot, in_slot_arg2
***************
*** 141,148 ****
sub r4,r5
mov #11,r1
cmp/hs r1,r6
! SL(bf, L_small,
! add #-1,r5)
mov r5,r3
add r0,r3
shlr r3
--- 142,148 ----
sub r4,r5
mov #11,r1
cmp/hs r1,r6
! SL(bf, L_small, add #-1,r5)
mov r5,r3
add r0,r3
shlr r3
***************
*** 154,161 ****
L_even:
tst #1,r0
add #-1,r5
! SL(bf, L_odddst,
! add #8,r7)
tst #2,r0
bt L_al4dst
add #-1,r3
--- 154,160 ----
L_even:
tst #1,r0
add #-1,r5
! SL(bf, L_odddst, add #8,r7)
tst #2,r0
bt L_al4dst
add #-1,r3
***************
*** 188,195 ****
L_al4both_loop:
mov.l @(r0,r5),r1
cmp/hs r7,r0
! SL(bt, L_al4both_loop,
! mov.l r1,@-r0)
bra L_cleanup
add #3,r5
--- 187,193 ----
L_al4both_loop:
mov.l @(r0,r5),r1
cmp/hs r7,r0
! SL(bt, L_al4both_loop, mov.l r1,@-r0)
bra L_cleanup
add #3,r5
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/sh/memset.S newlib-1.8.1/newlib/libc/machine/sh/memset.S
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/machine/sh/memset.S Fri May 29 17:03:05 1998
--- newlib-1.8.1/newlib/libc/machine/sh/memset.S Mon Jan 25 15:19:46 1999
***************
*** 12,17 ****
--- 12,29 ----
#include "asm.h"
+ #if defined(__sh2__) || defined(__sh3__) || defined(__SH3E__) \
+ || defined(__SH4__) || defined(__SH4_SINGLE_) \
+ || defined(__SH4_SINGLE_ONLY__)
+ #define DT(reg) \
+ dt reg
+ #else
+ #define MINUSONE #-1
+ #define DT(reg) \
+ add MINUSONE,reg ; \
+ tst reg,reg ;
+ #endif
+
ENTRY(memset)
mov r4,r3 ! Save return value
***************
*** 33,39 ****
mov.b r5,@r4
add #-1,r6
add #1,r4
! dt r0
bf L_align_loop
L_dup_bytes:
--- 45,51 ----
mov.b r5,@r4
add #-1,r6
add #1,r4
! DT(r0)
bf L_align_loop
L_dup_bytes:
***************
*** 50,56 ****
.balignw 4,0x0009
L_store_long_loop:
mov.l r5,@r4 ! Store double longs to memory
! dt r2
mov.l r5,@(4,r4)
add #8,r4
bf L_store_long_loop
--- 62,68 ----
.balignw 4,0x0009
L_store_long_loop:
mov.l r5,@r4 ! Store double longs to memory
! DT(r2)
mov.l r5,@(4,r4)
add #8,r4
bf L_store_long_loop
***************
*** 63,69 ****
L_store_byte_loop:
mov.b r5,@r4 ! Store bytes to memory
add #1,r4
! dt r6
bf L_store_byte_loop
L_exit:
--- 75,81 ----
L_store_byte_loop:
mov.b r5,@r4 ! Store bytes to memory
add #1,r4
! DT(r6)
bf L_store_byte_loop
L_exit:
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/posix/rewinddir.c newlib-1.8.1/newlib/libc/posix/rewinddir.c
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/posix/rewinddir.c Fri May 29 17:03:12 1998
--- newlib-1.8.1/newlib/libc/posix/rewinddir.c Mon Jan 25 15:19:46 1999
***************
*** 44,53 ****
--- 44,60 ----
rewinddir(dirp)
DIR *dirp;
{
+ /*
+ * This "if 0" version does not seem necessary and is too
+ * complicated. --joel
+ */
+ #if 0
extern long _rewinddir;
_seekdir((dirp), _rewinddir);
_rewinddir = telldir(dirp);
+ #endif
+ _seekdir((dirp), (off_t)0);
}
#endif /* ! HAVE_OPENDIR */
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/stdio/tmpnam.c newlib-1.8.1/newlib/libc/stdio/tmpnam.c
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/stdio/tmpnam.c Fri May 29 17:03:21 1998
--- newlib-1.8.1/newlib/libc/stdio/tmpnam.c Tue Feb 9 11:44:01 1999
***************
*** 125,131 ****
{
if (ptr->_errno == ENOSYS)
{
! result[0] = '0';
return 0;
}
break;
--- 125,131 ----
{
if (ptr->_errno == ENOSYS)
{
! result[0] = '\0';
return 0;
}
break;
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/stdlib/mallocr.c newlib-1.8.1/newlib/libc/stdlib/mallocr.c
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/stdlib/mallocr.c Fri May 29 17:03:30 1998
--- newlib-1.8.1/newlib/libc/stdlib/mallocr.c Tue Feb 23 13:50:02 1999
***************
*** 1,3 ****
--- 1,8 ----
+ #ifdef MALLOC_PROVIDED
+
+ int _dummy_malloc = 1;
+
+ #else
/* ---------- To make a malloc.h, start cutting here ------------ */
/*
***************
*** 3579,3581 ****
--- 3584,3587 ----
structure of old version, but most details differ.)
*/
+ #endif
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/string/memchr.c newlib-1.8.1/newlib/libc/string/memchr.c
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/string/memchr.c Fri May 29 17:03:35 1998
--- newlib-1.8.1/newlib/libc/string/memchr.c Mon Jan 25 15:19:46 1999
***************
*** 74,79 ****
--- 74,81 ----
#ifdef PREFER_SIZE_OVER_SPEED
_CONST unsigned char *src = (_CONST unsigned char *) src_void;
+ c &= 0xff;
+
while (length--)
{
if (*src == c)
***************
*** 87,92 ****
--- 89,96 ----
unsigned long buffer;
unsigned long mask;
int i, j;
+
+ c &= 0xff;
/* If the size is small, or src is unaligned, then
use the bytewise loop. We can hope this is rare. */
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/string/strerror.c newlib-1.8.1/newlib/libc/string/strerror.c
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/string/strerror.c Fri May 29 17:03:36 1998
--- newlib-1.8.1/newlib/libc/string/strerror.c Mon Jan 25 15:19:46 1999
***************
*** 605,610 ****
--- 605,645 ----
error = "Software caused connection abort";
break;
#endif
+ #if (defined(EWOULDBLOCK) && (!defined (EAGAIN) || (EWOULDBLOCK != EAGAIN)))
+ case EWOULDBLOCK:
+ error = "Operation would block";
+ break;
+ #endif
+ #ifdef ENOTCONN
+ case ENOTCONN:
+ error = "Socket is not connected";
+ break;
+ #endif
+ #ifdef ESOCKTNOSUPPORT
+ case ESOCKTNOSUPPORT:
+ error = "Socket type not supported";
+ break;
+ #endif
+ #ifdef EISCONN
+ case EISCONN:
+ error = "Socket is already connected";
+ break;
+ #endif
+ #ifdef EOPNOTSUPP
+ case EOPNOTSUPP:
+ error = "Operation not supported on socket";
+ break;
+ #endif
+ #ifdef EMSGSIZE
+ case EMSGSIZE:
+ error = "Message too long";
+ break;
+ #endif
+ #ifdef ETIMEDOUT
+ case ETIMEDOUT:
+ error = "Connection timed out";
+ break;
+ #endif
default:
if ((error = _user_strerror (errnum)) == 0)
error = "";
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/sys/rtems/crt0.c newlib-1.8.1/newlib/libc/sys/rtems/crt0.c
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/sys/rtems/crt0.c Fri May 29 17:04:17 1998
--- newlib-1.8.1/newlib/libc/sys/rtems/crt0.c Mon Jan 25 15:19:46 1999
***************
*** 1 ****
--- 1,44 ----
void rtems_provides_crt0( void ) {}
+ /*
+ * 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.
+ */
+
+ /* RTEMS provides some of its own routines including a Malloc family */
+
+ void *malloc() { return 0; }
+ void *realloc() { return 0; }
+ void free() { ; }
+
+ /* 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;
+ #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\$:");
+
+ int atexit(void (*function)(void)) { return 0; }
+ #endif
+
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/sys/rtems/include/limits.h newlib-1.8.1/newlib/libc/sys/rtems/include/limits.h
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/sys/rtems/include/limits.h Fri May 29 17:04:17 1998
--- newlib-1.8.1/newlib/libc/sys/rtems/include/limits.h Wed Feb 24 15:00:32 1999
***************
*** 35,41 ****
#define _POSIX_MAX_INPUT 255
#define _POSIX_MQ_OPEN_MAX 8
#define _POSIX_MQ_PRIO_MAX 32
! #define _POSIX_NAME_MAX 14
#define _POSIX_NGROUPS_MAX 0
#define _POSIX_OPEN_MAX 16
#define _POSIX_PATH_MAX 255
--- 35,41 ----
#define _POSIX_MAX_INPUT 255
#define _POSIX_MQ_OPEN_MAX 8
#define _POSIX_MQ_PRIO_MAX 32
! #define _POSIX_NAME_MAX 255
#define _POSIX_NGROUPS_MAX 0
#define _POSIX_OPEN_MAX 16
#define _POSIX_PATH_MAX 255
***************
*** 79,85 ****
#define LINK_MAX 8
#define MAX_CANON 255
#define MAX_INPUT 255
! #define NAME_MAX 14
#define PATH_MAX 255
#define PIPE_BUF 512
--- 79,85 ----
#define LINK_MAX 8
#define MAX_CANON 255
#define MAX_INPUT 255
! #define NAME_MAX 255
#define PATH_MAX 255
#define PIPE_BUF 512
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/sys/rtems/sys/dirent.h newlib-1.8.1/newlib/libc/sys/rtems/sys/dirent.h
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/sys/rtems/sys/dirent.h Wed Dec 31 18:00:00 1969
--- newlib-1.8.1/newlib/libc/sys/rtems/sys/dirent.h Mon Jan 25 15:19:46 1999
***************
*** 0 ****
--- 1,45 ----
+ #ifndef _SYS_DIRENT_H
+ # define _SYS_DIRENT_H
+
+ /*
+ * This file was written to be compatible with the BSD directory
+ * routines, so it looks like it. But it was written from scratch.
+ * Sean Eric Fagan, sef@Kithrup.COM
+ *
+ * Copied to RTEMS configuration without modification.
+ */
+
+ typedef struct _dirdesc {
+ int dd_fd;
+ long dd_loc;
+ long dd_size;
+ char *dd_buf;
+ int dd_len;
+ long dd_seek;
+ } DIR;
+
+ # define __dirfd(dp) ((dp)->dd_fd)
+
+ DIR *opendir(const char *);
+ struct dirent *readdir(DIR *);
+ void rewinddir(DIR *);
+ int closedir(DIR *);
+ void seekdir(DIR *dir, long loc);
+ long telldir(DIR *dir);
+
+ #include <sys/types.h>
+
+ #include <limits.h>
+
+ struct dirent {
+ long d_ino;
+ off_t d_off;
+ unsigned short d_reclen;
+ /* we need better syntax for variable-sized arrays */
+ unsigned short d_namlen;
+ char d_name[NAME_MAX + 1];
+ };
+
+
+
+ #endif
diff -N -P -r -c /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/sys/rtems/sys/types.h newlib-1.8.1/newlib/libc/sys/rtems/sys/types.h
*** /usr1/rtems/work/original/newlib-1.8.1/newlib/libc/sys/rtems/sys/types.h Fri May 29 17:04:18 1998
--- newlib-1.8.1/newlib/libc/sys/rtems/sys/types.h Mon Jan 25 15:19:46 1999
***************
*** 52,58 ****
#endif
#endif
! typedef short dev_t; /* device numbers */
typedef long off_t; /* file sizes */
typedef unsigned short uid_t; /* user IDs */
--- 52,58 ----
#endif
#endif
! typedef unsigned long long dev_t;/* device numbers 32-bit major and minor */
typedef long off_t; /* file sizes */
typedef unsigned short uid_t; /* user IDs */