Hi,
attached patches do: portability.diff: strdup the input of dirname, as dirname is free (according to the spec) to change the string in-situ, even if glibc doesn't do it. Avoids errors on Mac OS and Solaris.
cbfs.diff: kill nrv2b support (we have lzma), slightly improve debug output, properly declare all functions
Both are Signed-off-by: Patrick Georgi patrick.georgi@coresystems.de
Patrick
Index: coreboot-v2-newbuild/src/include/cbfs.h =================================================================== --- coreboot-v2-newbuild.orig/src/include/cbfs.h +++ coreboot-v2-newbuild/src/include/cbfs.h @@ -57,7 +57,6 @@
#define CBFS_COMPRESS_NONE 0 #define CBFS_COMPRESS_LZMA 1 -#define CBFS_COMPRESS_NRV2B 2
/** These are standard component types for well known components (i.e - those that coreboot needs to consume. @@ -165,8 +164,12 @@ int cbfs_execute_stage(const char *name) void * cbfs_get_file(const char *name); void *cbfs_load_optionrom(u16 vendor, u16 device, void * dest); int run_address(void *f); - +int cbfs_decompress(int algo, void *src, void *dst, int len); struct cbfs_stage *cbfs_find_file(const char *name, int type); +int cbfs_check_magic(struct cbfs_file *file); +struct cbfs_header *cbfs_master_header(void); +struct cbfs_file *cbfs_find(const char *name); +void cbfs_and_run_core(char* filename, unsigned int ebp);
#endif
Index: coreboot-v2-newbuild/src/lib/cbfs.c =================================================================== --- coreboot-v2-newbuild.orig/src/lib/cbfs.c +++ coreboot-v2-newbuild/src/lib/cbfs.c @@ -29,8 +29,6 @@ #define ntohl(x) (x) #endif
-int run_address(void *f); - int cbfs_decompress(int algo, void *src, void *dst, int len) { switch(algo) { @@ -44,15 +42,6 @@ int cbfs_decompress(int algo, void *src, } return 0;
-#if CONFIG_COMPRESSED_PAYLOAD_NRV2B==1 - case CBFS_COMPRESS_NRV2B: { - unsigned long unrv2b(u8 *src, u8 *dst, unsigned long *ilen_p); - unsigned long tmp; - - unrv2b(src, dst, &tmp); - } - return 0; -#endif default: printk_info( "CBFS: Unknown compression type %d\n", algo); @@ -103,11 +92,11 @@ struct cbfs_file *cbfs_find(const char *
int flen = ntohl(file->len); int foffset = ntohl(file->offset); - printk_spew("CBFS: follow chain: %p + %x + %x + align -> ", offset, foffset, flen); + printk_spew("CBFS: follow chain: %p + %x + %x + align -> ", (void *)offset, foffset, flen);
unsigned long oldoffset = offset; offset = ALIGN(offset + foffset + flen, align); - printk_spew("%p\n", offset); + printk_spew("%p\n", (void *)offset); if (offset <= oldoffset) return NULL;
if (offset < 0xFFFFFFFF - ntohl(header->romsize)) @@ -182,7 +171,8 @@ void * cbfs_load_stage(const char *name) if (stage == NULL) return (void *) -1;
- printk_info("Stage: load @ %d/%d bytes, enter @ %llx\n", + printk_info("Stage: load %s @ %d/%d bytes, enter @ %llx\n", + name, (u32) stage->load, stage->memlen, stage->entry); memset((void *) (u32) stage->load, 0, stage->memlen);
Index: coreboot-v2-newbuild/util/options/build_opt_tbl.c =================================================================== --- coreboot-v2-newbuild.orig/util/options/build_opt_tbl.c +++ coreboot-v2-newbuild/util/options/build_opt_tbl.c @@ -488,7 +491,7 @@ int main(int argc, char **argv) /* See if we want to output a C source file */ if(option) { int err=0; - strncpy(tmpfilename, dirname(option), TMPFILE_LEN); + strncpy(tmpfilename, dirname(strdup(option)), TMPFILE_LEN); strncat(tmpfilename, TMPFILE_TEMPLATE, TMPFILE_LEN); tmpfile = mkstemp(tmpfilename); if(tmpfile == -1) { @@ -539,7 +542,7 @@ int main(int argc, char **argv) struct cmos_option_table *hdr; struct lb_record *ptr, *end;
- strncpy(tmpfilename, dirname(option), TMPFILE_LEN); + strncpy(tmpfilename, dirname(strdup(option)), TMPFILE_LEN); strncat(tmpfilename, TMPFILE_TEMPLATE, TMPFILE_LEN); tmpfile = mkstemp(tmpfilename); if(tmpfile == -1) {