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 <[email protected]>


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) {
-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to