Sorry didn't used the svn diff tool:<br><br>Index: src/mainboard/emulation/qemu-x86/Options.lb<br>===================================================================<br>--- src/mainboard/emulation/qemu-x86/Options.lb    (Revision 4200)<br>
+++ src/mainboard/emulation/qemu-x86/Options.lb    (Arbeitskopie)<br>@@ -37,6 +37,7 @@<br> uses OBJCOPY<br> uses CONFIG_PCI_ROM_RUN<br> uses CONFIG_PCI_OPTION_ROM_RUN_VM86<br>+uses CONFIG_GDB_STUB<br> <br> uses CONFIG_CONSOLE_SERIAL8250<br>
 uses USE_DCACHE_RAM<br>@@ -51,7 +52,6 @@<br> default DEFAULT_CONSOLE_LOGLEVEL=8<br> default MAXIMUM_CONSOLE_LOGLEVEL=8<br> default CONFIG_CBFS=0<br>-<br> ## ROM_SIZE is the size of boot ROM that this board will use.<br> default ROM_SIZE  = 256*1024<br>
 <br>@@ -124,5 +124,5 @@<br> ##<br> default CC="$(CROSS_COMPILE)gcc -m32"<br> default HOSTCC="gcc"<br>-<br>+default CONFIG_GDB_STUB=1<br> end<br>Index: src/boot/elfboot.c<br>===================================================================<br>
--- src/boot/elfboot.c    (Revision 4200)<br>+++ src/boot/elfboot.c    (Arbeitskopie)<br>@@ -27,6 +27,8 @@<br> #include <stdint.h><br> #include <stdlib.h><br> #include <string.h><br>+#include <openssl/sha.h><br>
+#include <openssl/evp.h><br> <br> /* Maximum physical address we can use for the coreboot bounce buffer.<br>  */<br>@@ -34,9 +36,14 @@<br> #define MAX_ADDR -1UL<br> #endif<br> <br>+#define SHA256_DIGEST_LENGTH    32<br>
+<br> extern unsigned char _ram_seg;<br> extern unsigned char _eram_seg;<br> <br>+static void measure_elf(unsigned char *header, size_t length);<br>+static int measure_and_extend(unsigned char hash);<br>+<br> struct segment {<br>
     struct segment *next;<br>     struct segment *prev;<br>@@ -61,6 +68,30 @@<br>     unsigned short ip_checksum;<br> };<br> <br>+static void measure_elf(unsigned char *header, size_t length) {<br>+        unsigned char md[SHA256_DIGEST_LENGTH];<br>
+<br>+        EVP_Digest(header,length,md,NULL,EVP_sha256(),NULL);<br>+         //   if (memcmp(md,header,sizeof(header)))<br>+         //   {   fflush(stdout);<br>+         //       fprintf(stderr,"\nMemcpy failed.\n");<br>
+         //       return 1;<br>+         //   }<br>+        // unsigned char hash = fflush(stdout);<br>+<br>+         //write_log_entry_in_tcpa(hash); // Write hash to the acpi table<br>+<br>+         measure_and_extend(md); //Write hash to the tpm<br>
+         return 1;<br>+}<br>+<br>+/*<br>+ * Dummy function for tpm capability<br>+ */<br>+static int measure_and_extend(unsigned char hash) {<br>+        return 1;<br>+}<br>+<br> int verify_ip_checksum(<br>     struct verify_callback *vcb, <br>
     Elf_ehdr *ehdr, Elf_phdr *phdr, struct segment *head)<br>@@ -500,6 +531,7 @@<br>                 len = ptr->s_filesz;<br>             }<br>             memcpy(dest, &header[start_offset], len);<br>+                        measure_elf(&header[start_offset], len); //Pass the elf code to the measurement function<br>
             dest += len;<br>         }<br>         <br>Index: src/config/Config.lb<br>===================================================================<br>--- src/config/Config.lb    (Revision 4200)<br>+++ src/config/Config.lb    (Arbeitskopie)<br>
@@ -10,7 +10,7 @@<br> makedefine GCC_INC_DIR := $(shell LC_ALL=C $(GCC) -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp")<br> <br> makedefine CPPFLAGS := -I$(TOP)/src/include -I$(TOP)/src/arch/$(ARCH)/include -I$(GCC_INC_DIR) $(CPUFLAGS)<br>
-makedefine CFLAGS := $(CPU_OPT) $(DISTRO_CFLAGS) $(CPPFLAGS) -Os -nostdinc -nostdlib -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -Werror-implicit-function-declaration -Wstrict-aliasing -Wshadow -fno-common -ffreestanding -fno-builtin -fomit-frame-pointer<br>
+makedefine CFLAGS := $(CPU_OPT) $(DISTRO_CFLAGS) $(CPPFLAGS) -O2 -g -nostdinc -nostdlib -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -Werror-implicit-function-declaration -Wstrict-aliasing -Wshadow -fno-common -ffreestanding -fno-builtin -fomit-frame-pointer<br>
 <br> if ASSEMBLER_DEBUG<br> makedefine DEBUG_CFLAGS := -g -dA -fverbose-asm<br>Index: src/arch/i386/boot/boot.c<br>===================================================================<br>--- src/arch/i386/boot/boot.c    (Revision 4200)<br>
+++ src/arch/i386/boot/boot.c    (Arbeitskopie)<br>@@ -84,13 +84,13 @@<br>     adjusted_boot_notes = (unsigned long)&elf_boot_notes;<br>     adjusted_boot_notes += adjust; <br> <br>-    printk_spew("entry    = 0x%08lx\n", (unsigned long)entry);<br>
-    printk_spew("lb_start = 0x%08lx\n", lb_start);<br>-    printk_spew("lb_size  = 0x%08lx\n", lb_size);<br>-    printk_spew("adjust   = 0x%08lx\n", adjust);<br>-    printk_spew("buffer   = 0x%08lx\n", buffer);<br>
-    printk_spew("     elf_boot_notes = 0x%08lx\n", (unsigned long)&elf_boot_notes);<br>-    printk_spew("adjusted_boot_notes = 0x%08lx\n", adjusted_boot_notes);<br>+    printk_debug("entry    = 0x%08lx\n", (unsigned long)entry);<br>
+    printk_debug("lb_start = 0x%08lx\n", lb_start);<br>+    printk_debug("lb_size  = 0x%08lx\n", lb_size);<br>+    printk_debug("adjust   = 0x%08lx\n", adjust);<br>+    printk_debug("buffer   = 0x%08lx\n", buffer);<br>
+    printk_debug("     elf_boot_notes = 0x%08lx\n", (unsigned long)&elf_boot_notes);<br>+    printk_debug("adjusted_boot_notes = 0x%08lx\n", adjusted_boot_notes);<br>     <br>     /* Jump to kernel */<br>
     __asm__ __volatile__(<br>Index: src/arch/i386/include/stddef.h<br>===================================================================<br>--- src/arch/i386/include/stddef.h    (Revision 4200)<br>+++ src/arch/i386/include/stddef.h    (Arbeitskopie)<br>
@@ -3,8 +3,10 @@<br> <br> typedef long ptrdiff_t;<br> typedef unsigned long size_t;<br>-typedef long ssize_t;<br> <br>+// hacked<br>+//typedef long ssize_t;<br>+<br> typedef int wchar_t;<br> typedef unsigned int wint_t;<br>
 <br><br><br>Regards,<br><br>René<br>