* [PATH 9/12] VTPM mini-os: New stubdom applications
@ 2011-03-11 23:06 Matthew Fioravante
2011-03-12 0:50 ` Samuel Thibault
0 siblings, 1 reply; 2+ messages in thread
From: Matthew Fioravante @ 2011-03-11 23:06 UTC (permalink / raw)
To: xen-devel@lists.xensource.com
[-- Attachment #1.1.1: Type: text/plain, Size: 416 bytes --]
This patch ports 5 new applications to the stubdom makefile structure
for inclusion into stubdom domains. While these are required for
vtpm-stubdom and vtpmmgrdom they could be used with other stubdom
applications.
-libgmp 4.3.2
-openssl 1.0.0a
-polarssl 0.12.1
-berlios tpm_emulator 0.6.1
-vtpm_manager (from the tools directory)
Signed off by: Matthew Fioravante <matthew.fioravante@jhuapl.edu>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.1.2: 9-stubdom-newapps.patch --]
[-- Type: text/x-patch; name="9-stubdom-newapps.patch", Size: 39329 bytes --]
diff -Naur xen-unstable-trp-sdp-pristine/stubdom/openssl.patch xen-unstable-trp-sdp/stubdom/openssl.patch
--- xen-unstable-trp-sdp-pristine/stubdom/openssl.patch 1969-12-31 19:00:00.000000000 -0500
+++ xen-unstable-trp-sdp/stubdom/openssl.patch 2011-02-23 19:40:48.000000000 -0500
@@ -0,0 +1,945 @@
+diff -Naur openssl-1.0.0a.pristine/crypto/bio/b_print.c openssl-1.0.0a/crypto/bio/b_print.c
+--- openssl-1.0.0a.pristine/crypto/bio/b_print.c 2010-10-21 16:08:44.000000000 -0400
++++ openssl-1.0.0a/crypto/bio/b_print.c 2010-10-29 11:32:48.000000000 -0400
+@@ -109,660 +109,6 @@
+ * o ... (for OpenSSL)
+ */
+
+-#ifdef HAVE_LONG_DOUBLE
+-#define LDOUBLE long double
+-#else
+-#define LDOUBLE double
+-#endif
+-
+-#ifdef HAVE_LONG_LONG
+-# if defined(_WIN32) && !defined(__GNUC__)
+-# define LLONG __int64
+-# else
+-# define LLONG long long
+-# endif
+-#else
+-#define LLONG long
+-#endif
+-
+-static void fmtstr (char **, char **, size_t *, size_t *,
+- const char *, int, int, int);
+-static void fmtint (char **, char **, size_t *, size_t *,
+- LLONG, int, int, int, int);
+-static void fmtfp (char **, char **, size_t *, size_t *,
+- LDOUBLE, int, int, int);
+-static void doapr_outch (char **, char **, size_t *, size_t *, int);
+-static void _dopr(char **sbuffer, char **buffer,
+- size_t *maxlen, size_t *retlen, int *truncated,
+- const char *format, va_list args);
+-
+-/* format read states */
+-#define DP_S_DEFAULT 0
+-#define DP_S_FLAGS 1
+-#define DP_S_MIN 2
+-#define DP_S_DOT 3
+-#define DP_S_MAX 4
+-#define DP_S_MOD 5
+-#define DP_S_CONV 6
+-#define DP_S_DONE 7
+-
+-/* format flags - Bits */
+-#define DP_F_MINUS (1 << 0)
+-#define DP_F_PLUS (1 << 1)
+-#define DP_F_SPACE (1 << 2)
+-#define DP_F_NUM (1 << 3)
+-#define DP_F_ZERO (1 << 4)
+-#define DP_F_UP (1 << 5)
+-#define DP_F_UNSIGNED (1 << 6)
+-
+-/* conversion flags */
+-#define DP_C_SHORT 1
+-#define DP_C_LONG 2
+-#define DP_C_LDOUBLE 3
+-#define DP_C_LLONG 4
+-
+-/* some handy macros */
+-#define char_to_int(p) (p - '0')
+-#define OSSL_MAX(p,q) ((p >= q) ? p : q)
+-
+-static void
+-_dopr(
+- char **sbuffer,
+- char **buffer,
+- size_t *maxlen,
+- size_t *retlen,
+- int *truncated,
+- const char *format,
+- va_list args)
+-{
+- char ch;
+- LLONG value;
+- LDOUBLE fvalue;
+- char *strvalue;
+- int min;
+- int max;
+- int state;
+- int flags;
+- int cflags;
+- size_t currlen;
+-
+- state = DP_S_DEFAULT;
+- flags = currlen = cflags = min = 0;
+- max = -1;
+- ch = *format++;
+-
+- while (state != DP_S_DONE) {
+- if (ch == '\0' || (buffer == NULL && currlen >= *maxlen))
+- state = DP_S_DONE;
+-
+- switch (state) {
+- case DP_S_DEFAULT:
+- if (ch == '%')
+- state = DP_S_FLAGS;
+- else
+- doapr_outch(sbuffer,buffer, &currlen, maxlen, ch);
+- ch = *format++;
+- break;
+- case DP_S_FLAGS:
+- switch (ch) {
+- case '-':
+- flags |= DP_F_MINUS;
+- ch = *format++;
+- break;
+- case '+':
+- flags |= DP_F_PLUS;
+- ch = *format++;
+- break;
+- case ' ':
+- flags |= DP_F_SPACE;
+- ch = *format++;
+- break;
+- case '#':
+- flags |= DP_F_NUM;
+- ch = *format++;
+- break;
+- case '0':
+- flags |= DP_F_ZERO;
+- ch = *format++;
+- break;
+- default:
+- state = DP_S_MIN;
+- break;
+- }
+- break;
+- case DP_S_MIN:
+- if (isdigit((unsigned char)ch)) {
+- min = 10 * min + char_to_int(ch);
+- ch = *format++;
+- } else if (ch == '*') {
+- min = va_arg(args, int);
+- ch = *format++;
+- state = DP_S_DOT;
+- } else
+- state = DP_S_DOT;
+- break;
+- case DP_S_DOT:
+- if (ch == '.') {
+- state = DP_S_MAX;
+- ch = *format++;
+- } else
+- state = DP_S_MOD;
+- break;
+- case DP_S_MAX:
+- if (isdigit((unsigned char)ch)) {
+- if (max < 0)
+- max = 0;
+- max = 10 * max + char_to_int(ch);
+- ch = *format++;
+- } else if (ch == '*') {
+- max = va_arg(args, int);
+- ch = *format++;
+- state = DP_S_MOD;
+- } else
+- state = DP_S_MOD;
+- break;
+- case DP_S_MOD:
+- switch (ch) {
+- case 'h':
+- cflags = DP_C_SHORT;
+- ch = *format++;
+- break;
+- case 'l':
+- if (*format == 'l') {
+- cflags = DP_C_LLONG;
+- format++;
+- } else
+- cflags = DP_C_LONG;
+- ch = *format++;
+- break;
+- case 'q':
+- cflags = DP_C_LLONG;
+- ch = *format++;
+- break;
+- case 'L':
+- cflags = DP_C_LDOUBLE;
+- ch = *format++;
+- break;
+- default:
+- break;
+- }
+- state = DP_S_CONV;
+- break;
+- case DP_S_CONV:
+- switch (ch) {
+- case 'd':
+- case 'i':
+- switch (cflags) {
+- case DP_C_SHORT:
+- value = (short int)va_arg(args, int);
+- break;
+- case DP_C_LONG:
+- value = va_arg(args, long int);
+- break;
+- case DP_C_LLONG:
+- value = va_arg(args, LLONG);
+- break;
+- default:
+- value = va_arg(args, int);
+- break;
+- }
+- fmtint(sbuffer, buffer, &currlen, maxlen,
+- value, 10, min, max, flags);
+- break;
+- case 'X':
+- flags |= DP_F_UP;
+- /* FALLTHROUGH */
+- case 'x':
+- case 'o':
+- case 'u':
+- flags |= DP_F_UNSIGNED;
+- switch (cflags) {
+- case DP_C_SHORT:
+- value = (unsigned short int)va_arg(args, unsigned int);
+- break;
+- case DP_C_LONG:
+- value = (LLONG) va_arg(args,
+- unsigned long int);
+- break;
+- case DP_C_LLONG:
+- value = va_arg(args, unsigned LLONG);
+- break;
+- default:
+- value = (LLONG) va_arg(args,
+- unsigned int);
+- break;
+- }
+- fmtint(sbuffer, buffer, &currlen, maxlen, value,
+- ch == 'o' ? 8 : (ch == 'u' ? 10 : 16),
+- min, max, flags);
+- break;
+- case 'f':
+- if (cflags == DP_C_LDOUBLE)
+- fvalue = va_arg(args, LDOUBLE);
+- else
+- fvalue = va_arg(args, double);
+- fmtfp(sbuffer, buffer, &currlen, maxlen,
+- fvalue, min, max, flags);
+- break;
+- case 'E':
+- flags |= DP_F_UP;
+- case 'e':
+- if (cflags == DP_C_LDOUBLE)
+- fvalue = va_arg(args, LDOUBLE);
+- else
+- fvalue = va_arg(args, double);
+- break;
+- case 'G':
+- flags |= DP_F_UP;
+- case 'g':
+- if (cflags == DP_C_LDOUBLE)
+- fvalue = va_arg(args, LDOUBLE);
+- else
+- fvalue = va_arg(args, double);
+- break;
+- case 'c':
+- doapr_outch(sbuffer, buffer, &currlen, maxlen,
+- va_arg(args, int));
+- break;
+- case 's':
+- strvalue = va_arg(args, char *);
+- if (max < 0) {
+- if (buffer)
+- max = INT_MAX;
+- else
+- max = *maxlen;
+- }
+- fmtstr(sbuffer, buffer, &currlen, maxlen, strvalue,
+- flags, min, max);
+- break;
+- case 'p':
+- value = (long)va_arg(args, void *);
+- fmtint(sbuffer, buffer, &currlen, maxlen,
+- value, 16, min, max, flags|DP_F_NUM);
+- break;
+- case 'n': /* XXX */
+- if (cflags == DP_C_SHORT) {
+- short int *num;
+- num = va_arg(args, short int *);
+- *num = currlen;
+- } else if (cflags == DP_C_LONG) { /* XXX */
+- long int *num;
+- num = va_arg(args, long int *);
+- *num = (long int) currlen;
+- } else if (cflags == DP_C_LLONG) { /* XXX */
+- LLONG *num;
+- num = va_arg(args, LLONG *);
+- *num = (LLONG) currlen;
+- } else {
+- int *num;
+- num = va_arg(args, int *);
+- *num = currlen;
+- }
+- break;
+- case '%':
+- doapr_outch(sbuffer, buffer, &currlen, maxlen, ch);
+- break;
+- case 'w':
+- /* not supported yet, treat as next char */
+- ch = *format++;
+- break;
+- default:
+- /* unknown, skip */
+- break;
+- }
+- ch = *format++;
+- state = DP_S_DEFAULT;
+- flags = cflags = min = 0;
+- max = -1;
+- break;
+- case DP_S_DONE:
+- break;
+- default:
+- break;
+- }
+- }
+- *truncated = (currlen > *maxlen - 1);
+- if (*truncated)
+- currlen = *maxlen - 1;
+- doapr_outch(sbuffer, buffer, &currlen, maxlen, '\0');
+- *retlen = currlen - 1;
+- return;
+-}
+-
+-static void
+-fmtstr(
+- char **sbuffer,
+- char **buffer,
+- size_t *currlen,
+- size_t *maxlen,
+- const char *value,
+- int flags,
+- int min,
+- int max)
+-{
+- int padlen, strln;
+- int cnt = 0;
+-
+- if (value == 0)
+- value = "<NULL>";
+- for (strln = 0; value[strln]; ++strln)
+- ;
+- padlen = min - strln;
+- if (padlen < 0)
+- padlen = 0;
+- if (flags & DP_F_MINUS)
+- padlen = -padlen;
+-
+- while ((padlen > 0) && (cnt < max)) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, ' ');
+- --padlen;
+- ++cnt;
+- }
+- while (*value && (cnt < max)) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, *value++);
+- ++cnt;
+- }
+- while ((padlen < 0) && (cnt < max)) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, ' ');
+- ++padlen;
+- ++cnt;
+- }
+-}
+-
+-static void
+-fmtint(
+- char **sbuffer,
+- char **buffer,
+- size_t *currlen,
+- size_t *maxlen,
+- LLONG value,
+- int base,
+- int min,
+- int max,
+- int flags)
+-{
+- int signvalue = 0;
+- const char *prefix = "";
+- unsigned LLONG uvalue;
+- char convert[DECIMAL_SIZE(value)+3];
+- int place = 0;
+- int spadlen = 0;
+- int zpadlen = 0;
+- int caps = 0;
+-
+- if (max < 0)
+- max = 0;
+- uvalue = value;
+- if (!(flags & DP_F_UNSIGNED)) {
+- if (value < 0) {
+- signvalue = '-';
+- uvalue = -value;
+- } else if (flags & DP_F_PLUS)
+- signvalue = '+';
+- else if (flags & DP_F_SPACE)
+- signvalue = ' ';
+- }
+- if (flags & DP_F_NUM) {
+- if (base == 8) prefix = "0";
+- if (base == 16) prefix = "0x";
+- }
+- if (flags & DP_F_UP)
+- caps = 1;
+- do {
+- convert[place++] =
+- (caps ? "0123456789ABCDEF" : "0123456789abcdef")
+- [uvalue % (unsigned) base];
+- uvalue = (uvalue / (unsigned) base);
+- } while (uvalue && (place < (int)sizeof(convert)));
+- if (place == sizeof(convert))
+- place--;
+- convert[place] = 0;
+-
+- zpadlen = max - place;
+- spadlen = min - OSSL_MAX(max, place) - (signvalue ? 1 : 0) - strlen(prefix);
+- if (zpadlen < 0)
+- zpadlen = 0;
+- if (spadlen < 0)
+- spadlen = 0;
+- if (flags & DP_F_ZERO) {
+- zpadlen = OSSL_MAX(zpadlen, spadlen);
+- spadlen = 0;
+- }
+- if (flags & DP_F_MINUS)
+- spadlen = -spadlen;
+-
+- /* spaces */
+- while (spadlen > 0) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, ' ');
+- --spadlen;
+- }
+-
+- /* sign */
+- if (signvalue)
+- doapr_outch(sbuffer, buffer, currlen, maxlen, signvalue);
+-
+- /* prefix */
+- while (*prefix) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, *prefix);
+- prefix++;
+- }
+-
+- /* zeros */
+- if (zpadlen > 0) {
+- while (zpadlen > 0) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, '0');
+- --zpadlen;
+- }
+- }
+- /* digits */
+- while (place > 0)
+- doapr_outch(sbuffer, buffer, currlen, maxlen, convert[--place]);
+-
+- /* left justified spaces */
+- while (spadlen < 0) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, ' ');
+- ++spadlen;
+- }
+- return;
+-}
+-
+-static LDOUBLE
+-abs_val(LDOUBLE value)
+-{
+- LDOUBLE result = value;
+- if (value < 0)
+- result = -value;
+- return result;
+-}
+-
+-static LDOUBLE
+-pow_10(int in_exp)
+-{
+- LDOUBLE result = 1;
+- while (in_exp) {
+- result *= 10;
+- in_exp--;
+- }
+- return result;
+-}
+-
+-static long
+-roundv(LDOUBLE value)
+-{
+- long intpart;
+- intpart = (long) value;
+- value = value - intpart;
+- if (value >= 0.5)
+- intpart++;
+- return intpart;
+-}
+-
+-static void
+-fmtfp(
+- char **sbuffer,
+- char **buffer,
+- size_t *currlen,
+- size_t *maxlen,
+- LDOUBLE fvalue,
+- int min,
+- int max,
+- int flags)
+-{
+- int signvalue = 0;
+- LDOUBLE ufvalue;
+- char iconvert[20];
+- char fconvert[20];
+- int iplace = 0;
+- int fplace = 0;
+- int padlen = 0;
+- int zpadlen = 0;
+- int caps = 0;
+- long intpart;
+- long fracpart;
+- long max10;
+-
+- if (max < 0)
+- max = 6;
+- ufvalue = abs_val(fvalue);
+- if (fvalue < 0)
+- signvalue = '-';
+- else if (flags & DP_F_PLUS)
+- signvalue = '+';
+- else if (flags & DP_F_SPACE)
+- signvalue = ' ';
+-
+- intpart = (long)ufvalue;
+-
+- /* sorry, we only support 9 digits past the decimal because of our
+- conversion method */
+- if (max > 9)
+- max = 9;
+-
+- /* we "cheat" by converting the fractional part to integer by
+- multiplying by a factor of 10 */
+- max10 = roundv(pow_10(max));
+- fracpart = roundv(pow_10(max) * (ufvalue - intpart));
+-
+- if (fracpart >= max10) {
+- intpart++;
+- fracpart -= max10;
+- }
+-
+- /* convert integer part */
+- do {
+- iconvert[iplace++] =
+- (caps ? "0123456789ABCDEF"
+- : "0123456789abcdef")[intpart % 10];
+- intpart = (intpart / 10);
+- } while (intpart && (iplace < (int)sizeof(iconvert)));
+- if (iplace == sizeof iconvert)
+- iplace--;
+- iconvert[iplace] = 0;
+-
+- /* convert fractional part */
+- do {
+- fconvert[fplace++] =
+- (caps ? "0123456789ABCDEF"
+- : "0123456789abcdef")[fracpart % 10];
+- fracpart = (fracpart / 10);
+- } while (fplace < max);
+- if (fplace == sizeof fconvert)
+- fplace--;
+- fconvert[fplace] = 0;
+-
+- /* -1 for decimal point, another -1 if we are printing a sign */
+- padlen = min - iplace - max - 1 - ((signvalue) ? 1 : 0);
+- zpadlen = max - fplace;
+- if (zpadlen < 0)
+- zpadlen = 0;
+- if (padlen < 0)
+- padlen = 0;
+- if (flags & DP_F_MINUS)
+- padlen = -padlen;
+-
+- if ((flags & DP_F_ZERO) && (padlen > 0)) {
+- if (signvalue) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, signvalue);
+- --padlen;
+- signvalue = 0;
+- }
+- while (padlen > 0) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, '0');
+- --padlen;
+- }
+- }
+- while (padlen > 0) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, ' ');
+- --padlen;
+- }
+- if (signvalue)
+- doapr_outch(sbuffer, buffer, currlen, maxlen, signvalue);
+-
+- while (iplace > 0)
+- doapr_outch(sbuffer, buffer, currlen, maxlen, iconvert[--iplace]);
+-
+- /*
+- * Decimal point. This should probably use locale to find the correct
+- * char to print out.
+- */
+- if (max > 0 || (flags & DP_F_NUM)) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, '.');
+-
+- while (fplace > 0)
+- doapr_outch(sbuffer, buffer, currlen, maxlen, fconvert[--fplace]);
+- }
+- while (zpadlen > 0) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, '0');
+- --zpadlen;
+- }
+-
+- while (padlen < 0) {
+- doapr_outch(sbuffer, buffer, currlen, maxlen, ' ');
+- ++padlen;
+- }
+-}
+-
+-static void
+-doapr_outch(
+- char **sbuffer,
+- char **buffer,
+- size_t *currlen,
+- size_t *maxlen,
+- int c)
+-{
+- /* If we haven't at least one buffer, someone has doe a big booboo */
+- assert(*sbuffer != NULL || buffer != NULL);
+-
+- if (buffer) {
+- while (*currlen >= *maxlen) {
+- if (*buffer == NULL) {
+- if (*maxlen == 0)
+- *maxlen = 1024;
+- *buffer = OPENSSL_malloc(*maxlen);
+- if (*currlen > 0) {
+- assert(*sbuffer != NULL);
+- memcpy(*buffer, *sbuffer, *currlen);
+- }
+- *sbuffer = NULL;
+- } else {
+- *maxlen += 1024;
+- *buffer = OPENSSL_realloc(*buffer, *maxlen);
+- }
+- }
+- /* What to do if *buffer is NULL? */
+- assert(*sbuffer != NULL || *buffer != NULL);
+- }
+-
+- if (*currlen < *maxlen) {
+- if (*sbuffer)
+- (*sbuffer)[(*currlen)++] = (char)c;
+- else
+- (*buffer)[(*currlen)++] = (char)c;
+- }
+-
+- return;
+-}
+-
+ /***************************************************************************/
+
+ int BIO_printf (BIO *bio, const char *format, ...)
+@@ -780,31 +126,7 @@
+
+ int BIO_vprintf (BIO *bio, const char *format, va_list args)
+ {
+- int ret;
+- size_t retlen;
+- char hugebuf[1024*2]; /* Was previously 10k, which is unreasonable
+- in small-stack environments, like threads
+- or DOS programs. */
+- char *hugebufp = hugebuf;
+- size_t hugebufsize = sizeof(hugebuf);
+- char *dynbuf = NULL;
+- int ignored;
+-
+- dynbuf = NULL;
+- CRYPTO_push_info("doapr()");
+- _dopr(&hugebufp, &dynbuf, &hugebufsize,
+- &retlen, &ignored, format, args);
+- if (dynbuf)
+- {
+- ret=BIO_write(bio, dynbuf, (int)retlen);
+- OPENSSL_free(dynbuf);
+- }
+- else
+- {
+- ret=BIO_write(bio, hugebuf, (int)retlen);
+- }
+- CRYPTO_pop_info();
+- return(ret);
++ return -1;
+ }
+
+ /* As snprintf is not available everywhere, we provide our own implementation.
+@@ -826,17 +148,5 @@
+
+ int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
+ {
+- size_t retlen;
+- int truncated;
+-
+- _dopr(&buf, NULL, &n, &retlen, &truncated, format, args);
+-
+- if (truncated)
+- /* In case of truncation, return -1 like traditional snprintf.
+- * (Current drafts for ISO/IEC 9899 say snprintf should return
+- * the number of characters that would have been written,
+- * had the buffer been large enough.) */
+- return -1;
+- else
+- return (retlen <= INT_MAX) ? (int)retlen : -1;
++ return -1;
+ }
+diff -Naur openssl-1.0.0a.pristine/crypto/rand/rand_egd.c openssl-1.0.0a/crypto/rand/rand_egd.c
+--- openssl-1.0.0a.pristine/crypto/rand/rand_egd.c 2010-10-21 16:08:44.000000000 -0400
++++ openssl-1.0.0a/crypto/rand/rand_egd.c 2010-10-29 11:31:16.000000000 -0400
+@@ -95,7 +95,6 @@
+ * RAND_egd() is a wrapper for RAND_egd_bytes() with numbytes=255.
+ */
+
+-#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_VOS) || defined(OPENSSL_SYS_BEOS)
+ int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)
+ {
+ return(-1);
+@@ -109,195 +108,3 @@
+ {
+ return(-1);
+ }
+-#else
+-#include <openssl/opensslconf.h>
+-#include OPENSSL_UNISTD
+-#include <sys/types.h>
+-#include <sys/socket.h>
+-#ifndef NO_SYS_UN_H
+-# ifdef OPENSSL_SYS_VXWORKS
+-# include <streams/un.h>
+-# else
+-# include <sys/un.h>
+-# endif
+-#else
+-struct sockaddr_un {
+- short sun_family; /* AF_UNIX */
+- char sun_path[108]; /* path name (gag) */
+-};
+-#endif /* NO_SYS_UN_H */
+-#include <string.h>
+-#include <errno.h>
+-
+-#ifndef offsetof
+-# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+-#endif
+-
+-int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)
+- {
+- int ret = 0;
+- struct sockaddr_un addr;
+- int len, num, numbytes;
+- int fd = -1;
+- int success;
+- unsigned char egdbuf[2], tempbuf[255], *retrievebuf;
+-
+- memset(&addr, 0, sizeof(addr));
+- addr.sun_family = AF_UNIX;
+- if (strlen(path) >= sizeof(addr.sun_path))
+- return (-1);
+- BUF_strlcpy(addr.sun_path,path,sizeof addr.sun_path);
+- len = offsetof(struct sockaddr_un, sun_path) + strlen(path);
+- fd = socket(AF_UNIX, SOCK_STREAM, 0);
+- if (fd == -1) return (-1);
+- success = 0;
+- while (!success)
+- {
+- if (connect(fd, (struct sockaddr *)&addr, len) == 0)
+- success = 1;
+- else
+- {
+- switch (errno)
+- {
+-#ifdef EINTR
+- case EINTR:
+-#endif
+-#ifdef EAGAIN
+- case EAGAIN:
+-#endif
+-#ifdef EINPROGRESS
+- case EINPROGRESS:
+-#endif
+-#ifdef EALREADY
+- case EALREADY:
+-#endif
+- /* No error, try again */
+- break;
+-#ifdef EISCONN
+- case EISCONN:
+- success = 1;
+- break;
+-#endif
+- default:
+- goto err; /* failure */
+- }
+- }
+- }
+-
+- while(bytes > 0)
+- {
+- egdbuf[0] = 1;
+- egdbuf[1] = bytes < 255 ? bytes : 255;
+- numbytes = 0;
+- while (numbytes != 2)
+- {
+- num = write(fd, egdbuf + numbytes, 2 - numbytes);
+- if (num >= 0)
+- numbytes += num;
+- else
+- {
+- switch (errno)
+- {
+-#ifdef EINTR
+- case EINTR:
+-#endif
+-#ifdef EAGAIN
+- case EAGAIN:
+-#endif
+- /* No error, try again */
+- break;
+- default:
+- ret = -1;
+- goto err; /* failure */
+- }
+- }
+- }
+- numbytes = 0;
+- while (numbytes != 1)
+- {
+- num = read(fd, egdbuf, 1);
+- if (num == 0)
+- goto err; /* descriptor closed */
+- else if (num > 0)
+- numbytes += num;
+- else
+- {
+- switch (errno)
+- {
+-#ifdef EINTR
+- case EINTR:
+-#endif
+-#ifdef EAGAIN
+- case EAGAIN:
+-#endif
+- /* No error, try again */
+- break;
+- default:
+- ret = -1;
+- goto err; /* failure */
+- }
+- }
+- }
+- if(egdbuf[0] == 0)
+- goto err;
+- if (buf)
+- retrievebuf = buf + ret;
+- else
+- retrievebuf = tempbuf;
+- numbytes = 0;
+- while (numbytes != egdbuf[0])
+- {
+- num = read(fd, retrievebuf + numbytes, egdbuf[0] - numbytes);
+- if (num == 0)
+- goto err; /* descriptor closed */
+- else if (num > 0)
+- numbytes += num;
+- else
+- {
+- switch (errno)
+- {
+-#ifdef EINTR
+- case EINTR:
+-#endif
+-#ifdef EAGAIN
+- case EAGAIN:
+-#endif
+- /* No error, try again */
+- break;
+- default:
+- ret = -1;
+- goto err; /* failure */
+- }
+- }
+- }
+- ret += egdbuf[0];
+- bytes -= egdbuf[0];
+- if (!buf)
+- RAND_seed(tempbuf, egdbuf[0]);
+- }
+- err:
+- if (fd != -1) close(fd);
+- return(ret);
+- }
+-
+-
+-int RAND_egd_bytes(const char *path, int bytes)
+- {
+- int num, ret = 0;
+-
+- num = RAND_query_egd_bytes(path, NULL, bytes);
+- if (num < 1) goto err;
+- if (RAND_status() == 1)
+- ret = num;
+- err:
+- return(ret);
+- }
+-
+-
+-int RAND_egd(const char *path)
+- {
+- return (RAND_egd_bytes(path, 255));
+- }
+-
+-
+-#endif
+diff -Naur openssl-1.0.0a.pristine/e_os.h openssl-1.0.0a/e_os.h
+--- openssl-1.0.0a.pristine/e_os.h 2010-10-21 16:08:44.000000000 -0400
++++ openssl-1.0.0a/e_os.h 2010-10-29 11:31:16.000000000 -0400
+@@ -76,18 +76,6 @@
+ #define REF_PRINT(a,b) fprintf(stderr,"%08X:%4d:%s\n",(int)b,b->references,a)
+ #endif
+
+-#ifndef DEVRANDOM
+-/* set this to a comma-separated list of 'random' device files to try out.
+- * My default, we will try to read at least one of these files */
+-#define DEVRANDOM "/dev/urandom","/dev/random","/dev/srandom"
+-#endif
+-#ifndef DEVRANDOM_EGD
+-/* set this to a comma-seperated list of 'egd' sockets to try out. These
+- * sockets will be tried in the order listed in case accessing the device files
+- * listed in DEVRANDOM did not return enough entropy. */
+-#define DEVRANDOM_EGD "/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy"
+-#endif
+-
+ #if defined(OPENSSL_SYS_VXWORKS)
+ # define NO_SYS_PARAM_H
+ # define NO_CHMOD
diff -Naur xen-unstable-trp-sdp-pristine/stubdom/polarssl.patch xen-unstable-trp-sdp/stubdom/polarssl.patch
--- xen-unstable-trp-sdp-pristine/stubdom/polarssl.patch 1969-12-31 19:00:00.000000000 -0500
+++ xen-unstable-trp-sdp/stubdom/polarssl.patch 2011-02-23 19:40:48.000000000 -0500
@@ -0,0 +1,23 @@
+diff -Naur polarssl-0.12.1-pristine/include/polarssl/config.h polarssl-0.12.1/include/polarssl/config.h
+--- polarssl-0.12.1-pristine/include/polarssl/config.h 2010-11-03 14:50:09.000000000 -0400
++++ polarssl-0.12.1/include/polarssl/config.h 2010-11-04 10:24:29.000000000 -0400
+@@ -221,7 +221,7 @@
+ *
+ * This module provides TCP/IP networking routines.
+ */
+-#define POLARSSL_NET_C
++//#define POLARSSL_NET_C
+
+ /*
+ * Module: library/padlock.c
+diff -Naur polarssl-0.12.1-pristine/library/timing.c polarssl-0.12.1/library/timing.c
+--- polarssl-0.12.1-pristine/library/timing.c 2010-11-03 14:50:09.000000000 -0400
++++ polarssl-0.12.1/library/timing.c 2010-11-04 10:30:56.000000000 -0400
+@@ -42,6 +42,7 @@
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/time.h>
++#include <sys/select.h>
+ #include <signal.h>
+ #include <time.h>
+
diff -Naur xen-unstable-trp-sdp-pristine/stubdom/tpmemu-0.6.1.patch xen-unstable-trp-sdp/stubdom/tpmemu-0.6.1.patch
--- xen-unstable-trp-sdp-pristine/stubdom/tpmemu-0.6.1.patch 1969-12-31 19:00:00.000000000 -0500
+++ xen-unstable-trp-sdp/stubdom/tpmemu-0.6.1.patch 2011-02-23 19:40:48.000000000 -0500
@@ -0,0 +1,78 @@
+diff -Naur tpm_emulator-0.6.1-pristine/tpm/tpm_data.c tpm_emulator-0.6.1/tpm/tpm_data.c
+--- tpm_emulator-0.6.1-pristine/tpm/tpm_data.c 2009-10-09 05:07:22.000000000 -0400
++++ tpm_emulator-0.6.1/tpm/tpm_data.c 2011-02-18 14:23:16.000000000 -0500
+@@ -246,8 +246,7 @@
+ || tpm_unmarshal_TPM_PERMANENT_DATA(&ptr, &len, &tpmData.permanent.data)
+ || tpm_unmarshal_TPM_STCLEAR_FLAGS(&ptr, &len, &tpmData.stclear.flags)
+ || tpm_unmarshal_TPM_STCLEAR_DATA(&ptr, &len, &tpmData.stclear.data)
+- || tpm_unmarshal_TPM_STANY_DATA(&ptr, &len, &tpmData.stany.data)
+- || len > 0) {
++ || tpm_unmarshal_TPM_STANY_DATA(&ptr, &len, &tpmData.stany.data)) {
+ tpm_free(buf);
+ return -1;
+ }
+diff -Naur tpm_emulator-0.6.1-pristine/tpmd/Makefile tpm_emulator-0.6.1/tpmd/Makefile
+--- tpm_emulator-0.6.1-pristine/tpmd/Makefile 2009-10-09 05:07:22.000000000 -0400
++++ tpm_emulator-0.6.1/tpmd/Makefile 2011-02-18 14:23:16.000000000 -0500
+@@ -39,3 +39,5 @@
+
+ .PHONY: all clean install
+
++.PHONY: objs
++objs: $(OBJS)
+diff -Naur tpm_emulator-0.6.1-pristine/tpmd/tpm_emulator_config.h tpm_emulator-0.6.1/tpmd/tpm_emulator_config.h
+--- tpm_emulator-0.6.1-pristine/tpmd/tpm_emulator_config.h 2009-10-09 05:07:22.000000000 -0400
++++ tpm_emulator-0.6.1/tpmd/tpm_emulator_config.h 2011-02-18 14:25:22.000000000 -0500
+@@ -21,16 +21,12 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <syslog.h>
+-#if defined(__linux__)
+-#include <asm/byteorder.h>
+-#elif (defined(__OpenBSD__) || defined(__FreeBSD__))
+-#include <sys/endian.h>
+-#endif
++#include <mini-os/byteorder.h>
+
+ /* TPM emulator configuration */
+
+-#undef TPM_STRONG_PERSISTENCE
+-#undef TPM_GENERATE_EK
++#define TPM_STRONG_PERSISTENCE
++#define TPM_GENERATE_EK
+ #undef TPM_GENERATE_SEED_DAA
+ #undef TPM_MEMORY_ALIGNMENT_MANDATORY
+ #undef TPM_USE_INTERNAL_PRNG
+@@ -85,19 +81,19 @@
+
+ #if defined(__linux__)
+
+-#define CPU_TO_BE64(x) __cpu_to_be64(x)
+-#define CPU_TO_LE64(x) __cpu_to_le64(x)
+-#define CPU_TO_BE32(x) __cpu_to_be32(x)
+-#define CPU_TO_LE32(x) __cpu_to_le32(x)
+-#define CPU_TO_BE16(x) __cpu_to_be16(x)
+-#define CPU_TO_LE16(x) __cpu_to_le16(x)
+-
+-#define BE64_TO_CPU(x) __be64_to_cpu(x)
+-#define LE64_TO_CPU(x) __le64_to_cpu(x)
+-#define BE32_TO_CPU(x) __be32_to_cpu(x)
+-#define LE32_TO_CPU(x) __le32_to_cpu(x)
+-#define BE16_TO_CPU(x) __be16_to_cpu(x)
+-#define LE16_TO_CPU(x) __le16_to_cpu(x)
++#define CPU_TO_BE64(x) cpu_to_be64(x)
++#define CPU_TO_LE64(x) cpu_to_le64(x)
++#define CPU_TO_BE32(x) cpu_to_be32(x)
++#define CPU_TO_LE32(x) cpu_to_le32(x)
++#define CPU_TO_BE16(x) cpu_to_be16(x)
++#define CPU_TO_LE16(x) cpu_to_le16(x)
++
++#define BE64_TO_CPU(x) be64_to_cpu(x)
++#define LE64_TO_CPU(x) le64_to_cpu(x)
++#define BE32_TO_CPU(x) be32_to_cpu(x)
++#define LE32_TO_CPU(x) le32_to_cpu(x)
++#define BE16_TO_CPU(x) be16_to_cpu(x)
++#define LE16_TO_CPU(x) le16_to_cpu(x)
+
+ #elif defined(__OpenBSD__)
+
diff -Naur xen-unstable-trp-sdp-pristine/stubdom/Makefile xen-unstable-trp-sdp/stubdom/Makefile
--- xen-unstable-trp-sdp-pristine/stubdom/Makefile 2011-02-23 14:47:26.000000000 -0500
+++ xen-unstable-trp-sdp/stubdom/Makefile 2011-02-23 19:40:48.000000000 -0500
@@ -27,6 +27,22 @@
#OCAML_URL?=$(XEN_EXTFILES_URL)
OCAML_URL?=http://caml.inria.fr/pub/distrib/ocaml-3.11
OCAML_VERSION=3.11.0
+
+GMP_VERSION=4.3.2
+#GMP_URL?=$(XEN_EXTFILES_URL)
+GMP_URL?=ftp://ftp.gmplib.org/pub/gmp-$(GMP_VERSION)
+
+POLARSSL_VERSION=0.12.1
+#POLARSSL_URL?=$(XEN_EXTFILES_URL)
+POLARSSL_URL?=http://polarssl.org/code/releases
+
+OPENSSL_VERSION=1.0.0a
+#OPENSSL_URL?=$(XEN_EXTFILES_URL)
+OPENSSL_URL?=http://www.openssl.org/source
+
+TPMEMU_VERSION=0.6.1
+#TPMEMU_URL?=$(XEN_EXTFILES_URL)
+TPMEMU_URL?=http://download.berlios.de/tpm-emulator
WGET=wget -c
@@ -177,6 +209,125 @@
touch $@
#############
+# cross-gmp
+#############
+gmp-$(GMP_VERSION).tar.bz2:
+ $(WGET) $(GMP_URL)/$@
+
+.PHONY: cross-gmp
+ifeq ($(XEN_TARGET_ARCH), x86_32)
+ GMPEXT=ABI=32
+endif
+gmp-$(XEN_TARGET_ARCH): gmp-$(GMP_VERSION).tar.bz2 $(NEWLIB_STAMPFILE)
+ tar xjf $<
+ mv gmp-$(GMP_VERSION) $@
+ #patch -d $@ -p0 < gmp.patch
+ cd $@; CPPFLAGS="-isystem $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include $(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" CC=$(CC) $(GMPEXT) ./configure --disable-shared --enable-static --disable-fft --without-readline --prefix=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf
+ sed -i 's/#define HAVE_OBSTACK_VPRINTF 1/\/\/#define HAVE_OBSTACK_VPRINTF 1/' $@/config.h
+ touch $@
+
+GMP_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libgmp.a
+cross-gmp: $(GMP_STAMPFILE)
+$(GMP_STAMPFILE): gmp-$(XEN_TARGET_ARCH)
+ ( cd $< && \
+ $(MAKE) && \
+ $(MAKE) install )
+
+#############
+# cross-polarssl
+#############
+polarssl-$(POLARSSL_VERSION)-gpl.tgz:
+ $(WGET) $(POLARSSL_URL)/$@
+
+polarssl-$(XEN_TARGET_ARCH): polarssl-$(POLARSSL_VERSION)-gpl.tgz
+ tar xzf $<
+ mv polarssl-$(POLARSSL_VERSION) $@
+ patch -d $@ -p1 < polarssl.patch
+ touch $@
+
+POLARSSL_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libpolarssl.a
+cross-polarssl: $(POLARSSL_STAMPFILE)
+$(POLARSSL_STAMPFILE): polarssl-$(XEN_TARGET_ARCH) $(NEWLIB_STAMPFILE) lwip-$(XEN_TARGET_ARCH)
+ ( cd $</library && \
+ make CC="$(CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -I $(realpath $(MINI_OS)/include)" && \
+ mkdir -p $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include && \
+ cp -r ../include/* $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include && \
+ mkdir -p $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib && \
+ $(INSTALL_DATA) libpolarssl.a $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib/ )
+
+#############
+# cross-tpmemu
+#############
+tpm_emulator-$(TPMEMU_VERSION).tar.gz:
+ $(WGET) $(TPMEMU_URL)/$@
+
+tpm_emulator-$(XEN_TARGET_ARCH): tpm_emulator-$(TPMEMU_VERSION).tar.gz
+ tar xzf $<
+ mv tpm_emulator-$(TPMEMU_VERSION) $@
+ patch -d $@ -p1 < tpmemu-$(TPMEMU_VERSION).patch; \
+ touch $@
+.PHONY: cross-tpmemu
+cross-tpmemu: tpm_emulator-$(XEN_TARGET_ARCH) $(GMP_STAMPFILE)
+ ( cd $< && \
+ make version && \
+ make CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -I. -I.. -isystem $(CURDIR)/vtpm/compat -D__linux__" CC=$(CC) -C tpmd objs )
+
+#############
+# Cross-OpenSSL
+#############
+openssl-$(OPENSSL_VERSION).tar.gz:
+ $(WGET) $(OPENSSL_URL)/$@
+
+openssl-$(XEN_TARGET_ARCH): openssl-$(OPENSSL_VERSION).tar.gz lwip-$(XEN_TARGET_ARCH)
+ tar xzf $<
+ mv openssl-$(OPENSSL_VERSION) $@
+ cd $@; \
+ ./Configure gcc no-threads no-zlib no-shared no-dso no-sock no-sse2 no-krb5 no-locking --prefix="$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/" --libdir="lib"; \
+ patch -p1 < ../openssl.patch; \
+ touch memory.h; \
+ make depend
+ touch $@
+
+#libcrypto target
+LIBCRYPTO_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libcrypto.a
+$(LIBCRYPTO_STAMPFILE): openssl-$(XEN_TARGET_ARCH) $(NEWLIB_STAMPLFILE) $(ZLIB_STAMPFILE) lwip-$(XEN_TARGET_ARCH)
+ set -e; \
+ cd $<; \
+ make CC="$(CC) -mno-sse -mno-sse2 -mfpmath=387 -Ulinux -DTERMIOS -I lwip-$(XEN_TARGET_ARCH)/src/include/lwip $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -I '$(realpath $(MINI_OS)/include)'" build_crypto;\
+ mkdir -p $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include/openssl; \
+ install include/openssl/*.h $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/include/openssl; \
+ install -m 0644 libcrypto.a ../$(LIBCRYPTO_STAMPFILE)
+
+.PHONY: cross-libcrypto
+cross-libcrypto: $(LIBCRYPTO_STAMPFILE)
+
+#############
+# Cross-vtpmmanager
+#############
+vtpm_manager-$(XEN_TARGET_ARCH):
+ cp -r ../tools/vtpm_manager $@
+ make -C $@ mrproper
+ sed -i 's/fprintf\s*(std...,/printf(/g' $@/util/log.h
+ sed -i 's/fprintf\s*(std...,/printf(/g' $@/util/tcg.h
+ touch $@
+
+VTPMMGR_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libvtsp.a
+$(VTPMMGR_STAMPFILE): vtpm_manager-$(XEN_TARGET_ARCH) $(NEWLIB_STAMPFILE) $(LIBCRYPTO_STAMPFILE)
+ make CC="$(CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement -Wno-unused-label" XEN_ROOT="$(XEN_ROOT)/../../" -C $</util libTCGUtils.a;
+ make CC="$(CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement -Wno-unused-label" XEN_ROOT="$(XEN_ROOT)/../../" -C $</tcs libTCS.a;
+ make CC="$(CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement -Wno-unused-label" XEN_ROOT="$(XEN_ROOT)/../../" -C $</crypto libtcpaCrypto.a;
+ make CC="$(CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement -Wno-unused-label" XEN_ROOT="$(XEN_ROOT)/../../" -C $</manager libvtsp.a;
+ mkdir -p $(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/include/vtpm_manager;
+ install -m 0644 $</util/*.h $</tcs/*.h $</crypto/*.h $</manager/vtsp.h $</manager/vtpm_manager.h $(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/include/vtpm_manager;
+ cd $(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/include/vtpm_manager; \
+ for fname in *.h; do \
+ for file in *.h; do sed -i "s@#include\s*[<\"]$${fname}[>\"]@#include <vtpm_manager/$${fname}>@" $${file}; done; \
+ done
+ install -m 0644 $</util/libTCGUtils.a $</tcs/libTCS.a $</crypto/libtcpaCrypto.a $</manager/libvtsp.a $(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/
+
+cross-vtpm_manager: $(VTPMMGR_STAMPFILE)
+
+#############
# Cross-ocaml
#############
@@ -393,7 +642,11 @@
rm -fr $(CROSS_ROOT)
rm -fr newlib-$(XEN_TARGET_ARCH)
rm -fr zlib-$(XEN_TARGET_ARCH) pciutils-$(XEN_TARGET_ARCH)
rm -fr libxc-$(XEN_TARGET_ARCH) ioemu
+ rm -fr gmp-$(XEN_TARGET_ARCH)
+ rm -fr polarssl-$(XEN_TARGET_ARCH)
+ rm -fr openssl-$(XEN_TARGET_ARCH)
+ rm -fr tpm_emulator-$(XEN_TARGET_ARCH)
rm -f mk-headers-$(XEN_TARGET_ARCH)
rm -fr ocaml-$(XEN_TARGET_ARCH)
rm -fr include
@@ -402,6 +655,10 @@
.PHONY: patchclean
patchclean: crossclean
rm -fr newlib-$(NEWLIB_VERSION)
+ rm -fr gmp-$(XEN_TARGET_ARCH)
+ rm -fr polarssl-$(XEN_TARGET_ARCH)
+ rm -fr openssl-$(XEN_TARGET_ARCH)
+ rm -fr tpm_emulator-$(XEN_TARGET_ARCH)
rm -fr lwip-$(XEN_TARGET_ARCH)
rm -fr grub-upstream
@@ -410,10 +667,14 @@
downloadclean: patchclean
rm -f newlib-$(NEWLIB_VERSION).tar.gz
rm -f zlib-$(ZLIB_VERSION).tar.gz
+ rm -f gmp-$(GMP_VERSION).tar.gz
+ rm -f tpm_emulator-$(TPMEMU_VERSION).tar.gz
rm -f pciutils-$(LIBPCI_VERSION).tar.bz2
rm -f grub-$(GRUB_VERSION).tar.gz
rm -f lwip-$(LWIP_VERSION).tar.gz
rm -f ocaml-$(OCAML_VERSION).tar.gz
+ rm -f polarssl-$(POLARSSL_VERSION)-gpl.tgz
+ rm -f openssl-$(POLARSSL_VERSION)-gpl.tgz
.PHONY: distclean
distclean: downloadclean
[-- Attachment #1.2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 2518 bytes --]
[-- Attachment #2: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATH 9/12] VTPM mini-os: New stubdom applications
2011-03-11 23:06 [PATH 9/12] VTPM mini-os: New stubdom applications Matthew Fioravante
@ 2011-03-12 0:50 ` Samuel Thibault
0 siblings, 0 replies; 2+ messages in thread
From: Samuel Thibault @ 2011-03-12 0:50 UTC (permalink / raw)
To: Matthew Fioravante; +Cc: xen-devel@lists.xensource.com
Matthew Fioravante, le Fri 11 Mar 2011 18:06:26 -0500, a écrit :
> +-#ifdef HAVE_LONG_DOUBLE
> +-#define LDOUBLE long double
> +-#else
> +-#define LDOUBLE double
> +-#endif
>....
Mmm, I'd rather use #if 0 / #endif instead in such case, so that merging
newer upstream versions is way easier.
> +-#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_VOS) || defined(OPENSSL_SYS_BEOS)
> + int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)
> + {
> + return(-1);
> +@@ -109,195 +108,3 @@
> + {
> + return(-1);
> + }
> +-#else
Same remark: simply replace the test with #if 1, so you don't need to
drop the #else part. Actually, you could even talk with upstream to get
#ifdef __MINIOS__ even commited there.
> +diff -Naur polarssl-0.12.1-pristine/library/timing.c polarssl-0.12.1/library/timing.c
> +--- polarssl-0.12.1-pristine/library/timing.c 2010-11-03 14:50:09.000000000 -0400
> ++++ polarssl-0.12.1/library/timing.c 2010-11-04 10:30:56.000000000 -0400
> +@@ -42,6 +42,7 @@
> + #include <unistd.h>
> + #include <sys/types.h>
> + #include <sys/time.h>
> ++#include <sys/select.h>
> + #include <signal.h>
> + #include <time.h>
Maybe we should rather check which potential posix compatibility is
missing here?
> diff -Naur xen-unstable-trp-sdp-pristine/stubdom/tpmemu-0.6.1.patch xen-unstable-trp-sdp/stubdom/tpmemu-0.6.1.patch
> --- xen-unstable-trp-sdp-pristine/stubdom/tpmemu-0.6.1.patch 1969-12-31 19:00:00.000000000 -0500
> +++ xen-unstable-trp-sdp/stubdom/tpmemu-0.6.1.patch 2011-02-23 19:40:48.000000000 -0500
> @@ -0,0 +1,78 @@
> +diff -Naur tpm_emulator-0.6.1-pristine/tpm/tpm_data.c tpm_emulator-0.6.1/tpm/tpm_data.c
> +--- tpm_emulator-0.6.1-pristine/tpm/tpm_data.c 2009-10-09 05:07:22.000000000 -0400
> ++++ tpm_emulator-0.6.1/tpm/tpm_data.c 2011-02-18 14:23:16.000000000 -0500
> +@@ -246,8 +246,7 @@
> + || tpm_unmarshal_TPM_PERMANENT_DATA(&ptr, &len, &tpmData.permanent.data)
> + || tpm_unmarshal_TPM_STCLEAR_FLAGS(&ptr, &len, &tpmData.stclear.flags)
> + || tpm_unmarshal_TPM_STCLEAR_DATA(&ptr, &len, &tpmData.stclear.data)
> +- || tpm_unmarshal_TPM_STANY_DATA(&ptr, &len, &tpmData.stany.data)
> +- || len > 0) {
> ++ || tpm_unmarshal_TPM_STANY_DATA(&ptr, &len, &tpmData.stany.data)) {
> + tpm_free(buf);
> + return -1;
> + }
Could this actually be a bug somewhere?
> +@@ -85,19 +81,19 @@
> +
> + #if defined(__linux__)
> +
> +-#define CPU_TO_BE64(x) __cpu_to_be64(x)
> +-#define CPU_TO_LE64(x) __cpu_to_le64(x)
> +-#define CPU_TO_BE32(x) __cpu_to_be32(x)
> +-#define CPU_TO_LE32(x) __cpu_to_le32(x)
> +-#define CPU_TO_BE16(x) __cpu_to_be16(x)
> +-#define CPU_TO_LE16(x) __cpu_to_le16(x)
> +-
> +-#define BE64_TO_CPU(x) __be64_to_cpu(x)
> +-#define LE64_TO_CPU(x) __le64_to_cpu(x)
> +-#define BE32_TO_CPU(x) __be32_to_cpu(x)
> +-#define LE32_TO_CPU(x) __le32_to_cpu(x)
> +-#define BE16_TO_CPU(x) __be16_to_cpu(x)
> +-#define LE16_TO_CPU(x) __le16_to_cpu(x)
> ++#define CPU_TO_BE64(x) cpu_to_be64(x)
> ++#define CPU_TO_LE64(x) cpu_to_le64(x)
> ++#define CPU_TO_BE32(x) cpu_to_be32(x)
Same here: instead of removing lines which may change upstream, rather
add an #if 0 to comment them out and only add what you need.
> + make CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -I. -I.. -isystem $(CURDIR)/vtpm/compat -D__linux__" CC=$(CC) -C tpmd objs )
I'm not very happy with -D__linux__, since you're actually lying. If
upstream accepts #ifdef __MINIOS__ in their code, it would make things a
lot simpler with further upstream releases.
Samuel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-03-12 0:50 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-11 23:06 [PATH 9/12] VTPM mini-os: New stubdom applications Matthew Fioravante
2011-03-12 0:50 ` Samuel Thibault
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.