On 12/10/16 11:13, Sebastian Huber wrote:
Update #2790.
---
  cpukit/score/include/rtems/score/basedefs.h | 12 +++++++++++-
  1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/cpukit/score/include/rtems/score/basedefs.h 
b/cpukit/score/include/rtems/score/basedefs.h
index c378635..ea4d831 100644
--- a/cpukit/score/include/rtems/score/basedefs.h
+++ b/cpukit/score/include/rtems/score/basedefs.h
@@ -10,7 +10,7 @@
   *  COPYRIGHT (c) 1989-2007.
   *  On-Line Applications Research Corporation (OAR).
   *
- *  Copyright (c) 2010-2015 embedded brains GmbH.
+ *  Copyright (c) 2010, 2016 embedded brains GmbH.
   *
   *  The license and distribution terms for this file may be
   *  found in the file LICENSE in this distribution or at
@@ -221,6 +221,16 @@
    #define RTEMS_PRINTFLIKE( _format_pos, _ap_pos )
  #endif
+/**
+ * @brief Obfuscates the pointer so that the compiler cannot perform
+ * optimizations based on the pointer value.
+ */
+#if defined(__GNUC__)
+  #define RTEMS_OBFUSCATE_POINTER( _ptr ) __asm__("" : "+r" (_ptr))
+#else
+  #define RTEMS_OBFUSCATE_POINTER( _ptr ) (void) (_ptr)
+#endif
+
  #if __cplusplus >= 201103L
    #define RTEMS_STATIC_ASSERT(cond, msg) \
      static_assert(cond, # msg)

Looks like this works for any variable that can reside in a register. So maybe change this to

RTEMS_OBFUSCATE_VARIABLE( _var )

See also discussion here:

https://gcc.gnu.org/ml/gcc/2016-09/msg00114.html

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to