cross compilation?

Ben Lindstrom mouring at etoh.eviladmin.org
Wed Apr 3 11:02:23 EST 2002


Can you avoid reforming and just post the required changes you feel
should be made?  It makes it very hard to decide if this is an
acceptable thing to do.

- Ben

On Tue, 2 Apr 2002, Bryan Chua wrote:

> ../openssh-3.1p1/configure --host=mips-linux --build=i686-linux --with-pam
>     does not work.
>
> It selects the correct toolchain prefix, but the configure script bails
> on cross-compilation.
>
> Attached is a patch that *might* make the right paranoid assumptions,
> but I am not positive.
>
> -- bryan
>
> --- configure.ac.orig	Tue Feb 26 22:12:35 2002
> +++ configure.ac	Wed Mar 27 14:28:02 2002
> @@ -437,20 +437,6 @@
>             ]
>     )
>
> -AC_MSG_CHECKING([whether struct dirent allocates space for d_name])
> -AC_TRY_RUN(
> -
> [
> -#include <sys/types.h>
> -#include <dirent.h>
> -int main(void){struct dirent d;return(sizeof(d.d_name)<=sizeof(char));}
> -
> ],
> -
> [AC_MSG_RESULT(yes)],
> -
> [
> -
> 	AC_MSG_RESULT(no)
> -
> 	AC_DEFINE(BROKEN_ONE_BYTE_DIRENT_D_NAME)
> -
> ]
> -)
> -
>     # Check whether user wants S/Key support
>     SKEY_MSG="no"
>     AC_ARG_WITH(skey,
> @@ -469,11 +455,13 @@
>
> 	SKEY_MSG="yes"
>
>
> 	AC_MSG_CHECKING([for s/key support])
> -
> 		AC_TRY_RUN(
> +
> 		AC_TRY_LINK(
>
> 		[
> -#include <stdio.h>
> -#include <skey.h>
> -int main() { char *ff = skey_keyinfo(""); ff=""; return 0; }
> +
> 			#include <stdio.h>
> +
> 			#include <skey.h>
> +
> 			],
> +
> 			[
> +
> 			char *ff = skey_keyinfo(""); ff="";
>
> 		],
>
> 		[AC_MSG_RESULT(yes)],
>
> 		[
> @@ -625,6 +613,10 @@
>
> 	AC_MSG_RESULT(no)
>
> 	AC_DEFINE(BROKEN_SNPRINTF)
>
> 	AC_MSG_WARN([****** Your snprintf() function is broken, complain to your
> vendor])
> +
> 	],
> +
> 	[
> +
> 		AC_MSG_RESULT(assuming no)
> +
> 		AC_DEFINE(BROKEN_SNPRINTF)
>     		]
>     	)
>     fi
> @@ -729,22 +721,21 @@
>
>     		# Basic test to check for compatible version and correct linking
>     		# *does not* test for RSA - that comes later.
> -
> 	AC_TRY_RUN(
> +
> 	AC_TRY_LINK(
>
> 	[
> -#include <string.h>
> -#include <openssl/rand.h>
> -int main(void)
> -{
> -
> char a[2048];
> -
> memset(a, 0, sizeof(a));
> -
> RAND_add(a, sizeof(a), sizeof(a));
> -
> return(RAND_status() <= 0);
> -}
> +
> 		#include <string.h>
> +
> 		#include <openssl/rand.h>
> +
> 		],
> +
> 		[
> +
> 		char a[2048];
> +
> 		memset(a, 0, sizeof(a));
> +
> 		RAND_add(a, sizeof(a), sizeof(a));
> +
> 		return(RAND_status() <= 0);
>
> 	],
>
> 	[
>
> 		found_crypto=1
>
> 		break;
> -
> 		], []
> +
> 		], [ ]
>     		)
>
>     		if test ! -z "$found_crypto" ; then
> @@ -800,26 +791,26 @@
>     	else
>     		LIBS="$saved_LIBS -lRSAglue -lrsaref"
>     	fi
> -
> AC_TRY_RUN([
> -#include <string.h>
> -#include <openssl/rand.h>
> -#include <openssl/rsa.h>
> -#include <openssl/bn.h>
> -#include <openssl/sha.h>
> -int main(void)
> -{
> -
> int num; RSA *key; static unsigned char p_in[] = "blahblah";
> -
> unsigned char c[256], p[256];
> -
> memset(c, 0, sizeof(c)); RAND_add(c, sizeof(c), sizeof(c));
> -
> if ((key=RSA_generate_key(512, 3, NULL, NULL))==NULL) return(1);
> -
> num = RSA_public_encrypt(sizeof(p_in) - 1, p_in, c, key, RSA_PKCS1_PADDING);
> -
> return(-1 == RSA_private_decrypt(num, c, p, key, RSA_PKCS1_PADDING));
> -}
> -
> ],
> -
> [
> +
> AC_TRY_LINK(
> +
> 	[
> +
> 	#include <string.h>
> +
> 	#include <openssl/rand.h>
> +
> 	#include <openssl/rsa.h>
> +
> 	#include <openssl/bn.h>
> +
> 	#include <openssl/sha.h>
> +
> 	],
> +
> 	[
> +
> 	int num; RSA *key; static unsigned char p_in[] = "blahblah";
> +
> 	unsigned char c[256], p[256];
> +
> 	memset(c, 0, sizeof(c)); RAND_add(c, sizeof(c), sizeof(c));
> +
> 	if ((key=RSA_generate_key(512, 3, NULL, NULL))==NULL) return(1);
> +
> 	num = RSA_public_encrypt(sizeof(p_in) - 1, p_in, c, key, RSA_PKCS1_PADDING);
> +
> 	return(-1 == RSA_private_decrypt(num, c, p, key, RSA_PKCS1_PADDING));
> +
> 	],
> +
> 	[
>     		rsa_works=1
>     		break;
> -
> ], [])
> +
> 	], [])
>     done
>     LIBS="$saved_LIBS"
>
> @@ -856,6 +847,9 @@
>     	[
>     		AC_MSG_RESULT(no)
>     		AC_MSG_ERROR(Your OpenSSL headers do not match your library)
> +
> ],
> +
> [
> +
> 	AC_MSG_RESULT(hoping so)
>     	]
>     )
>
> @@ -885,6 +879,12 @@
>     		# Default to use of the rand helper if OpenSSL doesn't
>     		# seed itself
>     		USE_RAND_HELPER=yes
> +
> ],
> +
> [
> +
> 	AC_MSG_RESULT(not sure)
> +
> 	# Default to use of the rand helper if OpenSSL doesn't
> +
> 	# seed itself
> +
> 	USE_RAND_HELPER=yes
>     	]
>     )
>
> @@ -1457,7 +1457,10 @@
>     #else
>     main() { exit(0); }
>     #endif
> -
> 	], [ true ], [ AC_DEFINE(BROKEN_SNPRINTF) ]
> +
> 	],
> +
> 	[ true ],
> +
> 	[ AC_DEFINE(BROKEN_SNPRINTF) ],
> +
> 	[ AC_DEFINE(BROKEN_SNPRINTF) ]
>     	)
>     fi
>     AC_SUBST(NO_SFTP)
> @@ -1776,12 +1779,11 @@
>     		]
>     	)
>     fi
> -AC_CHECK_FILE("/dev/ptc",
> -
> [
> -
> 	AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC)
> -
> 	have_dev_ptc=1
> -
> ]
> -)
> +
> +if test -f "/dev/ptc" ; then
> +
> AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC)
> +
> have_dev_ptc=1
> +fi
>
>     # Options from here on. Some of these are preset by platform above
>     AC_ARG_WITH(mantype,
> --- sftp-glob.c.orig	Tue Feb 12 19:10:33 2002
> +++ sftp-glob.c	Wed Mar 27 14:27:30 2002
> @@ -78,12 +78,9 @@
>     	 * Solaris defines dirent->d_name as a one byte array and expects
>     	 * you to hack around it.
>     	 */
> -#ifdef BROKEN_ONE_BYTE_DIRENT_D_NAME
> -
> strlcpy(ret->d_name, od->dir[od->offset++]->filename, MAXPATHLEN);
> -#else
>     	strlcpy(ret->d_name, od->dir[od->offset++]->filename,
> -
>        sizeof(ret->d_name));
> -#endif
> +
> 	(sizeof(ret->d_name) <= sizeof(char))?
> +
> 	MAXPATHLEN: sizeof(ret->d_name));
>     #ifdef __GNU_LIBRARY__
>     	/*
>     	 * Idiot glibc uses extensions to struct dirent for readdir with
>
>
>
>
> _______________________________________________
> openssh-unix-dev at mindrot.org mailing list
> http://www.mindrot.org/mailman/listinfo/openssh-unix-dev
>




More information about the openssh-unix-dev mailing list