[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