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(a)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) {