Patchwork es for v2: minor portability issue and some CBFS changes

login
register
about
Submitter Patrick Georgi
Date 2009-07-18 11:41:57
Message ID <4A61B505.5070707@georgi-clan.de>
Download mbox | patch
Permalink /patch/48/
State Accepted
Headers show

Comments

Patrick Georgi - 2009-07-18 11:41:57
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/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) {
Uwe Hermann - 2009-07-18 12:48:01
On Sat, Jul 18, 2009 at 01:41:57PM +0200, Patrick Georgi wrote:
> 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>

Looks good, if it's abuild-tested this is
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>


Uwe.
Peter Stuge - 2009-07-19 00:44:13
Patrick Georgi wrote:
> portability.diff: strdup the input of dirname

Maybe do some error checking?


//Peter

Patch

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);