inflate: remove include of lib/inflate.c and use proper linking - make free_mem_ptr vars nonstatic - make gunzip nonstatic - add gunzip prototype to new inflate.h - add per-arch Makefile bits - change inflate.c includes to inflate.h includes - change NO_INFLATE_MALLOC to CORE - compile core kernel version of inflate with -DCORE
Signed-off-by: Matt Mackall <[EMAIL PROTECTED]> Index: 2.6.14/arch/alpha/boot/misc.c =================================================================== --- 2.6.14.orig/arch/alpha/boot/misc.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/alpha/boot/misc.c 2005-10-30 13:07:25.000000000 -0800 @@ -14,6 +14,7 @@ */ #include <linux/kernel.h> +#include <linux/inflate.h> #include <asm/uaccess.h> #define puts srm_printk @@ -27,11 +28,7 @@ static u8 *output_data; #define HEAP_SIZE 0x2000 -/* gzip delarations */ -static u32 free_mem_ptr; -static u32 free_mem_ptr_end; - -#include "../../../lib/inflate.c" +static u32 free_mem_ptr, free_mem_ptr_end; /* for gunzip */ /* flush gunzip output window */ static void flush_window(const u8 *buf, int len) Index: 2.6.14/arch/arm/boot/compressed/Makefile =================================================================== --- 2.6.14.orig/arch/arm/boot/compressed/Makefile 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/arm/boot/compressed/Makefile 2005-10-30 13:07:25.000000000 -0800 @@ -95,8 +95,11 @@ LDFLAGS_vmlinux += -p --no-undefined -X # would otherwise mess up our GOT table CFLAGS_misc.o := -Dstatic= +$(obj)/inflate.o: lib/inflate.c + $(call cmd,cc_o_c) + $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \ - $(addprefix $(obj)/, $(OBJS)) FORCE + $(addprefix $(obj)/, $(OBJS)) $(obj)/inflate.o FORCE $(call if_changed,ld) @: Index: 2.6.14/arch/arm/boot/compressed/misc.c =================================================================== --- 2.6.14.orig/arch/arm/boot/compressed/misc.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/arm/boot/compressed/misc.c 2005-10-30 13:07:25.000000000 -0800 @@ -14,6 +14,7 @@ unsigned int __machine_arch_type; #include <linux/string.h> +#include <linux/inflate.h> #include <asm/arch/uncompress.h> #ifdef STANDALONE_DEBUG @@ -36,31 +37,17 @@ icedcc_putstr(const char *ptr) #endif -#define __ptr_t void * - -/* - * gzip declarations - */ - extern char input_data[]; extern char input_data_end[]; +extern int end; static u8 *output_data; - static void putstr(const char *); -extern int end; -static u32 free_mem_ptr; -static u32 free_mem_ptr_end; +u32 free_mem_ptr, free_mem_ptr_end; /* for gunzip */ #define HEAP_SIZE 0x2000 -#include "../../../../lib/inflate.c" - -#ifdef STANDALONE_DEBUG -#define NO_INFLATE_MALLOC -#endif - /* flush gunzip output window */ static void flush_window(const u8 *buf, int len) { Index: 2.6.14/arch/arm26/boot/compressed/Makefile =================================================================== --- 2.6.14.orig/arch/arm26/boot/compressed/Makefile 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/arm26/boot/compressed/Makefile 2005-10-30 13:07:25.000000000 -0800 @@ -8,7 +8,7 @@ # HEAD = head.o -OBJS = misc.o +OBJS = misc.o inflate.o FONTC = drivers/video/console/font_acorn_8x8.c OBJS += ll_char_wr.o font.o @@ -40,11 +40,14 @@ LDFLAGS_piggy.o := -r -b binary $(obj)/piggy.o: $(obj)/piggy.gz FORCE $(call if_changed,ld) +$(obj)/inflate.o: lib/inflate.c + $(call cmd,cc_o_c) + $(obj)/font.o: $(FONTC) $(CC) $(CFLAGS) -Dstatic= -c $(FONTC) -o $(obj)/font.o $(obj)/vmlinux.lds: $(obj)/vmlinux.lds.in Makefile arch/arm26/boot/Makefile .config @sed "$(SEDFLAGS)" < $< > $@ -$(obj)/misc.o: $(obj)/misc.c $(obj)/uncompress.h lib/inflate.c +$(obj)/misc.o: $(obj)/misc.c $(obj)/uncompress.h Index: 2.6.14/arch/arm26/boot/compressed/misc.c =================================================================== --- 2.6.14.orig/arch/arm26/boot/compressed/misc.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/arm26/boot/compressed/misc.c 2005-10-30 13:07:25.000000000 -0800 @@ -14,6 +14,7 @@ unsigned int __machine_arch_type; #include <linux/kernel.h> +#include <linux/inflate.h> #include <asm/uaccess.h> #include "uncompress.h" @@ -30,15 +31,7 @@ static void puts(const char *); #define HEAP_SIZE 0x2000 -/* gzip delarations */ -static u32 free_mem_ptr; -static u32 free_mem_ptr_end; - -#include "../../../../lib/inflate.c" - -#ifdef STANDALONE_DEBUG -#define NO_INFLATE_MALLOC -#endif +u32 free_mem_ptr, free_mem_ptr_end; /* for gunzip */ /* flush the gunzip output window */ static void flush_window(const u8 *buf, int len) Index: 2.6.14/arch/cris/arch-v10/boot/compressed/Makefile =================================================================== --- 2.6.14.orig/arch/cris/arch-v10/boot/compressed/Makefile 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/cris/arch-v10/boot/compressed/Makefile 2005-10-30 13:07:25.000000000 -0800 @@ -9,7 +9,7 @@ CFLAGS = -O2 LD = ld-cris OBJCOPY = objcopy-cris OBJCOPYFLAGS = -O binary --remove-section=.bss -OBJECTS = $(target)/head.o $(target)/misc.o +OBJECTS = $(target)/head.o $(target)/misc.o $(target)/inflate.o # files to compress SYSTEM = $(objtree)/vmlinux.bin @@ -29,6 +29,9 @@ $(target_compressed_dir)/vmlinuz: $(targ $(target)/head.o: $(src)/head.S $(CC) -D__ASSEMBLY__ -traditional -c $< -o $@ +$(target)/inflate.o: lib/inflate.c + $(CC) -D__KERNEL__ -c $< -o $@ + $(target)/misc.o: $(src)/misc.c $(CC) -D__KERNEL__ -c $< -o $@ Index: 2.6.14/arch/cris/arch-v10/boot/compressed/misc.c =================================================================== --- 2.6.14.orig/arch/cris/arch-v10/boot/compressed/misc.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/cris/arch-v10/boot/compressed/misc.c 2005-10-30 13:07:25.000000000 -0800 @@ -16,6 +16,7 @@ #include <linux/config.h> #include <linux/types.h> +#include <linux/inflate.h> #include <asm/arch/svinto.h> extern int end; /* the "heap" is put directly after the BSS ends, at end */ @@ -25,11 +26,8 @@ static u8 *output_data; static void puts(const char *); -/* gzip declarations */ -static long free_mem_ptr = (long)&end; -static long free_mem_end_ptr = 0xffffffff; - -#include "../../../../../lib/inflate.c" +/* for gunzip */ +long free_mem_ptr = (long)&end, free_mem_end_ptr = 0xffffffff; /* decompressor info and error messages to serial console */ Index: 2.6.14/arch/cris/arch-v32/boot/compressed/Makefile =================================================================== --- 2.6.14.orig/arch/cris/arch-v32/boot/compressed/Makefile 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/cris/arch-v32/boot/compressed/Makefile 2005-10-30 13:07:25.000000000 -0800 @@ -12,7 +12,7 @@ CFLAGS = -O2 LD = gcc-cris -mlinux -march=v32 -nostdlib OBJCOPY = objcopy-cris OBJCOPYFLAGS = -O binary --remove-section=.bss -OBJECTS = $(target)/head.o $(target)/misc.o +OBJECTS = $(target)/head.o $(target)/misc.o $(target)/inflate.o # files to compress SYSTEM = $(objtree)/vmlinux.bin @@ -28,6 +28,9 @@ $(objtree)/vmlinuz: $(target) piggy.img rm -f piggy.img cp $(objtree)/vmlinuz $(src) +$(target)/inflate.o: lib/inflate.c + $(call cmd,cc_o_c) + $(target)/head.o: $(src)/head.S $(CC) -D__ASSEMBLY__ -c $< -o $@ Index: 2.6.14/arch/cris/arch-v32/boot/compressed/misc.c =================================================================== --- 2.6.14.orig/arch/cris/arch-v32/boot/compressed/misc.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/cris/arch-v32/boot/compressed/misc.c 2005-10-30 13:07:25.000000000 -0800 @@ -16,6 +16,7 @@ #include <linux/config.h> #include <linux/types.h> +#include <linux/inflate.h> #include <asm/arch/hwregs/reg_rdwr.h> #include <asm/arch/hwregs/reg_map.h> #include <asm/arch/hwregs/ser_defs.h> @@ -26,11 +27,8 @@ static u8 *output_data; static void puts(const char *); -/* gzip declarations */ -static long free_mem_ptr = (long)&_end; -static long free_mem_end_ptr = 0xffffffff; - -#include "../../../../../lib/inflate.c" +/* for gunzip */ +long free_mem_ptr = (long)&_end, free_mem_end_ptr = 0xffffffff; /* decompressor info and error messages to serial console */ Index: 2.6.14/arch/i386/boot/compressed/Makefile =================================================================== --- 2.6.14.orig/arch/i386/boot/compressed/Makefile 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/i386/boot/compressed/Makefile 2005-10-30 13:07:25.000000000 -0800 @@ -9,7 +9,11 @@ EXTRA_AFLAGS := -traditional LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -e startup_32 -$(obj)/vmlinux: $(obj)/head.o $(obj)/misc.o $(obj)/piggy.o FORCE +$(obj)/inflate.o: lib/inflate.c + $(call cmd,cc_o_c) + +$(obj)/vmlinux: $(obj)/head.o $(obj)/misc.o $(obj)/piggy.o $(obj)/inflate.o \ + FORCE $(call if_changed,ld) @: Index: 2.6.14/arch/i386/boot/compressed/misc.c =================================================================== --- 2.6.14.orig/arch/i386/boot/compressed/misc.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/i386/boot/compressed/misc.c 2005-10-30 13:07:25.000000000 -0800 @@ -8,6 +8,7 @@ #include <linux/linkage.h> #include <linux/vmalloc.h> #include <linux/tty.h> +#include <linux/inflate.h> #include <asm/io.h> #include <asm/page.h> @@ -46,11 +47,7 @@ static int lines, cols; static void * xquad_portio = NULL; #endif -/* gzip declarations */ -static long free_mem_ptr = (long)&end; -static long free_mem_end_ptr; - -#include "../../../../lib/inflate.c" +long free_mem_ptr = (long)&end, free_mem_end_ptr; /* for gunzip */ static void scroll(void) { Index: 2.6.14/arch/m32r/boot/compressed/Makefile =================================================================== --- 2.6.14.orig/arch/m32r/boot/compressed/Makefile 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/m32r/boot/compressed/Makefile 2005-10-30 13:07:25.000000000 -0800 @@ -18,7 +18,11 @@ OBJECTS = $(obj)/head.o $(obj)/misc.o LDFLAGS_vmlinux := -T -$(obj)/vmlinux: $(obj)/vmlinux.lds $(OBJECTS) $(obj)/piggy.o FORCE +$(obj)/inflate.o: lib/inflate.c + $(call cmd,cc_o_c) + +$(obj)/vmlinux: $(obj)/vmlinux.lds $(OBJECTS) $(obj)/piggy.o $(obj)/inflate.o \ + FORCE $(call if_changed,ld) @: Index: 2.6.14/arch/m32r/boot/compressed/misc.c =================================================================== --- 2.6.14.orig/arch/m32r/boot/compressed/misc.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/m32r/boot/compressed/misc.c 2005-10-30 13:07:25.000000000 -0800 @@ -9,6 +9,7 @@ #include <linux/config.h> #include <linux/string.h> +#include <linux/inflate.h> static unsigned char *input_data; static int input_len; @@ -18,11 +19,7 @@ static u8 *output_data; #define HEAP_SIZE 0x10000 -/* gzip declarations */ -static unsigned long free_mem_ptr; -static unsigned long free_mem_end_ptr; - -#include "../../../../lib/inflate.c" +unsigned long free_mem_ptr, free_mem_end_ptr; /* for gunzip */ /* flush the gunzip output buffer */ static void flush_window(const u8 *buf, int len) Index: 2.6.14/arch/sh/boot/compressed/Makefile =================================================================== --- 2.6.14.orig/arch/sh/boot/compressed/Makefile 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/sh/boot/compressed/Makefile 2005-10-30 13:07:25.000000000 -0800 @@ -24,7 +24,10 @@ IMAGE_OFFSET := $(shell printf "0x%8x" $ LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -e startup -T $(obj)/../../kernel/vmlinux.lds -$(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o FORCE +$(obj)/inflate.o: lib/inflate.c + $(call cmd,cc_o_c) + +$(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o $(obj)/inflate.o FORCE $(call if_changed,ld) @: Index: 2.6.14/arch/sh/boot/compressed/misc.c =================================================================== --- 2.6.14.orig/arch/sh/boot/compressed/misc.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/sh/boot/compressed/misc.c 2005-10-30 13:07:59.000000000 -0800 @@ -7,6 +7,7 @@ */ #include <linux/config.h> +#include <linux/inflate.h> #include <asm/uaccess.h> #ifdef CONFIG_SH_STANDARD_BIOS #include <asm/sh_bios.h> @@ -22,11 +23,7 @@ int puts(const char *); #define HEAP_SIZE 0x10000 -/* gzip declarations */ -static unsigned long free_mem_ptr; -static unsigned long free_mem_end_ptr; - -#include "../../../../lib/inflate.c" +unsigned long free_mem_ptr, free_mem_end_ptr; /* for gunzip */ #ifdef CONFIG_SH_STANDARD_BIOS size_t strlen(const char *s) Index: 2.6.14/arch/sh64/boot/compressed/Makefile =================================================================== --- 2.6.14.orig/arch/sh64/boot/compressed/Makefile 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/sh64/boot/compressed/Makefile 2005-10-30 13:07:25.000000000 -0800 @@ -28,7 +28,10 @@ LDFLAGS_vmlinux := -Ttext $(ZIMAGE_OFFSE -T $(obj)/../../kernel/vmlinux.lds \ --no-warn-mismatch -$(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o FORCE +$(obj)/inflate.o: lib/inflate.c + $(call cmd,cc_o_c) + +$(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o $(obj)/inflate.o FORCE $(call if_changed,ld) @: Index: 2.6.14/arch/sh64/boot/compressed/misc.c =================================================================== --- 2.6.14.orig/arch/sh64/boot/compressed/misc.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/sh64/boot/compressed/misc.c 2005-10-30 13:07:25.000000000 -0800 @@ -5,6 +5,7 @@ */ #include <linux/config.h> +#include <linux/inflate.h> #include <asm/uaccess.h> /* cache.c */ @@ -22,11 +23,7 @@ static void puts(const char *); #define HEAP_SIZE 0x10000 -/* gzip declarations */ -static unsigned long free_mem_ptr; -static unsigned long free_mem_end_ptr; - -#include "../../../../lib/inflate.c" +unsigned long free_mem_ptr, free_mem_end_ptr; /* for gunzip */ void puts(const char *s) { Index: 2.6.14/arch/x86_64/boot/compressed/Makefile =================================================================== --- 2.6.14.orig/arch/x86_64/boot/compressed/Makefile 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/x86_64/boot/compressed/Makefile 2005-10-30 13:07:25.000000000 -0800 @@ -16,7 +16,11 @@ LDFLAGS := -m elf_i386 LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -e startup_32 -m elf_i386 -$(obj)/vmlinux: $(obj)/head.o $(obj)/misc.o $(obj)/piggy.o FORCE +$(obj)/inflate.o: lib/inflate.c + $(call cmd,cc_o_c) + +$(obj)/vmlinux: $(obj)/head.o $(obj)/misc.o $(obj)/piggy.o $(obj)/inflate.o \ + FORCE $(call if_changed,ld) @: Index: 2.6.14/arch/x86_64/boot/compressed/misc.c =================================================================== --- 2.6.14.orig/arch/x86_64/boot/compressed/misc.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/arch/x86_64/boot/compressed/misc.c 2005-10-30 13:07:25.000000000 -0800 @@ -6,6 +6,7 @@ */ #include "miscsetup.h" +#include <linux/inflate.h> #include <asm/io.h> #include <asm/page.h> @@ -39,11 +40,7 @@ static char *vidmem = (char *)0xb8000; static int vidport; static int lines, cols; -/* gzip declarations */ -static long free_mem_ptr = (long)&end; -static long free_mem_end_ptr; - -#include "../../../../lib/inflate.c" +long free_mem_ptr = (long)&end, free_mem_end_ptr; /* for gunzip */ static void scroll(void) { Index: 2.6.14/include/linux/inflate.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ 2.6.14/include/linux/inflate.h 2005-10-30 13:07:25.000000000 -0800 @@ -0,0 +1,9 @@ +#ifndef _LINUX_INFLATE_H +#define _LINUX_INFLATE_H + +int gunzip(u8 *ibuf, int isize, void (*fill)(u8 *buf, int size), + void (*flush)(const u8 *buf, int size), + void (*error)(const char *msg)); + +#endif /* _LINUX_INFLATE_H */ + Index: 2.6.14/init/do_mounts_rd.c =================================================================== --- 2.6.14.orig/init/do_mounts_rd.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/init/do_mounts_rd.c 2005-10-30 13:07:25.000000000 -0800 @@ -1,4 +1,3 @@ - #include <linux/kernel.h> #include <linux/fs.h> #include <linux/minix_fs.h> @@ -7,6 +6,7 @@ #include <linux/cramfs_fs.h> #include <linux/initrd.h> #include <linux/string.h> +#include <linux/inflate.h> #include "do_mounts.h" @@ -269,13 +269,6 @@ int __init rd_load_disk(int n) #ifdef BUILD_CRAMDISK -/* gzip declarations */ -#define INIT __init -#define INITDATA __initdata -#define NO_INFLATE_MALLOC - -#include "../lib/inflate.c" - #define INBUFSIZ 4096 static u8 *inbuf; static int exit_code; Index: 2.6.14/init/initramfs.c =================================================================== --- 2.6.14.orig/init/initramfs.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/init/initramfs.c 2005-10-30 13:07:25.000000000 -0800 @@ -6,6 +6,7 @@ #include <linux/delay.h> #include <linux/string.h> #include <linux/syscalls.h> +#include <linux/inflate.h> static __initdata const char *message; static void __init error(const char *x) @@ -329,14 +330,6 @@ static void __init flush_buffer(const u8 } } -/* gzip declarations */ - -#define INIT __init -#define INITDATA __initdata -#define NO_INFLATE_MALLOC - -#include "../lib/inflate.c" - static const char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only) { Index: 2.6.14/lib/Makefile =================================================================== --- 2.6.14.orig/lib/Makefile 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/lib/Makefile 2005-10-30 13:07:25.000000000 -0800 @@ -5,12 +5,14 @@ lib-y := errno.o ctype.o string.o vsprintf.o cmdline.o \ bust_spinlocks.o rbtree.o radix-tree.o dump_stack.o \ idr.o div64.o int_sqrt.o bitmap.o extable.o prio_tree.o \ - sha1.o + sha1.o inflate.o lib-y += kobject.o kref.o kobject_uevent.o klist.o obj-y += sort.o parser.o halfmd4.o +CFLAGS_inflate.o += -DCORE + ifeq ($(CONFIG_DEBUG_KOBJECT),y) CFLAGS_kobject.o += -DDEBUG CFLAGS_kobject_uevent.o += -DDEBUG Index: 2.6.14/lib/inflate.c =================================================================== --- 2.6.14.orig/lib/inflate.c 2005-10-30 13:07:19.000000000 -0800 +++ 2.6.14/lib/inflate.c 2005-10-30 13:07:25.000000000 -0800 @@ -99,22 +99,19 @@ a repeat code (16, 17, or 18) to go across the boundary between the two sets of lengths. */ +#include <linux/kernel.h> #include <linux/compiler.h> +#include <asm/types.h> -#ifndef INIT +#ifndef CORE #define INIT -#endif -#ifndef INITDATA #define INITDATA -#endif - -#include <asm/types.h> -#ifndef NO_INFLATE_MALLOC /* A trivial malloc implementation, adapted from * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994 */ +extern long free_mem_ptr, free_mem_end_ptr; static unsigned long malloc_ptr; static int malloc_count; @@ -148,10 +145,17 @@ static void free(void *where) } static u8 INITDATA window[0x8000]; /* use a statically allocated window */ + #else + +#include <linux/module.h> + static u8 *window; /* dynamically allocate */ #define malloc(a) kmalloc(a, GFP_KERNEL) #define free(a) kfree(a) +#define INIT __init +#define INITDATA __initdata + #endif static u32 crc_32_tab[256]; @@ -937,9 +941,9 @@ static void INIT makecrc(void) * @flush: function to flush the output pool * @error: function to report an error */ -static int INIT gunzip(u8 *ibuf, int isize, void (*fill)(u8 *buf, int size), - void (*flush)(const u8 *buf, int size), - void (*error)(const char *msg)) +int INIT gunzip(u8 *ibuf, int isize, void (*fill)(u8 *buf, int size), + void (*flush)(const u8 *buf, int size), + void (*error)(const char *msg)) { u8 flags; unsigned char magic[2]; /* magic header */