]> sourceware.org Git - newlib-cygwin.git/commitdiff
2002-07-02 Chris Demetriou <cgd@broadcom.com>
authorJeff Johnston <jjohnstn@redhat.com>
Tue, 2 Jul 2002 18:18:58 +0000 (18:18 +0000)
committerJeff Johnston <jjohnstn@redhat.com>
Tue, 2 Jul 2002 18:18:58 +0000 (18:18 +0000)
        * libc/include/sys/config.h (__IEEE_LITTLE_ENDIAN)
        (__IEEE_BIG_ENDIAN): Define appropriately for MIPS.
        Check that one of them is defined and error out if not.
        Add any platforms defined in <machine/ieeefp.h> that are missing.
        * libc/search/hash.h (DB_BYTE_ORDER, DB_BIG_ENDIAN)
        (DB_LITTLE_ENDIAN): New defines.
        * libc/search/hash.c: Replace all incorrect checks for
        _IEEE_LITTLE_ENDIAN with tests of BYTE_ORDER, and all uses of
        BYTE_ORDER, LITTLE_ENDIAN, and BIG_ENDIAN with DB_* versions.
        * libc/search/hash_page.c: Likewise.

newlib/ChangeLog
newlib/libc/include/sys/config.h
newlib/libc/search/hash.c
newlib/libc/search/hash.h
newlib/libc/search/hash_page.c

index 77de28b9ce848c38b9628f18512ea12794a2847f..fcbcd3f21b398e91f6d784c1a36d21a3313f2f33 100644 (file)
@@ -1,3 +1,16 @@
+2002-07-02  Chris Demetriou  <cgd@broadcom.com>
+
+        * libc/include/sys/config.h (__IEEE_LITTLE_ENDIAN)
+        (__IEEE_BIG_ENDIAN): Define appropriately for MIPS.
+        Check that one of them is defined and error out if not.
+       Add any platforms defined in <machine/ieeefp.h> that are missing.
+        * libc/search/hash.h (DB_BYTE_ORDER, DB_BIG_ENDIAN)
+        (DB_LITTLE_ENDIAN): New defines.
+        * libc/search/hash.c: Replace all incorrect checks for
+        _IEEE_LITTLE_ENDIAN with tests of BYTE_ORDER, and all uses of
+        BYTE_ORDER, LITTLE_ENDIAN, and BIG_ENDIAN with DB_* versions.
+        * libc/search/hash_page.c: Likewise.
+
 2002-06-28  Thomas Fitzsimmons  <fitzsim@redhat.com>
 
        * libm/mathfp/sf_pow.c (powf): Change k from int to float.
index ae4fcdaa399bd16e42932a16e27253de5a281994..928927334892d4b96dd2b4d7e431c4c8fd4fa7f3 100644 (file)
 #define __IEEE_BIG_ENDIAN
 #endif
 
+#ifdef __sh__
+#ifdef __LITTLE_ENDIAN__
+#define __IEEE_LITTLE_ENDIAN
+#else
+#define __IEEE_BIG_ENDIAN
+#endif
+#if defined(__SH3E__) || defined(__SH4_SINGLE_ONLY__)
+#define _DOUBLE_IS_32BITS
+#endif
+#endif
+
 #ifdef ___AM29K__
 #define _FLOAT_RET double
 #endif
 
 #ifdef __i386__
+#define __IEEE_LITTLE_ENDIAN
 #ifndef __unix__
 /* in other words, go32 */
 #define _FLOAT_RET double
 #define __IEEE_LITTLE_ENDIAN
 #endif
 
+#ifdef __MIPSEL__
+#define __IEEE_LITTLE_ENDIAN
+#endif
+#ifdef __MIPSEB__
+#define __IEEE_BIG_ENDIAN
+#endif
+
 #ifdef __MMIX__
 #define __IEEE_BIG_ENDIAN
 #endif
 #define __IEEE_LITTLE_ENDIAN
 #endif
 
+#ifdef __v800
+#define __IEEE_LITTLE_ENDIAN
+#endif
+
 #ifdef __v850
 #define __IEEE_LITTLE_ENDIAN
 #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__sda__))
 #endif
 
+#ifdef __ia64__
+#ifdef __BIG_ENDIAN__
+#define __IEEE_BIG_ENDIAN
+#else
+#define __IEEE_LITTLE_ENDIAN
+#endif
+#endif
+
 #ifdef __D30V__
 #define __IEEE_BIG_ENDIAN
 #endif
 
+#ifdef __m88k__
+#define __IEEE_BIG_ENDIAN
+#endif
+
 /* For the PowerPC eabi, force the _impure_ptr to be in .sdata */
-#if defined(__PPC__) && defined(_CALL_SYSV)
+#if defined(__PPC__)
+#if defined(_CALL_SYSV)
 #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
 #endif
+#if (defined(_BIG_ENDIAN) && _BIG_ENDIAN) || (defined(_AIX) && _AIX)
+#define __IEEE_BIG_ENDIAN
+#else
+#if (defined(_LITTLE_ENDIAN) && _LITTLE_ENDIAN) || (defined(__sun__) && __sun__) || (defined(_WIN32) && _WIN32)
+#define __IEEE_LITTLE_ENDIAN
+#endif
+#endif
+#endif
+
+#if defined(__arm__) || defined(__thumb__)
+/* ARM always has big-endian words.  Within those words the byte ordering
+   will be big or little endian depending upon the target.  */
+#define __IEEE_BIG_ENDIAN
+#ifdef __ARMEL__
+#define __IEEE_BYTES_LITTLE_ENDIAN
+#endif
+#endif
+
+#ifdef __hppa__
+#define __IEEE_BIG_ENDIAN
+#endif
 
 #ifdef __sparc__
 #ifdef __LITTLE_ENDIAN_DATA__
 #endif
 #endif
 
+#if defined(__or32__) || defined(__or1k__) || defined(__or16__)
+#define __IEEE_BIG_ENDIAN
+#endif
+
+
 #ifdef __xstormy16__
 #define __IEEE_LITTLE_ENDIAN
 #define __SMALL_BITFIELDS
 #define _POINTER_INT long
 #endif
 
+#ifdef __arc__
+#ifdef __big_endian__
+#define __IEEE_BIG_ENDIAN
+#else
+#define __IEEE_LITTLE_ENDIAN
+#endif
+#endif
+
+#ifdef __fr30__
+#define __IEEE_BIG_ENDIAN
+#endif
+
+#ifdef __mcore__
+#define __IEEE_BIG_ENDIAN
+#endif
+
 #ifdef __frv__
 #define __IEEE_BIG_ENDIAN
 #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
 #define _READ_WRITE_RETURN_TYPE int
 #endif
 
+#ifndef __IEEE_BIG_ENDIAN
+#ifndef __IEEE_LITTLE_ENDIAN
+#error Endianess not declared!!
+#endif /* not __IEEE_LITTLE_ENDIAN */
+#endif /* not __IEEE_BIG_ENDIAN */
+
 #endif /* __SYS_CONFIG_H__ */
index 5bd4fb77e5d1575dfde4c0da0960cf3dd846502d..3aa3eb7ea79c3642315c5f370cc0e47802d3609a 100644 (file)
@@ -72,7 +72,7 @@ static int   hash_sync(const DB *, __uint32_t);
 static int   hdestroy(HTAB *);
 static HTAB *init_hash(HTAB *, const char *, HASHINFO *);
 static int   init_htab(HTAB *, int);
-#ifdef _IEEE_LITTLE_ENDIAN
+#if (BYTE_ORDER == LITTLE_ENDIAN)
 static void  swap_header(HTAB *);
 static void  swap_header_copy(HASHHDR *, HASHHDR *);
 #endif
@@ -156,7 +156,7 @@ __hash_open(file, flags, mode, info, dflags)
                        hashp->hash = __default_hash;
 
                hdrsize = read(hashp->fp, &hashp->hdr, sizeof(HASHHDR));
-#ifdef _IEEE_LITTLE_ENDIAN
+#if (BYTE_ORDER == LITTLE_ENDIAN)
                swap_header(hashp);
 #endif
                if (hdrsize == -1)
@@ -299,7 +299,7 @@ init_hash(hashp, file, info)
 
        nelem = 1;
        hashp->NKEYS = 0;
-       hashp->LORDER = BYTE_ORDER;
+       hashp->LORDER = DB_BYTE_ORDER;
        hashp->BSIZE = DEF_BUCKET_SIZE;
        hashp->BSHIFT = DEF_BUCKET_SHIFT;
        hashp->SGSIZE = DEF_SEGSIZE;
@@ -335,8 +335,8 @@ init_hash(hashp, file, info)
                if (info->nelem)
                        nelem = info->nelem;
                if (info->lorder) {
-                       if (info->lorder != BIG_ENDIAN &&
-                           info->lorder != LITTLE_ENDIAN) {
+                       if (info->lorder != DB_BIG_ENDIAN &&
+                           info->lorder != DB_LITTLE_ENDIAN) {
                                errno = EINVAL;
                                return (NULL);
                        }
@@ -495,7 +495,7 @@ flush_meta(hashp)
        HTAB *hashp;
 {
        HASHHDR *whdrp;
-#ifdef _IEEE_LITTLE_ENDIAN
+#if (BYTE_ORDER == LITTLE_ENDIAN)
        HASHHDR whdr;
 #endif
        int fp, i, wsize;
@@ -508,7 +508,7 @@ flush_meta(hashp)
 
        fp = hashp->fp;
        whdrp = &hashp->hdr;
-#ifdef _IEEE_LITTLE_ENDIAN
+#if (BYTE_ORDER == LITTLE_ENDIAN)
        whdrp = &whdr;
        swap_header_copy(&hashp->hdr, whdrp);
 #endif
@@ -941,7 +941,7 @@ alloc_segs(hashp, nsegs)
        return (0);
 }
 
-#ifdef _IEEE_LITTLE_ENDIAN
+#if (BYTE_ORDER == LITTLE_ENDIAN)
 /*
  * Hashp->hdr needs to be byteswapped.
  */
index 8287eb7e52a26a04f48c4c6ac155b664d179bce2..db9e96dd837114aadd482b59f664c8266363082a 100644 (file)
 
 #include <sys/param.h>
 
+/* Check that newlib understands the byte order of its target system.  */
 #ifndef BYTE_ORDER
-#ifndef LITTLE_ENDIAN
-#define LITTLE_ENDIAN 1234
+#error BYTE_ORDER not defined by sys/param.h
 #endif
-#ifndef BIG_ENDIAN
-#define BIG_ENDIAN 4321
-#endif
-#ifdef __IEEE_LITTLE_ENDIAN
-#define BYTE_ORDER LITTLE_ENDIAN
+
+/* Define DB endianness constants based on target endianness.  */
+#define DB_LITTLE_ENDIAN 1234
+#define DB_BIG_ENDIAN 4321
+#if (BYTE_ORDER == LITTLE_ENDIAN)
+#define DB_BYTE_ORDER DB_LITTLE_ENDIAN
 #else
-#define BYTE_ORDER BIG_ENDIAN
-#endif
+#define DB_BYTE_ORDER DB_BIG_ENDIAN
 #endif
 
 /* Operations */
index 896aee8d522cf5927fe820523d406b5bf65876f1..cffb20aa319c97183e87b20db005f8b097c034fc 100644 (file)
@@ -552,7 +552,7 @@ __get_page(hashp, p, bucket, is_bucket, is_disk, is_bitmap)
        if (!is_bitmap && !bp[0]) {
                PAGE_INIT(p);
        } else
-               if (hashp->LORDER != BYTE_ORDER) {
+               if (hashp->LORDER != DB_BYTE_ORDER) {
                        int i, max;
 
                        if (is_bitmap) {
@@ -591,7 +591,7 @@ __put_page(hashp, p, bucket, is_bucket, is_bitmap)
                return (-1);
        fd = hashp->fp;
 
-       if (hashp->LORDER != BYTE_ORDER) {
+       if (hashp->LORDER != DB_BYTE_ORDER) {
                int i;
                int max;
 
This page took 0.051236 seconds and 5 git commands to generate.