(check_consistency): Define.
authorUlrich Drepper <drepper@redhat.com>
Tue, 8 Feb 2005 06:48:30 +0000 (06:48 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 8 Feb 2005 06:48:30 +0000 (06:48 +0000)
sysdeps/unix/sysv/linux/i386/sysdep.h

index cfa030b..6bea9d2 100644 (file)
@@ -540,6 +540,29 @@ asm (".L__X'%ebx = 1\n\t"
 # define EXTRAVAR_5
 #endif
 
+/* Consistency check for position-independent code.  */
+#ifdef __PIC__
+# define check_consistency()                                                 \
+  ({ int __res;                                                                      \
+     __asm__ __volatile__                                                    \
+       ("call __i686.get_pc_thunk.cx;"                                       \
+       "addl $_GLOBAL_OFFSET_TABLE_, %%ecx;"                                 \
+       "subl %%ebx, %%ecx;"                                                  \
+       "je 1f;"                                                              \
+       "ud2;"                                                                \
+       "1:\n"                                                                \
+       ".section .gnu.linkonce.t.__i686.get_pc_thunk.cx,\"ax\",@progbits;"   \
+       ".globl __i686.get_pc_thunk.cx;"                                      \
+       ".hidden __i686.get_pc_thunk.cx;"                                     \
+       ".type __i686.get_pc_thunk.cx,@function;"                             \
+       "__i686.get_pc_thunk.cx:"                                             \
+       "movl (%%esp), %%ecx;"                                                \
+       "ret;"                                                                \
+       ".previous"                                                           \
+       : "=c" (__res));                                                      \
+     __res; })
+#endif
+
 #endif /* __ASSEMBLER__ */
 
 #endif /* linux/i386/sysdep.h */