syscall_emul: Fix undefined macro behavior
authorAndreas Sandberg <andreas.sandberg@arm.com>
Wed, 10 May 2017 12:10:23 +0000 (13:10 +0100)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Fri, 12 May 2017 09:22:25 +0000 (09:22 +0000)
Clang's UBSAN implementation complains about macros that expand to
expressions that contain 'defined'. Explicitly set the various feature
macros to 1 or 0 to avoid this issue.

Change-Id: Iba239dacfe526c43ab9c5da5183a350fc4fdc57d
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Andreas Hansson <andreas.hansson@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3241

src/sim/syscall_emul.hh

index a1c3b29050203ba156d18e9cfaca31138dd9d29e..53c053f054bf3991f2fee35883c31144729a0d6b 100644 (file)
 #ifndef __SIM_SYSCALL_EMUL_HH__
 #define __SIM_SYSCALL_EMUL_HH__
 
-#define NO_STAT64 (defined(__APPLE__) || defined(__OpenBSD__) || \
-  defined(__FreeBSD__) || defined(__CYGWIN__) || \
-  defined(__NetBSD__))
+#if (defined(__APPLE__) || defined(__OpenBSD__) ||      \
+     defined(__FreeBSD__) || defined(__CYGWIN__) ||     \
+     defined(__NetBSD__))
+#define NO_STAT64 1
+#else
+#define NO_STAT64 0
+#endif
 
-#define NO_STATFS (defined(__APPLE__) || defined(__OpenBSD__) || \
-  defined(__FreeBSD__) || defined(__NetBSD__))
+#if (defined(__APPLE__) || defined(__OpenBSD__) ||      \
+     defined(__FreeBSD__) || defined(__NetBSD__))
+#define NO_STATFS 1
+#else
+#define NO_STATFS 0
+#endif
 
-#define NO_FALLOCATE (defined(__APPLE__) || defined(__OpenBSD__) || \
-  defined(__FreeBSD__) || defined(__NetBSD__))
+#if (defined(__APPLE__) || defined(__OpenBSD__) ||      \
+     defined(__FreeBSD__) || defined(__NetBSD__))
+#define NO_FALLOCATE 1
+#else
+#define NO_FALLOCATE 0
+#endif
 
 ///
 /// @file syscall_emul.hh