[llvm-commits] [compiler-rt] r78451 - in /compiler-rt/trunk: cmake/Modules/DefineCompilerFlags.cmake lib/enable_execute_stack.c lib/endianness.h test/Unit/endianness.h

Edward O'Callaghan eocallaghan at auroraux.org
Fri Aug 7 19:31:50 PDT 2009


Author: evocallaghan
Date: Fri Aug  7 21:31:50 2009
New Revision: 78451

URL: http://llvm.org/viewvc/llvm-project?rev=78451&view=rev
Log:
Fix signedness warning in mprotect call, Clean up and improve endianness.h header.

Modified:
    compiler-rt/trunk/cmake/Modules/DefineCompilerFlags.cmake
    compiler-rt/trunk/lib/enable_execute_stack.c
    compiler-rt/trunk/lib/endianness.h
    compiler-rt/trunk/test/Unit/endianness.h

Modified: compiler-rt/trunk/cmake/Modules/DefineCompilerFlags.cmake
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/cmake/Modules/DefineCompilerFlags.cmake?rev=78451&r1=78450&r2=78451&view=diff

==============================================================================
--- compiler-rt/trunk/cmake/Modules/DefineCompilerFlags.cmake (original)
+++ compiler-rt/trunk/cmake/Modules/DefineCompilerFlags.cmake Fri Aug  7 21:31:50 2009
@@ -1,4 +1,4 @@
 # Define compiler flags
 
 #ADD_DEFINITIONS( -Wall -W -Werror -pedantic )
-ADD_DEFINITIONS( -Wall -W -pedantic )
+ADD_DEFINITIONS( -std=gnu99 -Wall -Wextra -W -pedantic -Wno-unused-parameter )

Modified: compiler-rt/trunk/lib/enable_execute_stack.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/enable_execute_stack.c?rev=78451&r1=78450&r2=78451&view=diff

==============================================================================
--- compiler-rt/trunk/lib/enable_execute_stack.c (original)
+++ compiler-rt/trunk/lib/enable_execute_stack.c Fri Aug  7 21:31:50 2009
@@ -36,7 +36,8 @@
 	uintptr_t p = (uintptr_t)addr;
 	unsigned char* startPage = (unsigned char*)(p & pageAlignMask);
 	unsigned char* endPage = (unsigned char*)((p+48+pageSize) & pageAlignMask);
-	mprotect(startPage, endPage-startPage, PROT_READ | PROT_WRITE | PROT_EXEC);
+	size_t length = endPage - startPage;
+	(void) mprotect((void *)startPage, length, PROT_READ | PROT_WRITE | PROT_EXEC);
 }
 
 

Modified: compiler-rt/trunk/lib/endianness.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/endianness.h?rev=78451&r1=78450&r2=78451&view=diff

==============================================================================
--- compiler-rt/trunk/lib/endianness.h (original)
+++ compiler-rt/trunk/lib/endianness.h Fri Aug  7 21:31:50 2009
@@ -16,50 +16,79 @@
 #ifndef ENDIANNESS_H
 #define ENDIANNESS_H
 
-/* TODO: Improve this to minimal pre-processor hackish'ness. */
-/* config.h build via CMake. */
-/* #include <config.h> */
-/* Solaris header for endian and byte swap */
-/* #if defined HAVE_SYS_BYTEORDER_H */
+/*
+ * Known limitations:
+ *   Middle endian systems are not handled currently.
+ */
 
-#if defined (__SVR4) && defined (__sun)
+#if defined(__SVR4) && defined(__sun)
 #include <sys/byteorder.h>
+
 #if _BYTE_ORDER == _BIG_ENDIAN
-#define __BIG_ENDIAN__ 1
-#define __LITTLE_ENDIAN__ 0
-#else /* _BYTE_ORDER == _LITTLE_ENDIAN */
-#define __BIG_ENDIAN__ 0
-#define __LITTLE_ENDIAN__ 1
+#define _YUGA_LITTLE_ENDIAN 0
+#define _YUGA_BIG_ENDIAN    1
+#elif _BYTE_ORDER == _LITTLE_ENDIAN 
+#define _YUGA_LITTLE_ENDIAN 1
+#define _YUGA_BIG_ENDIAN    0
 #endif /* _BYTE_ORDER */
+
 #endif /* Solaris and AuroraUX. */
 
-#if defined (__FreeBSD__)
+/* .. */
+
+#if defined(__FreeBSD__) && defined(__NetBSD__) && defined(__OpenBSD__) && defined(__DragonflyBSD__)
 #include <sys/endian.h>
+
 #if _BYTE_ORDER == _BIG_ENDIAN
-#define __BIG_ENDIAN__ 1
-#define __LITTLE_ENDIAN__ 0
-#else /* _BYTE_ORDER == _LITTLE_ENDIAN */
-#define __BIG_ENDIAN__ 0
-#define __LITTLE_ENDIAN__ 1
+#define _YUGA_LITTLE_ENDIAN 0
+#define _YUGA_BIG_ENDIAN    1
+#elif _BYTE_ORDER == _LITTLE_ENDIAN
+#define _YUGA_LITTLE_ENDIAN 1
+#define _YUGA_BIG_ENDIAN    0
 #endif /* _BYTE_ORDER */
-#endif /* FreeBSD */
+
+#endif /* *BSD */
+
+/* .. */
+
+/* Mac OSX has __BIG_ENDIAN__ or __LITTLE_ENDIAN__ automatically set by the compiler (at least with GCC) */
+#if defined(__APPLE__) && defined(__MACH__)
+
+#ifdef __BIG_ENDIAN__
+#if __BIG_ENDIAN__
+#define _YUGA_LITTLE_ENDIAN 0
+#define _YUGA_BIG_ENDIAN    1
+#endif
+#endif /* __BIG_ENDIAN__ */
 
 #ifdef __LITTLE_ENDIAN__
 #if __LITTLE_ENDIAN__
 #define _YUGA_LITTLE_ENDIAN 1
 #define _YUGA_BIG_ENDIAN    0
 #endif
-#endif
+#endif /* __LITTLE_ENDIAN__ */
 
-#ifdef __BIG_ENDIAN__
-#if __BIG_ENDIAN__
+#endif /* Mac OSX */
+
+/* .. */
+
+#if defined(__Linux__)
+#include <endian.h>
+
+#if __BYTE_ORDER == __BIG_ENDIAN
 #define _YUGA_LITTLE_ENDIAN 0
 #define _YUGA_BIG_ENDIAN    1
-#endif
-#endif
+#elif __BYTE_ORDER == __LITTLE_ENDIAN
+#define _YUGA_LITTLE_ENDIAN 1
+#define _YUGA_BIG_ENDIAN    0
+#endif /* __BYTE_ORDER */
+
+#endif /* GNU/Linux */
+
+/* . */
 
 #if !defined(_YUGA_LITTLE_ENDIAN) || !defined(_YUGA_BIG_ENDIAN)
-#error unable to determine endian
-#endif
+#error Unable to determine endian
+#endif /* Check we found an endianness correctly. */
 
 #endif /* ENDIANNESS_H */

Modified: compiler-rt/trunk/test/Unit/endianness.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/Unit/endianness.h?rev=78451&r1=78450&r2=78451&view=diff

==============================================================================
--- compiler-rt/trunk/test/Unit/endianness.h (original)
+++ compiler-rt/trunk/test/Unit/endianness.h Fri Aug  7 21:31:50 2009
@@ -16,50 +16,79 @@
 #ifndef ENDIANNESS_H
 #define ENDIANNESS_H
 
-/* TODO: Improve this to minimal pre-processor hackish'ness. */
-/* config.h build via CMake. */
-/* #include <config.h> */
-/* Solaris header for endian and byte swap */
-/* #if defined HAVE_SYS_BYTEORDER_H */
+/*
+ * Known limitations:
+ *   Middle endian systems are not handled currently.
+ */
 
-#if defined (__SVR4) && defined (__sun)
+#if defined(__SVR4) && defined(__sun)
 #include <sys/byteorder.h>
+
 #if _BYTE_ORDER == _BIG_ENDIAN
-#define __BIG_ENDIAN__ 1
-#define __LITTLE_ENDIAN__ 0
-#else /* _BYTE_ORDER == _LITTLE_ENDIAN */
-#define __BIG_ENDIAN__ 0
-#define __LITTLE_ENDIAN__ 1
+#define _YUGA_LITTLE_ENDIAN 0
+#define _YUGA_BIG_ENDIAN    1
+#elif _BYTE_ORDER == _LITTLE_ENDIAN 
+#define _YUGA_LITTLE_ENDIAN 1
+#define _YUGA_BIG_ENDIAN    0
 #endif /* _BYTE_ORDER */
+
 #endif /* Solaris and AuroraUX. */
 
-#if defined (__FreeBSD__)
+/* .. */
+
+#if defined(__FreeBSD__) && defined(__NetBSD__) && defined(__OpenBSD__) && defined(__DragonflyBSD__)
 #include <sys/endian.h>
+
 #if _BYTE_ORDER == _BIG_ENDIAN
-#define __BIG_ENDIAN__ 1
-#define __LITTLE_ENDIAN__ 0
-#else /* _BYTE_ORDER == _LITTLE_ENDIAN */
-#define __BIG_ENDIAN__ 0
-#define __LITTLE_ENDIAN__ 1
+#define _YUGA_LITTLE_ENDIAN 0
+#define _YUGA_BIG_ENDIAN    1
+#elif _BYTE_ORDER == _LITTLE_ENDIAN
+#define _YUGA_LITTLE_ENDIAN 1
+#define _YUGA_BIG_ENDIAN    0
 #endif /* _BYTE_ORDER */
-#endif /* FreeBSD */
+
+#endif /* *BSD */
+
+/* .. */
+
+/* Mac OSX has __BIG_ENDIAN__ or __LITTLE_ENDIAN__ automatically set by the compiler (at least with GCC) */
+#if defined(__APPLE__) && defined(__MACH__)
+
+#ifdef __BIG_ENDIAN__
+#if __BIG_ENDIAN__
+#define _YUGA_LITTLE_ENDIAN 0
+#define _YUGA_BIG_ENDIAN    1
+#endif
+#endif /* __BIG_ENDIAN__ */
 
 #ifdef __LITTLE_ENDIAN__
 #if __LITTLE_ENDIAN__
 #define _YUGA_LITTLE_ENDIAN 1
 #define _YUGA_BIG_ENDIAN    0
 #endif
-#endif
+#endif /* __LITTLE_ENDIAN__ */
 
-#ifdef __BIG_ENDIAN__
-#if __BIG_ENDIAN__
+#endif /* Mac OSX */
+
+/* .. */
+
+#if defined(__Linux__)
+#include <endian.h>
+
+#if __BYTE_ORDER == __BIG_ENDIAN
 #define _YUGA_LITTLE_ENDIAN 0
 #define _YUGA_BIG_ENDIAN    1
-#endif
-#endif
+#elif __BYTE_ORDER == __LITTLE_ENDIAN
+#define _YUGA_LITTLE_ENDIAN 1
+#define _YUGA_BIG_ENDIAN    0
+#endif /* __BYTE_ORDER */
+
+#endif /* GNU/Linux */
+
+/* . */
 
 #if !defined(_YUGA_LITTLE_ENDIAN) || !defined(_YUGA_BIG_ENDIAN)
-#error unable to determine endian
-#endif
+#error Unable to determine endian
+#endif /* Check we found an endianness correctly. */
 
 #endif /* ENDIANNESS_H */





More information about the llvm-commits mailing list