changeset 22715:363c84953547

check that definition of prototype of sysi86(int, void*) doesn't conflict; fixed compilation in opensolaris
author nicodvb
date Sun, 18 Mar 2007 22:18:11 +0000
parents 97ad9cecc6d9
children ee8d699ab8d1
files configure loader/ldt_keeper.c
diffstat 2 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/configure	Sun Mar 18 22:11:32 2007 +0000
+++ b/configure	Sun Mar 18 22:18:11 2007 +0000
@@ -3590,6 +3590,11 @@
 cc_check && _sysi86=yes
 if test "$_sysi86" = yes ; then
   _def_sysi86='#define HAVE_SYSI86 1'
+  cat > $TMPC << EOF
+  #include <sys/sysi86.h>
+  int main (void) { int sysi86(int, void*); sysi86(0); return 0; }
+EOF
+  cc_check && _def_sysi86_iv='#define HAVE_SYSI86_iv 1'
 else
   _def_sysi86='#undef HAVE_SYSI86'
 fi
@@ -7932,6 +7937,7 @@
 
 /* Define this if your system has sysi86 */
 $_def_sysi86
+$_def_sysi86_iv
 
 /* Define this if your system has pthreads */
 $_def_pthreads
--- a/loader/ldt_keeper.c	Sun Mar 18 22:11:32 2007 +0000
+++ b/loader/ldt_keeper.c	Sun Mar 18 22:18:11 2007 +0000
@@ -62,8 +62,8 @@
 #include <sys/segment.h>
 #include <sys/sysi86.h>
 
-/* solaris x86: add missing prototype for sysi86() */
-#ifdef HAVE_SYSI86
+/* solaris x86: add missing prototype for sysi86(), but only when sysi86(int, void*) is known to be valid */
+#ifdef HAVE_SYSI86_iv
 #ifdef  __cplusplus
 extern "C" {
 #endif