Hi,
On Jul 23, 4:35 pm, Elvis Dowson <
elvis.dow...@gmail.com> wrote:
>
>
> Fixes for errors that can come up during compilation
>
>
> 03. In file bionic/libc/kernel/arch-arm/asm/byteorder.h
>
> Error:
>
> In file included from bionic/libc/include/netinet/tcp.h:32,
> from frameworks/base/core/jni/
> android_net_LocalSocketImpl.cpp:37:
> bionic/libc/kernel/common/linux/tcp.h:62: error: a function call
> cannot appear in a constant-expression
>
> Solution:
>
> Modify the file bionic/libc/kernel/arch-arm/asm/byteorder.h
>
> #ifndef __ASM_ARM_BYTEORDER_H
> #define __ASM_ARM_BYTEORDER_H
>
> +#define __ARMEB__
>
For this particular error, you need to define __ARMEB__ in some more
places, else it gets redefined to little endian byte order and you get
warnings about the byte order being redefined.
Please use the following patch.
If someone could suggested a better way of doing this, it would be
great! Haven't figured out where exactly in the existing v2.6.29
kernel headers __ARMEB__ is being defined.
diff --git a/libc/arch-arm/include/endian.h b/libc/arch-arm/include/
endian.h
index 04204ed..8e42583 100644
--- a/libc/arch-arm/include/endian.h
+++ b/libc/arch-arm/include/endian.h
@@ -1,5 +1,8 @@
/* $OpenBSD: endian.h,v 1.3 2005/12/13 00:35:23 millert Exp $ */
+/* Define ARM big endian byte order. */
+#define __ARMEB__
+
#ifdef __ARMEB__
#define _BYTE_ORDER _BIG_ENDIAN
#else
diff --git a/libc/arch-arm/include/machine/_types.h b/libc/arch-arm/
include/machine/_types.h
index 6d10e12..e63093b 100644
--- a/libc/arch-arm/include/machine/_types.h
+++ b/libc/arch-arm/include/machine/_types.h
@@ -118,6 +118,9 @@ typedef int __rune_t;
typedef void * __wctrans_t;
typedef void * __wctype_t;
+/* Define ARM big endian byte order. */
+#define __ARMEB__
+
#ifdef __ARMEB__
#define _BYTE_ORDER _BIG_ENDIAN
#else
diff --git a/libc/kernel/arch-arm/asm/byteorder.h b/libc/kernel/arch-
arm/asm/byteorder.h
index 7737974..8c23ca8 100644
--- a/libc/kernel/arch-arm/asm/byteorder.h
+++ b/libc/kernel/arch-arm/asm/byteorder.h
@@ -15,6 +15,9 @@
#ifndef __ASM_ARM_BYTEORDER_H
#define __ASM_ARM_BYTEORDER_H
+/* Define ARM big endian byte order. */
+#define __ARMEB__
+
#ifdef __ARMEB__
#include <linux/byteorder/big_endian.h>
#else
Best regards,
Elvis