Dear maintainer of mkvmlinuz,
On 12 Apr 2008 I sent you a notice announcing my intent to upload a
NMU of your package to fix its pending l10n issues, after an initial
notice sent on 11 Apr 2008.
We settled for /me to send you a summary patch at the end of the l10n
update round.
I think it is now safe to upload...
Here it is with changelog (mentioning NMU but you'll correct, of course):
Source: mkvmlinuz
Version: 33+nmu1
Distribution: unstable
Urgency: low
Maintainer: Christian Perrier <bubulle@debian.org>
Date: Fri, 11 Apr 2008 22:56:59 +0200
Closes: 415493 460131 475638 475759 476073
Changes:
mkvmlinuz (33+nmu1) unstable; urgency=low
.
* Non-maintainer upload to fix pending l10n issues.
* Debconf translations:
- Dutch. Closes: #415493
- Italian. Closes: #460131
- Finnish. Closes: #475638
- Galician. Closes: #475759
- Basque. Closes: #476073
--
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/Makefile ../mkvmlinuz-33+nmu1/boot/Makefile
--- ../mkvmlinuz-33+nmu1.old/boot/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/Makefile 2007-01-14 14:40:45.000000000 +0100
@@ -0,0 +1,28 @@
+GCC := gcc -m32
+CFLAGS := -Wall -Wstrict-prototypes -O2 -g -fomit-frame-pointer -fno-builtin \
+ -nostdinc -isystem $(shell $(GCC) -print-file-name=include) -fPIC
+AFLAGS := -D__ASSEMBLY__ $(CFLAGS) -traditional -nostdinc
+
+src := crt0.S string.S prom.c stdio.c main.c div64.S
+src += infblock.c infcodes.c inffast.c inflate.c inftrees.c infutil.c
+src += mkvmlinuz-kernel-initrd.c mkvmlinuz-kernel-vmlinux.strip.c
+obj := $(addsuffix .o, $(basename $(src)))
+
+progs := addnote
+
+all: $(obj) $(progs)
+
+$(patsubst %.c,%.o, $(filter %.c, $(src))): %.o: %.c
+ $(GCC) $(CFLAGS) -c -o $@ $<
+
+$(patsubst %.S,%.o, $(filter %.S, $(src))): %.o: %.S
+ $(GCC) $(AFLAGS) -c -o $@ $<
+
+mkvmlinuz-kernel-initrd.c mkvmlinuz-kernel-vmlinux.strip.c:
+ touch $@
+
+addnote: addnote.c
+ $(GCC) -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -o addnote addnote.c
+
+clean:
+ rm -f $(obj) mkvmlinuz-kernel-initrd.c mkvmlinuz-kernel-vmlinux.strip.c $(progs)
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/addnote.c ../mkvmlinuz-33+nmu1/boot/addnote.c
--- ../mkvmlinuz-33+nmu1.old/boot/addnote.c 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/addnote.c 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,205 @@
+/*
+ * Program to hack in a PT_NOTE program header entry in an ELF file.
+ * This is needed for OF on RS/6000s to load an image correctly.
+ * Note that OF needs a program header entry for the note, not an
+ * ELF section.
+ *
+ * Copyright 2000 Paul Mackerras.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ *
+ * Usage: addnote zImage
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+
+/* CHRP note section */
+char arch[] = "PowerPC";
+
+#define N_DESCR 6
+unsigned int descr[N_DESCR] = {
+ 0xffffffff, /* real-mode = true */
+ 0x00c00000, /* real-base, i.e. where we expect OF to be */
+ 0xffffffff, /* real-size */
+ 0xffffffff, /* virt-base */
+ 0xffffffff, /* virt-size */
+ 0x4000, /* load-base */
+};
+
+/* RPA note section */
+char rpaname[] = "IBM,RPA-Client-Config";
+
+/*
+ * Note: setting ignore_my_client_config *should* mean that OF ignores
+ * all the other fields, but there is a firmware bug which means that
+ * it looks at the splpar field at least. So these values need to be
+ * reasonable.
+ */
+#define N_RPA_DESCR 8
+unsigned int rpanote[N_RPA_DESCR] = {
+ 0, /* lparaffinity */
+ 64, /* min_rmo_size */
+ 0, /* min_rmo_percent */
+ 40, /* max_pft_size */
+ 1, /* splpar */
+ -1, /* min_load */
+ 0, /* new_mem_def */
+ 1, /* ignore_my_client_config */
+};
+
+#define ROUNDUP(len) (((len) + 3) & ~3)
+
+unsigned char buf[512];
+
+#define GET_16BE(off) ((buf[off] << 8) + (buf[(off)+1]))
+#define GET_32BE(off) ((GET_16BE(off) << 16) + GET_16BE((off)+2))
+
+#define PUT_16BE(off, v) (buf[off] = ((v) >> 8) & 0xff, \
+ buf[(off) + 1] = (v) & 0xff)
+#define PUT_32BE(off, v) (PUT_16BE((off), (v) >> 16), \
+ PUT_16BE((off) + 2, (v)))
+
+/* Structure of an ELF file */
+#define E_IDENT 0 /* ELF header */
+#define E_PHOFF 28
+#define E_PHENTSIZE 42
+#define E_PHNUM 44
+#define E_HSIZE 52 /* size of ELF header */
+
+#define EI_MAGIC 0 /* offsets in E_IDENT area */
+#define EI_CLASS 4
+#define EI_DATA 5
+
+#define PH_TYPE 0 /* ELF program header */
+#define PH_OFFSET 4
+#define PH_FILESZ 16
+#define PH_HSIZE 32 /* size of program header */
+
+#define PT_NOTE 4 /* Program header type = note */
+
+#define ELFCLASS32 1
+#define ELFDATA2MSB 2
+
+unsigned char elf_magic[4] = { 0x7f, 'E', 'L', 'F' };
+
+int
+main(int ac, char **av)
+{
+ int fd, n, i;
+ int ph, ps, np;
+ int nnote, nnote2, ns;
+
+ if (ac != 2) {
+ fprintf(stderr, "Usage: %s elf-file\n", av[0]);
+ exit(1);
+ }
+ fd = open(av[1], O_RDWR);
+ if (fd < 0) {
+ perror(av[1]);
+ exit(1);
+ }
+
+ nnote = 12 + ROUNDUP(strlen(arch) + 1) + sizeof(descr);
+ nnote2 = 12 + ROUNDUP(strlen(rpaname) + 1) + sizeof(rpanote);
+
+ n = read(fd, buf, sizeof(buf));
+ if (n < 0) {
+ perror("read");
+ exit(1);
+ }
+
+ if (n < E_HSIZE || memcmp(&buf[E_IDENT+EI_MAGIC], elf_magic, 4) != 0)
+ goto notelf;
+
+ if (buf[E_IDENT+EI_CLASS] != ELFCLASS32
+ || buf[E_IDENT+EI_DATA] != ELFDATA2MSB) {
+ fprintf(stderr, "%s is not a big-endian 32-bit ELF image\n",
+ av[1]);
+ exit(1);
+ }
+
+ ph = GET_32BE(E_PHOFF);
+ ps = GET_16BE(E_PHENTSIZE);
+ np = GET_16BE(E_PHNUM);
+ if (ph < E_HSIZE || ps < PH_HSIZE || np < 1)
+ goto notelf;
+ if (ph + (np + 2) * ps + nnote + nnote2 > n)
+ goto nospace;
+
+ for (i = 0; i < np; ++i) {
+ if (GET_32BE(ph + PH_TYPE) == PT_NOTE) {
+ fprintf(stderr, "%s already has a note entry\n",
+ av[1]);
+ exit(0);
+ }
+ ph += ps;
+ }
+
+ /* XXX check that the area we want to use is all zeroes */
+ for (i = 0; i < 2 * ps + nnote + nnote2; ++i)
+ if (buf[ph + i] != 0)
+ goto nospace;
+
+ /* fill in the program header entry */
+ ns = ph + 2 * ps;
+ PUT_32BE(ph + PH_TYPE, PT_NOTE);
+ PUT_32BE(ph + PH_OFFSET, ns);
+ PUT_32BE(ph + PH_FILESZ, nnote);
+
+ /* fill in the note area we point to */
+ /* XXX we should probably make this a proper section */
+ PUT_32BE(ns, strlen(arch) + 1);
+ PUT_32BE(ns + 4, N_DESCR * 4);
+ PUT_32BE(ns + 8, 0x1275);
+ strcpy((char *) &buf[ns + 12], arch);
+ ns += 12 + strlen(arch) + 1;
+ for (i = 0; i < N_DESCR; ++i, ns += 4)
+ PUT_32BE(ns, descr[i]);
+
+ /* fill in the second program header entry and the RPA note area */
+ ph += ps;
+ PUT_32BE(ph + PH_TYPE, PT_NOTE);
+ PUT_32BE(ph + PH_OFFSET, ns);
+ PUT_32BE(ph + PH_FILESZ, nnote2);
+
+ /* fill in the note area we point to */
+ PUT_32BE(ns, strlen(rpaname) + 1);
+ PUT_32BE(ns + 4, sizeof(rpanote));
+ PUT_32BE(ns + 8, 0x12759999);
+ strcpy((char *) &buf[ns + 12], rpaname);
+ ns += 12 + ROUNDUP(strlen(rpaname) + 1);
+ for (i = 0; i < N_RPA_DESCR; ++i, ns += 4)
+ PUT_32BE(ns, rpanote[i]);
+
+ /* Update the number of program headers */
+ PUT_16BE(E_PHNUM, np + 2);
+
+ /* write back */
+ lseek(fd, (long) 0, SEEK_SET);
+ i = write(fd, buf, n);
+ if (i < 0) {
+ perror("write");
+ exit(1);
+ }
+ if (i < n) {
+ fprintf(stderr, "%s: write truncated\n", av[1]);
+ exit(1);
+ }
+
+ exit(0);
+
+ notelf:
+ fprintf(stderr, "%s does not appear to be an ELF file\n", av[1]);
+ exit(1);
+
+ nospace:
+ fprintf(stderr, "sorry, I can't find space in %s to put the note\n",
+ av[1]);
+ exit(1);
+}
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/crt0.S ../mkvmlinuz-33+nmu1/boot/crt0.S
--- ../mkvmlinuz-33+nmu1.old/boot/crt0.S 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/crt0.S 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) Paul Mackerras 1997.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ *
+ * NOTE: this code runs in 32 bit mode and is packaged as ELF32.
+ */
+
+#include "ppc_asm.h"
+
+ .text
+ /* a procedure descriptor used when booting this as a COFF file */
+_zimage_start_opd:
+ .long _zimage_start, 0, 0, 0
+
+ .globl _zimage_start
+_zimage_start:
+ /* Work out the offset between the address we were linked at
+ and the address where we're running. */
+ bl 1f
+1: mflr r0
+ lis r9,1b@ha
+ addi r9,r9,1b@l
+ subf. r0,r9,r0
+ beq 3f /* if running at same address as linked */
+
+ /* The .got2 section contains a list of addresses, so add
+ the address offset onto each entry. */
+ lis r9,__got2_start@ha
+ addi r9,r9,__got2_start@l
+ lis r8,__got2_end@ha
+ addi r8,r8,__got2_end@l
+ subf. r8,r9,r8
+ beq 3f
+ srwi. r8,r8,2
+ mtctr r8
+ add r9,r0,r9
+2: lwz r8,0(r9)
+ add r8,r8,r0
+ stw r8,0(r9)
+ addi r9,r9,4
+ bdnz 2b
+
+ /* Do a cache flush for our text, in case OF didn't */
+3: lis r9,_start@ha
+ addi r9,r9,_start@l
+ add r9,r0,r9
+ lis r8,_etext@ha
+ addi r8,r8,_etext@l
+ add r8,r0,r8
+4: dcbf r0,r9
+ icbi r0,r9
+ addi r9,r9,0x20
+ cmplw cr0,r9,r8
+ blt 4b
+ sync
+ isync
+
+ mr r6,r1
+ b start
+
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/div64.S ../mkvmlinuz-33+nmu1/boot/div64.S
--- ../mkvmlinuz-33+nmu1.old/boot/div64.S 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/div64.S 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,58 @@
+/*
+ * Divide a 64-bit unsigned number by a 32-bit unsigned number.
+ * This routine assumes that the top 32 bits of the dividend are
+ * non-zero to start with.
+ * On entry, r3 points to the dividend, which get overwritten with
+ * the 64-bit quotient, and r4 contains the divisor.
+ * On exit, r3 contains the remainder.
+ *
+ * Copyright (C) 2002 Paul Mackerras, IBM Corp.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#include "ppc_asm.h"
+
+ .globl __div64_32
+__div64_32:
+ lwz r5,0(r3) # get the dividend into r5/r6
+ lwz r6,4(r3)
+ cmplw r5,r4
+ li r7,0
+ li r8,0
+ blt 1f
+ divwu r7,r5,r4 # if dividend.hi >= divisor,
+ mullw r0,r7,r4 # quotient.hi = dividend.hi / divisor
+ subf. r5,r0,r5 # dividend.hi %= divisor
+ beq 3f
+1: mr r11,r5 # here dividend.hi != 0
+ andis. r0,r5,0xc000
+ bne 2f
+ cntlzw r0,r5 # we are shifting the dividend right
+ li r10,-1 # to make it < 2^32, and shifting
+ srw r10,r10,r0 # the divisor right the same amount,
+ add r9,r4,r10 # rounding up (so the estimate cannot
+ andc r11,r6,r10 # ever be too large, only too small)
+ andc r9,r9,r10
+ or r11,r5,r11
+ rotlw r9,r9,r0
+ rotlw r11,r11,r0
+ divwu r11,r11,r9 # then we divide the shifted quantities
+2: mullw r10,r11,r4 # to get an estimate of the quotient,
+ mulhwu r9,r11,r4 # multiply the estimate by the divisor,
+ subfc r6,r10,r6 # take the product from the divisor,
+ add r8,r8,r11 # and add the estimate to the accumulated
+ subfe. r5,r9,r5 # quotient
+ bne 1b
+3: cmplw r6,r4
+ blt 4f
+ divwu r0,r6,r4 # perform the remaining 32-bit division
+ mullw r10,r0,r4 # and get the remainder
+ add r8,r8,r0
+ subf r6,r10,r6
+4: stw r7,0(r3) # return the quotient in *r3
+ stw r8,4(r3)
+ mr r3,r6 # return the remainder in r3
+ blr
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/dummy.c ../mkvmlinuz-33+nmu1/boot/dummy.c
--- ../mkvmlinuz-33+nmu1.old/boot/dummy.c 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/dummy.c 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,4 @@
+int main(void)
+{
+ return 0;
+}
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/elf.h ../mkvmlinuz-33+nmu1/boot/elf.h
--- ../mkvmlinuz-33+nmu1.old/boot/elf.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/elf.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,149 @@
+#ifndef _PPC_BOOT_ELF_H_
+#define _PPC_BOOT_ELF_H_
+
+/* 32-bit ELF base types. */
+typedef unsigned int Elf32_Addr;
+typedef unsigned short Elf32_Half;
+typedef unsigned int Elf32_Off;
+typedef signed int Elf32_Sword;
+typedef unsigned int Elf32_Word;
+
+/* 64-bit ELF base types. */
+typedef unsigned long long Elf64_Addr;
+typedef unsigned short Elf64_Half;
+typedef signed short Elf64_SHalf;
+typedef unsigned long long Elf64_Off;
+typedef signed int Elf64_Sword;
+typedef unsigned int Elf64_Word;
+typedef unsigned long long Elf64_Xword;
+typedef signed long long Elf64_Sxword;
+
+/* These constants are for the segment types stored in the image headers */
+#define PT_NULL 0
+#define PT_LOAD 1
+#define PT_DYNAMIC 2
+#define PT_INTERP 3
+#define PT_NOTE 4
+#define PT_SHLIB 5
+#define PT_PHDR 6
+#define PT_TLS 7 /* Thread local storage segment */
+#define PT_LOOS 0x60000000 /* OS-specific */
+#define PT_HIOS 0x6fffffff /* OS-specific */
+#define PT_LOPROC 0x70000000
+#define PT_HIPROC 0x7fffffff
+#define PT_GNU_EH_FRAME 0x6474e550
+
+#define PT_GNU_STACK (PT_LOOS + 0x474e551)
+
+/* These constants define the different elf file types */
+#define ET_NONE 0
+#define ET_REL 1
+#define ET_EXEC 2
+#define ET_DYN 3
+#define ET_CORE 4
+#define ET_LOPROC 0xff00
+#define ET_HIPROC 0xffff
+
+/* These constants define the various ELF target machines */
+#define EM_NONE 0
+#define EM_PPC 20 /* PowerPC */
+#define EM_PPC64 21 /* PowerPC64 */
+
+#define EI_NIDENT 16
+
+typedef struct elf32_hdr {
+ unsigned char e_ident[EI_NIDENT];
+ Elf32_Half e_type;
+ Elf32_Half e_machine;
+ Elf32_Word e_version;
+ Elf32_Addr e_entry; /* Entry point */
+ Elf32_Off e_phoff;
+ Elf32_Off e_shoff;
+ Elf32_Word e_flags;
+ Elf32_Half e_ehsize;
+ Elf32_Half e_phentsize;
+ Elf32_Half e_phnum;
+ Elf32_Half e_shentsize;
+ Elf32_Half e_shnum;
+ Elf32_Half e_shstrndx;
+} Elf32_Ehdr;
+
+typedef struct elf64_hdr {
+ unsigned char e_ident[16]; /* ELF "magic number" */
+ Elf64_Half e_type;
+ Elf64_Half e_machine;
+ Elf64_Word e_version;
+ Elf64_Addr e_entry; /* Entry point virtual address */
+ Elf64_Off e_phoff; /* Program header table file offset */
+ Elf64_Off e_shoff; /* Section header table file offset */
+ Elf64_Word e_flags;
+ Elf64_Half e_ehsize;
+ Elf64_Half e_phentsize;
+ Elf64_Half e_phnum;
+ Elf64_Half e_shentsize;
+ Elf64_Half e_shnum;
+ Elf64_Half e_shstrndx;
+} Elf64_Ehdr;
+
+/* These constants define the permissions on sections in the program
+ header, p_flags. */
+#define PF_R 0x4
+#define PF_W 0x2
+#define PF_X 0x1
+
+typedef struct elf32_phdr {
+ Elf32_Word p_type;
+ Elf32_Off p_offset;
+ Elf32_Addr p_vaddr;
+ Elf32_Addr p_paddr;
+ Elf32_Word p_filesz;
+ Elf32_Word p_memsz;
+ Elf32_Word p_flags;
+ Elf32_Word p_align;
+} Elf32_Phdr;
+
+typedef struct elf64_phdr {
+ Elf64_Word p_type;
+ Elf64_Word p_flags;
+ Elf64_Off p_offset; /* Segment file offset */
+ Elf64_Addr p_vaddr; /* Segment virtual address */
+ Elf64_Addr p_paddr; /* Segment physical address */
+ Elf64_Xword p_filesz; /* Segment size in file */
+ Elf64_Xword p_memsz; /* Segment size in memory */
+ Elf64_Xword p_align; /* Segment alignment, file & memory */
+} Elf64_Phdr;
+
+#define EI_MAG0 0 /* e_ident[] indexes */
+#define EI_MAG1 1
+#define EI_MAG2 2
+#define EI_MAG3 3
+#define EI_CLASS 4
+#define EI_DATA 5
+#define EI_VERSION 6
+#define EI_OSABI 7
+#define EI_PAD 8
+
+#define ELFMAG0 0x7f /* EI_MAG */
+#define ELFMAG1 'E'
+#define ELFMAG2 'L'
+#define ELFMAG3 'F'
+#define ELFMAG "\177ELF"
+#define SELFMAG 4
+
+#define ELFCLASSNONE 0 /* EI_CLASS */
+#define ELFCLASS32 1
+#define ELFCLASS64 2
+#define ELFCLASSNUM 3
+
+#define ELFDATANONE 0 /* e_ident[EI_DATA] */
+#define ELFDATA2LSB 1
+#define ELFDATA2MSB 2
+
+#define EV_NONE 0 /* e_version, EI_VERSION */
+#define EV_CURRENT 1
+#define EV_NUM 2
+
+#define ELFOSABI_NONE 0
+#define ELFOSABI_LINUX 3
+
+#endif /* _PPC_BOOT_ELF_H_ */
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/hack-coff.c ../mkvmlinuz-33+nmu1/boot/hack-coff.c
--- ../mkvmlinuz-33+nmu1.old/boot/hack-coff.c 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/hack-coff.c 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,84 @@
+/*
+ * hack-coff.c - hack the header of an xcoff file to fill in
+ * a few fields needed by the Open Firmware xcoff loader on
+ * Power Macs but not initialized by objcopy.
+ *
+ * Copyright (C) Paul Mackerras 1997.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <string.h>
+#include "rs6000.h"
+
+#define AOUT_MAGIC 0x010b
+
+#define get_16be(x) ((((unsigned char *)(x))[0] << 8) \
+ + ((unsigned char *)(x))[1])
+#define put_16be(x, v) (((unsigned char *)(x))[0] = (v) >> 8, \
+ ((unsigned char *)(x))[1] = (v) & 0xff)
+#define get_32be(x) ((((unsigned char *)(x))[0] << 24) \
+ + (((unsigned char *)(x))[1] << 16) \
+ + (((unsigned char *)(x))[2] << 8) \
+ + ((unsigned char *)(x))[3])
+
+int
+main(int ac, char **av)
+{
+ int fd;
+ int i, nsect;
+ int aoutsz;
+ struct external_filehdr fhdr;
+ AOUTHDR aout;
+ struct external_scnhdr shdr;
+
+ if (ac != 2) {
+ fprintf(stderr, "Usage: hack-coff coff-file\n");
+ exit(1);
+ }
+ if ((fd = open(av[1], 2)) == -1) {
+ perror(av[2]);
+ exit(1);
+ }
+ if (read(fd, &fhdr, sizeof(fhdr)) != sizeof(fhdr))
+ goto readerr;
+ i = get_16be(fhdr.f_magic);
+ if (i != U802TOCMAGIC && i != U802WRMAGIC && i != U802ROMAGIC) {
+ fprintf(stderr, "%s: not an xcoff file\n", av[1]);
+ exit(1);
+ }
+ aoutsz = get_16be(fhdr.f_opthdr);
+ if (read(fd, &aout, aoutsz) != aoutsz)
+ goto readerr;
+ nsect = get_16be(fhdr.f_nscns);
+ for (i = 0; i < nsect; ++i) {
+ if (read(fd, &shdr, sizeof(shdr)) != sizeof(shdr))
+ goto readerr;
+ if (strcmp(shdr.s_name, ".text") == 0) {
+ put_16be(aout.o_snentry, i+1);
+ put_16be(aout.o_sntext, i+1);
+ } else if (strcmp(shdr.s_name, ".data") == 0) {
+ put_16be(aout.o_sndata, i+1);
+ } else if (strcmp(shdr.s_name, ".bss") == 0) {
+ put_16be(aout.o_snbss, i+1);
+ }
+ }
+ put_16be(aout.magic, AOUT_MAGIC);
+ if (lseek(fd, (long) sizeof(struct external_filehdr), 0) == -1
+ || write(fd, &aout, aoutsz) != aoutsz) {
+ fprintf(stderr, "%s: write error\n", av[1]);
+ exit(1);
+ }
+ close(fd);
+ exit(0);
+
+readerr:
+ fprintf(stderr, "%s: read error or file too short\n", av[1]);
+ exit(1);
+}
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/infblock.c ../mkvmlinuz-33+nmu1/boot/infblock.c
--- ../mkvmlinuz-33+nmu1.old/boot/infblock.c 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/infblock.c 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,365 @@
+/* infblock.c -- interpret and process block types to last block
+ * Copyright (C) 1995-1998 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#include "zutil.h"
+#include "infblock.h"
+#include "inftrees.h"
+#include "infcodes.h"
+#include "infutil.h"
+
+struct inflate_codes_state;
+
+/* simplify the use of the inflate_huft type with some defines */
+#define exop word.what.Exop
+#define bits word.what.Bits
+
+/* Table for deflate from PKZIP's appnote.txt. */
+static const uInt border[] = { /* Order of the bit length code lengths */
+ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
+
+/*
+ Notes beyond the 1.93a appnote.txt:
+
+ 1. Distance pointers never point before the beginning of the output
+ stream.
+ 2. Distance pointers can point back across blocks, up to 32k away.
+ 3. There is an implied maximum of 7 bits for the bit length table and
+ 15 bits for the actual data.
+ 4. If only one code exists, then it is encoded using one bit. (Zero
+ would be more efficient, but perhaps a little confusing.) If two
+ codes exist, they are coded using one bit each (0 and 1).
+ 5. There is no way of sending zero distance codes--a dummy must be
+ sent if there are none. (History: a pre 2.0 version of PKZIP would
+ store blocks with no distance codes, but this was discovered to be
+ too harsh a criterion.) Valid only for 1.93a. 2.04c does allow
+ zero distance codes, which is sent as one code of zero bits in
+ length.
+ 6. There are up to 286 literal/length codes. Code 256 represents the
+ end-of-block. Note however that the static length tree defines
+ 288 codes just to fill out the Huffman codes. Codes 286 and 287
+ cannot be used though, since there is no length base or extra bits
+ defined for them. Similarily, there are up to 30 distance codes.
+ However, static trees define 32 codes (all 5 bits) to fill out the
+ Huffman codes, but the last two had better not show up in the data.
+ 7. Unzip can check dynamic Huffman blocks for complete code sets.
+ The exception is that a single code would not be complete (see #4).
+ 8. The five bits following the block type is really the number of
+ literal codes sent minus 257.
+ 9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits
+ (1+6+6). Therefore, to output three times the length, you output
+ three codes (1+1+1), whereas to output four times the same length,
+ you only need two codes (1+3). Hmm.
+ 10. In the tree reconstruction algorithm, Code = Code + Increment
+ only if BitLength(i) is not zero. (Pretty obvious.)
+ 11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19)
+ 12. Note: length code 284 can represent 227-258, but length code 285
+ really is 258. The last length deserves its own, short code
+ since it gets used a lot in very redundant files. The length
+ 258 is special since 258 - 3 (the min match length) is 255.
+ 13. The literal/length and distance code bit lengths are read as a
+ single stream of lengths. It is possible (and advantageous) for
+ a repeat code (16, 17, or 18) to go across the boundary between
+ the two sets of lengths.
+ */
+
+
+void zlib_inflate_blocks_reset(
+ inflate_blocks_statef *s,
+ z_streamp z,
+ uLong *c
+)
+{
+ if (c != NULL)
+ *c = s->check;
+ if (s->mode == CODES)
+ zlib_inflate_codes_free(s->sub.decode.codes, z);
+ s->mode = TYPE;
+ s->bitk = 0;
+ s->bitb = 0;
+ s->read = s->write = s->window;
+ if (s->checkfn != NULL)
+ z->adler = s->check = (*s->checkfn)(0L, NULL, 0);
+}
+
+inflate_blocks_statef *zlib_inflate_blocks_new(
+ z_streamp z,
+ check_func c,
+ uInt w
+)
+{
+ inflate_blocks_statef *s;
+
+ s = &WS(z)->working_blocks_state;
+ s->hufts = WS(z)->working_hufts;
+ s->window = WS(z)->working_window;
+ s->end = s->window + w;
+ s->checkfn = c;
+ s->mode = TYPE;
+ zlib_inflate_blocks_reset(s, z, NULL);
+ return s;
+}
+
+
+int zlib_inflate_blocks(
+ inflate_blocks_statef *s,
+ z_streamp z,
+ int r
+)
+{
+ uInt t; /* temporary storage */
+ uLong b; /* bit buffer */
+ uInt k; /* bits in bit buffer */
+ Byte *p; /* input data pointer */
+ uInt n; /* bytes available there */
+ Byte *q; /* output window write pointer */
+ uInt m; /* bytes to end of window or read pointer */
+
+ /* copy input/output information to locals (UPDATE macro restores) */
+ LOAD
+
+ /* process input based on current state */
+ while (1) switch (s->mode)
+ {
+ case TYPE:
+ NEEDBITS(3)
+ t = (uInt)b & 7;
+ s->last = t & 1;
+ switch (t >> 1)
+ {
+ case 0: /* stored */
+ DUMPBITS(3)
+ t = k & 7; /* go to byte boundary */
+ DUMPBITS(t)
+ s->mode = LENS; /* get length of stored block */
+ break;
+ case 1: /* fixed */
+ {
+ uInt bl, bd;
+ inflate_huft *tl, *td;
+
+ zlib_inflate_trees_fixed(&bl, &bd, &tl, &td, s->hufts, z);
+ s->sub.decode.codes = zlib_inflate_codes_new(bl, bd, tl, td, z);
+ if (s->sub.decode.codes == NULL)
+ {
+ r = Z_MEM_ERROR;
+ LEAVE
+ }
+ }
+ DUMPBITS(3)
+ s->mode = CODES;
+ break;
+ case 2: /* dynamic */
+ DUMPBITS(3)
+ s->mode = TABLE;
+ break;
+ case 3: /* illegal */
+ DUMPBITS(3)
+ s->mode = B_BAD;
+ z->msg = (char*)"invalid block type";
+ r = Z_DATA_ERROR;
+ LEAVE
+ }
+ break;
+ case LENS:
+ NEEDBITS(32)
+ if ((((~b) >> 16) & 0xffff) != (b & 0xffff))
+ {
+ s->mode = B_BAD;
+ z->msg = (char*)"invalid stored block lengths";
+ r = Z_DATA_ERROR;
+ LEAVE
+ }
+ s->sub.left = (uInt)b & 0xffff;
+ b = k = 0; /* dump bits */
+ s->mode = s->sub.left ? STORED : (s->last ? DRY : TYPE);
+ break;
+ case STORED:
+ if (n == 0)
+ LEAVE
+ NEEDOUT
+ t = s->sub.left;
+ if (t > n) t = n;
+ if (t > m) t = m;
+ memcpy(q, p, t);
+ p += t; n -= t;
+ q += t; m -= t;
+ if ((s->sub.left -= t) != 0)
+ break;
+ s->mode = s->last ? DRY : TYPE;
+ break;
+ case TABLE:
+ NEEDBITS(14)
+ s->sub.trees.table = t = (uInt)b & 0x3fff;
+#ifndef PKZIP_BUG_WORKAROUND
+ if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29)
+ {
+ s->mode = B_BAD;
+ z->msg = (char*)"too many length or distance symbols";
+ r = Z_DATA_ERROR;
+ LEAVE
+ }
+#endif
+ {
+ s->sub.trees.blens = WS(z)->working_blens;
+ }
+ DUMPBITS(14)
+ s->sub.trees.index = 0;
+ s->mode = BTREE;
+ case BTREE:
+ while (s->sub.trees.index < 4 + (s->sub.trees.table >> 10))
+ {
+ NEEDBITS(3)
+ s->sub.trees.blens[border[s->sub.trees.index++]] = (uInt)b & 7;
+ DUMPBITS(3)
+ }
+ while (s->sub.trees.index < 19)
+ s->sub.trees.blens[border[s->sub.trees.index++]] = 0;
+ s->sub.trees.bb = 7;
+ t = zlib_inflate_trees_bits(s->sub.trees.blens, &s->sub.trees.bb,
+ &s->sub.trees.tb, s->hufts, z);
+ if (t != Z_OK)
+ {
+ r = t;
+ if (r == Z_DATA_ERROR)
+ s->mode = B_BAD;
+ LEAVE
+ }
+ s->sub.trees.index = 0;
+ s->mode = DTREE;
+ case DTREE:
+ while (t = s->sub.trees.table,
+ s->sub.trees.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))
+ {
+ inflate_huft *h;
+ uInt i, j, c;
+
+ t = s->sub.trees.bb;
+ NEEDBITS(t)
+ h = s->sub.trees.tb + ((uInt)b & zlib_inflate_mask[t]);
+ t = h->bits;
+ c = h->base;
+ if (c < 16)
+ {
+ DUMPBITS(t)
+ s->sub.trees.blens[s->sub.trees.index++] = c;
+ }
+ else /* c == 16..18 */
+ {
+ i = c == 18 ? 7 : c - 14;
+ j = c == 18 ? 11 : 3;
+ NEEDBITS(t + i)
+ DUMPBITS(t)
+ j += (uInt)b & zlib_inflate_mask[i];
+ DUMPBITS(i)
+ i = s->sub.trees.index;
+ t = s->sub.trees.table;
+ if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) ||
+ (c == 16 && i < 1))
+ {
+ s->mode = B_BAD;
+ z->msg = (char*)"invalid bit length repeat";
+ r = Z_DATA_ERROR;
+ LEAVE
+ }
+ c = c == 16 ? s->sub.trees.blens[i - 1] : 0;
+ do {
+ s->sub.trees.blens[i++] = c;
+ } while (--j);
+ s->sub.trees.index = i;
+ }
+ }
+ s->sub.trees.tb = NULL;
+ {
+ uInt bl, bd;
+ inflate_huft *tl, *td;
+ inflate_codes_statef *c;
+
+ bl = 9; /* must be <= 9 for lookahead assumptions */
+ bd = 6; /* must be <= 9 for lookahead assumptions */
+ t = s->sub.trees.table;
+ t = zlib_inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f),
+ s->sub.trees.blens, &bl, &bd, &tl, &td,
+ s->hufts, z);
+ if (t != Z_OK)
+ {
+ if (t == (uInt)Z_DATA_ERROR)
+ s->mode = B_BAD;
+ r = t;
+ LEAVE
+ }
+ if ((c = zlib_inflate_codes_new(bl, bd, tl, td, z)) == NULL)
+ {
+ r = Z_MEM_ERROR;
+ LEAVE
+ }
+ s->sub.decode.codes = c;
+ }
+ s->mode = CODES;
+ case CODES:
+ UPDATE
+ if ((r = zlib_inflate_codes(s, z, r)) != Z_STREAM_END)
+ return zlib_inflate_flush(s, z, r);
+ r = Z_OK;
+ zlib_inflate_codes_free(s->sub.decode.codes, z);
+ LOAD
+ if (!s->last)
+ {
+ s->mode = TYPE;
+ break;
+ }
+ s->mode = DRY;
+ case DRY:
+ FLUSH
+ if (s->read != s->write)
+ LEAVE
+ s->mode = B_DONE;
+ case B_DONE:
+ r = Z_STREAM_END;
+ LEAVE
+ case B_BAD:
+ r = Z_DATA_ERROR;
+ LEAVE
+ default:
+ r = Z_STREAM_ERROR;
+ LEAVE
+ }
+}
+
+
+int zlib_inflate_blocks_free(
+ inflate_blocks_statef *s,
+ z_streamp z
+)
+{
+ zlib_inflate_blocks_reset(s, z, NULL);
+ return Z_OK;
+}
+
+
+#if 0
+void zlib_inflate_set_dictionary(
+ inflate_blocks_statef *s,
+ const Byte *d,
+ uInt n
+)
+{
+ memcpy(s->window, d, n);
+ s->read = s->write = s->window + n;
+}
+#endif /* 0 */
+
+
+/* Returns true if inflate is currently at the end of a block generated
+ * by Z_SYNC_FLUSH or Z_FULL_FLUSH.
+ * IN assertion: s != NULL
+ */
+#if 0
+int zlib_inflate_blocks_sync_point(
+ inflate_blocks_statef *s
+)
+{
+ return s->mode == LENS;
+}
+#endif /* 0 */
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/infblock.h ../mkvmlinuz-33+nmu1/boot/infblock.h
--- ../mkvmlinuz-33+nmu1.old/boot/infblock.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/infblock.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,48 @@
+/* infblock.h -- header to use infblock.c
+ * Copyright (C) 1995-1998 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+ part of the implementation of the compression library and is
+ subject to change. Applications should only use zlib.h.
+ */
+
+#ifndef _INFBLOCK_H
+#define _INFBLOCK_H
+
+struct inflate_blocks_state;
+typedef struct inflate_blocks_state inflate_blocks_statef;
+
+extern inflate_blocks_statef * zlib_inflate_blocks_new (
+ z_streamp z,
+ check_func c, /* check function */
+ uInt w); /* window size */
+
+extern int zlib_inflate_blocks (
+ inflate_blocks_statef *,
+ z_streamp ,
+ int); /* initial return code */
+
+extern void zlib_inflate_blocks_reset (
+ inflate_blocks_statef *,
+ z_streamp ,
+ uLong *); /* check value on output */
+
+extern int zlib_inflate_blocks_free (
+ inflate_blocks_statef *,
+ z_streamp);
+
+#if 0
+extern void zlib_inflate_set_dictionary (
+ inflate_blocks_statef *s,
+ const Byte *d, /* dictionary */
+ uInt n); /* dictionary length */
+#endif /* 0 */
+
+#if 0
+extern int zlib_inflate_blocks_sync_point (
+ inflate_blocks_statef *s);
+#endif /* 0 */
+
+#endif /* _INFBLOCK_H */
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/infcodes.c ../mkvmlinuz-33+nmu1/boot/infcodes.c
--- ../mkvmlinuz-33+nmu1.old/boot/infcodes.c 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/infcodes.c 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,202 @@
+/* infcodes.c -- process literals and length/distance pairs
+ * Copyright (C) 1995-1998 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#include "zutil.h"
+#include "inftrees.h"
+#include "infblock.h"
+#include "infcodes.h"
+#include "infutil.h"
+#include "inffast.h"
+
+/* simplify the use of the inflate_huft type with some defines */
+#define exop word.what.Exop
+#define bits word.what.Bits
+
+inflate_codes_statef *zlib_inflate_codes_new(
+ uInt bl,
+ uInt bd,
+ inflate_huft *tl,
+ inflate_huft *td, /* need separate declaration for Borland C++ */
+ z_streamp z
+)
+{
+ inflate_codes_statef *c;
+
+ c = &WS(z)->working_state;
+ {
+ c->mode = START;
+ c->lbits = (Byte)bl;
+ c->dbits = (Byte)bd;
+ c->ltree = tl;
+ c->dtree = td;
+ }
+ return c;
+}
+
+
+int zlib_inflate_codes(
+ inflate_blocks_statef *s,
+ z_streamp z,
+ int r
+)
+{
+ uInt j; /* temporary storage */
+ inflate_huft *t; /* temporary pointer */
+ uInt e; /* extra bits or operation */
+ uLong b; /* bit buffer */
+ uInt k; /* bits in bit buffer */
+ Byte *p; /* input data pointer */
+ uInt n; /* bytes available there */
+ Byte *q; /* output window write pointer */
+ uInt m; /* bytes to end of window or read pointer */
+ Byte *f; /* pointer to copy strings from */
+ inflate_codes_statef *c = s->sub.decode.codes; /* codes state */
+
+ /* copy input/output information to locals (UPDATE macro restores) */
+ LOAD
+
+ /* process input and output based on current state */
+ while (1) switch (c->mode)
+ { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
+ case START: /* x: set up for LEN */
+#ifndef SLOW
+ if (m >= 258 && n >= 10)
+ {
+ UPDATE
+ r = zlib_inflate_fast(c->lbits, c->dbits, c->ltree, c->dtree, s, z);
+ LOAD
+ if (r != Z_OK)
+ {
+ c->mode = r == Z_STREAM_END ? WASH : BADCODE;
+ break;
+ }
+ }
+#endif /* !SLOW */
+ c->sub.code.need = c->lbits;
+ c->sub.code.tree = c->ltree;
+ c->mode = LEN;
+ case LEN: /* i: get length/literal/eob next */
+ j = c->sub.code.need;
+ NEEDBITS(j)
+ t = c->sub.code.tree + ((uInt)b & zlib_inflate_mask[j]);
+ DUMPBITS(t->bits)
+ e = (uInt)(t->exop);
+ if (e == 0) /* literal */
+ {
+ c->sub.lit = t->base;
+ c->mode = LIT;
+ break;
+ }
+ if (e & 16) /* length */
+ {
+ c->sub.copy.get = e & 15;
+ c->len = t->base;
+ c->mode = LENEXT;
+ break;
+ }
+ if ((e & 64) == 0) /* next table */
+ {
+ c->sub.code.need = e;
+ c->sub.code.tree = t + t->base;
+ break;
+ }
+ if (e & 32) /* end of block */
+ {
+ c->mode = WASH;
+ break;
+ }
+ c->mode = BADCODE; /* invalid code */
+ z->msg = (char*)"invalid literal/length code";
+ r = Z_DATA_ERROR;
+ LEAVE
+ case LENEXT: /* i: getting length extra (have base) */
+ j = c->sub.copy.get;
+ NEEDBITS(j)
+ c->len += (uInt)b & zlib_inflate_mask[j];
+ DUMPBITS(j)
+ c->sub.code.need = c->dbits;
+ c->sub.code.tree = c->dtree;
+ c->mode = DIST;
+ case DIST: /* i: get distance next */
+ j = c->sub.code.need;
+ NEEDBITS(j)
+ t = c->sub.code.tree + ((uInt)b & zlib_inflate_mask[j]);
+ DUMPBITS(t->bits)
+ e = (uInt)(t->exop);
+ if (e & 16) /* distance */
+ {
+ c->sub.copy.get = e & 15;
+ c->sub.copy.dist = t->base;
+ c->mode = DISTEXT;
+ break;
+ }
+ if ((e & 64) == 0) /* next table */
+ {
+ c->sub.code.need = e;
+ c->sub.code.tree = t + t->base;
+ break;
+ }
+ c->mode = BADCODE; /* invalid code */
+ z->msg = (char*)"invalid distance code";
+ r = Z_DATA_ERROR;
+ LEAVE
+ case DISTEXT: /* i: getting distance extra */
+ j = c->sub.copy.get;
+ NEEDBITS(j)
+ c->sub.copy.dist += (uInt)b & zlib_inflate_mask[j];
+ DUMPBITS(j)
+ c->mode = COPY;
+ case COPY: /* o: copying bytes in window, waiting for space */
+ f = q - c->sub.copy.dist;
+ while (f < s->window) /* modulo window size-"while" instead */
+ f += s->end - s->window; /* of "if" handles invalid distances */
+ while (c->len)
+ {
+ NEEDOUT
+ OUTBYTE(*f++)
+ if (f == s->end)
+ f = s->window;
+ c->len--;
+ }
+ c->mode = START;
+ break;
+ case LIT: /* o: got literal, waiting for output space */
+ NEEDOUT
+ OUTBYTE(c->sub.lit)
+ c->mode = START;
+ break;
+ case WASH: /* o: got eob, possibly more output */
+ if (k > 7) /* return unused byte, if any */
+ {
+ k -= 8;
+ n++;
+ p--; /* can always return one */
+ }
+ FLUSH
+ if (s->read != s->write)
+ LEAVE
+ c->mode = END;
+ case END:
+ r = Z_STREAM_END;
+ LEAVE
+ case BADCODE: /* x: got error */
+ r = Z_DATA_ERROR;
+ LEAVE
+ default:
+ r = Z_STREAM_ERROR;
+ LEAVE
+ }
+#ifdef NEED_DUMMY_RETURN
+ return Z_STREAM_ERROR; /* Some dumb compilers complain without this */
+#endif
+}
+
+
+void zlib_inflate_codes_free(
+ inflate_codes_statef *c,
+ z_streamp z
+)
+{
+}
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/infcodes.h ../mkvmlinuz-33+nmu1/boot/infcodes.h
--- ../mkvmlinuz-33+nmu1.old/boot/infcodes.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/infcodes.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,33 @@
+/* infcodes.h -- header to use infcodes.c
+ * Copyright (C) 1995-1998 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+ part of the implementation of the compression library and is
+ subject to change. Applications should only use zlib.h.
+ */
+
+#ifndef _INFCODES_H
+#define _INFCODES_H
+
+#include "infblock.h"
+
+struct inflate_codes_state;
+typedef struct inflate_codes_state inflate_codes_statef;
+
+extern inflate_codes_statef *zlib_inflate_codes_new (
+ uInt, uInt,
+ inflate_huft *, inflate_huft *,
+ z_streamp );
+
+extern int zlib_inflate_codes (
+ inflate_blocks_statef *,
+ z_streamp ,
+ int);
+
+extern void zlib_inflate_codes_free (
+ inflate_codes_statef *,
+ z_streamp );
+
+#endif /* _INFCODES_H */
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/inffast.c ../mkvmlinuz-33+nmu1/boot/inffast.c
--- ../mkvmlinuz-33+nmu1.old/boot/inffast.c 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/inffast.c 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,176 @@
+/* inffast.c -- process literals and length/distance pairs fast
+ * Copyright (C) 1995-1998 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#include "zutil.h"
+#include "inftrees.h"
+#include "infblock.h"
+#include "infcodes.h"
+#include "infutil.h"
+#include "inffast.h"
+
+struct inflate_codes_state;
+
+/* simplify the use of the inflate_huft type with some defines */
+#define exop word.what.Exop
+#define bits word.what.Bits
+
+/* macros for bit input with no checking and for returning unused bytes */
+#define GRABBITS(j) {while(k<(j)){b|=((uLong)NEXTBYTE)<<k;k+=8;}}
+#define UNGRAB {c=z->avail_in-n;c=(k>>3)<c?k>>3:c;n+=c;p-=c;k-=c<<3;}
+
+/* Called with number of bytes left to write in window at least 258
+ (the maximum string length) and number of input bytes available
+ at least ten. The ten bytes are six bytes for the longest length/
+ distance pair plus four bytes for overloading the bit buffer. */
+
+int zlib_inflate_fast(
+ uInt bl,
+ uInt bd,
+ inflate_huft *tl,
+ inflate_huft *td, /* need separate declaration for Borland C++ */
+ inflate_blocks_statef *s,
+ z_streamp z
+)
+{
+ inflate_huft *t; /* temporary pointer */
+ uInt e; /* extra bits or operation */
+ uLong b; /* bit buffer */
+ uInt k; /* bits in bit buffer */
+ Byte *p; /* input data pointer */
+ uInt n; /* bytes available there */
+ Byte *q; /* output window write pointer */
+ uInt m; /* bytes to end of window or read pointer */
+ uInt ml; /* mask for literal/length tree */
+ uInt md; /* mask for distance tree */
+ uInt c; /* bytes to copy */
+ uInt d; /* distance back to copy from */
+ Byte *r; /* copy source pointer */
+
+ /* load input, output, bit values */
+ LOAD
+
+ /* initialize masks */
+ ml = zlib_inflate_mask[bl];
+ md = zlib_inflate_mask[bd];
+
+ /* do until not enough input or output space for fast loop */
+ do { /* assume called with m >= 258 && n >= 10 */
+ /* get literal/length code */
+ GRABBITS(20) /* max bits for literal/length code */
+ if ((e = (t = tl + ((uInt)b & ml))->exop) == 0)
+ {
+ DUMPBITS(t->bits)
+ *q++ = (Byte)t->base;
+ m--;
+ continue;
+ }
+ do {
+ DUMPBITS(t->bits)
+ if (e & 16)
+ {
+ /* get extra bits for length */
+ e &= 15;
+ c = t->base + ((uInt)b & zlib_inflate_mask[e]);
+ DUMPBITS(e)
+
+ /* decode distance base of block to copy */
+ GRABBITS(15); /* max bits for distance code */
+ e = (t = td + ((uInt)b & md))->exop;
+ do {
+ DUMPBITS(t->bits)
+ if (e & 16)
+ {
+ /* get extra bits to add to distance base */
+ e &= 15;
+ GRABBITS(e) /* get extra bits (up to 13) */
+ d = t->base + ((uInt)b & zlib_inflate_mask[e]);
+ DUMPBITS(e)
+
+ /* do the copy */
+ m -= c;
+ r = q - d;
+ if (r < s->window) /* wrap if needed */
+ {
+ do {
+ r += s->end - s->window; /* force pointer in window */
+ } while (r < s->window); /* covers invalid distances */
+ e = s->end - r;
+ if (c > e)
+ {
+ c -= e; /* wrapped copy */
+ do {
+ *q++ = *r++;
+ } while (--e);
+ r = s->window;
+ do {
+ *q++ = *r++;
+ } while (--c);
+ }
+ else /* normal copy */
+ {
+ *q++ = *r++; c--;
+ *q++ = *r++; c--;
+ do {
+ *q++ = *r++;
+ } while (--c);
+ }
+ }
+ else /* normal copy */
+ {
+ *q++ = *r++; c--;
+ *q++ = *r++; c--;
+ do {
+ *q++ = *r++;
+ } while (--c);
+ }
+ break;
+ }
+ else if ((e & 64) == 0)
+ {
+ t += t->base;
+ e = (t += ((uInt)b & zlib_inflate_mask[e]))->exop;
+ }
+ else
+ {
+ z->msg = (char*)"invalid distance code";
+ UNGRAB
+ UPDATE
+ return Z_DATA_ERROR;
+ }
+ } while (1);
+ break;
+ }
+ if ((e & 64) == 0)
+ {
+ t += t->base;
+ if ((e = (t += ((uInt)b & zlib_inflate_mask[e]))->exop) == 0)
+ {
+ DUMPBITS(t->bits)
+ *q++ = (Byte)t->base;
+ m--;
+ break;
+ }
+ }
+ else if (e & 32)
+ {
+ UNGRAB
+ UPDATE
+ return Z_STREAM_END;
+ }
+ else
+ {
+ z->msg = (char*)"invalid literal/length code";
+ UNGRAB
+ UPDATE
+ return Z_DATA_ERROR;
+ }
+ } while (1);
+ } while (m >= 258 && n >= 10);
+
+ /* not enough input or output--restore pointers and return */
+ UNGRAB
+ UPDATE
+ return Z_OK;
+}
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/inffast.h ../mkvmlinuz-33+nmu1/boot/inffast.h
--- ../mkvmlinuz-33+nmu1.old/boot/inffast.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/inffast.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,17 @@
+/* inffast.h -- header to use inffast.c
+ * Copyright (C) 1995-1998 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+ part of the implementation of the compression library and is
+ subject to change. Applications should only use zlib.h.
+ */
+
+extern int zlib_inflate_fast (
+ uInt,
+ uInt,
+ inflate_huft *,
+ inflate_huft *,
+ inflate_blocks_statef *,
+ z_streamp );
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/inflate.c ../mkvmlinuz-33+nmu1/boot/inflate.c
--- ../mkvmlinuz-33+nmu1.old/boot/inflate.c 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/inflate.c 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,247 @@
+/* inflate.c -- zlib interface to inflate modules
+ * Copyright (C) 1995-1998 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#include "zutil.h"
+#include "infblock.h"
+#include "infutil.h"
+
+int zlib_inflate_workspacesize(void)
+{
+ return sizeof(struct inflate_workspace);
+}
+
+
+int zlib_inflateReset(
+ z_streamp z
+)
+{
+ if (z == NULL || z->state == NULL || z->workspace == NULL)
+ return Z_STREAM_ERROR;
+ z->total_in = z->total_out = 0;
+ z->msg = NULL;
+ z->state->mode = z->state->nowrap ? BLOCKS : METHOD;
+ zlib_inflate_blocks_reset(z->state->blocks, z, NULL);
+ return Z_OK;
+}
+
+
+int zlib_inflateEnd(
+ z_streamp z
+)
+{
+ if (z == NULL || z->state == NULL || z->workspace == NULL)
+ return Z_STREAM_ERROR;
+ if (z->state->blocks != NULL)
+ zlib_inflate_blocks_free(z->state->blocks, z);
+ z->state = NULL;
+ return Z_OK;
+}
+
+
+int zlib_inflateInit2_(
+ z_streamp z,
+ int w,
+ const char *version,
+ int stream_size
+)
+{
+ if (version == NULL || version[0] != ZLIB_VERSION[0] ||
+ stream_size != sizeof(z_stream) || z->workspace == NULL)
+ return Z_VERSION_ERROR;
+
+ /* initialize state */
+ z->msg = NULL;
+ z->state = &WS(z)->internal_state;
+ z->state->blocks = NULL;
+
+ /* handle undocumented nowrap option (no zlib header or check) */
+ z->state->nowrap = 0;
+ if (w < 0)
+ {
+ w = - w;
+ z->state->nowrap = 1;
+ }
+
+ /* set window size */
+ if (w < 8 || w > 15)
+ {
+ zlib_inflateEnd(z);
+ return Z_STREAM_ERROR;
+ }
+ z->state->wbits = (uInt)w;
+
+ /* create inflate_blocks state */
+ if ((z->state->blocks =
+ zlib_inflate_blocks_new(z, z->state->nowrap ? NULL : zlib_adler32, (uInt)1 << w))
+ == NULL)
+ {
+ zlib_inflateEnd(z);
+ return Z_MEM_ERROR;
+ }
+
+ /* reset state */
+ zlib_inflateReset(z);
+ return Z_OK;
+}
+
+
+/*
+ * At the end of a Deflate-compressed PPP packet, we expect to have seen
+ * a `stored' block type value but not the (zero) length bytes.
+ */
+static int zlib_inflate_packet_flush(inflate_blocks_statef *s)
+{
+ if (s->mode != LENS)
+ return Z_DATA_ERROR;
+ s->mode = TYPE;
+ return Z_OK;
+}
+
+
+int zlib_inflateInit_(
+ z_streamp z,
+ const char *version,
+ int stream_size
+)
+{
+ return zlib_inflateInit2_(z, DEF_WBITS, version, stream_size);
+}
+
+#undef NEEDBYTE
+#undef NEXTBYTE
+#define NEEDBYTE {if(z->avail_in==0)goto empty;r=trv;}
+#define NEXTBYTE (z->avail_in--,z->total_in++,*z->next_in++)
+
+int zlib_inflate(
+ z_streamp z,
+ int f
+)
+{
+ int r, trv;
+ uInt b;
+
+ if (z == NULL || z->state == NULL || z->next_in == NULL)
+ return Z_STREAM_ERROR;
+ trv = f == Z_FINISH ? Z_BUF_ERROR : Z_OK;
+ r = Z_BUF_ERROR;
+ while (1) switch (z->state->mode)
+ {
+ case METHOD:
+ NEEDBYTE
+ if (((z->state->sub.method = NEXTBYTE) & 0xf) != Z_DEFLATED)
+ {
+ z->state->mode = I_BAD;
+ z->msg = (char*)"unknown compression method";
+ z->state->sub.marker = 5; /* can't try inflateSync */
+ break;
+ }
+ if ((z->state->sub.method >> 4) + 8 > z->state->wbits)
+ {
+ z->state->mode = I_BAD;
+ z->msg = (char*)"invalid window size";
+ z->state->sub.marker = 5; /* can't try inflateSync */
+ break;
+ }
+ z->state->mode = FLAG;
+ case FLAG:
+ NEEDBYTE
+ b = NEXTBYTE;
+ if (((z->state->sub.method << 8) + b) % 31)
+ {
+ z->state->mode = I_BAD;
+ z->msg = (char*)"incorrect header check";
+ z->state->sub.marker = 5; /* can't try inflateSync */
+ break;
+ }
+ if (!(b & PRESET_DICT))
+ {
+ z->state->mode = BLOCKS;
+ break;
+ }
+ z->state->mode = DICT4;
+ case DICT4:
+ NEEDBYTE
+ z->state->sub.check.need = (uLong)NEXTBYTE << 24;
+ z->state->mode = DICT3;
+ case DICT3:
+ NEEDBYTE
+ z->state->sub.check.need += (uLong)NEXTBYTE << 16;
+ z->state->mode = DICT2;
+ case DICT2:
+ NEEDBYTE
+ z->state->sub.check.need += (uLong)NEXTBYTE << 8;
+ z->state->mode = DICT1;
+ case DICT1:
+ NEEDBYTE
+ z->state->sub.check.need += (uLong)NEXTBYTE;
+ z->adler = z->state->sub.check.need;
+ z->state->mode = DICT0;
+ return Z_NEED_DICT;
+ case DICT0:
+ z->state->mode = I_BAD;
+ z->msg = (char*)"need dictionary";
+ z->state->sub.marker = 0; /* can try inflateSync */
+ return Z_STREAM_ERROR;
+ case BLOCKS:
+ r = zlib_inflate_blocks(z->state->blocks, z, r);
+ if (f == Z_PACKET_FLUSH && z->avail_in == 0 && z->avail_out != 0)
+ r = zlib_inflate_packet_flush(z->state->blocks);
+ if (r == Z_DATA_ERROR)
+ {
+ z->state->mode = I_BAD;
+ z->state->sub.marker = 0; /* can try inflateSync */
+ break;
+ }
+ if (r == Z_OK)
+ r = trv;
+ if (r != Z_STREAM_END)
+ return r;
+ r = trv;
+ zlib_inflate_blocks_reset(z->state->blocks, z, &z->state->sub.check.was);
+ if (z->state->nowrap)
+ {
+ z->state->mode = I_DONE;
+ break;
+ }
+ z->state->mode = CHECK4;
+ case CHECK4:
+ NEEDBYTE
+ z->state->sub.check.need = (uLong)NEXTBYTE << 24;
+ z->state->mode = CHECK3;
+ case CHECK3:
+ NEEDBYTE
+ z->state->sub.check.need += (uLong)NEXTBYTE << 16;
+ z->state->mode = CHECK2;
+ case CHECK2:
+ NEEDBYTE
+ z->state->sub.check.need += (uLong)NEXTBYTE << 8;
+ z->state->mode = CHECK1;
+ case CHECK1:
+ NEEDBYTE
+ z->state->sub.check.need += (uLong)NEXTBYTE;
+
+ if (z->state->sub.check.was != z->state->sub.check.need)
+ {
+ z->state->mode = I_BAD;
+ z->msg = (char*)"incorrect data check";
+ z->state->sub.marker = 5; /* can't try inflateSync */
+ break;
+ }
+ z->state->mode = I_DONE;
+ case I_DONE:
+ return Z_STREAM_END;
+ case I_BAD:
+ return Z_DATA_ERROR;
+ default:
+ return Z_STREAM_ERROR;
+ }
+ empty:
+ if (f != Z_PACKET_FLUSH)
+ return r;
+ z->state->mode = I_BAD;
+ z->msg = (char *)"need more for packet flush";
+ z->state->sub.marker = 0; /* can try inflateSync */
+ return Z_DATA_ERROR;
+}
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/inftrees.c ../mkvmlinuz-33+nmu1/boot/inftrees.c
--- ../mkvmlinuz-33+nmu1.old/boot/inftrees.c 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/inftrees.c 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,412 @@
+/* inftrees.c -- generate Huffman trees for efficient decoding
+ * Copyright (C) 1995-1998 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#include "zutil.h"
+#include "inftrees.h"
+#include "infutil.h"
+
+static const char inflate_copyright[] =
+ " inflate 1.1.3 Copyright 1995-1998 Mark Adler ";
+/*
+ If you use the zlib library in a product, an acknowledgment is welcome
+ in the documentation of your product. If for some reason you cannot
+ include such an acknowledgment, I would appreciate that you keep this
+ copyright string in the executable of your product.
+ */
+struct internal_state;
+
+/* simplify the use of the inflate_huft type with some defines */
+#define exop word.what.Exop
+#define bits word.what.Bits
+
+
+static int huft_build (
+ uInt *, /* code lengths in bits */
+ uInt, /* number of codes */
+ uInt, /* number of "simple" codes */
+ const uInt *, /* list of base values for non-simple codes */
+ const uInt *, /* list of extra bits for non-simple codes */
+ inflate_huft **, /* result: starting table */
+ uInt *, /* maximum lookup bits (returns actual) */
+ inflate_huft *, /* space for trees */
+ uInt *, /* hufts used in space */
+ uInt * ); /* space for values */
+
+/* Tables for deflate from PKZIP's appnote.txt. */
+static const uInt cplens[31] = { /* Copy lengths for literal codes 257..285 */
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
+ 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
+ /* see note #13 above about 258 */
+static const uInt cplext[31] = { /* Extra bits for literal codes 257..285 */
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
+ 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112}; /* 112==invalid */
+static const uInt cpdist[30] = { /* Copy offsets for distance codes 0..29 */
+ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
+ 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
+ 8193, 12289, 16385, 24577};
+static const uInt cpdext[30] = { /* Extra bits for distance codes */
+ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
+ 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
+ 12, 12, 13, 13};
+
+/*
+ Huffman code decoding is performed using a multi-level table lookup.
+ The fastest way to decode is to simply build a lookup table whose
+ size is determined by the longest code. However, the time it takes
+ to build this table can also be a factor if the data being decoded
+ is not very long. The most common codes are necessarily the
+ shortest codes, so those codes dominate the decoding time, and hence
+ the speed. The idea is you can have a shorter table that decodes the
+ shorter, more probable codes, and then point to subsidiary tables for
+ the longer codes. The time it costs to decode the longer codes is
+ then traded against the time it takes to make longer tables.
+
+ This results of this trade are in the variables lbits and dbits
+ below. lbits is the number of bits the first level table for literal/
+ length codes can decode in one step, and dbits is the same thing for
+ the distance codes. Subsequent tables are also less than or equal to
+ those sizes. These values may be adjusted either when all of the
+ codes are shorter than that, in which case the longest code length in
+ bits is used, or when the shortest code is *longer* than the requested
+ table size, in which case the length of the shortest code in bits is
+ used.
+
+ There are two different values for the two tables, since they code a
+ different number of possibilities each. The literal/length table
+ codes 286 possible values, or in a flat code, a little over eight
+ bits. The distance table codes 30 possible values, or a little less
+ than five bits, flat. The optimum values for speed end up being
+ about one bit more than those, so lbits is 8+1 and dbits is 5+1.
+ The optimum values may differ though from machine to machine, and
+ possibly even between compilers. Your mileage may vary.
+ */
+
+
+/* If BMAX needs to be larger than 16, then h and x[] should be uLong. */
+#define BMAX 15 /* maximum bit length of any code */
+
+static int huft_build(
+ uInt *b, /* code lengths in bits (all assumed <= BMAX) */
+ uInt n, /* number of codes (assumed <= 288) */
+ uInt s, /* number of simple-valued codes (0..s-1) */
+ const uInt *d, /* list of base values for non-simple codes */
+ const uInt *e, /* list of extra bits for non-simple codes */
+ inflate_huft **t, /* result: starting table */
+ uInt *m, /* maximum lookup bits, returns actual */
+ inflate_huft *hp, /* space for trees */
+ uInt *hn, /* hufts used in space */
+ uInt *v /* working area: values in order of bit length */
+)
+/* Given a list of code lengths and a maximum table size, make a set of
+ tables to decode that set of codes. Return Z_OK on success, Z_BUF_ERROR
+ if the given code set is incomplete (the tables are still built in this
+ case), Z_DATA_ERROR if the input is invalid (an over-subscribed set of
+ lengths), or Z_MEM_ERROR if not enough memory. */
+{
+
+ uInt a; /* counter for codes of length k */
+ uInt c[BMAX+1]; /* bit length count table */
+ uInt f; /* i repeats in table every f entries */
+ int g; /* maximum code length */
+ int h; /* table level */
+ register uInt i; /* counter, current code */
+ register uInt j; /* counter */
+ register int k; /* number of bits in current code */
+ int l; /* bits per table (returned in m) */
+ uInt mask; /* (1 << w) - 1, to avoid cc -O bug on HP */
+ register uInt *p; /* pointer into c[], b[], or v[] */
+ inflate_huft *q; /* points to current table */
+ struct inflate_huft_s r; /* table entry for structure assignment */
+ inflate_huft *u[BMAX]; /* table stack */
+ register int w; /* bits before this table == (l * h) */
+ uInt x[BMAX+1]; /* bit offsets, then code stack */
+ uInt *xp; /* pointer into x */
+ int y; /* number of dummy codes added */
+ uInt z; /* number of entries in current table */
+
+
+ /* Generate counts for each bit length */
+ p = c;
+#define C0 *p++ = 0;
+#define C2 C0 C0 C0 C0
+#define C4 C2 C2 C2 C2
+ C4 /* clear c[]--assume BMAX+1 is 16 */
+ p = b; i = n;
+ do {
+ c[*p++]++; /* assume all entries <= BMAX */
+ } while (--i);
+ if (c[0] == n) /* null input--all zero length codes */
+ {
+ *t = NULL;
+ *m = 0;
+ return Z_OK;
+ }
+
+
+ /* Find minimum and maximum length, bound *m by those */
+ l = *m;
+ for (j = 1; j <= BMAX; j++)
+ if (c[j])
+ break;
+ k = j; /* minimum code length */
+ if ((uInt)l < j)
+ l = j;
+ for (i = BMAX; i; i--)
+ if (c[i])
+ break;
+ g = i; /* maximum code length */
+ if ((uInt)l > i)
+ l = i;
+ *m = l;
+
+
+ /* Adjust last length count to fill out codes, if needed */
+ for (y = 1 << j; j < i; j++, y <<= 1)
+ if ((y -= c[j]) < 0)
+ return Z_DATA_ERROR;
+ if ((y -= c[i]) < 0)
+ return Z_DATA_ERROR;
+ c[i] += y;
+
+
+ /* Generate starting offsets into the value table for each length */
+ x[1] = j = 0;
+ p = c + 1; xp = x + 2;
+ while (--i) { /* note that i == g from above */
+ *xp++ = (j += *p++);
+ }
+
+
+ /* Make a table of values in order of bit lengths */
+ p = b; i = 0;
+ do {
+ if ((j = *p++) != 0)
+ v[x[j]++] = i;
+ } while (++i < n);
+ n = x[g]; /* set n to length of v */
+
+
+ /* Generate the Huffman codes and for each, make the table entries */
+ x[0] = i = 0; /* first Huffman code is zero */
+ p = v; /* grab values in bit order */
+ h = -1; /* no tables yet--level -1 */
+ w = -l; /* bits decoded == (l * h) */
+ u[0] = NULL; /* just to keep compilers happy */
+ q = NULL; /* ditto */
+ z = 0; /* ditto */
+
+ /* go through the bit lengths (k already is bits in shortest code) */
+ for (; k <= g; k++)
+ {
+ a = c[k];
+ while (a--)
+ {
+ /* here i is the Huffman code of length k bits for value *p */
+ /* make tables up to required level */
+ while (k > w + l)
+ {
+ h++;
+ w += l; /* previous table always l bits */
+
+ /* compute minimum size table less than or equal to l bits */
+ z = g - w;
+ z = z > (uInt)l ? l : z; /* table size upper limit */
+ if ((f = 1 << (j = k - w)) > a + 1) /* try a k-w bit table */
+ { /* too few codes for k-w bit table */
+ f -= a + 1; /* deduct codes from patterns left */
+ xp = c + k;
+ if (j < z)
+ while (++j < z) /* try smaller tables up to z bits */
+ {
+ if ((f <<= 1) <= *++xp)
+ break; /* enough codes to use up j bits */
+ f -= *xp; /* else deduct codes from patterns */
+ }
+ }
+ z = 1 << j; /* table entries for j-bit table */
+
+ /* allocate new table */
+ if (*hn + z > MANY) /* (note: doesn't matter for fixed) */
+ return Z_DATA_ERROR; /* overflow of MANY */
+ u[h] = q = hp + *hn;
+ *hn += z;
+
+ /* connect to last table, if there is one */
+ if (h)
+ {
+ x[h] = i; /* save pattern for backing up */
+ r.bits = (Byte)l; /* bits to dump before this table */
+ r.exop = (Byte)j; /* bits in this table */
+ j = i >> (w - l);
+ r.base = (uInt)(q - u[h-1] - j); /* offset to this table */
+ u[h-1][j] = r; /* connect to last table */
+ }
+ else
+ *t = q; /* first table is returned result */
+ }
+
+ /* set up table entry in r */
+ r.bits = (Byte)(k - w);
+ if (p >= v + n)
+ r.exop = 128 + 64; /* out of values--invalid code */
+ else if (*p < s)
+ {
+ r.exop = (Byte)(*p < 256 ? 0 : 32 + 64); /* 256 is end-of-block */
+ r.base = *p++; /* simple code is just the value */
+ }
+ else
+ {
+ r.exop = (Byte)(e[*p - s] + 16 + 64);/* non-simple--look up in lists */
+ r.base = d[*p++ - s];
+ }
+
+ /* fill code-like entries with r */
+ f = 1 << (k - w);
+ for (j = i >> w; j < z; j += f)
+ q[j] = r;
+
+ /* backwards increment the k-bit code i */
+ for (j = 1 << (k - 1); i & j; j >>= 1)
+ i ^= j;
+ i ^= j;
+
+ /* backup over finished tables */
+ mask = (1 << w) - 1; /* needed on HP, cc -O bug */
+ while ((i & mask) != x[h])
+ {
+ h--; /* don't need to update q */
+ w -= l;
+ mask = (1 << w) - 1;
+ }
+ }
+ }
+
+
+ /* Return Z_BUF_ERROR if we were given an incomplete table */
+ return y != 0 && g != 1 ? Z_BUF_ERROR : Z_OK;
+}
+
+
+int zlib_inflate_trees_bits(
+ uInt *c, /* 19 code lengths */
+ uInt *bb, /* bits tree desired/actual depth */
+ inflate_huft **tb, /* bits tree result */
+ inflate_huft *hp, /* space for trees */
+ z_streamp z /* for messages */
+)
+{
+ int r;
+ uInt hn = 0; /* hufts used in space */
+ uInt *v; /* work area for huft_build */
+
+ v = WS(z)->tree_work_area_1;
+ r = huft_build(c, 19, 19, NULL, NULL, tb, bb, hp, &hn, v);
+ if (r == Z_DATA_ERROR)
+ z->msg = (char*)"oversubscribed dynamic bit lengths tree";
+ else if (r == Z_BUF_ERROR || *bb == 0)
+ {
+ z->msg = (char*)"incomplete dynamic bit lengths tree";
+ r = Z_DATA_ERROR;
+ }
+ return r;
+}
+
+int zlib_inflate_trees_dynamic(
+ uInt nl, /* number of literal/length codes */
+ uInt nd, /* number of distance codes */
+ uInt *c, /* that many (total) code lengths */
+ uInt *bl, /* literal desired/actual bit depth */
+ uInt *bd, /* distance desired/actual bit depth */
+ inflate_huft **tl, /* literal/length tree result */
+ inflate_huft **td, /* distance tree result */
+ inflate_huft *hp, /* space for trees */
+ z_streamp z /* for messages */
+)
+{
+ int r;
+ uInt hn = 0; /* hufts used in space */
+ uInt *v; /* work area for huft_build */
+
+ /* allocate work area */
+ v = WS(z)->tree_work_area_2;
+
+ /* build literal/length tree */
+ r = huft_build(c, nl, 257, cplens, cplext, tl, bl, hp, &hn, v);
+ if (r != Z_OK || *bl == 0)
+ {
+ if (r == Z_DATA_ERROR)
+ z->msg = (char*)"oversubscribed literal/length tree";
+ else if (r != Z_MEM_ERROR)
+ {
+ z->msg = (char*)"incomplete literal/length tree";
+ r = Z_DATA_ERROR;
+ }
+ return r;
+ }
+
+ /* build distance tree */
+ r = huft_build(c + nl, nd, 0, cpdist, cpdext, td, bd, hp, &hn, v);
+ if (r != Z_OK || (*bd == 0 && nl > 257))
+ {
+ if (r == Z_DATA_ERROR)
+ z->msg = (char*)"oversubscribed distance tree";
+ else if (r == Z_BUF_ERROR) {
+#ifdef PKZIP_BUG_WORKAROUND
+ r = Z_OK;
+ }
+#else
+ z->msg = (char*)"incomplete distance tree";
+ r = Z_DATA_ERROR;
+ }
+ else if (r != Z_MEM_ERROR)
+ {
+ z->msg = (char*)"empty distance tree with lengths";
+ r = Z_DATA_ERROR;
+ }
+ return r;
+#endif
+ }
+
+ /* done */
+ return Z_OK;
+}
+
+
+int zlib_inflate_trees_fixed(
+ uInt *bl, /* literal desired/actual bit depth */
+ uInt *bd, /* distance desired/actual bit depth */
+ inflate_huft **tl, /* literal/length tree result */
+ inflate_huft **td, /* distance tree result */
+ inflate_huft *hp, /* space for trees */
+ z_streamp z /* for memory allocation */
+)
+{
+ int i; /* temporary variable */
+ unsigned l[288]; /* length list for huft_build */
+ uInt *v; /* work area for huft_build */
+
+ /* set up literal table */
+ for (i = 0; i < 144; i++)
+ l[i] = 8;
+ for (; i < 256; i++)
+ l[i] = 9;
+ for (; i < 280; i++)
+ l[i] = 7;
+ for (; i < 288; i++) /* make a complete, but wrong code set */
+ l[i] = 8;
+ *bl = 9;
+ v = WS(z)->tree_work_area_1;
+ if ((i = huft_build(l, 288, 257, cplens, cplext, tl, bl, hp, &i, v)) != 0)
+ return i;
+
+ /* set up distance table */
+ for (i = 0; i < 30; i++) /* make an incomplete code set */
+ l[i] = 5;
+ *bd = 5;
+ if ((i = huft_build(l, 30, 0, cpdist, cpdext, td, bd, hp, &i, v)) > 1)
+ return i;
+
+ return Z_OK;
+}
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/inftrees.h ../mkvmlinuz-33+nmu1/boot/inftrees.h
--- ../mkvmlinuz-33+nmu1.old/boot/inftrees.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/inftrees.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,64 @@
+/* inftrees.h -- header to use inftrees.c
+ * Copyright (C) 1995-1998 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+ part of the implementation of the compression library and is
+ subject to change. Applications should only use zlib.h.
+ */
+
+/* Huffman code lookup table entry--this entry is four bytes for machines
+ that have 16-bit pointers (e.g. PC's in the small or medium model). */
+
+#ifndef _INFTREES_H
+#define _INFTREES_H
+
+typedef struct inflate_huft_s inflate_huft;
+
+struct inflate_huft_s {
+ union {
+ struct {
+ Byte Exop; /* number of extra bits or operation */
+ Byte Bits; /* number of bits in this code or subcode */
+ } what;
+ uInt pad; /* pad structure to a power of 2 (4 bytes for */
+ } word; /* 16-bit, 8 bytes for 32-bit int's) */
+ uInt base; /* literal, length base, distance base,
+ or table offset */
+};
+
+/* Maximum size of dynamic tree. The maximum found in a long but non-
+ exhaustive search was 1004 huft structures (850 for length/literals
+ and 154 for distances, the latter actually the result of an
+ exhaustive search). The actual maximum is not known, but the
+ value below is more than safe. */
+#define MANY 1440
+
+extern int zlib_inflate_trees_bits (
+ uInt *, /* 19 code lengths */
+ uInt *, /* bits tree desired/actual depth */
+ inflate_huft **, /* bits tree result */
+ inflate_huft *, /* space for trees */
+ z_streamp); /* for messages */
+
+extern int zlib_inflate_trees_dynamic (
+ uInt, /* number of literal/length codes */
+ uInt, /* number of distance codes */
+ uInt *, /* that many (total) code lengths */
+ uInt *, /* literal desired/actual bit depth */
+ uInt *, /* distance desired/actual bit depth */
+ inflate_huft **, /* literal/length tree result */
+ inflate_huft **, /* distance tree result */
+ inflate_huft *, /* space for trees */
+ z_streamp); /* for messages */
+
+extern int zlib_inflate_trees_fixed (
+ uInt *, /* literal desired/actual bit depth */
+ uInt *, /* distance desired/actual bit depth */
+ inflate_huft **, /* literal/length tree result */
+ inflate_huft **, /* distance tree result */
+ inflate_huft *, /* space for trees */
+ z_streamp); /* for memory allocation */
+
+#endif /* _INFTREES_H */
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/infutil.c ../mkvmlinuz-33+nmu1/boot/infutil.c
--- ../mkvmlinuz-33+nmu1.old/boot/infutil.c 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/infutil.c 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,88 @@
+/* inflate_util.c -- data and routines common to blocks and codes
+ * Copyright (C) 1995-1998 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#include "zutil.h"
+#include "infblock.h"
+#include "inftrees.h"
+#include "infcodes.h"
+#include "infutil.h"
+
+struct inflate_codes_state;
+
+/* And'ing with mask[n] masks the lower n bits */
+uInt zlib_inflate_mask[17] = {
+ 0x0000,
+ 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
+ 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
+};
+
+
+/* copy as much as possible from the sliding window to the output area */
+int zlib_inflate_flush(
+ inflate_blocks_statef *s,
+ z_streamp z,
+ int r
+)
+{
+ uInt n;
+ Byte *p;
+ Byte *q;
+
+ /* local copies of source and destination pointers */
+ p = z->next_out;
+ q = s->read;
+
+ /* compute number of bytes to copy as far as end of window */
+ n = (uInt)((q <= s->write ? s->write : s->end) - q);
+ if (n > z->avail_out) n = z->avail_out;
+ if (n && r == Z_BUF_ERROR) r = Z_OK;
+
+ /* update counters */
+ z->avail_out -= n;
+ z->total_out += n;
+
+ /* update check information */
+ if (s->checkfn != NULL)
+ z->adler = s->check = (*s->checkfn)(s->check, q, n);
+
+ /* copy as far as end of window */
+ memcpy(p, q, n);
+ p += n;
+ q += n;
+
+ /* see if more to copy at beginning of window */
+ if (q == s->end)
+ {
+ /* wrap pointers */
+ q = s->window;
+ if (s->write == s->end)
+ s->write = s->window;
+
+ /* compute bytes to copy */
+ n = (uInt)(s->write - q);
+ if (n > z->avail_out) n = z->avail_out;
+ if (n && r == Z_BUF_ERROR) r = Z_OK;
+
+ /* update counters */
+ z->avail_out -= n;
+ z->total_out += n;
+
+ /* update check information */
+ if (s->checkfn != NULL)
+ z->adler = s->check = (*s->checkfn)(s->check, q, n);
+
+ /* copy */
+ memcpy(p, q, n);
+ p += n;
+ q += n;
+ }
+
+ /* update pointers */
+ z->next_out = p;
+ s->read = q;
+
+ /* done */
+ return r;
+}
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/infutil.h ../mkvmlinuz-33+nmu1/boot/infutil.h
--- ../mkvmlinuz-33+nmu1.old/boot/infutil.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/infutil.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,197 @@
+/* infutil.h -- types and macros common to blocks and codes
+ * Copyright (C) 1995-1998 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+ part of the implementation of the compression library and is
+ subject to change. Applications should only use zlib.h.
+ */
+
+#ifndef _INFUTIL_H
+#define _INFUTIL_H
+
+#include "zconf.h"
+#include "inftrees.h"
+#include "infcodes.h"
+
+typedef enum {
+ TYPE, /* get type bits (3, including end bit) */
+ LENS, /* get lengths for stored */
+ STORED, /* processing stored block */
+ TABLE, /* get table lengths */
+ BTREE, /* get bit lengths tree for a dynamic block */
+ DTREE, /* get length, distance trees for a dynamic block */
+ CODES, /* processing fixed or dynamic block */
+ DRY, /* output remaining window bytes */
+ B_DONE, /* finished last block, done */
+ B_BAD} /* got a data error--stuck here */
+inflate_block_mode;
+
+/* inflate blocks semi-private state */
+struct inflate_blocks_state {
+
+ /* mode */
+ inflate_block_mode mode; /* current inflate_block mode */
+
+ /* mode dependent information */
+ union {
+ uInt left; /* if STORED, bytes left to copy */
+ struct {
+ uInt table; /* table lengths (14 bits) */
+ uInt index; /* index into blens (or border) */
+ uInt *blens; /* bit lengths of codes */
+ uInt bb; /* bit length tree depth */
+ inflate_huft *tb; /* bit length decoding tree */
+ } trees; /* if DTREE, decoding info for trees */
+ struct {
+ inflate_codes_statef
+ *codes;
+ } decode; /* if CODES, current state */
+ } sub; /* submode */
+ uInt last; /* true if this block is the last block */
+
+ /* mode independent information */
+ uInt bitk; /* bits in bit buffer */
+ uLong bitb; /* bit buffer */
+ inflate_huft *hufts; /* single malloc for tree space */
+ Byte *window; /* sliding window */
+ Byte *end; /* one byte after sliding window */
+ Byte *read; /* window read pointer */
+ Byte *write; /* window write pointer */
+ check_func checkfn; /* check function */
+ uLong check; /* check on output */
+
+};
+
+
+/* defines for inflate input/output */
+/* update pointers and return */
+#define UPDBITS {s->bitb=b;s->bitk=k;}
+#define UPDIN {z->avail_in=n;z->total_in+=p-z->next_in;z->next_in=p;}
+#define UPDOUT {s->write=q;}
+#define UPDATE {UPDBITS UPDIN UPDOUT}
+#define LEAVE {UPDATE return zlib_inflate_flush(s,z,r);}
+/* get bytes and bits */
+#define LOADIN {p=z->next_in;n=z->avail_in;b=s->bitb;k=s->bitk;}
+#define NEEDBYTE {if(n)r=Z_OK;else LEAVE}
+#define NEXTBYTE (n--,*p++)
+#define NEEDBITS(j) {while(k<(j)){NEEDBYTE;b|=((uLong)NEXTBYTE)<<k;k+=8;}}
+#define DUMPBITS(j) {b>>=(j);k-=(j);}
+/* output bytes */
+#define WAVAIL (uInt)(q<s->read?s->read-q-1:s->end-q)
+#define LOADOUT {q=s->write;m=(uInt)WAVAIL;}
+#define WRAP {if(q==s->end&&s->read!=s->window){q=s->window;m=(uInt)WAVAIL;}}
+#define FLUSH {UPDOUT r=zlib_inflate_flush(s,z,r); LOADOUT}
+#define NEEDOUT {if(m==0){WRAP if(m==0){FLUSH WRAP if(m==0) LEAVE}}r=Z_OK;}
+#define OUTBYTE(a) {*q++=(Byte)(a);m--;}
+/* load local pointers */
+#define LOAD {LOADIN LOADOUT}
+
+/* masks for lower bits (size given to avoid silly warnings with Visual C++) */
+extern uInt zlib_inflate_mask[17];
+
+/* copy as much as possible from the sliding window to the output area */
+extern int zlib_inflate_flush (
+ inflate_blocks_statef *,
+ z_streamp ,
+ int);
+
+/* inflate private state */
+typedef enum {
+ METHOD, /* waiting for method byte */
+ FLAG, /* waiting for flag byte */
+ DICT4, /* four dictionary check bytes to go */
+ DICT3, /* three dictionary check bytes to go */
+ DICT2, /* two dictionary check bytes to go */
+ DICT1, /* one dictionary check byte to go */
+ DICT0, /* waiting for inflateSetDictionary */
+ BLOCKS, /* decompressing blocks */
+ CHECK4, /* four check bytes to go */
+ CHECK3, /* three check bytes to go */
+ CHECK2, /* two check bytes to go */
+ CHECK1, /* one check byte to go */
+ I_DONE, /* finished check, done */
+ I_BAD} /* got an error--stay here */
+inflate_mode;
+
+struct internal_state {
+
+ /* mode */
+ inflate_mode mode; /* current inflate mode */
+
+ /* mode dependent information */
+ union {
+ uInt method; /* if FLAGS, method byte */
+ struct {
+ uLong was; /* computed check value */
+ uLong need; /* stream check value */
+ } check; /* if CHECK, check values to compare */
+ uInt marker; /* if BAD, inflateSync's marker bytes count */
+ } sub; /* submode */
+
+ /* mode independent information */
+ int nowrap; /* flag for no wrapper */
+ uInt wbits; /* log2(window size) (8..15, defaults to 15) */
+ inflate_blocks_statef
+ *blocks; /* current inflate_blocks state */
+
+};
+
+/* inflate codes private state */
+typedef enum { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
+ START, /* x: set up for LEN */
+ LEN, /* i: get length/literal/eob next */
+ LENEXT, /* i: getting length extra (have base) */
+ DIST, /* i: get distance next */
+ DISTEXT, /* i: getting distance extra */
+ COPY, /* o: copying bytes in window, waiting for space */
+ LIT, /* o: got literal, waiting for output space */
+ WASH, /* o: got eob, possibly still output waiting */
+ END, /* x: got eob and all data flushed */
+ BADCODE} /* x: got error */
+inflate_codes_mode;
+
+struct inflate_codes_state {
+
+ /* mode */
+ inflate_codes_mode mode; /* current inflate_codes mode */
+
+ /* mode dependent information */
+ uInt len;
+ union {
+ struct {
+ inflate_huft *tree; /* pointer into tree */
+ uInt need; /* bits needed */
+ } code; /* if LEN or DIST, where in tree */
+ uInt lit; /* if LIT, literal */
+ struct {
+ uInt get; /* bits to get for extra */
+ uInt dist; /* distance back to copy from */
+ } copy; /* if EXT or COPY, where and how much */
+ } sub; /* submode */
+
+ /* mode independent information */
+ Byte lbits; /* ltree bits decoded per branch */
+ Byte dbits; /* dtree bits decoder per branch */
+ inflate_huft *ltree; /* literal/length/eob tree */
+ inflate_huft *dtree; /* distance tree */
+
+};
+
+/* memory allocation for inflation */
+
+struct inflate_workspace {
+ inflate_codes_statef working_state;
+ struct inflate_blocks_state working_blocks_state;
+ struct internal_state internal_state;
+ unsigned int tree_work_area_1[19];
+ unsigned int tree_work_area_2[288];
+ unsigned working_blens[258 + 0x1f + 0x1f];
+ inflate_huft working_hufts[MANY];
+ unsigned char working_window[1 << MAX_WBITS];
+};
+
+#define WS(z) ((struct inflate_workspace *)(z->workspace))
+
+#endif
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/install.sh ../mkvmlinuz-33+nmu1/boot/install.sh
--- ../mkvmlinuz-33+nmu1.old/boot/install.sh 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/install.sh 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# This file is subject to the terms and conditions of the GNU General Public
+# License. See the file "COPYING" in the main directory of this archive
+# for more details.
+#
+# Copyright (C) 1995 by Linus Torvalds
+#
+# Blatantly stolen from in arch/i386/boot/install.sh by Dave Hansen
+#
+# "make install" script for ppc64 architecture
+#
+# Arguments:
+# $1 - kernel version
+# $2 - kernel image file
+# $3 - kernel map file
+# $4 - default install path (blank if root directory)
+# $5 - kernel boot file, the zImage
+#
+
+# User may have a custom install script
+
+if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi
+if [ -x /sbin/${CROSS_COMPILE}installkernel ]; then exec /sbin/${CROSS_COMPILE}installkernel "$@"; fi
+
+# Default install
+
+# this should work for both the pSeries zImage and the iSeries vmlinux.sm
+image_name=`basename $2`
+
+if [ -f $4/$image_name ]; then
+ mv $4/$image_name $4/$image_name.old
+fi
+
+if [ -f $4/System.map ]; then
+ mv $4/System.map $4/System.old
+fi
+
+cat $2 > $4/$image_name
+cp $3 $4/System.map
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/main.c ../mkvmlinuz-33+nmu1/boot/main.c
--- ../mkvmlinuz-33+nmu1.old/boot/main.c 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/main.c 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,319 @@
+/*
+ * Copyright (C) Paul Mackerras 1997.
+ *
+ * Updates for PPC64 by Todd Inglett, Dave Engebretsen & Peter Bergner.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#include <stdarg.h>
+#include <stddef.h>
+#include "elf.h"
+#include "page.h"
+#include "string.h"
+#include "stdio.h"
+#include "prom.h"
+#include "zlib.h"
+
+extern void flush_cache(void *, unsigned long);
+
+
+/* Value picked to match that used by yaboot */
+#define PROG_START 0x01400000 /* only used on 64-bit systems */
+#define RAM_END (512<<20) /* Fixme: use OF */
+#define ONE_MB 0x100000
+
+extern char _start[];
+extern char __bss_start[];
+extern char _end[];
+extern char _vmlinux_start[];
+extern char _vmlinux_end[];
+extern char _initrd_start[];
+extern char _initrd_end[];
+
+struct addr_range {
+ unsigned long addr;
+ unsigned long size;
+ unsigned long memsize;
+};
+static struct addr_range vmlinux;
+static struct addr_range vmlinuz;
+static struct addr_range initrd;
+
+static unsigned long elfoffset;
+
+static char scratch[46912]; /* scratch space for gunzip, from zlib_inflate_workspacesize() */
+static char elfheader[256];
+
+
+typedef void (*kernel_entry_t)( unsigned long,
+ unsigned long,
+ void *,
+ void *);
+
+
+#undef DEBUG
+
+static unsigned long claim_base;
+
+#define HEAD_CRC 2
+#define EXTRA_FIELD 4
+#define ORIG_NAME 8
+#define COMMENT 0x10
+#define RESERVED 0xe0
+
+static void gunzip(void *dst, int dstlen, unsigned char *src, int *lenp)
+{
+ z_stream s;
+ int r, i, flags;
+
+ /* skip header */
+ i = 10;
+ flags = src[3];
+ if (src[2] != Z_DEFLATED || (flags & RESERVED) != 0) {
+ printf("bad gzipped data\n\r");
+ exit();
+ }
+ if ((flags & EXTRA_FIELD) != 0)
+ i = 12 + src[10] + (src[11] << 8);
+ if ((flags & ORIG_NAME) != 0)
+ while (src[i++] != 0)
+ ;
+ if ((flags & COMMENT) != 0)
+ while (src[i++] != 0)
+ ;
+ if ((flags & HEAD_CRC) != 0)
+ i += 2;
+ if (i >= *lenp) {
+ printf("gunzip: ran out of data in header\n\r");
+ exit();
+ }
+
+ if (zlib_inflate_workspacesize() > sizeof(scratch)) {
+ printf("gunzip needs more mem\n");
+ exit();
+ }
+ memset(&s, 0, sizeof(s));
+ s.workspace = scratch;
+ r = zlib_inflateInit2(&s, -MAX_WBITS);
+ if (r != Z_OK) {
+ printf("inflateInit2 returned %d\n\r", r);
+ exit();
+ }
+ s.next_in = src + i;
+ s.avail_in = *lenp - i;
+ s.next_out = dst;
+ s.avail_out = dstlen;
+ r = zlib_inflate(&s, Z_FULL_FLUSH);
+ if (r != Z_OK && r != Z_STREAM_END) {
+ printf("inflate returned %d msg: %s\n\r", r, s.msg);
+ exit();
+ }
+ *lenp = s.next_out - (unsigned char *) dst;
+ zlib_inflateEnd(&s);
+}
+
+static unsigned long try_claim(unsigned long size)
+{
+ unsigned long addr = 0;
+
+ for(; claim_base < RAM_END; claim_base += ONE_MB) {
+#ifdef DEBUG
+ printf(" trying: 0x%08lx\n\r", claim_base);
+#endif
+ addr = (unsigned long)claim(claim_base, size, 0);
+ if ((void *)addr != (void *)-1)
+ break;
+ }
+ if (addr == 0)
+ return 0;
+ claim_base = PAGE_ALIGN(claim_base + size);
+ return addr;
+}
+
+static int is_elf64(void *hdr)
+{
+ Elf64_Ehdr *elf64 = hdr;
+ Elf64_Phdr *elf64ph;
+ unsigned int i;
+
+ if (!(elf64->e_ident[EI_MAG0] == ELFMAG0 &&
+ elf64->e_ident[EI_MAG1] == ELFMAG1 &&
+ elf64->e_ident[EI_MAG2] == ELFMAG2 &&
+ elf64->e_ident[EI_MAG3] == ELFMAG3 &&
+ elf64->e_ident[EI_CLASS] == ELFCLASS64 &&
+ elf64->e_ident[EI_DATA] == ELFDATA2MSB &&
+ elf64->e_type == ET_EXEC &&
+ elf64->e_machine == EM_PPC64))
+ return 0;
+
+ elf64ph = (Elf64_Phdr *)((unsigned long)elf64 +
+ (unsigned long)elf64->e_phoff);
+ for (i = 0; i < (unsigned int)elf64->e_phnum; i++, elf64ph++)
+ if (elf64ph->p_type == PT_LOAD)
+ break;
+ if (i >= (unsigned int)elf64->e_phnum)
+ return 0;
+
+ elfoffset = (unsigned long)elf64ph->p_offset;
+ vmlinux.size = (unsigned long)elf64ph->p_filesz + elfoffset;
+ vmlinux.memsize = (unsigned long)elf64ph->p_memsz + elfoffset;
+
+#if defined(PROG_START)
+ /*
+ * Maintain a "magic" minimum address. This keeps some older
+ * firmware platforms running.
+ */
+
+ if (claim_base < PROG_START)
+ claim_base = PROG_START;
+#endif
+
+ return 1;
+}
+
+static int is_elf32(void *hdr)
+{
+ Elf32_Ehdr *elf32 = hdr;
+ Elf32_Phdr *elf32ph;
+ unsigned int i;
+
+ if (!(elf32->e_ident[EI_MAG0] == ELFMAG0 &&
+ elf32->e_ident[EI_MAG1] == ELFMAG1 &&
+ elf32->e_ident[EI_MAG2] == ELFMAG2 &&
+ elf32->e_ident[EI_MAG3] == ELFMAG3 &&
+ elf32->e_ident[EI_CLASS] == ELFCLASS32 &&
+ elf32->e_ident[EI_DATA] == ELFDATA2MSB &&
+ elf32->e_type == ET_EXEC &&
+ elf32->e_machine == EM_PPC))
+ return 0;
+
+ elf32 = (Elf32_Ehdr *)elfheader;
+ elf32ph = (Elf32_Phdr *) ((unsigned long)elf32 + elf32->e_phoff);
+ for (i = 0; i < elf32->e_phnum; i++, elf32ph++)
+ if (elf32ph->p_type == PT_LOAD)
+ break;
+ if (i >= elf32->e_phnum)
+ return 0;
+
+ elfoffset = elf32ph->p_offset;
+ vmlinux.size = elf32ph->p_filesz + elf32ph->p_offset;
+ vmlinux.memsize = elf32ph->p_memsz + elf32ph->p_offset;
+ return 1;
+}
+
+void start(unsigned long a1, unsigned long a2, void *promptr, void *sp)
+{
+ int len;
+ kernel_entry_t kernel_entry;
+
+ memset(__bss_start, 0, _end - __bss_start);
+
+ prom = (int (*)(void *)) promptr;
+ chosen_handle = finddevice("/chosen");
+ if (chosen_handle == (void *) -1)
+ exit();
+ if (getprop(chosen_handle, "stdout", &stdout, sizeof(stdout)) != 4)
+ exit();
+
+ printf("\n\rzImage starting: loaded at 0x%p (sp: 0x%p)\n\r", _start, sp);
+
+ /*
+ * The first available claim_base must be above the end of the
+ * the loaded kernel wrapper file (_start to _end includes the
+ * initrd image if it is present) and rounded up to a nice
+ * 1 MB boundary for good measure.
+ */
+
+ claim_base = _ALIGN_UP((unsigned long)_end, ONE_MB);
+
+ vmlinuz.addr = (unsigned long)_vmlinux_start;
+ vmlinuz.size = (unsigned long)(_vmlinux_end - _vmlinux_start);
+
+ /* gunzip the ELF header of the kernel */
+ if (*(unsigned short *)vmlinuz.addr == 0x1f8b) {
+ len = vmlinuz.size;
+ gunzip(elfheader, sizeof(elfheader),
+ (unsigned char *)vmlinuz.addr, &len);
+ } else
+ memcpy(elfheader, (const void *)vmlinuz.addr, sizeof(elfheader));
+
+ if (!is_elf64(elfheader) && !is_elf32(elfheader)) {
+ printf("Error: not a valid PPC32 or PPC64 ELF file!\n\r");
+ exit();
+ }
+
+ /* We need to claim the memsize plus the file offset since gzip
+ * will expand the header (file offset), then the kernel, then
+ * possible rubbish we don't care about. But the kernel bss must
+ * be claimed (it will be zero'd by the kernel itself)
+ */
+ printf("Allocating 0x%lx bytes for kernel ...\n\r", vmlinux.memsize);
+ vmlinux.addr = try_claim(vmlinux.memsize);
+ if (vmlinux.addr == 0) {
+ printf("Can't allocate memory for kernel image !\n\r");
+ exit();
+ }
+
+ /*
+ * Now we try to claim memory for the initrd (and copy it there)
+ */
+ initrd.size = (unsigned long)(_initrd_end - _initrd_start);
+ initrd.memsize = initrd.size;
+ if ( initrd.size > 0 ) {
+ printf("Allocating 0x%lx bytes for initrd ...\n\r", initrd.size);
+ initrd.addr = try_claim(initrd.size);
+ if (initrd.addr == 0) {
+ printf("Can't allocate memory for initial ramdisk !\n\r");
+ exit();
+ }
+ a1 = initrd.addr;
+ a2 = initrd.size;
+ printf("initial ramdisk moving 0x%lx <- 0x%lx (0x%lx bytes)\n\r",
+ initrd.addr, (unsigned long)_initrd_start, initrd.size);
+ memmove((void *)initrd.addr, (void *)_initrd_start, initrd.size);
+ printf("initrd head: 0x%lx\n\r", *((unsigned long *)initrd.addr));
+ }
+
+ /* Eventually gunzip the kernel */
+ if (*(unsigned short *)vmlinuz.addr == 0x1f8b) {
+ printf("gunzipping (0x%lx <- 0x%lx:0x%0lx)...",
+ vmlinux.addr, vmlinuz.addr, vmlinuz.addr+vmlinuz.size);
+ len = vmlinuz.size;
+ gunzip((void *)vmlinux.addr, vmlinux.memsize,
+ (unsigned char *)vmlinuz.addr, &len);
+ printf("done 0x%lx bytes\n\r", len);
+ } else {
+ memmove((void *)vmlinux.addr,(void *)vmlinuz.addr,vmlinuz.size);
+ }
+
+ /* Skip over the ELF header */
+#ifdef DEBUG
+ printf("... skipping 0x%lx bytes of ELF header\n\r",
+ elfoffset);
+#endif
+ vmlinux.addr += elfoffset;
+
+ flush_cache((void *)vmlinux.addr, vmlinux.size);
+
+ kernel_entry = (kernel_entry_t)vmlinux.addr;
+#ifdef DEBUG
+ printf( "kernel:\n\r"
+ " entry addr = 0x%lx\n\r"
+ " a1 = 0x%lx,\n\r"
+ " a2 = 0x%lx,\n\r"
+ " prom = 0x%lx,\n\r"
+ " bi_recs = 0x%lx,\n\r",
+ (unsigned long)kernel_entry, a1, a2,
+ (unsigned long)prom, NULL);
+#endif
+
+ kernel_entry(a1, a2, prom, NULL);
+
+ printf("Error: Linux kernel returned to zImage bootloader!\n\r");
+
+ exit();
+}
+
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/page.h ../mkvmlinuz-33+nmu1/boot/page.h
--- ../mkvmlinuz-33+nmu1.old/boot/page.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/page.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,34 @@
+#ifndef _PPC_BOOT_PAGE_H
+#define _PPC_BOOT_PAGE_H
+/*
+ * Copyright (C) 2001 PPC64 Team, IBM Corp
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifdef __ASSEMBLY__
+#define ASM_CONST(x) x
+#else
+#define __ASM_CONST(x) x##UL
+#define ASM_CONST(x) __ASM_CONST(x)
+#endif
+
+/* PAGE_SHIFT determines the page size */
+#define PAGE_SHIFT 12
+#define PAGE_SIZE (ASM_CONST(1) << PAGE_SHIFT)
+#define PAGE_MASK (~(PAGE_SIZE-1))
+
+/* align addr on a size boundary - adjust address up/down if needed */
+#define _ALIGN_UP(addr,size) (((addr)+((size)-1))&(~((size)-1)))
+#define _ALIGN_DOWN(addr,size) ((addr)&(~((size)-1)))
+
+/* align addr on a size boundary - adjust address up if needed */
+#define _ALIGN(addr,size) _ALIGN_UP(addr,size)
+
+/* to align the pointer to the (next) page boundary */
+#define PAGE_ALIGN(addr) _ALIGN(addr, PAGE_SIZE)
+
+#endif /* _PPC_BOOT_PAGE_H */
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/ppc_asm.h ../mkvmlinuz-33+nmu1/boot/ppc_asm.h
--- ../mkvmlinuz-33+nmu1.old/boot/ppc_asm.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/ppc_asm.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,62 @@
+#ifndef _PPC64_PPC_ASM_H
+#define _PPC64_PPC_ASM_H
+/*
+ *
+ * Definitions used by various bits of low-level assembly code on PowerPC.
+ *
+ * Copyright (C) 1995-1999 Gary Thomas, Paul Mackerras, Cort Dougan.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+/* Condition Register Bit Fields */
+
+#define cr0 0
+#define cr1 1
+#define cr2 2
+#define cr3 3
+#define cr4 4
+#define cr5 5
+#define cr6 6
+#define cr7 7
+
+
+/* General Purpose Registers (GPRs) */
+
+#define r0 0
+#define r1 1
+#define r2 2
+#define r3 3
+#define r4 4
+#define r5 5
+#define r6 6
+#define r7 7
+#define r8 8
+#define r9 9
+#define r10 10
+#define r11 11
+#define r12 12
+#define r13 13
+#define r14 14
+#define r15 15
+#define r16 16
+#define r17 17
+#define r18 18
+#define r19 19
+#define r20 20
+#define r21 21
+#define r22 22
+#define r23 23
+#define r24 24
+#define r25 25
+#define r26 26
+#define r27 27
+#define r28 28
+#define r29 29
+#define r30 30
+#define r31 31
+
+#endif /* _PPC64_PPC_ASM_H */
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/prom.c ../mkvmlinuz-33+nmu1/boot/prom.c
--- ../mkvmlinuz-33+nmu1.old/boot/prom.c 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/prom.c 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) Paul Mackerras 1997.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#include <stdarg.h>
+#include <stddef.h>
+#include "string.h"
+#include "stdio.h"
+#include "prom.h"
+
+int (*prom)(void *);
+phandle chosen_handle;
+ihandle stdout;
+
+int call_prom(const char *service, int nargs, int nret, ...)
+{
+ int i;
+ struct prom_args {
+ const char *service;
+ int nargs;
+ int nret;
+ unsigned int args[12];
+ } args;
+ va_list list;
+
+ args.service = service;
+ args.nargs = nargs;
+ args.nret = nret;
+
+ va_start(list, nret);
+ for (i = 0; i < nargs; i++)
+ args.args[i] = va_arg(list, unsigned int);
+ va_end(list);
+
+ for (i = 0; i < nret; i++)
+ args.args[nargs+i] = 0;
+
+ if (prom(&args) < 0)
+ return -1;
+
+ return (nret > 0)? args.args[nargs]: 0;
+}
+
+int call_prom_ret(const char *service, int nargs, int nret,
+ unsigned int *rets, ...)
+{
+ int i;
+ struct prom_args {
+ const char *service;
+ int nargs;
+ int nret;
+ unsigned int args[12];
+ } args;
+ va_list list;
+
+ args.service = service;
+ args.nargs = nargs;
+ args.nret = nret;
+
+ va_start(list, rets);
+ for (i = 0; i < nargs; i++)
+ args.args[i] = va_arg(list, unsigned int);
+ va_end(list);
+
+ for (i = 0; i < nret; i++)
+ args.args[nargs+i] = 0;
+
+ if (prom(&args) < 0)
+ return -1;
+
+ if (rets != (void *) 0)
+ for (i = 1; i < nret; ++i)
+ rets[i-1] = args.args[nargs+i];
+
+ return (nret > 0)? args.args[nargs]: 0;
+}
+
+int write(void *handle, void *ptr, int nb)
+{
+ return call_prom("write", 3, 1, handle, ptr, nb);
+}
+
+/*
+ * Older OF's require that when claiming a specific range of addresses,
+ * we claim the physical space in the /memory node and the virtual
+ * space in the chosen mmu node, and then do a map operation to
+ * map virtual to physical.
+ */
+static int need_map = -1;
+static ihandle chosen_mmu;
+static phandle memory;
+
+/* returns true if s2 is a prefix of s1 */
+static int string_match(const char *s1, const char *s2)
+{
+ for (; *s2; ++s2)
+ if (*s1++ != *s2)
+ return 0;
+ return 1;
+}
+
+static int check_of_version(void)
+{
+ phandle oprom, chosen;
+ char version[64];
+
+ oprom = finddevice("/openprom");
+ if (oprom == (phandle) -1)
+ return 0;
+ if (getprop(oprom, "model", version, sizeof(version)) <= 0)
+ return 0;
+ version[sizeof(version)-1] = 0;
+ printf("OF version = '%s'\r\n", version);
+ if (!string_match(version, "Open Firmware, 1.")
+ && !string_match(version, "FirmWorks,3."))
+ return 0;
+ chosen = finddevice("/chosen");
+ if (chosen == (phandle) -1) {
+ chosen = finddevice("/chosen@0");
+ if (chosen == (phandle) -1) {
+ printf("no chosen\n");
+ return 0;
+ }
+ }
+ if (getprop(chosen, "mmu", &chosen_mmu, sizeof(chosen_mmu)) <= 0) {
+ printf("no mmu\n");
+ return 0;
+ }
+ memory = (ihandle) call_prom("open", 1, 1, "/memory");
+ if (memory == (ihandle) -1) {
+ memory = (ihandle) call_prom("open", 1, 1, "/memory@0");
+ if (memory == (ihandle) -1) {
+ printf("no memory node\n");
+ return 0;
+ }
+ }
+ printf("old OF detected\r\n");
+ return 1;
+}
+
+void *claim(unsigned long virt, unsigned long size, unsigned long align)
+{
+ int ret;
+ unsigned int result;
+
+ if (need_map < 0)
+ need_map = check_of_version();
+ if (align || !need_map)
+ return (void *) call_prom("claim", 3, 1, virt, size, align);
+
+ ret = call_prom_ret("call-method", 5, 2, &result, "claim", memory,
+ align, size, virt);
+ if (ret != 0 || result == -1)
+ return (void *) -1;
+ ret = call_prom_ret("call-method", 5, 2, &result, "claim", chosen_mmu,
+ align, size, virt);
+ /* 0x12 == coherent + read/write */
+ ret = call_prom("call-method", 6, 1, "map", chosen_mmu,
+ 0x12, size, virt, virt);
+ return (void *) virt;
+}
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/prom.h ../mkvmlinuz-33+nmu1/boot/prom.h
--- ../mkvmlinuz-33+nmu1.old/boot/prom.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/prom.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,34 @@
+#ifndef _PPC_BOOT_PROM_H_
+#define _PPC_BOOT_PROM_H_
+
+typedef void *phandle;
+typedef void *ihandle;
+
+extern int (*prom) (void *);
+extern phandle chosen_handle;
+extern ihandle stdout;
+
+int call_prom(const char *service, int nargs, int nret, ...);
+int call_prom_ret(const char *service, int nargs, int nret,
+ unsigned int *rets, ...);
+
+extern int write(void *handle, void *ptr, int nb);
+extern void *claim(unsigned long virt, unsigned long size, unsigned long aln);
+
+static inline void exit(void)
+{
+ call_prom("exit", 0, 0);
+}
+
+static inline phandle finddevice(const char *name)
+{
+ return (phandle) call_prom("finddevice", 1, 1, name);
+}
+
+static inline int getprop(void *phandle, const char *name,
+ void *buf, int buflen)
+{
+ return call_prom("getprop", 4, 1, phandle, name, buf, buflen);
+}
+
+#endif /* _PPC_BOOT_PROM_H_ */
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/rs6000.h ../mkvmlinuz-33+nmu1/boot/rs6000.h
--- ../mkvmlinuz-33+nmu1.old/boot/rs6000.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/rs6000.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,243 @@
+/* IBM RS/6000 "XCOFF" file definitions for BFD.
+ Copyright (C) 1990, 1991 Free Software Foundation, Inc.
+ FIXME: Can someone provide a transliteration of this name into ASCII?
+ Using the following chars caused a compiler warning on HIUX (so I replaced
+ them with octal escapes), and isn't useful without an understanding of what
+ character set it is.
+ Written by Mimi Ph\373\364ng-Th\345o V\365 of IBM
+ and John Gilmore of Cygnus Support. */
+
+/********************** FILE HEADER **********************/
+
+struct external_filehdr {
+ char f_magic[2]; /* magic number */
+ char f_nscns[2]; /* number of sections */
+ char f_timdat[4]; /* time & date stamp */
+ char f_symptr[4]; /* file pointer to symtab */
+ char f_nsyms[4]; /* number of symtab entries */
+ char f_opthdr[2]; /* sizeof(optional hdr) */
+ char f_flags[2]; /* flags */
+};
+
+ /* IBM RS/6000 */
+#define U802WRMAGIC 0730 /* writeable text segments **chh** */
+#define U802ROMAGIC 0735 /* readonly sharable text segments */
+#define U802TOCMAGIC 0737 /* readonly text segments and TOC */
+
+#define BADMAG(x) \
+ ((x).f_magic != U802ROMAGIC && (x).f_magic != U802WRMAGIC && \
+ (x).f_magic != U802TOCMAGIC)
+
+#define FILHDR struct external_filehdr
+#define FILHSZ 20
+
+
+/********************** AOUT "OPTIONAL HEADER" **********************/
+
+
+typedef struct
+{
+ unsigned char magic[2]; /* type of file */
+ unsigned char vstamp[2]; /* version stamp */
+ unsigned char tsize[4]; /* text size in bytes, padded to FW bdry */
+ unsigned char dsize[4]; /* initialized data " " */
+ unsigned char bsize[4]; /* uninitialized data " " */
+ unsigned char entry[4]; /* entry pt. */
+ unsigned char text_start[4]; /* base of text used for this file */
+ unsigned char data_start[4]; /* base of data used for this file */
+ unsigned char o_toc[4]; /* address of TOC */
+ unsigned char o_snentry[2]; /* section number of entry point */
+ unsigned char o_sntext[2]; /* section number of .text section */
+ unsigned char o_sndata[2]; /* section number of .data section */
+ unsigned char o_sntoc[2]; /* section number of TOC */
+ unsigned char o_snloader[2]; /* section number of .loader section */
+ unsigned char o_snbss[2]; /* section number of .bss section */
+ unsigned char o_algntext[2]; /* .text alignment */
+ unsigned char o_algndata[2]; /* .data alignment */
+ unsigned char o_modtype[2]; /* module type (??) */
+ unsigned char o_cputype[2]; /* cpu type */
+ unsigned char o_maxstack[4]; /* max stack size (??) */
+ unsigned char o_maxdata[4]; /* max data size (??) */
+ unsigned char o_resv2[12]; /* reserved */
+}
+AOUTHDR;
+
+#define AOUTSZ 72
+#define SMALL_AOUTSZ (28)
+#define AOUTHDRSZ 72
+
+#define RS6K_AOUTHDR_OMAGIC 0x0107 /* old: text & data writeable */
+#define RS6K_AOUTHDR_NMAGIC 0x0108 /* new: text r/o, data r/w */
+#define RS6K_AOUTHDR_ZMAGIC 0x010B /* paged: text r/o, both page-aligned */
+
+
+/********************** SECTION HEADER **********************/
+
+
+struct external_scnhdr {
+ char s_name[8]; /* section name */
+ char s_paddr[4]; /* physical address, aliased s_nlib */
+ char s_vaddr[4]; /* virtual address */
+ char s_size[4]; /* section size */
+ char s_scnptr[4]; /* file ptr to raw data for section */
+ char s_relptr[4]; /* file ptr to relocation */
+ char s_lnnoptr[4]; /* file ptr to line numbers */
+ char s_nreloc[2]; /* number of relocation entries */
+ char s_nlnno[2]; /* number of line number entries*/
+ char s_flags[4]; /* flags */
+};
+
+/*
+ * names of "special" sections
+ */
+#define _TEXT ".text"
+#define _DATA ".data"
+#define _BSS ".bss"
+#define _PAD ".pad"
+#define _LOADER ".loader"
+
+#define SCNHDR struct external_scnhdr
+#define SCNHSZ 40
+
+/* XCOFF uses a special .loader section with type STYP_LOADER. */
+#define STYP_LOADER 0x1000
+
+/* XCOFF uses a special .debug section with type STYP_DEBUG. */
+#define STYP_DEBUG 0x2000
+
+/* XCOFF handles line number or relocation overflow by creating
+ another section header with STYP_OVRFLO set. */
+#define STYP_OVRFLO 0x8000
+
+/********************** LINE NUMBERS **********************/
+
+/* 1 line number entry for every "breakpointable" source line in a section.
+ * Line numbers are grouped on a per function basis; first entry in a function
+ * grouping will have l_lnno = 0 and in place of physical address will be the
+ * symbol table index of the function name.
+ */
+struct external_lineno {
+ union {
+ char l_symndx[4]; /* function name symbol index, iff l_lnno == 0*/
+ char l_paddr[4]; /* (physical) address of line number */
+ } l_addr;
+ char l_lnno[2]; /* line number */
+};
+
+
+#define LINENO struct external_lineno
+#define LINESZ 6
+
+
+/********************** SYMBOLS **********************/
+
+#define E_SYMNMLEN 8 /* # characters in a symbol name */
+#define E_FILNMLEN 14 /* # characters in a file name */
+#define E_DIMNUM 4 /* # array dimensions in auxiliary entry */
+
+struct external_syment
+{
+ union {
+ char e_name[E_SYMNMLEN];
+ struct {
+ char e_zeroes[4];
+ char e_offset[4];
+ } e;
+ } e;
+ char e_value[4];
+ char e_scnum[2];
+ char e_type[2];
+ char e_sclass[1];
+ char e_numaux[1];
+};
+
+
+
+#define N_BTMASK (017)
+#define N_TMASK (060)
+#define N_BTSHFT (4)
+#define N_TSHIFT (2)
+
+
+union external_auxent {
+ struct {
+ char x_tagndx[4]; /* str, un, or enum tag indx */
+ union {
+ struct {
+ char x_lnno[2]; /* declaration line number */
+ char x_size[2]; /* str/union/array size */
+ } x_lnsz;
+ char x_fsize[4]; /* size of function */
+ } x_misc;
+ union {
+ struct { /* if ISFCN, tag, or .bb */
+ char x_lnnoptr[4]; /* ptr to fcn line # */
+ char x_endndx[4]; /* entry ndx past block end */
+ } x_fcn;
+ struct { /* if ISARY, up to 4 dimen. */
+ char x_dimen[E_DIMNUM][2];
+ } x_ary;
+ } x_fcnary;
+ char x_tvndx[2]; /* tv index */
+ } x_sym;
+
+ union {
+ char x_fname[E_FILNMLEN];
+ struct {
+ char x_zeroes[4];
+ char x_offset[4];
+ } x_n;
+ } x_file;
+
+ struct {
+ char x_scnlen[4]; /* section length */
+ char x_nreloc[2]; /* # relocation entries */
+ char x_nlinno[2]; /* # line numbers */
+ } x_scn;
+
+ struct {
+ char x_tvfill[4]; /* tv fill value */
+ char x_tvlen[2]; /* length of .tv */
+ char x_tvran[2][2]; /* tv range */
+ } x_tv; /* info about .tv section (in auxent of symbol .tv)) */
+
+ struct {
+ unsigned char x_scnlen[4];
+ unsigned char x_parmhash[4];
+ unsigned char x_snhash[2];
+ unsigned char x_smtyp[1];
+ unsigned char x_smclas[1];
+ unsigned char x_stab[4];
+ unsigned char x_snstab[2];
+ } x_csect;
+
+};
+
+#define SYMENT struct external_syment
+#define SYMESZ 18
+#define AUXENT union external_auxent
+#define AUXESZ 18
+#define DBXMASK 0x80 /* for dbx storage mask */
+#define SYMNAME_IN_DEBUG(symptr) ((symptr)->n_sclass & DBXMASK)
+
+
+
+/********************** RELOCATION DIRECTIVES **********************/
+
+
+struct external_reloc {
+ char r_vaddr[4];
+ char r_symndx[4];
+ char r_size[1];
+ char r_type[1];
+};
+
+
+#define RELOC struct external_reloc
+#define RELSZ 10
+
+#define DEFAULT_DATA_SECTION_ALIGNMENT 4
+#define DEFAULT_BSS_SECTION_ALIGNMENT 4
+#define DEFAULT_TEXT_SECTION_ALIGNMENT 4
+/* For new sections we havn't heard of before */
+#define DEFAULT_SECTION_ALIGNMENT 4
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/stdio.c ../mkvmlinuz-33+nmu1/boot/stdio.c
--- ../mkvmlinuz-33+nmu1.old/boot/stdio.c 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/stdio.c 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,325 @@
+/*
+ * Copyright (C) Paul Mackerras 1997.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#include <stdarg.h>
+#include <stddef.h>
+#include "string.h"
+#include "stdio.h"
+#include "prom.h"
+
+size_t strnlen(const char * s, size_t count)
+{
+ const char *sc;
+
+ for (sc = s; count-- && *sc != '\0'; ++sc)
+ /* nothing */;
+ return sc - s;
+}
+
+extern unsigned int __div64_32(unsigned long long *dividend,
+ unsigned int divisor);
+
+/* The unnecessary pointer compare is there
+ * to check for type safety (n must be 64bit)
+ */
+# define do_div(n,base) ({ \
+ unsigned int __base = (base); \
+ unsigned int __rem; \
+ (void)(((typeof((n)) *)0) == ((unsigned long long *)0)); \
+ if (((n) >> 32) == 0) { \
+ __rem = (unsigned int)(n) % __base; \
+ (n) = (unsigned int)(n) / __base; \
+ } else \
+ __rem = __div64_32(&(n), __base); \
+ __rem; \
+ })
+
+static int skip_atoi(const char **s)
+{
+ int i, c;
+
+ for (i = 0; '0' <= (c = **s) && c <= '9'; ++*s)
+ i = i*10 + c - '0';
+ return i;
+}
+
+#define ZEROPAD 1 /* pad with zero */
+#define SIGN 2 /* unsigned/signed long */
+#define PLUS 4 /* show plus */
+#define SPACE 8 /* space if plus */
+#define LEFT 16 /* left justified */
+#define SPECIAL 32 /* 0x */
+#define LARGE 64 /* use 'ABCDEF' instead of 'abcdef' */
+
+static char * number(char * str, unsigned long long num, int base, int size, int precision, int type)
+{
+ char c,sign,tmp[66];
+ const char *digits="0123456789abcdefghijklmnopqrstuvwxyz";
+ int i;
+
+ if (type & LARGE)
+ digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ if (type & LEFT)
+ type &= ~ZEROPAD;
+ if (base < 2 || base > 36)
+ return 0;
+ c = (type & ZEROPAD) ? '0' : ' ';
+ sign = 0;
+ if (type & SIGN) {
+ if ((signed long long)num < 0) {
+ sign = '-';
+ num = - (signed long long)num;
+ size--;
+ } else if (type & PLUS) {
+ sign = '+';
+ size--;
+ } else if (type & SPACE) {
+ sign = ' ';
+ size--;
+ }
+ }
+ if (type & SPECIAL) {
+ if (base == 16)
+ size -= 2;
+ else if (base == 8)
+ size--;
+ }
+ i = 0;
+ if (num == 0)
+ tmp[i++]='0';
+ else while (num != 0) {
+ tmp[i++] = digits[do_div(num, base)];
+ }
+ if (i > precision)
+ precision = i;
+ size -= precision;
+ if (!(type&(ZEROPAD+LEFT)))
+ while(size-->0)
+ *str++ = ' ';
+ if (sign)
+ *str++ = sign;
+ if (type & SPECIAL) {
+ if (base==8)
+ *str++ = '0';
+ else if (base==16) {
+ *str++ = '0';
+ *str++ = digits[33];
+ }
+ }
+ if (!(type & LEFT))
+ while (size-- > 0)
+ *str++ = c;
+ while (i < precision--)
+ *str++ = '0';
+ while (i-- > 0)
+ *str++ = tmp[i];
+ while (size-- > 0)
+ *str++ = ' ';
+ return str;
+}
+
+int vsprintf(char *buf, const char *fmt, va_list args)
+{
+ int len;
+ unsigned long long num;
+ int i, base;
+ char * str;
+ const char *s;
+
+ int flags; /* flags to number() */
+
+ int field_width; /* width of output field */
+ int precision; /* min. # of digits for integers; max
+ number of chars for from string */
+ int qualifier; /* 'h', 'l', or 'L' for integer fields */
+ /* 'z' support added 23/7/1999 S.H. */
+ /* 'z' changed to 'Z' --davidm 1/25/99 */
+
+
+ for (str=buf ; *fmt ; ++fmt) {
+ if (*fmt != '%') {
+ *str++ = *fmt;
+ continue;
+ }
+
+ /* process flags */
+ flags = 0;
+ repeat:
+ ++fmt; /* this also skips first '%' */
+ switch (*fmt) {
+ case '-': flags |= LEFT; goto repeat;
+ case '+': flags |= PLUS; goto repeat;
+ case ' ': flags |= SPACE; goto repeat;
+ case '#': flags |= SPECIAL; goto repeat;
+ case '0': flags |= ZEROPAD; goto repeat;
+ }
+
+ /* get field width */
+ field_width = -1;
+ if ('0' <= *fmt && *fmt <= '9')
+ field_width = skip_atoi(&fmt);
+ else if (*fmt == '*') {
+ ++fmt;
+ /* it's the next argument */
+ field_width = va_arg(args, int);
+ if (field_width < 0) {
+ field_width = -field_width;
+ flags |= LEFT;
+ }
+ }
+
+ /* get the precision */
+ precision = -1;
+ if (*fmt == '.') {
+ ++fmt;
+ if ('0' <= *fmt && *fmt <= '9')
+ precision = skip_atoi(&fmt);
+ else if (*fmt == '*') {
+ ++fmt;
+ /* it's the next argument */
+ precision = va_arg(args, int);
+ }
+ if (precision < 0)
+ precision = 0;
+ }
+
+ /* get the conversion qualifier */
+ qualifier = -1;
+ if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || *fmt =='Z') {
+ qualifier = *fmt;
+ ++fmt;
+ }
+
+ /* default base */
+ base = 10;
+
+ switch (*fmt) {
+ case 'c':
+ if (!(flags & LEFT))
+ while (--field_width > 0)
+ *str++ = ' ';
+ *str++ = (unsigned char) va_arg(args, int);
+ while (--field_width > 0)
+ *str++ = ' ';
+ continue;
+
+ case 's':
+ s = va_arg(args, char *);
+ if (!s)
+ s = "<NULL>";
+
+ len = strnlen(s, precision);
+
+ if (!(flags & LEFT))
+ while (len < field_width--)
+ *str++ = ' ';
+ for (i = 0; i < len; ++i)
+ *str++ = *s++;
+ while (len < field_width--)
+ *str++ = ' ';
+ continue;
+
+ case 'p':
+ if (field_width == -1) {
+ field_width = 2*sizeof(void *);
+ flags |= ZEROPAD;
+ }
+ str = number(str,
+ (unsigned long) va_arg(args, void *), 16,
+ field_width, precision, flags);
+ continue;
+
+
+ case 'n':
+ if (qualifier == 'l') {
+ long * ip = va_arg(args, long *);
+ *ip = (str - buf);
+ } else if (qualifier == 'Z') {
+ size_t * ip = va_arg(args, size_t *);
+ *ip = (str - buf);
+ } else {
+ int * ip = va_arg(args, int *);
+ *ip = (str - buf);
+ }
+ continue;
+
+ case '%':
+ *str++ = '%';
+ continue;
+
+ /* integer number formats - set up the flags and "break" */
+ case 'o':
+ base = 8;
+ break;
+
+ case 'X':
+ flags |= LARGE;
+ case 'x':
+ base = 16;
+ break;
+
+ case 'd':
+ case 'i':
+ flags |= SIGN;
+ case 'u':
+ break;
+
+ default:
+ *str++ = '%';
+ if (*fmt)
+ *str++ = *fmt;
+ else
+ --fmt;
+ continue;
+ }
+ if (qualifier == 'l') {
+ num = va_arg(args, unsigned long);
+ if (flags & SIGN)
+ num = (signed long) num;
+ } else if (qualifier == 'Z') {
+ num = va_arg(args, size_t);
+ } else if (qualifier == 'h') {
+ num = (unsigned short) va_arg(args, int);
+ if (flags & SIGN)
+ num = (signed short) num;
+ } else {
+ num = va_arg(args, unsigned int);
+ if (flags & SIGN)
+ num = (signed int) num;
+ }
+ str = number(str, num, base, field_width, precision, flags);
+ }
+ *str = '\0';
+ return str-buf;
+}
+
+int sprintf(char * buf, const char *fmt, ...)
+{
+ va_list args;
+ int i;
+
+ va_start(args, fmt);
+ i=vsprintf(buf,fmt,args);
+ va_end(args);
+ return i;
+}
+
+static char sprint_buf[1024];
+
+int
+printf(const char *fmt, ...)
+{
+ va_list args;
+ int n;
+
+ va_start(args, fmt);
+ n = vsprintf(sprint_buf, fmt, args);
+ va_end(args);
+ write(stdout, sprint_buf, n);
+ return n;
+}
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/stdio.h ../mkvmlinuz-33+nmu1/boot/stdio.h
--- ../mkvmlinuz-33+nmu1.old/boot/stdio.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/stdio.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,10 @@
+#ifndef _PPC_BOOT_STDIO_H_
+#define _PPC_BOOT_STDIO_H_
+
+extern int printf(const char *fmt, ...);
+
+extern int sprintf(char *buf, const char *fmt, ...);
+
+extern int vsprintf(char *buf, const char *fmt, va_list args);
+
+#endif /* _PPC_BOOT_STDIO_H_ */
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/string.S ../mkvmlinuz-33+nmu1/boot/string.S
--- ../mkvmlinuz-33+nmu1.old/boot/string.S 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/string.S 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,230 @@
+/*
+ * Copyright (C) Paul Mackerras 1997.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ *
+ * NOTE: this code runs in 32 bit mode and is packaged as ELF32.
+ */
+
+#include "ppc_asm.h"
+
+ .text
+ .globl strcpy
+strcpy:
+ addi r5,r3,-1
+ addi r4,r4,-1
+1: lbzu r0,1(r4)
+ cmpwi 0,r0,0
+ stbu r0,1(r5)
+ bne 1b
+ blr
+
+ .globl strncpy
+strncpy:
+ cmpwi 0,r5,0
+ beqlr
+ mtctr r5
+ addi r6,r3,-1
+ addi r4,r4,-1
+1: lbzu r0,1(r4)
+ cmpwi 0,r0,0
+ stbu r0,1(r6)
+ bdnzf 2,1b /* dec ctr, branch if ctr != 0 && !cr0.eq */
+ blr
+
+ .globl strcat
+strcat:
+ addi r5,r3,-1
+ addi r4,r4,-1
+1: lbzu r0,1(r5)
+ cmpwi 0,r0,0
+ bne 1b
+ addi r5,r5,-1
+1: lbzu r0,1(r4)
+ cmpwi 0,r0,0
+ stbu r0,1(r5)
+ bne 1b
+ blr
+
+ .globl strcmp
+strcmp:
+ addi r5,r3,-1
+ addi r4,r4,-1
+1: lbzu r3,1(r5)
+ cmpwi 1,r3,0
+ lbzu r0,1(r4)
+ subf. r3,r0,r3
+ beqlr 1
+ beq 1b
+ blr
+
+ .globl strlen
+strlen:
+ addi r4,r3,-1
+1: lbzu r0,1(r4)
+ cmpwi 0,r0,0
+ bne 1b
+ subf r3,r3,r4
+ blr
+
+ .globl memset
+memset:
+ rlwimi r4,r4,8,16,23
+ rlwimi r4,r4,16,0,15
+ addi r6,r3,-4
+ cmplwi 0,r5,4
+ blt 7f
+ stwu r4,4(r6)
+ beqlr
+ andi. r0,r6,3
+ add r5,r0,r5
+ subf r6,r0,r6
+ rlwinm r0,r5,32-2,2,31
+ mtctr r0
+ bdz 6f
+1: stwu r4,4(r6)
+ bdnz 1b
+6: andi. r5,r5,3
+7: cmpwi 0,r5,0
+ beqlr
+ mtctr r5
+ addi r6,r6,3
+8: stbu r4,1(r6)
+ bdnz 8b
+ blr
+
+ .globl memmove
+memmove:
+ cmplw 0,r3,r4
+ bgt backwards_memcpy
+ /* fall through */
+
+ .globl memcpy
+memcpy:
+ rlwinm. r7,r5,32-3,3,31 /* r7 = r5 >> 3 */
+ addi r6,r3,-4
+ addi r4,r4,-4
+ beq 3f /* if less than 8 bytes to do */
+ andi. r0,r6,3 /* get dest word aligned */
+ mtctr r7
+ bne 5f
+ andi. r0,r4,3 /* check src word aligned too */
+ bne 3f
+1: lwz r7,4(r4)
+ lwzu r8,8(r4)
+ stw r7,4(r6)
+ stwu r8,8(r6)
+ bdnz 1b
+ andi. r5,r5,7
+2: cmplwi 0,r5,4
+ blt 3f
+ lwzu r0,4(r4)
+ addi r5,r5,-4
+ stwu r0,4(r6)
+3: cmpwi 0,r5,0
+ beqlr
+ mtctr r5
+ addi r4,r4,3
+ addi r6,r6,3
+4: lbzu r0,1(r4)
+ stbu r0,1(r6)
+ bdnz 4b
+ blr
+5: subfic r0,r0,4
+ cmpw cr1,r0,r5
+ add r7,r0,r4
+ andi. r7,r7,3 /* will source be word-aligned too? */
+ ble cr1,3b
+ bne 3b /* do byte-by-byte if not */
+ mtctr r0
+6: lbz r7,4(r4)
+ addi r4,r4,1
+ stb r7,4(r6)
+ addi r6,r6,1
+ bdnz 6b
+ subf r5,r0,r5
+ rlwinm. r7,r5,32-3,3,31
+ beq 2b
+ mtctr r7
+ b 1b
+
+ .globl backwards_memcpy
+backwards_memcpy:
+ rlwinm. r7,r5,32-3,3,31 /* r7 = r5 >> 3 */
+ add r6,r3,r5
+ add r4,r4,r5
+ beq 3f
+ andi. r0,r6,3
+ mtctr r7
+ bne 5f
+ andi. r0,r4,3
+ bne 3f
+1: lwz r7,-4(r4)
+ lwzu r8,-8(r4)
+ stw r7,-4(r6)
+ stwu r8,-8(r6)
+ bdnz 1b
+ andi. r5,r5,7
+2: cmplwi 0,r5,4
+ blt 3f
+ lwzu r0,-4(r4)
+ subi r5,r5,4
+ stwu r0,-4(r6)
+3: cmpwi 0,r5,0
+ beqlr
+ mtctr r5
+4: lbzu r0,-1(r4)
+ stbu r0,-1(r6)
+ bdnz 4b
+ blr
+5: cmpw cr1,r0,r5
+ subf r7,r0,r4
+ andi. r7,r7,3
+ ble cr1,3b
+ bne 3b
+ mtctr r0
+6: lbzu r7,-1(r4)
+ stbu r7,-1(r6)
+ bdnz 6b
+ subf r5,r0,r5
+ rlwinm. r7,r5,32-3,3,31
+ beq 2b
+ mtctr r7
+ b 1b
+
+ .globl memcmp
+memcmp:
+ cmpwi 0,r5,0
+ blelr
+ mtctr r5
+ addi r6,r3,-1
+ addi r4,r4,-1
+1: lbzu r3,1(r6)
+ lbzu r0,1(r4)
+ subf. r3,r0,r3
+ bdnzt 2,1b
+ blr
+
+
+/*
+ * Flush the dcache and invalidate the icache for a range of addresses.
+ *
+ * flush_cache(addr, len)
+ */
+ .global flush_cache
+flush_cache:
+ addi 4,4,0x1f /* len = (len + 0x1f) / 0x20 */
+ rlwinm. 4,4,27,5,31
+ mtctr 4
+ beqlr
+1: dcbf 0,3
+ icbi 0,3
+ addi 3,3,0x20
+ bdnz 1b
+ sync
+ isync
+ blr
+
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/string.h ../mkvmlinuz-33+nmu1/boot/string.h
--- ../mkvmlinuz-33+nmu1.old/boot/string.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/string.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,17 @@
+#ifndef _PPC_BOOT_STRING_H_
+#define _PPC_BOOT_STRING_H_
+#include <stddef.h>
+
+extern char *strcpy(char *dest, const char *src);
+extern char *strncpy(char *dest, const char *src, size_t n);
+extern char *strcat(char *dest, const char *src);
+extern int strcmp(const char *s1, const char *s2);
+extern size_t strlen(const char *s);
+extern size_t strnlen(const char *s, size_t count);
+
+extern void *memset(void *s, int c, size_t n);
+extern void *memmove(void *dest, const void *src, unsigned long n);
+extern void *memcpy(void *dest, const void *src, unsigned long n);
+extern int memcmp(const void *s1, const void *s2, size_t n);
+
+#endif /* _PPC_BOOT_STRING_H_ */
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/zImage.lds ../mkvmlinuz-33+nmu1/boot/zImage.lds
--- ../mkvmlinuz-33+nmu1.old/boot/zImage.lds 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/zImage.lds 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,46 @@
+OUTPUT_ARCH(powerpc:common)
+ENTRY(_zimage_start)
+SECTIONS
+{
+ . = (4*1024*1024);
+ _start = .;
+ .text :
+ {
+ *(.text)
+ *(.fixup)
+ }
+ _etext = .;
+ . = ALIGN(4096);
+ .data :
+ {
+ *(.rodata*)
+ *(.data*)
+ *(.sdata*)
+ __got2_start = .;
+ *(.got2)
+ __got2_end = .;
+ }
+
+ . = ALIGN(4096);
+ _vmlinux_start = .;
+ .kernel:vmlinux.strip : { *(.kernel:vmlinux.strip) }
+ _vmlinux_end = .;
+
+ . = ALIGN(4096);
+ _initrd_start = .;
+ .kernel:initrd : { *(.kernel:initrd) }
+ _initrd_end = .;
+
+ . = ALIGN(4096);
+ _edata = .;
+
+ . = ALIGN(4096);
+ __bss_start = .;
+ .bss :
+ {
+ *(.sbss)
+ *(.bss)
+ }
+ . = ALIGN(4096);
+ _end = . ;
+}
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/zconf.h ../mkvmlinuz-33+nmu1/boot/zconf.h
--- ../mkvmlinuz-33+nmu1.old/boot/zconf.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/zconf.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,45 @@
+/* zconf.h -- configuration of the zlib compression library
+ * Copyright (C) 1995-1998 Jean-loup Gailly.
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* @(#) $Id$ */
+
+#ifndef _ZCONF_H
+#define _ZCONF_H
+
+/* The memory requirements for deflate are (in bytes):
+ (1 << (windowBits+2)) + (1 << (memLevel+9))
+ that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
+ plus a few kilobytes for small objects. For example, if you want to reduce
+ the default memory requirements from 256K to 128K, compile with
+ make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
+ Of course this will generally degrade compression (there's no free lunch).
+
+ The memory requirements for inflate are (in bytes) 1 << windowBits
+ that is, 32K for windowBits=15 (default value) plus a few kilobytes
+ for small objects.
+*/
+
+/* Maximum value for memLevel in deflateInit2 */
+#ifndef MAX_MEM_LEVEL
+# define MAX_MEM_LEVEL 8
+#endif
+
+/* Maximum value for windowBits in deflateInit2 and inflateInit2.
+ * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
+ * created by gzip. (Files created by minigzip can still be extracted by
+ * gzip.)
+ */
+#ifndef MAX_WBITS
+# define MAX_WBITS 15 /* 32K LZ77 window */
+#endif
+
+ /* Type declarations */
+
+typedef unsigned char Byte; /* 8 bits */
+typedef unsigned int uInt; /* 16 bits or more */
+typedef unsigned long uLong; /* 32 bits or more */
+typedef void *voidp;
+
+#endif /* _ZCONF_H */
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/zlib.h ../mkvmlinuz-33+nmu1/boot/zlib.h
--- ../mkvmlinuz-33+nmu1.old/boot/zlib.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/zlib.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,653 @@
+/* zlib.h -- interface of the 'zlib' general purpose compression library
+ version 1.1.3, July 9th, 1998
+
+ Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ Jean-loup Gailly Mark Adler
+ jloup@gzip.org madler@alumni.caltech.edu
+
+
+ The data format used by the zlib library is described by RFCs (Request for
+ Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
+ (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
+*/
+
+#ifndef _ZLIB_H
+#define _ZLIB_H
+
+#include "zconf.h"
+
+#define ZLIB_VERSION "1.1.3"
+
+/*
+ The 'zlib' compression library provides in-memory compression and
+ decompression functions, including integrity checks of the uncompressed
+ data. This version of the library supports only one compression method
+ (deflation) but other algorithms will be added later and will have the same
+ stream interface.
+
+ Compression can be done in a single step if the buffers are large
+ enough (for example if an input file is mmap'ed), or can be done by
+ repeated calls of the compression function. In the latter case, the
+ application must provide more input and/or consume the output
+ (providing more output space) before each call.
+
+ The library also supports reading and writing files in gzip (.gz) format
+ with an interface similar to that of stdio.
+
+ The library does not install any signal handler. The decoder checks
+ the consistency of the compressed data, so the library should never
+ crash even in case of corrupted input.
+*/
+
+struct internal_state;
+
+typedef struct z_stream_s {
+ Byte *next_in; /* next input byte */
+ uInt avail_in; /* number of bytes available at next_in */
+ uLong total_in; /* total nb of input bytes read so far */
+
+ Byte *next_out; /* next output byte should be put there */
+ uInt avail_out; /* remaining free space at next_out */
+ uLong total_out; /* total nb of bytes output so far */
+
+ char *msg; /* last error message, NULL if no error */
+ struct internal_state *state; /* not visible by applications */
+
+ void *workspace; /* memory allocated for this stream */
+
+ int data_type; /* best guess about the data type: ascii or binary */
+ uLong adler; /* adler32 value of the uncompressed data */
+ uLong reserved; /* reserved for future use */
+} z_stream;
+
+typedef z_stream *z_streamp;
+
+/*
+ The application must update next_in and avail_in when avail_in has
+ dropped to zero. It must update next_out and avail_out when avail_out
+ has dropped to zero. The application must initialize zalloc, zfree and
+ opaque before calling the init function. All other fields are set by the
+ compression library and must not be updated by the application.
+
+ The opaque value provided by the application will be passed as the first
+ parameter for calls of zalloc and zfree. This can be useful for custom
+ memory management. The compression library attaches no meaning to the
+ opaque value.
+
+ zalloc must return NULL if there is not enough memory for the object.
+ If zlib is used in a multi-threaded application, zalloc and zfree must be
+ thread safe.
+
+ On 16-bit systems, the functions zalloc and zfree must be able to allocate
+ exactly 65536 bytes, but will not be required to allocate more than this
+ if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
+ pointers returned by zalloc for objects of exactly 65536 bytes *must*
+ have their offset normalized to zero. The default allocation function
+ provided by this library ensures this (see zutil.c). To reduce memory
+ requirements and avoid any allocation of 64K objects, at the expense of
+ compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
+
+ The fields total_in and total_out can be used for statistics or
+ progress reports. After compression, total_in holds the total size of
+ the uncompressed data and may be saved for use in the decompressor
+ (particularly if the decompressor wants to decompress everything in
+ a single step).
+*/
+
+ /* constants */
+
+#define Z_NO_FLUSH 0
+#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
+#define Z_PACKET_FLUSH 2
+#define Z_SYNC_FLUSH 3
+#define Z_FULL_FLUSH 4
+#define Z_FINISH 5
+/* Allowed flush values; see deflate() below for details */
+
+#define Z_OK 0
+#define Z_STREAM_END 1
+#define Z_NEED_DICT 2
+#define Z_ERRNO (-1)
+#define Z_STREAM_ERROR (-2)
+#define Z_DATA_ERROR (-3)
+#define Z_MEM_ERROR (-4)
+#define Z_BUF_ERROR (-5)
+#define Z_VERSION_ERROR (-6)
+/* Return codes for the compression/decompression functions. Negative
+ * values are errors, positive values are used for special but normal events.
+ */
+
+#define Z_NO_COMPRESSION 0
+#define Z_BEST_SPEED 1
+#define Z_BEST_COMPRESSION 9
+#define Z_DEFAULT_COMPRESSION (-1)
+/* compression levels */
+
+#define Z_FILTERED 1
+#define Z_HUFFMAN_ONLY 2
+#define Z_DEFAULT_STRATEGY 0
+/* compression strategy; see deflateInit2() below for details */
+
+#define Z_BINARY 0
+#define Z_ASCII 1
+#define Z_UNKNOWN 2
+/* Possible values of the data_type field */
+
+#define Z_DEFLATED 8
+/* The deflate compression method (the only one supported in this version) */
+
+ /* basic functions */
+
+extern const char * zlib_zlibVersion (void);
+/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
+ If the first character differs, the library code actually used is
+ not compatible with the zlib.h header file used by the application.
+ This check is automatically made by deflateInit and inflateInit.
+ */
+
+extern int zlib_deflate_workspacesize (void);
+/*
+ Returns the number of bytes that needs to be allocated for a per-
+ stream workspace. A pointer to this number of bytes should be
+ returned in stream->workspace before calling zlib_deflateInit().
+*/
+
+/*
+extern int deflateInit (z_streamp strm, int level);
+
+ Initializes the internal stream state for compression. The fields
+ zalloc, zfree and opaque must be initialized before by the caller.
+ If zalloc and zfree are set to NULL, deflateInit updates them to
+ use default allocation functions.
+
+ The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
+ 1 gives best speed, 9 gives best compression, 0 gives no compression at
+ all (the input data is simply copied a block at a time).
+ Z_DEFAULT_COMPRESSION requests a default compromise between speed and
+ compression (currently equivalent to level 6).
+
+ deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
+ enough memory, Z_STREAM_ERROR if level is not a valid compression level,
+ Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
+ with the version assumed by the caller (ZLIB_VERSION).
+ msg is set to null if there is no error message. deflateInit does not
+ perform any compression: this will be done by deflate().
+*/
+
+
+extern int zlib_deflate (z_streamp strm, int flush);
+/*
+ deflate compresses as much data as possible, and stops when the input
+ buffer becomes empty or the output buffer becomes full. It may introduce some
+ output latency (reading input without producing any output) except when
+ forced to flush.
+
+ The detailed semantics are as follows. deflate performs one or both of the
+ following actions:
+
+ - Compress more input starting at next_in and update next_in and avail_in
+ accordingly. If not all input can be processed (because there is not
+ enough room in the output buffer), next_in and avail_in are updated and
+ processing will resume at this point for the next call of deflate().
+
+ - Provide more output starting at next_out and update next_out and avail_out
+ accordingly. This action is forced if the parameter flush is non zero.
+ Forcing flush frequently degrades the compression ratio, so this parameter
+ should be set only when necessary (in interactive applications).
+ Some output may be provided even if flush is not set.
+
+ Before the call of deflate(), the application should ensure that at least
+ one of the actions is possible, by providing more input and/or consuming
+ more output, and updating avail_in or avail_out accordingly; avail_out
+ should never be zero before the call. The application can consume the
+ compressed output when it wants, for example when the output buffer is full
+ (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
+ and with zero avail_out, it must be called again after making room in the
+ output buffer because there might be more output pending.
+
+ If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
+ flushed to the output buffer and the output is aligned on a byte boundary, so
+ that the decompressor can get all input data available so far. (In particular
+ avail_in is zero after the call if enough output space has been provided
+ before the call.) Flushing may degrade compression for some compression
+ algorithms and so it should be used only when necessary.
+
+ If flush is set to Z_FULL_FLUSH, all output is flushed as with
+ Z_SYNC_FLUSH, and the compression state is reset so that decompression can
+ restart from this point if previous compressed data has been damaged or if
+ random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
+ the compression.
+
+ If deflate returns with avail_out == 0, this function must be called again
+ with the same value of the flush parameter and more output space (updated
+ avail_out), until the flush is complete (deflate returns with non-zero
+ avail_out).
+
+ If the parameter flush is set to Z_FINISH, pending input is processed,
+ pending output is flushed and deflate returns with Z_STREAM_END if there
+ was enough output space; if deflate returns with Z_OK, this function must be
+ called again with Z_FINISH and more output space (updated avail_out) but no
+ more input data, until it returns with Z_STREAM_END or an error. After
+ deflate has returned Z_STREAM_END, the only possible operations on the
+ stream are deflateReset or deflateEnd.
+
+ Z_FINISH can be used immediately after deflateInit if all the compression
+ is to be done in a single step. In this case, avail_out must be at least
+ 0.1% larger than avail_in plus 12 bytes. If deflate does not return
+ Z_STREAM_END, then it must be called again as described above.
+
+ deflate() sets strm->adler to the adler32 checksum of all input read
+ so far (that is, total_in bytes).
+
+ deflate() may update data_type if it can make a good guess about
+ the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
+ binary. This field is only for information purposes and does not affect
+ the compression algorithm in any manner.
+
+ deflate() returns Z_OK if some progress has been made (more input
+ processed or more output produced), Z_STREAM_END if all input has been
+ consumed and all output has been produced (only when flush is set to
+ Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
+ if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
+ (for example avail_in or avail_out was zero).
+*/
+
+
+extern int zlib_deflateEnd (z_streamp strm);
+/*
+ All dynamically allocated data structures for this stream are freed.
+ This function discards any unprocessed input and does not flush any
+ pending output.
+
+ deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
+ stream state was inconsistent, Z_DATA_ERROR if the stream was freed
+ prematurely (some input or output was discarded). In the error case,
+ msg may be set but then points to a static string (which must not be
+ deallocated).
+*/
+
+
+extern int zlib_inflate_workspacesize (void);
+/*
+ Returns the number of bytes that needs to be allocated for a per-
+ stream workspace. A pointer to this number of bytes should be
+ returned in stream->workspace before calling zlib_inflateInit().
+*/
+
+/*
+extern int zlib_inflateInit (z_streamp strm);
+
+ Initializes the internal stream state for decompression. The fields
+ next_in, avail_in, and workspace must be initialized before by
+ the caller. If next_in is not NULL and avail_in is large enough (the exact
+ value depends on the compression method), inflateInit determines the
+ compression method from the zlib header and allocates all data structures
+ accordingly; otherwise the allocation will be deferred to the first call of
+ inflate. If zalloc and zfree are set to NULL, inflateInit updates them to
+ use default allocation functions.
+
+ inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
+ memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
+ version assumed by the caller. msg is set to null if there is no error
+ message. inflateInit does not perform any decompression apart from reading
+ the zlib header if present: this will be done by inflate(). (So next_in and
+ avail_in may be modified, but next_out and avail_out are unchanged.)
+*/
+
+
+extern int zlib_inflate (z_streamp strm, int flush);
+/*
+ inflate decompresses as much data as possible, and stops when the input
+ buffer becomes empty or the output buffer becomes full. It may some
+ introduce some output latency (reading input without producing any output)
+ except when forced to flush.
+
+ The detailed semantics are as follows. inflate performs one or both of the
+ following actions:
+
+ - Decompress more input starting at next_in and update next_in and avail_in
+ accordingly. If not all input can be processed (because there is not
+ enough room in the output buffer), next_in is updated and processing
+ will resume at this point for the next call of inflate().
+
+ - Provide more output starting at next_out and update next_out and avail_out
+ accordingly. inflate() provides as much output as possible, until there
+ is no more input data or no more space in the output buffer (see below
+ about the flush parameter).
+
+ Before the call of inflate(), the application should ensure that at least
+ one of the actions is possible, by providing more input and/or consuming
+ more output, and updating the next_* and avail_* values accordingly.
+ The application can consume the uncompressed output when it wants, for
+ example when the output buffer is full (avail_out == 0), or after each
+ call of inflate(). If inflate returns Z_OK and with zero avail_out, it
+ must be called again after making room in the output buffer because there
+ might be more output pending.
+
+ If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much
+ output as possible to the output buffer. The flushing behavior of inflate is
+ not specified for values of the flush parameter other than Z_SYNC_FLUSH
+ and Z_FINISH, but the current implementation actually flushes as much output
+ as possible anyway.
+
+ inflate() should normally be called until it returns Z_STREAM_END or an
+ error. However if all decompression is to be performed in a single step
+ (a single call of inflate), the parameter flush should be set to
+ Z_FINISH. In this case all pending input is processed and all pending
+ output is flushed; avail_out must be large enough to hold all the
+ uncompressed data. (The size of the uncompressed data may have been saved
+ by the compressor for this purpose.) The next operation on this stream must
+ be inflateEnd to deallocate the decompression state. The use of Z_FINISH
+ is never required, but can be used to inform inflate that a faster routine
+ may be used for the single inflate() call.
+
+ If a preset dictionary is needed at this point (see inflateSetDictionary
+ below), inflate sets strm-adler to the adler32 checksum of the
+ dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise
+ it sets strm->adler to the adler32 checksum of all output produced
+ so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or
+ an error code as described below. At the end of the stream, inflate()
+ checks that its computed adler32 checksum is equal to that saved by the
+ compressor and returns Z_STREAM_END only if the checksum is correct.
+
+ inflate() returns Z_OK if some progress has been made (more input processed
+ or more output produced), Z_STREAM_END if the end of the compressed data has
+ been reached and all uncompressed output has been produced, Z_NEED_DICT if a
+ preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
+ corrupted (input stream not conforming to the zlib format or incorrect
+ adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent
+ (for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not
+ enough memory, Z_BUF_ERROR if no progress is possible or if there was not
+ enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR
+ case, the application may then call inflateSync to look for a good
+ compression block.
+*/
+
+
+extern int zlib_inflateEnd (z_streamp strm);
+/*
+ All dynamically allocated data structures for this stream are freed.
+ This function discards any unprocessed input and does not flush any
+ pending output.
+
+ inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
+ was inconsistent. In the error case, msg may be set but then points to a
+ static string (which must not be deallocated).
+*/
+
+ /* Advanced functions */
+
+/*
+ The following functions are needed only in some special applications.
+*/
+
+/*
+extern int deflateInit2 (z_streamp strm,
+ int level,
+ int method,
+ int windowBits,
+ int memLevel,
+ int strategy);
+
+ This is another version of deflateInit with more compression options. The
+ fields next_in, zalloc, zfree and opaque must be initialized before by
+ the caller.
+
+ The method parameter is the compression method. It must be Z_DEFLATED in
+ this version of the library.
+
+ The windowBits parameter is the base two logarithm of the window size
+ (the size of the history buffer). It should be in the range 8..15 for this
+ version of the library. Larger values of this parameter result in better
+ compression at the expense of memory usage. The default value is 15 if
+ deflateInit is used instead.
+
+ The memLevel parameter specifies how much memory should be allocated
+ for the internal compression state. memLevel=1 uses minimum memory but
+ is slow and reduces compression ratio; memLevel=9 uses maximum memory
+ for optimal speed. The default value is 8. See zconf.h for total memory
+ usage as a function of windowBits and memLevel.
+
+ The strategy parameter is used to tune the compression algorithm. Use the
+ value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
+ filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no
+ string match). Filtered data consists mostly of small values with a
+ somewhat random distribution. In this case, the compression algorithm is
+ tuned to compress them better. The effect of Z_FILTERED is to force more
+ Huffman coding and less string matching; it is somewhat intermediate
+ between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects
+ the compression ratio but not the correctness of the compressed output even
+ if it is not set appropriately.
+
+ deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+ memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
+ method). msg is set to null if there is no error message. deflateInit2 does
+ not perform any compression: this will be done by deflate().
+*/
+
+#if 0
+extern int zlib_deflateSetDictionary (z_streamp strm,
+ const Byte *dictionary,
+ uInt dictLength);
+#endif
+/*
+ Initializes the compression dictionary from the given byte sequence
+ without producing any compressed output. This function must be called
+ immediately after deflateInit, deflateInit2 or deflateReset, before any
+ call of deflate. The compressor and decompressor must use exactly the same
+ dictionary (see inflateSetDictionary).
+
+ The dictionary should consist of strings (byte sequences) that are likely
+ to be encountered later in the data to be compressed, with the most commonly
+ used strings preferably put towards the end of the dictionary. Using a
+ dictionary is most useful when the data to be compressed is short and can be
+ predicted with good accuracy; the data can then be compressed better than
+ with the default empty dictionary.
+
+ Depending on the size of the compression data structures selected by
+ deflateInit or deflateInit2, a part of the dictionary may in effect be
+ discarded, for example if the dictionary is larger than the window size in
+ deflate or deflate2. Thus the strings most likely to be useful should be
+ put at the end of the dictionary, not at the front.
+
+ Upon return of this function, strm->adler is set to the Adler32 value
+ of the dictionary; the decompressor may later use this value to determine
+ which dictionary has been used by the compressor. (The Adler32 value
+ applies to the whole dictionary even if only a subset of the dictionary is
+ actually used by the compressor.)
+
+ deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
+ parameter is invalid (such as NULL dictionary) or the stream state is
+ inconsistent (for example if deflate has already been called for this stream
+ or if the compression method is bsort). deflateSetDictionary does not
+ perform any compression: this will be done by deflate().
+*/
+
+#if 0
+extern int zlib_deflateCopy (z_streamp dest, z_streamp source);
+#endif
+
+/*
+ Sets the destination stream as a complete copy of the source stream.
+
+ This function can be useful when several compression strategies will be
+ tried, for example when there are several ways of pre-processing the input
+ data with a filter. The streams that will be discarded should then be freed
+ by calling deflateEnd. Note that deflateCopy duplicates the internal
+ compression state which can be quite large, so this strategy is slow and
+ can consume lots of memory.
+
+ deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
+ enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
+ (such as zalloc being NULL). msg is left unchanged in both source and
+ destination.
+*/
+
+extern int zlib_deflateReset (z_streamp strm);
+/*
+ This function is equivalent to deflateEnd followed by deflateInit,
+ but does not free and reallocate all the internal compression state.
+ The stream will keep the same compression level and any other attributes
+ that may have been set by deflateInit2.
+
+ deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+ stream state was inconsistent (such as zalloc or state being NULL).
+*/
+
+static inline unsigned long deflateBound(unsigned long s)
+{
+ return s + ((s + 7) >> 3) + ((s + 63) >> 6) + 11;
+}
+
+#if 0
+extern int zlib_deflateParams (z_streamp strm, int level, int strategy);
+#endif
+/*
+ Dynamically update the compression level and compression strategy. The
+ interpretation of level and strategy is as in deflateInit2. This can be
+ used to switch between compression and straight copy of the input data, or
+ to switch to a different kind of input data requiring a different
+ strategy. If the compression level is changed, the input available so far
+ is compressed with the old level (and may be flushed); the new level will
+ take effect only at the next call of deflate().
+
+ Before the call of deflateParams, the stream state must be set as for
+ a call of deflate(), since the currently available input may have to
+ be compressed and flushed. In particular, strm->avail_out must be non-zero.
+
+ deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
+ stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
+ if strm->avail_out was zero.
+*/
+
+/*
+extern int inflateInit2 (z_streamp strm, int windowBits);
+
+ This is another version of inflateInit with an extra parameter. The
+ fields next_in, avail_in, zalloc, zfree and opaque must be initialized
+ before by the caller.
+
+ The windowBits parameter is the base two logarithm of the maximum window
+ size (the size of the history buffer). It should be in the range 8..15 for
+ this version of the library. The default value is 15 if inflateInit is used
+ instead. If a compressed stream with a larger window size is given as
+ input, inflate() will return with the error code Z_DATA_ERROR instead of
+ trying to allocate a larger window.
+
+ inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+ memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative
+ memLevel). msg is set to null if there is no error message. inflateInit2
+ does not perform any decompression apart from reading the zlib header if
+ present: this will be done by inflate(). (So next_in and avail_in may be
+ modified, but next_out and avail_out are unchanged.)
+*/
+
+extern int zlib_inflateSetDictionary (z_streamp strm,
+ const Byte *dictionary,
+ uInt dictLength);
+/*
+ Initializes the decompression dictionary from the given uncompressed byte
+ sequence. This function must be called immediately after a call of inflate
+ if this call returned Z_NEED_DICT. The dictionary chosen by the compressor
+ can be determined from the Adler32 value returned by this call of
+ inflate. The compressor and decompressor must use exactly the same
+ dictionary (see deflateSetDictionary).
+
+ inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
+ parameter is invalid (such as NULL dictionary) or the stream state is
+ inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
+ expected one (incorrect Adler32 value). inflateSetDictionary does not
+ perform any decompression: this will be done by subsequent calls of
+ inflate().
+*/
+
+#if 0
+extern int zlib_inflateSync (z_streamp strm);
+#endif
+/*
+ Skips invalid compressed data until a full flush point (see above the
+ description of deflate with Z_FULL_FLUSH) can be found, or until all
+ available input is skipped. No output is provided.
+
+ inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
+ if no more input was provided, Z_DATA_ERROR if no flush point has been found,
+ or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
+ case, the application may save the current current value of total_in which
+ indicates where valid compressed data was found. In the error case, the
+ application may repeatedly call inflateSync, providing more input each time,
+ until success or end of the input data.
+*/
+
+extern int zlib_inflateReset (z_streamp strm);
+/*
+ This function is equivalent to inflateEnd followed by inflateInit,
+ but does not free and reallocate all the internal decompression state.
+ The stream will keep attributes that may have been set by inflateInit2.
+
+ inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+ stream state was inconsistent (such as zalloc or state being NULL).
+*/
+
+extern int zlib_inflateIncomp (z_stream *strm);
+/*
+ This function adds the data at next_in (avail_in bytes) to the output
+ history without performing any output. There must be no pending output,
+ and the decompressor must be expecting to see the start of a block.
+ Calling this function is equivalent to decompressing a stored block
+ containing the data at next_in (except that the data is not output).
+*/
+
+ /* various hacks, don't look :) */
+
+/* deflateInit and inflateInit are macros to allow checking the zlib version
+ * and the compiler's view of z_stream:
+ */
+extern int zlib_deflateInit_ (z_streamp strm, int level,
+ const char *version, int stream_size);
+extern int zlib_inflateInit_ (z_streamp strm,
+ const char *version, int stream_size);
+extern int zlib_deflateInit2_ (z_streamp strm, int level, int method,
+ int windowBits, int memLevel,
+ int strategy, const char *version,
+ int stream_size);
+extern int zlib_inflateInit2_ (z_streamp strm, int windowBits,
+ const char *version, int stream_size);
+#define zlib_deflateInit(strm, level) \
+ zlib_deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
+#define zlib_inflateInit(strm) \
+ zlib_inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))
+#define zlib_deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
+ zlib_deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
+ (strategy), ZLIB_VERSION, sizeof(z_stream))
+#define zlib_inflateInit2(strm, windowBits) \
+ zlib_inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
+
+
+#if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)
+ struct internal_state {int dummy;}; /* hack for buggy compilers */
+#endif
+
+extern const char * zlib_zError (int err);
+#if 0
+extern int zlib_inflateSyncPoint (z_streamp z);
+#endif
+extern const uLong * zlib_get_crc_table (void);
+
+#endif /* _ZLIB_H */
diff -Nru ../mkvmlinuz-33+nmu1.old/boot/zutil.h ../mkvmlinuz-33+nmu1/boot/zutil.h
--- ../mkvmlinuz-33+nmu1.old/boot/zutil.h 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/boot/zutil.h 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,118 @@
+/* zutil.h -- internal interface and configuration of the compression library
+ * Copyright (C) 1995-1998 Jean-loup Gailly.
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+ part of the implementation of the compression library and is
+ subject to change. Applications should only use zlib.h.
+ */
+
+/* @(#) $Id: zutil.h,v 1.1 2000/01/01 03:32:23 davem Exp $ */
+
+#ifndef _Z_UTIL_H
+#define _Z_UTIL_H
+
+#include "zlib.h"
+#include "string.h"
+#include <stddef.h>
+
+typedef unsigned char uch;
+typedef unsigned short ush;
+typedef unsigned long ulg;
+
+ /* common constants */
+
+#ifndef DEF_WBITS
+# define DEF_WBITS MAX_WBITS
+#endif
+/* default windowBits for decompression. MAX_WBITS is for compression only */
+
+#if MAX_MEM_LEVEL >= 8
+# define DEF_MEM_LEVEL 8
+#else
+# define DEF_MEM_LEVEL MAX_MEM_LEVEL
+#endif
+/* default memLevel */
+
+#define STORED_BLOCK 0
+#define STATIC_TREES 1
+#define DYN_TREES 2
+/* The three kinds of block type */
+
+#define MIN_MATCH 3
+#define MAX_MATCH 258
+/* The minimum and maximum match lengths */
+
+#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
+
+ /* target dependencies */
+
+ /* Common defaults */
+
+#ifndef OS_CODE
+# define OS_CODE 0x03 /* assume Unix */
+#endif
+
+ /* functions */
+
+typedef uLong (*check_func) (uLong check, const Byte *buf,
+ uInt len);
+
+
+ /* checksum functions */
+
+#define BASE 65521L /* largest prime smaller than 65536 */
+#define NMAX 5552
+/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
+
+#define DO1(buf,i) {s1 += buf[i]; s2 += s1;}
+#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
+#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
+#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
+#define DO16(buf) DO8(buf,0); DO8(buf,8);
+
+/* ========================================================================= */
+/*
+ Update a running Adler-32 checksum with the bytes buf[0..len-1] and
+ return the updated checksum. If buf is NULL, this function returns
+ the required initial value for the checksum.
+ An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
+ much faster. Usage example:
+
+ uLong adler = adler32(0L, NULL, 0);
+
+ while (read_buffer(buffer, length) != EOF) {
+ adler = adler32(adler, buffer, length);
+ }
+ if (adler != original_adler) error();
+*/
+static inline uLong zlib_adler32(uLong adler,
+ const Byte *buf,
+ uInt len)
+{
+ unsigned long s1 = adler & 0xffff;
+ unsigned long s2 = (adler >> 16) & 0xffff;
+ int k;
+
+ if (buf == NULL) return 1L;
+
+ while (len > 0) {
+ k = len < NMAX ? len : NMAX;
+ len -= k;
+ while (k >= 16) {
+ DO16(buf);
+ buf += 16;
+ k -= 16;
+ }
+ if (k != 0) do {
+ s1 += *buf++;
+ s2 += s1;
+ } while (--k);
+ s1 %= BASE;
+ s2 %= BASE;
+ }
+ return (s2 << 16) | s1;
+}
+
+#endif /* _Z_UTIL_H */
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/changelog ../mkvmlinuz-33+nmu1/debian/changelog
--- ../mkvmlinuz-33+nmu1.old/debian/changelog 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/changelog 2008-04-23 07:33:32.534597243 +0200
@@ -0,0 +1,277 @@
+mkvmlinuz (33+nmu1) unstable; urgency=low
+
+ * Non-maintainer upload to fix pending l10n issues.
+ * Debconf translations:
+ - Dutch. Closes: #415493
+ - Italian. Closes: #460131
+ - Finnish. Closes: #475638
+ - Galician. Closes: #475759
+ - Basque. Closes: #476073
+
+ -- Christian Perrier <bubulle@debian.org> Fri, 11 Apr 2008 22:56:59 +0200
+
+mkvmlinuz (33) unstable; urgency=low
+
+ * Add Japanese translation thanks to Kobayashi Noritada.
+ (Closes: #401384)
+
+ -- Aurélien GÉRÔME <ag@roxor.cx> Mon, 5 Mar 2007 18:05:01 +0100
+
+mkvmlinuz (32) unstable; urgency=medium
+
+ * Fix failure on PReP induced by fixing #381787. (Closes: #408385)
+ * Add checks for possible silent failures.
+
+ -- Aurélien GÉRÔME <ag@roxor.cx> Thu, 25 Jan 2007 16:33:33 +0100
+
+mkvmlinuz (31) unstable; urgency=medium
+
+ * Fix long description thanks to Steve Langasek.
+
+ -- Aurélien GÉRÔME <ag@roxor.cx> Mon, 22 Jan 2007 10:55:02 +0100
+
+mkvmlinuz (30) unstable; urgency=low
+
+ * Fix arithmetic syntax error. (Closes: #374185)
+ * Add myself to the Uploaders field.
+ * Bump Standards-Version to 3.7.2.
+ * Fix some expressions in long description.
+ * Fix lintian errors and warnings.
+ + Add po-debconf to the Build-Depends field.
+ + Depend explicitly on bash (>= 3) to avoid a simple dependency
+ on an essential package.
+ + Add dh_strip in debian/rules, because a binary was left
+ unstripped.
+ + Remove debian/conffiles as debhelper (>= 4) adds conffiles
+ under /etc automatically.
+ + Add the #DEBHELPER# token to debian/postinst.
+ + Move debian/kernel-image.postinst to debian/kernel-image/postinst
+ and debian/kernel-image.postrm to debian/kernel-image/postrm,
+ because it prevents lintian from believing they are maintainer
+ scripts for the packaging system.
+ + Add debian/lintian.overrides for debconf-is-not-a-registry,
+ because we need a debconf setting from mkvmlinuz in kernel
+ scripts.
+ * Fix silent failure by adding some checks. (Closes: #381787)
+ * Add the XS-Vcs-Svn field.
+ * Add Portuguese translation thanks to Rui Branco. (Closes: #401384)
+ * Add debugging symbols during build process.
+
+ -- Aurélien GÉRÔME <ag@roxor.cx> Sun, 14 Jan 2007 14:41:03 +0100
+
+mkvmlinuz (29) unstable; urgency=high
+
+ * Added Efika support.
+
+ -- Sven Luther <luther@debian.org> Sat, 16 Dec 2006 02:18:19 +0100
+
+mkvmlinuz (28) unstable; urgency=low
+
+ * Added support for 2.6.19 kernels.
+ * Added portuguese translation. (Closes: #401384)
+
+ -- Sven Luther <luther@debian.org> Tue, 5 Dec 2006 17:20:48 +0100
+
+mkvmlinuz (27) unstable; urgency=low
+
+ * Corrected typo. (Closes: #399768)
+
+ -- Sven Luther <luther@debian.org> Tue, 21 Nov 2006 22:43:28 +0100
+
+mkvmlinuz (26) unstable; urgency=low
+
+ * Fixed -prep support.
+
+ -- Sven Luther <luther@debian.org> Sat, 18 Nov 2006 21:41:01 +0100
+
+mkvmlinuz (25) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Switch to po-debconf for debconf templates. (Closes: #298972)
+ * Debconf translations:
+ - Add Swedish (updated during the l10n update campaign)
+ (Closes: #331020)
+ - Add Vietnamese. Sent during the l10n update campaign
+ - Add Czech. Sent during the l10n update campaign
+ - Add Romanian. Sent during the l10n update campaign
+ - Add French. Sent during the l10n update campaign
+ - Add German. Sent during the l10n update campaign
+ - Add Russian. Sent during the l10n update campaign
+ - Add Brazilian Portuguese. Sent during the l10n update campaign
+
+ -- Sven Luther <luther@debian.org> Thu, 9 Nov 2006 22:13:12 +0100
+
+mkvmlinuz (24) unstable; urgency=low
+
+ * Adapted uncompressor object list to 2.6.18.
+ * Re-enabled -prep support.
+
+ -- Sven Luther <luther@debian.org> Sat, 23 Sep 2006 21:51:52 +0200
+
+mkvmlinuz (23) unstable; urgency=low
+
+ * Fallback arch/powerpc/boot object files for chrp kernels without mkvmlinuz
+ support. This uses the 2.6.16+ code, but should work with any 2.6 kernel.
+ * Now supports the creation of a /boot/vmlinuz symlink to the last created
+ vmlinuz kernel. (Closes: #260219)
+ * Now uses /bin/bash as interpeter, as we use bashisms. (Closes: #374185)
+
+ -- Sven Luther <luther@debian.org> Tue, 4 Jul 2006 22:04:50 +0200
+
+mkvmlinuz (22) unstable; urgency=high
+
+ * Fixed broken 2.6.16+ support.
+
+ -- Sven Luther <luther@debian.org> Wed, 31 May 2006 17:40:37 +0200
+
+mkvmlinuz (21) unstable; urgency=low
+
+ * Fixed commented out cleanup call, now doesn't fill /tmp with cruft
+ anymore. Thanks to Colin Watson for noticing this. (Closes: #365978)
+
+ -- Sven Luther <luther@debian.org> Mon, 8 May 2006 19:32:16 +0000
+
+mkvmlinuz (20) unstable; urgency=low
+
+ * Ported to 2.6.16 powerpc kernels.
+ * Added powerpc64 support.
+
+ -- Sven Luther <luther@debian.org> Thu, 20 Apr 2006 18:42:41 +0000
+
+mkvmlinuz (19) unstable; urgency=low
+
+ * Added debconf dependency. (Closes: #342372)
+
+ -- Sven Luther <luther@debian.org> Fri, 6 Jan 2006 16:25:10 +0100
+
+mkvmlinuz (18) unstable; urgency=low
+
+ * Now look at $STEM-image, linux-image and then only kernel-image for the
+ objdir.
+
+ -- Sven Luther <luther@debian.org> Sat, 31 Dec 2005 18:25:19 +0000
+
+mkvmlinuz (17) unstable; urgency=low
+
+ * Fixed lame typo in version 16 :/
+
+ -- Sven Luther <luther@debian.org> Sat, 26 Nov 2005 14:07:45 +0000
+
+mkvmlinuz (16) unstable; urgency=low
+
+ * Added -l option, enabling the caller to specify the elf link address.
+
+ -- Sven Luther <luther@debian.org> Mon, 7 Nov 2005 14:47:22 +0000
+
+mkvmlinuz (15) unstable; urgency=high
+
+ * Generates a striped compressed vmlinuz on apus and miboot.
+
+ -- Sven Luther <luther@debian.org> Mon, 10 Oct 2005 10:01:33 +0200
+
+mkvmlinuz (14) unstable; urgency=low
+
+ * Now autodetects if the initrd is gzip compressed. This will allow to do
+ the right thing for initrds (not compressed by default) and initramfs
+ (compressed by default), since the kernel was none too happy with doubly
+ compressed initramfs initrds :)
+
+ -- Sven Luther <luther@debian.org> Fri, 16 Sep 2005 10:22:09 +0200
+
+mkvmlinuz (13) unstable; urgency=high
+
+ * Added debconf magic to kernel-image postinst/postrm hooks.
+
+ -- Sven Luther <luther@debian.org> Fri, 25 Feb 2005 14:47:52 +0100
+
+mkvmlinuz (12) unstable; urgency=high
+
+ * Fixed PReP support for recent kernel versions (including vanilla
+ 2.6.9-rc2 and Debian revision 2.6.8-7).
+
+ -- Jens Schmalzing <jensen@debian.org> Mon, 4 Oct 2004 22:37:02 +0200
+
+mkvmlinuz (11) unstable; urgency=high
+
+ * Fixed NewWorld PowerMac support.
+
+ -- Jens Schmalzing <jensen@debian.org> Sun, 3 Oct 2004 09:59:41 +0200
+
+mkvmlinuz (10) unstable; urgency=low
+
+ * Fixed miBoot support.
+
+ * Changed the internal name for NewWorld PowerMacs from newworld to the
+ slightly inaccurate pmac, since this is what the kernel Makefiles use.
+
+ * Documented the possible subarchitectures in the manpage.
+
+ -- Jens Schmalzing <jensen@debian.org> Sat, 11 Sep 2004 21:09:55 +0200
+
+mkvmlinuz (9) unstable; urgency=low
+
+ * Added PPCBug support (closes: #269146).
+
+ * Added miBoot support.
+
+ * Made quiet operation the default, previous default is now activated by
+ asking for verbose operation.
+
+ * Added an option to prevent guessing the name of an initrd.
+
+ -- Jens Schmalzing <jensen@debian.org> Tue, 31 Aug 2004 13:51:15 +0200
+
+mkvmlinuz (8) unstable; urgency=low
+
+ * Fixed spurious output when not using an initrd.
+
+ * Discard command output if verbose flag is not set (closes: Bug#263452).
+
+ -- Jens Schmalzing <jensen@debian.org> Wed, 4 Aug 2004 17:33:19 +0200
+
+mkvmlinuz (7) unstable; urgency=low
+
+ * Set a default output file location in /etc/mkvmlinuz/output.
+
+ * Added PReP support (closes: #252427, #256074).
+
+ -- Jens Schmalzing <jensen@debian.org> Thu, 8 Jul 2004 09:23:38 +0200
+
+mkvmlinuz (6) unstable; urgency=low
+
+ * Added an option to prevent compressing an already compressed ramdisk
+ image (closes: Bug#252489).
+
+ -- Jens Schmalzing <jensen@debian.org> Tue, 15 Jun 2004 20:01:23 +0200
+
+mkvmlinuz (5) unstable; urgency=low
+
+ * Fixed a typo (closes: Bug#252036).
+
+ -- Jens Schmalzing <jensen@debian.org> Tue, 1 Jun 2004 10:38:00 +0200
+
+mkvmlinuz (4) unstable; urgency=low
+
+ * Fixed CHRP support by adding the directory to the addnote call
+ (closes: Bug#251043).
+
+ -- Jens Schmalzing <jensen@debian.org> Wed, 26 May 2004 21:36:39 +0200
+
+mkvmlinuz (3) unstable; urgency=low
+
+ * Added Pegasos support.
+
+ -- Jens Schmalzing <jensen@debian.org> Fri, 21 May 2004 08:42:45 +0200
+
+mkvmlinuz (2) unstable; urgency=low
+
+ * Added a missing option to the getopts call.
+
+ -- Jens Schmalzing <jensen@debian.org> Thu, 13 May 2004 21:55:37 +0200
+
+mkvmlinuz (1) unstable; urgency=low
+
+ * Initial Release.
+
+ -- Jens Schmalzing <jensen@debian.org> Fri, 23 Apr 2004 10:19:35 +0200
+
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/changelog~ ../mkvmlinuz-33+nmu1/debian/changelog~
--- ../mkvmlinuz-33+nmu1.old/debian/changelog~ 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/changelog~ 2008-04-15 01:41:40.598329634 +0200
@@ -0,0 +1,277 @@
+mkvmlinuz (33+nmu1) unstable; urgency=low
+
+ * Non-maintainer upload to fix pending l10n issues.
+ * Debconf translations:
+ * Dutch. Closes: #415493
+ * Italian. Closes: #460131
+ * Finnish. Closes: #475638
+ * Galician. Closes: #475759
+ * Basque. Closes: #476073
+
+ -- Christian Perrier <bubulle@debian.org> Fri, 11 Apr 2008 22:56:59 +0200
+
+mkvmlinuz (33) unstable; urgency=low
+
+ * Add Japanese translation thanks to Kobayashi Noritada.
+ (Closes: #401384)
+
+ -- Aurélien GÉRÔME <ag@roxor.cx> Mon, 5 Mar 2007 18:05:01 +0100
+
+mkvmlinuz (32) unstable; urgency=medium
+
+ * Fix failure on PReP induced by fixing #381787. (Closes: #408385)
+ * Add checks for possible silent failures.
+
+ -- Aurélien GÉRÔME <ag@roxor.cx> Thu, 25 Jan 2007 16:33:33 +0100
+
+mkvmlinuz (31) unstable; urgency=medium
+
+ * Fix long description thanks to Steve Langasek.
+
+ -- Aurélien GÉRÔME <ag@roxor.cx> Mon, 22 Jan 2007 10:55:02 +0100
+
+mkvmlinuz (30) unstable; urgency=low
+
+ * Fix arithmetic syntax error. (Closes: #374185)
+ * Add myself to the Uploaders field.
+ * Bump Standards-Version to 3.7.2.
+ * Fix some expressions in long description.
+ * Fix lintian errors and warnings.
+ + Add po-debconf to the Build-Depends field.
+ + Depend explicitly on bash (>= 3) to avoid a simple dependency
+ on an essential package.
+ + Add dh_strip in debian/rules, because a binary was left
+ unstripped.
+ + Remove debian/conffiles as debhelper (>= 4) adds conffiles
+ under /etc automatically.
+ + Add the #DEBHELPER# token to debian/postinst.
+ + Move debian/kernel-image.postinst to debian/kernel-image/postinst
+ and debian/kernel-image.postrm to debian/kernel-image/postrm,
+ because it prevents lintian from believing they are maintainer
+ scripts for the packaging system.
+ + Add debian/lintian.overrides for debconf-is-not-a-registry,
+ because we need a debconf setting from mkvmlinuz in kernel
+ scripts.
+ * Fix silent failure by adding some checks. (Closes: #381787)
+ * Add the XS-Vcs-Svn field.
+ * Add Portuguese translation thanks to Rui Branco. (Closes: #401384)
+ * Add debugging symbols during build process.
+
+ -- Aurélien GÉRÔME <ag@roxor.cx> Sun, 14 Jan 2007 14:41:03 +0100
+
+mkvmlinuz (29) unstable; urgency=high
+
+ * Added Efika support.
+
+ -- Sven Luther <luther@debian.org> Sat, 16 Dec 2006 02:18:19 +0100
+
+mkvmlinuz (28) unstable; urgency=low
+
+ * Added support for 2.6.19 kernels.
+ * Added portuguese translation. (Closes: #401384)
+
+ -- Sven Luther <luther@debian.org> Tue, 5 Dec 2006 17:20:48 +0100
+
+mkvmlinuz (27) unstable; urgency=low
+
+ * Corrected typo. (Closes: #399768)
+
+ -- Sven Luther <luther@debian.org> Tue, 21 Nov 2006 22:43:28 +0100
+
+mkvmlinuz (26) unstable; urgency=low
+
+ * Fixed -prep support.
+
+ -- Sven Luther <luther@debian.org> Sat, 18 Nov 2006 21:41:01 +0100
+
+mkvmlinuz (25) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Switch to po-debconf for debconf templates. (Closes: #298972)
+ * Debconf translations:
+ - Add Swedish (updated during the l10n update campaign)
+ (Closes: #331020)
+ - Add Vietnamese. Sent during the l10n update campaign
+ - Add Czech. Sent during the l10n update campaign
+ - Add Romanian. Sent during the l10n update campaign
+ - Add French. Sent during the l10n update campaign
+ - Add German. Sent during the l10n update campaign
+ - Add Russian. Sent during the l10n update campaign
+ - Add Brazilian Portuguese. Sent during the l10n update campaign
+
+ -- Sven Luther <luther@debian.org> Thu, 9 Nov 2006 22:13:12 +0100
+
+mkvmlinuz (24) unstable; urgency=low
+
+ * Adapted uncompressor object list to 2.6.18.
+ * Re-enabled -prep support.
+
+ -- Sven Luther <luther@debian.org> Sat, 23 Sep 2006 21:51:52 +0200
+
+mkvmlinuz (23) unstable; urgency=low
+
+ * Fallback arch/powerpc/boot object files for chrp kernels without mkvmlinuz
+ support. This uses the 2.6.16+ code, but should work with any 2.6 kernel.
+ * Now supports the creation of a /boot/vmlinuz symlink to the last created
+ vmlinuz kernel. (Closes: #260219)
+ * Now uses /bin/bash as interpeter, as we use bashisms. (Closes: #374185)
+
+ -- Sven Luther <luther@debian.org> Tue, 4 Jul 2006 22:04:50 +0200
+
+mkvmlinuz (22) unstable; urgency=high
+
+ * Fixed broken 2.6.16+ support.
+
+ -- Sven Luther <luther@debian.org> Wed, 31 May 2006 17:40:37 +0200
+
+mkvmlinuz (21) unstable; urgency=low
+
+ * Fixed commented out cleanup call, now doesn't fill /tmp with cruft
+ anymore. Thanks to Colin Watson for noticing this. (Closes: #365978)
+
+ -- Sven Luther <luther@debian.org> Mon, 8 May 2006 19:32:16 +0000
+
+mkvmlinuz (20) unstable; urgency=low
+
+ * Ported to 2.6.16 powerpc kernels.
+ * Added powerpc64 support.
+
+ -- Sven Luther <luther@debian.org> Thu, 20 Apr 2006 18:42:41 +0000
+
+mkvmlinuz (19) unstable; urgency=low
+
+ * Added debconf dependency. (Closes: #342372)
+
+ -- Sven Luther <luther@debian.org> Fri, 6 Jan 2006 16:25:10 +0100
+
+mkvmlinuz (18) unstable; urgency=low
+
+ * Now look at $STEM-image, linux-image and then only kernel-image for the
+ objdir.
+
+ -- Sven Luther <luther@debian.org> Sat, 31 Dec 2005 18:25:19 +0000
+
+mkvmlinuz (17) unstable; urgency=low
+
+ * Fixed lame typo in version 16 :/
+
+ -- Sven Luther <luther@debian.org> Sat, 26 Nov 2005 14:07:45 +0000
+
+mkvmlinuz (16) unstable; urgency=low
+
+ * Added -l option, enabling the caller to specify the elf link address.
+
+ -- Sven Luther <luther@debian.org> Mon, 7 Nov 2005 14:47:22 +0000
+
+mkvmlinuz (15) unstable; urgency=high
+
+ * Generates a striped compressed vmlinuz on apus and miboot.
+
+ -- Sven Luther <luther@debian.org> Mon, 10 Oct 2005 10:01:33 +0200
+
+mkvmlinuz (14) unstable; urgency=low
+
+ * Now autodetects if the initrd is gzip compressed. This will allow to do
+ the right thing for initrds (not compressed by default) and initramfs
+ (compressed by default), since the kernel was none too happy with doubly
+ compressed initramfs initrds :)
+
+ -- Sven Luther <luther@debian.org> Fri, 16 Sep 2005 10:22:09 +0200
+
+mkvmlinuz (13) unstable; urgency=high
+
+ * Added debconf magic to kernel-image postinst/postrm hooks.
+
+ -- Sven Luther <luther@debian.org> Fri, 25 Feb 2005 14:47:52 +0100
+
+mkvmlinuz (12) unstable; urgency=high
+
+ * Fixed PReP support for recent kernel versions (including vanilla
+ 2.6.9-rc2 and Debian revision 2.6.8-7).
+
+ -- Jens Schmalzing <jensen@debian.org> Mon, 4 Oct 2004 22:37:02 +0200
+
+mkvmlinuz (11) unstable; urgency=high
+
+ * Fixed NewWorld PowerMac support.
+
+ -- Jens Schmalzing <jensen@debian.org> Sun, 3 Oct 2004 09:59:41 +0200
+
+mkvmlinuz (10) unstable; urgency=low
+
+ * Fixed miBoot support.
+
+ * Changed the internal name for NewWorld PowerMacs from newworld to the
+ slightly inaccurate pmac, since this is what the kernel Makefiles use.
+
+ * Documented the possible subarchitectures in the manpage.
+
+ -- Jens Schmalzing <jensen@debian.org> Sat, 11 Sep 2004 21:09:55 +0200
+
+mkvmlinuz (9) unstable; urgency=low
+
+ * Added PPCBug support (closes: #269146).
+
+ * Added miBoot support.
+
+ * Made quiet operation the default, previous default is now activated by
+ asking for verbose operation.
+
+ * Added an option to prevent guessing the name of an initrd.
+
+ -- Jens Schmalzing <jensen@debian.org> Tue, 31 Aug 2004 13:51:15 +0200
+
+mkvmlinuz (8) unstable; urgency=low
+
+ * Fixed spurious output when not using an initrd.
+
+ * Discard command output if verbose flag is not set (closes: Bug#263452).
+
+ -- Jens Schmalzing <jensen@debian.org> Wed, 4 Aug 2004 17:33:19 +0200
+
+mkvmlinuz (7) unstable; urgency=low
+
+ * Set a default output file location in /etc/mkvmlinuz/output.
+
+ * Added PReP support (closes: #252427, #256074).
+
+ -- Jens Schmalzing <jensen@debian.org> Thu, 8 Jul 2004 09:23:38 +0200
+
+mkvmlinuz (6) unstable; urgency=low
+
+ * Added an option to prevent compressing an already compressed ramdisk
+ image (closes: Bug#252489).
+
+ -- Jens Schmalzing <jensen@debian.org> Tue, 15 Jun 2004 20:01:23 +0200
+
+mkvmlinuz (5) unstable; urgency=low
+
+ * Fixed a typo (closes: Bug#252036).
+
+ -- Jens Schmalzing <jensen@debian.org> Tue, 1 Jun 2004 10:38:00 +0200
+
+mkvmlinuz (4) unstable; urgency=low
+
+ * Fixed CHRP support by adding the directory to the addnote call
+ (closes: Bug#251043).
+
+ -- Jens Schmalzing <jensen@debian.org> Wed, 26 May 2004 21:36:39 +0200
+
+mkvmlinuz (3) unstable; urgency=low
+
+ * Added Pegasos support.
+
+ -- Jens Schmalzing <jensen@debian.org> Fri, 21 May 2004 08:42:45 +0200
+
+mkvmlinuz (2) unstable; urgency=low
+
+ * Added a missing option to the getopts call.
+
+ -- Jens Schmalzing <jensen@debian.org> Thu, 13 May 2004 21:55:37 +0200
+
+mkvmlinuz (1) unstable; urgency=low
+
+ * Initial Release.
+
+ -- Jens Schmalzing <jensen@debian.org> Fri, 23 Apr 2004 10:19:35 +0200
+
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/compat ../mkvmlinuz-33+nmu1/debian/compat
--- ../mkvmlinuz-33+nmu1.old/debian/compat 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/compat 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1 @@
+4
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/config ../mkvmlinuz-33+nmu1/debian/config
--- ../mkvmlinuz-33+nmu1.old/debian/config 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/config 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+case $(grep ^machine /proc/cpuinfo) in
+ *PReP*Blackhawk*) arch=ppcbug ;;
+ *PReP*) arch=prep ;;
+ *CHRP*Pegasos*|*EFIKA*CHRP*) arch=chrp_pegasos ;;
+ *CHRP*) arch=chrp ;;
+ *Amiga*) arch=apus ;;
+ *iSeries*) arch=iseries ;;
+ *)
+ case $(grep ^pmac-generation /proc/cpuinfo) in
+ *NewWorld) arch=pmac_newworld ;;
+ *OldWorld) arch=pmac_oldworld ;;
+ *NuBus) arch=pmac_nubus ;;
+ *) arch=unknown ;;
+ esac
+ ;;
+esac
+
+# List of bootloader per subarch.
+case $arch in
+ chrp|pmac_newworld) bootloaders="yaboot, mkvmlinuz" ;;
+ pmac_oldworld) bootloaders="quik, mkvmlinuz" ;;
+ apus|ppcbug|prep|chrp_pegasos) bootloaders="mkvmlinuz" ;;
+ *) bootloaders="unknown" ;;
+esac
+
+# If there is more than one bootloader present, ask the user
+# at medium priority
+
+db_subst mkvmlinuz/bootloaders choices "$bootloaders"
+db_subst mkvmlinuz/bootloaders default "${bootloaders%, *}"
+db_input medium mkvmlinuz/bootloaders || true
+db_go || true
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/control ../mkvmlinuz-33+nmu1/debian/control
--- ../mkvmlinuz-33+nmu1.old/debian/control 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/control 2007-01-22 10:54:41.000000000 +0100
@@ -0,0 +1,21 @@
+Source: mkvmlinuz
+Section: devel
+Priority: optional
+Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
+Uploaders: Sven Luther <luther@debian.org>, Aurélien GÉRÔME <ag@roxor.cx>
+Build-Depends: docbook-to-man, debhelper (>= 4.1.16), po-debconf
+Standards-Version: 3.7.2
+XS-Vcs-Svn: svn://svn.debian.org/svn/kernel/dists/trunk/utils/mkvmlinuz/
+
+Package: mkvmlinuz
+Architecture: powerpc
+Depends: bash (>= 3), binutils, debconf | debconf-2.0
+Description: create a kernel to boot a PowerPC machine from Open Firmware
+ This little program takes a PowerPC Linux kernel as an uncompressed
+ ELF image file (usually called vmlinux or such) and adds boot code
+ and possibly a ramdisk to create a compressed kernel image that
+ can be booted directly from Open Firmware, thus eliminating the
+ need for a second-stage bootloader such as yaboot or quik. This is
+ especially useful on PowerPC sub-architectures which do not have a
+ bootloader at all, but may also come in handy for install kernels,
+ netboot systems, and the like.
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/copyright ../mkvmlinuz-33+nmu1/debian/copyright
--- ../mkvmlinuz-33+nmu1.old/debian/copyright 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/copyright 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,13 @@
+This package was created by Jens Schmalzing <jensen@debian.org> on
+Fri, 23 Apr 2004 10:19:35 +0200.
+
+This package consists of a small shell script that performs a tiny
+portion of the PowerPC kernel generation originally encoded in the
+Makefiles in the Linux kernel tree, namely in arch/(ppc|powerpc)/boot/.
+
+Additionally, we include a copy of linux's arch/powerpc/boot, from the
+2.6.17 kernel, which are copyrighted by their resposctive authors.
+
+Linux is copyrighted by Linus Torvalds and others, and is licensed
+under the GNU General Public License, which on Debian systems will
+be installed in the file /usr/share/common-licenses/GPL.
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/dirs ../mkvmlinuz-33+nmu1/debian/dirs
--- ../mkvmlinuz-33+nmu1.old/debian/dirs 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/dirs 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,7 @@
+etc/mkvmlinuz
+usr/sbin
+usr/share/man/man8
+etc/kernel/postinst.d
+etc/kernel/postrm.d
+usr/lib/mkvmlinuz
+usr/share/lintian/overrides
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/kernel-image/postinst ../mkvmlinuz-33+nmu1/debian/kernel-image/postinst
--- ../mkvmlinuz-33+nmu1.old/debian/kernel-image/postinst 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/kernel-image/postinst 2007-01-14 14:21:23.000000000 +0100
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_get mkvmlinuz/bootloaders
+bootloader="$RET"
+
+if [ "$bootloader" = mkvmlinuz ]; then
+ /usr/sbin/mkvmlinuz $1 $2
+fi
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/kernel-image/postrm ../mkvmlinuz-33+nmu1/debian/kernel-image/postrm
--- ../mkvmlinuz-33+nmu1.old/debian/kernel-image/postrm 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/kernel-image/postrm 2007-01-14 14:21:23.000000000 +0100
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_get mkvmlinuz/bootloaders
+bootloader="$RET"
+
+# Let's erase the kernel created by mkvmlinuz too.
+if [ "$bootloader" = mkvmlinuz ]; then
+ vmlinuz=`echo $2 | sed -e 's/vmlinux/vmlinuz/'`
+ rm -f $vmlinuz
+ if [ -e "$vmlinuz.old" ]; then
+ mv $vmlinuz.old $vmlinuz
+ fi
+fi
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/lintian.overrides ../mkvmlinuz-33+nmu1/debian/lintian.overrides
--- ../mkvmlinuz-33+nmu1.old/debian/lintian.overrides 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/lintian.overrides 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,2 @@
+mkvmlinuz: debconf-is-not-a-registry ./etc/kernel/postinst.d/mkvmlinuz
+mkvmlinuz: debconf-is-not-a-registry ./etc/kernel/postrm.d/mkvmlinuz
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/mkvmlinuz.sgml ../mkvmlinuz-33+nmu1/debian/mkvmlinuz.sgml
--- ../mkvmlinuz-33+nmu1.old/debian/mkvmlinuz.sgml 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/mkvmlinuz.sgml 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,315 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>Jens</firstname>">
+ <!ENTITY dhsurname "<surname>Schmalzing</surname>">
+ <!ENTITY dhdate "<date>Sep 11, 2004</date>">
+ <!ENTITY dhsection "<manvolnum>8</manvolnum>">
+ <!ENTITY dhemail "<email>jensen@debian.org</email>">
+ <!ENTITY dhusername "Jens Schmalzing">
+ <!ENTITY dhucpackage "<refentrytitle>MKVMLINUZ</refentrytitle>">
+ <!ENTITY dhpackage "mkvmlinuz">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2004</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>create a kernel to boot a PowerPC machine from Open Firmware</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <arg><option>-o <replaceable>output</replaceable></option></arg>
+ <arg><option>-a <replaceable>arch</replaceable></option></arg>
+ <arg><option>-k <replaceable>kernel</replaceable></option></arg>
+ <arg><option>-s <replaceable>sysmap</replaceable></option></arg>
+ <arg><option>-i <replaceable>initrd</replaceable></option></arg>
+ <arg><option>-d <replaceable>objdir</replaceable></option></arg>
+ <arg><option>-r <replaceable>release</replaceable></option></arg>
+ <arg><option>-l <replaceable>linkaddress</replaceable></option></arg>
+ <arg><option>-n</option></arg>
+ <arg><option>-z</option></arg>
+ <arg><option>-u</option></arg>
+ <arg><option>-v</option></arg>
+ <arg><replaceable>release</replaceable> <arg><replaceable>kernel</replaceable></arg></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> command.</para>
+
+ <para><command>&dhpackage;</command> is a program that takes a
+ PowerPC Linux kernel as an uncompressed ELF image file (usually
+ called <filename>vmlinux</filename> or somesuch) and adds boot
+ code and possibly a ramdisk to create a compressed kernel image
+ that can be booted directly from Open Firmware, thus eliminating
+ the need for a second-stage bootloader such as
+ <command>yaboot</command> or <command>quik</command>.</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-o</option></term>
+ <listitem>
+ <para>Specify the path to the output file for the compressed
+ kernel image. If this option is not set, the file
+ <filename>/etc/mkvmlinuz/output</filename> is sourced, in
+ the hope that it will set the shell variable
+ <varname>output</varname> to something useful. If this
+ doesn't work either, the program stops with a non-zero exit
+ code.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-a</option></term>
+ <listitem>
+ <para>Specify the PowerPC sub-architecture to build for. If
+ this option is not set, the program will guess based on the
+ contents of /proc/cpuinfo. At the moment, the following
+ values are supported:</para>
+ <variablelist>
+ <varlistentry>
+ <term>chrp</term>
+ <listitem>
+ <para>
+ This build a compressed kernel for CHRP machines.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>coff</term>
+ <listitem>
+ <para>
+ The COFF format is understood by the Open Firmware of
+ many OldWorld PowerMacs. You will need it if you
+ intend to boot a Linux kernel directly from Open
+ Firmware. Note that you can also choose between a
+ variety of boot loaders for that platform, such as
+ <command>quik</command>, <command>BootX</command>, and
+ <command>miBoot</command>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>miboot</term>
+ <listitem>
+ <para>
+ This prepares the Linux kernel for booting from a
+ <command>miBoot</command> floppy.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>pmac</term>
+ <listitem>
+ <para>
+ While most NewWorld PowerMacs use the bootloader
+ <command>yaboot</command>, they can also start
+ directly from Open Firmware.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>prep</term>
+ <listitem>
+ <para>
+ The PReP sub-architecture is mainly found on old
+ RS/6000 systems. After creating the compressed
+ kernel, you have to move it to a bootable location,
+ either by <command>dd</command>ing it onto the PReP
+ boot partition of a hard disk, or writing it to a CD
+ using the <option>-prep-boot </option> option of
+ <command>mkisofs</command>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ppcbug</term>
+ <listitem>
+ <para>
+ PPCBug is strictly a sub-sub-architecture of the
+ above-mentioned PReP. It uses a slightly different
+ wrapper around the compressed kernel, though.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-k</option></term>
+ <listitem>
+ <para>Specify the path to the Linux kernel as an
+ uncompressed ELF image file. Usually, this filename
+ contains <filename>vmlinux</filename> in some form. If
+ this option is not set, the program will make guesses
+ based on the release number and the currently running
+ kernel.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-s</option></term>
+ <listitem>
+ <para>Specify the path to the System.map file. This will
+ greatly enlarge the resulting image, and is only needed if
+ you intend to use the in-kernel debugger
+ <command>xmon</command>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-i</option></term>
+ <listitem>
+ <para>Specify the path to a ramdisk (initrd) image to
+ include in the compressed kernel image. If this option is
+ not set, the program will look in a location analogous to
+ the kernel image location, but will continue without a
+ ramdisk if nothing is found there. This guess can be turned
+ off with the <option>-n</option> option.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-d</option></term>
+ <listitem>
+ <para>Specify the directory containing boot code. If this
+ option is not set, the program will try a default directory
+ and the current directory.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-r</option></term>
+ <listitem>
+ <para>Specify the release of the kernel. This option is
+ only used for guessing path names that have not been specified
+ explicitly.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-n</option></term>
+ <listitem>
+ <para>Do not attempt to find an initrd image file if none
+ was specified with the <option>-i</option> option.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-z</option></term>
+ <listitem>
+ <para>Assume the initrd image file is already compressed. The
+ default is to autodetect if the initrd is compressed or not.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-u</option></term>
+ <listitem>
+ <para>Assume the initrd image file is not already compressed. The
+ default is to autodetect if the initrd is compressed or not.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-l</option></term>
+ <listitem>
+ <para>Allows to set the elf link address, where the kernel will be
+ relocated inside the firmware.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option></term>
+ <listitem>
+ <para>Print progress messages, and echo commands as they are
+ executed.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>It is also possible to specify the release number and the
+ kernel image file as the first and second non-option arguments,
+ respectively. However, the values are only used if they are not
+ already given as option arguments.</para>
+
+ </refsect1>
+ <refsect1>
+ <title>FILES</title>
+
+ <variablelist>
+ <varlistentry>
+ <term>/etc/mkvmlinuz/output</term>
+ <listitem>
+ <para>A shell script fragment that specifies the output file
+ for the compressed kernel image. It is sourced by
+ &dhpackage; if the output file is not specified on the
+ command line, and therefore should set the shell variable
+ <varname>output</varname> at some point. The shell
+ variables <varname>arch</varname>,
+ <varname>kernel</varname>, <varname>sysmap</varname>,
+ <varname>initrd</varname>, <varname>objdir</varname>, and
+ <varname>release</varname> are all set at this point and can
+ be used to construct the filename. </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under the
+ terms of the &gnu; General Public License, Version 2 any later
+ version published by the Free Software Foundation. </para>
+
+ <para>On Debian systems, the complete text of the &gnu; General
+ Public License can be found in
+ <filename>/usr/share/common-licenses/GPL</filename>.
+ </para>
+
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/mkvmlinuz.templates ../mkvmlinuz-33+nmu1/debian/mkvmlinuz.templates
--- ../mkvmlinuz-33+nmu1.old/debian/mkvmlinuz.templates 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/mkvmlinuz.templates 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,7 @@
+Template: mkvmlinuz/bootloaders
+Type: select
+Choices: ${choices}
+Default: ${default}
+_Description: Bootloader to use:
+ Your PowerPC sub-architecture supports more than one bootloader, please
+ select the one you want to use.
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/POTFILES.in ../mkvmlinuz-33+nmu1/debian/po/POTFILES.in
--- ../mkvmlinuz-33+nmu1.old/debian/po/POTFILES.in 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/POTFILES.in 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] mkvmlinuz.templates
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/cs.po ../mkvmlinuz-33+nmu1/debian/po/cs.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/cs.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/cs.po 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,40 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinuz\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2006-11-01 20:32+0100\n"
+"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
+"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Zavaděč, který se má použít:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"Vaše PowerPC podarchitektura podporuje více zavaděčů. Vyberte si prosím "
+"ten, který chcete použít."
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/de.po ../mkvmlinuz-33+nmu1/debian/po/de.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/de.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/de.po 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,42 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+# Holger Wansing <linux@wansing-online.de>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinuz 24\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2006-11-03 21:13+0100\n"
+"Last-Translator: Holger Wansing <linux@wansing-online.de>\n"
+"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Zu verwendender Bootloader:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"Ihre PowerPC-Unterarchitektur unterstützt mehr als einen Bootloader; wählen "
+"Sie bitte aus, welchen Sie verwenden möchten."
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/eu.po ../mkvmlinuz-33+nmu1/debian/po/eu.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/eu.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/eu.po 2008-04-15 01:41:39.858331000 +0200
@@ -0,0 +1,41 @@
+# translation of mkvmlinuz-eu.po to Euskara
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
+# Developers do not need to manually edit POT or PO files.
+#
+# Piarres Beobide <pi@beobide.net>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinuz-eu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2008-04-14 12:08+0200\n"
+"Last-Translator: Piarres Beobide <pi@beobide.net>\n"
+"Language-Team: Euskara <debian-l10n-basque@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Erabiliko nahi den abio-kargatzailea:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"Zure PowerPC azpi-arkitekturak abio kargatzaile bat baino gehiago onartzen "
+"du, mesedez hautatu erabili nahi duzuna."
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/fi.po ../mkvmlinuz-33+nmu1/debian/po/fi.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/fi.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/fi.po 2008-04-15 01:41:20.742331000 +0200
@@ -0,0 +1,30 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinuz\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2008-04-12 08:14+0200\n"
+"Last-Translator: Esko Arajärvi <edu@iki.fi>\n"
+"Language-Team: Finnish <debian-l10n-finnish@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-Language: Finnish\n"
+"X-Poedit-Country: FINLAND\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Käytettävä alkulatausohjelma:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"Käytetty PowerPC-aliarkkitehtuuri tukee useampia alkulatausohjelmia. Valitse "
+"niistä yksi."
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/fr.po ../mkvmlinuz-33+nmu1/debian/po/fr.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/fr.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/fr.po 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,40 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinuz\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2006-11-01 16:53+0100\n"
+"Last-Translator: Cyril Brulebois <cyril.brulebois@enst-bretagne.fr>\n"
+"Language-Team: French <debian-l10n-french@lists.debian.fr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Programme de démarrage à utiliser :"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"Plusieurs programmes de démarrage gèrent cette sous-architecture PowerPC. "
+"Veuillez sélectionner lequel utiliser."
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/gl.po ../mkvmlinuz-33+nmu1/debian/po/gl.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/gl.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/gl.po 2008-04-15 01:41:34.358331000 +0200
@@ -0,0 +1,31 @@
+# Galician translation of mkvmlinuz's debconf templates
+# This file is distributed under the same license as the mkvmlinuz package.
+# Jacobo Tarrio <jtarrio@debian.org>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinuz\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2008-04-12 20:17+0100\n"
+"Last-Translator: Jacobo Tarrio <jtarrio@debian.org>\n"
+"Language-Team: Galician <proxecto@trasno.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Cargador de inicio a empregar:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"A súa sub-arquitectura PowerPC ten soporte de máis dun cargador de inicio; "
+"escolla o que quere empregar."
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/it.po ../mkvmlinuz-33+nmu1/debian/po/it.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/it.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/it.po 2008-04-11 22:58:03.011934000 +0200
@@ -0,0 +1,32 @@
+# Italian (it) translation of debconf templates for mkvmlinuz
+# Copyright (C) 2008 Software in the Public Interest
+# This file is distributed under the same license as the mkvmlinuz package.
+# Luca Monducci <luca.mo@tiscali.it>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinuz 33 italian debconf templates\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2008-01-08 21:02+0100\n"
+"Last-Translator: Luca Monducci <luca.mo@tiscali.it>\n"
+"Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Bootloader da usare:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"La sottoarchitettura PowerPC della macchina supporta più di un bootloader, "
+"selezionare quello che si desidera usare."
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/ja.po ../mkvmlinuz-33+nmu1/debian/po/ja.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/ja.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/ja.po 2007-03-05 18:03:55.000000000 +0100
@@ -0,0 +1,31 @@
+# Japanese debconf templates translation for mkvmlinuz.
+# Copyright (C) 2007 Noritada Kobayashi
+# This file is distributed under the same license as the mkvmlinuz package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinuz (debconf) 32\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2007-03-06 00:45+0900\n"
+"Last-Translator: Noritada Kobayashi <nori1@dolphin.c.u-tokyo.ac.jp>\n"
+"Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "使用するブートローダ:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"この PowerPC サブアーキテクチャでは 1 つ以上のブートローダがサポートされてい"
+"ます。使用したいものを選択してください。"
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/nl.po ../mkvmlinuz-33+nmu1/debian/po/nl.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/nl.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/nl.po 2008-04-11 22:57:44.535698000 +0200
@@ -0,0 +1,41 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinuz\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2007-03-09 19:18+0100\n"
+"Last-Translator: Bart Cornelis <cobaco@skolelinux.no>\n"
+"Language-Team: debian-l10n-dutch <debian-l10n-dutch@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Dutch\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Te gebruiken opstartlader:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"Uw PowerPC sub-architectuur ondersteunt meer dan één opstartlader, welke "
+"wilt u gebruiken?"
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/pt.po ../mkvmlinuz-33+nmu1/debian/po/pt.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/pt.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/pt.po 2007-01-14 14:35:54.000000000 +0100
@@ -0,0 +1,31 @@
+# Portuguese translation for mkvmlinuz's debconf messages
+# Rui Branco <ruipb@debianpt.org>, 2006.
+# 2006-12-03 - Rui Branco - Initial translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinuz 27\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2006-12-03 01:10+0000\n"
+"Last-Translator: Rui Branco <ruipb@debianpt.org>\n"
+"Language-Team: Portuguese <traduz@debianpt.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Gestor de arranque a utilizar:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"A sua sub-arquitectura PowerPC suporta mais do que um gestor de arranque, "
+"por favor escolha aquele que quer utilizar."
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/pt_BR.po ../mkvmlinuz-33+nmu1/debian/po/pt_BR.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/pt_BR.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/pt_BR.po 2007-01-14 14:24:09.000000000 +0100
@@ -0,0 +1,44 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+# Felipe Augusto van de Wiel (faw) <faw@cathedrallabs.org>, 2006.
+# Licensed under the same terms of the mkvmlinuz package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinuz (20061109)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2006-11-09 16:30-0200\n"
+"Last-Translator: Felipe Augusto van de Wiel (faw) <faw@cathedrallabs.org>\n"
+"Language-Team: l10n portuguese <debian-l10n-portuguese@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"pt_BR utf-8\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Carregador de inicialização a ser usado:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"Sua sub-arquitetura PowerPC suporta mais de um carregador de inicialização, "
+"por favor selecione aquele que você quer usar."
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/ro.po ../mkvmlinuz-33+nmu1/debian/po/ro.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/ro.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/ro.po 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,42 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+# Eddy Petrișor <eddy.petrisor@gmail.com>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: ro\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2006-11-01 18:56+0200\n"
+"Last-Translator: Eddy Petrișor <eddy.petrisor@gmail.com>\n"
+"Language-Team: Romanian <debian-l10n-romanian@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3;plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Încărcătorul de sistem folosit:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr "Sub-arhitectura PowerPC folosită de dumneavoastră suportă mai mult de un încărcător de sistem; selectaţi-l pe cel care doriţi să-l utilizaţi."
+
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/ru.po ../mkvmlinuz-33+nmu1/debian/po/ru.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/ru.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/ru.po 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,43 @@
+# translation of mkvmlinuz_debconf_ru.po to Russian
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
+# Developers do not need to manually edit POT or PO files.
+#
+# Yuri Kozlov <kozlov.y@gmail.com>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: 24\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2006-11-06 20:25+0300\n"
+"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
+"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.2\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Используемый загрузчик:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"Для субархитектуры вашего PowerPC поддерживается несколько загрузчиков; "
+"выберите тот, который хотите использовать."
+
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/sv.po ../mkvmlinuz-33+nmu1/debian/po/sv.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/sv.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/sv.po 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,36 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinuz\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2006-11-01 07:39+0100\n"
+"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Välj din starthanterare:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Your PowerPC sub-architecture supports more than one bootloader, please select the one you want to use."
+msgstr "Din PowerPC-underarkitektur har stöd för fler än en starthanterare, välj en som du vill använda."
+
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/templates.pot ../mkvmlinuz-33+nmu1/debian/po/templates.pot
--- ../mkvmlinuz-33+nmu1.old/debian/po/templates.pot 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/templates.pot 2007-01-14 14:21:24.000000000 +0100
@@ -0,0 +1,39 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/po/vi.po ../mkvmlinuz-33+nmu1/debian/po/vi.po
--- ../mkvmlinuz-33+nmu1.old/debian/po/vi.po 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/po/vi.po 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,33 @@
+# Vietnamese translation for MK VM Linux.
+# Copyright © 2006 Gnome i18n Project for Vietnamese.
+# Clytie Siddall <clytie@riverland.net.au>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mkvmlinux\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-31 08:09+0100\n"
+"PO-Revision-Date: 2006-11-01 16:26+1030\n"
+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: LocFactoryEditor 1.6fc1\n"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid "Bootloader to use:"
+msgstr "Bộ tải khởi động cần dùng:"
+
+#. Type: select
+#. Description
+#: ../mkvmlinuz.templates:1001
+msgid ""
+"Your PowerPC sub-architecture supports more than one bootloader, please "
+"select the one you want to use."
+msgstr ""
+"Kiến trúc phụ PowerPC này hỗ trợ nhiều bộ tải khởi động: hãy chọn điều nào "
+"bạn muốn sử dụng."
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/postinst ../mkvmlinuz-33+nmu1/debian/postinst
--- ../mkvmlinuz-33+nmu1.old/debian/postinst 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/postinst 2007-01-14 14:21:25.000000000 +0100
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+#DEBHELPER#
diff -Nru ../mkvmlinuz-33+nmu1.old/debian/rules ../mkvmlinuz-33+nmu1/debian/rules
--- ../mkvmlinuz-33+nmu1.old/debian/rules 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/debian/rules 2007-01-22 12:20:54.000000000 +0100
@@ -0,0 +1,65 @@
+#!/usr/bin/make -f
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+INSTALL_DATA = install -m 644 -o root -g root
+INSTALL_EXEC = install -m 755 -o root -g root
+
+build: build-stamp
+build-stamp: mkvmlinuz.8
+ dh_testdir
+ touch build-stamp
+
+ make -C boot
+
+%.8: debian/%.sgml
+ /usr/bin/docbook-to-man $< > $@
+
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp
+
+ rm -f mkvmlinuz.8
+ debconf-updatepo
+ make -C boot clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ $(INSTALL_EXEC) mkvmlinuz $(CURDIR)/debian/mkvmlinuz/usr/sbin
+ $(INSTALL_EXEC) debian/kernel-image/postinst $(CURDIR)/debian/mkvmlinuz/etc/kernel/postinst.d/mkvmlinuz
+ $(INSTALL_EXEC) debian/kernel-image/postrm $(CURDIR)/debian/mkvmlinuz/etc/kernel/postrm.d/mkvmlinuz
+ $(INSTALL_DATA) debian/lintian.overrides $(CURDIR)/debian/mkvmlinuz/usr/share/lintian/overrides/mkvmlinuz
+ $(INSTALL_EXEC) mkvmlinuz $(CURDIR)/debian/mkvmlinuz/usr/sbin
+ $(INSTALL_DATA) mkvmlinuz.8 $(CURDIR)/debian/mkvmlinuz/usr/share/man/man8
+ $(INSTALL_DATA) output $(CURDIR)/debian/mkvmlinuz/etc/mkvmlinuz
+ $(INSTALL_EXEC) boot/addnote $(CURDIR)/debian/mkvmlinuz/usr/lib/mkvmlinuz
+ $(INSTALL_DATA) boot/*.o boot/zImage.lds $(CURDIR)/debian/mkvmlinuz/usr/lib/mkvmlinuz
+
+binary-indep: build install
+
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installman
+ dh_installdebconf
+ dh_strip
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff -Nru ../mkvmlinuz-33+nmu1.old/mkvmlinuz ../mkvmlinuz-33+nmu1/mkvmlinuz
--- ../mkvmlinuz-33+nmu1.old/mkvmlinuz 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/mkvmlinuz 2007-01-25 19:02:17.000000000 +0100
@@ -0,0 +1,470 @@
+#!/bin/bash
+
+# usage information
+usage() {
+ echo 'usage:'
+ echo ' -o <output> - path to output file for compressed kernel image'
+ echo ' -a <arch> - PowerPC sub-architecture'
+ echo ' -k <kernel> - path to kernel image file in ELF format'
+ echo ' -s <sysmap> - path to System.map file'
+ echo ' -i <initrd> - path to initrd image file'
+ echo ' -d <objdir> - path to directory with additional object files'
+ echo ' -r <release> - kernel release number'
+ echo ' -l <address> - Address where the kernel should be relocated'
+ echo ' -n - do not use an initrd'
+ echo ' -z - assume the initrd image file is already compressed'
+ echo ' -u - assume the initrd image file is not compressed'
+ echo ' -v - verbose operation (print commands)'
+
+ exit 0
+}
+
+# echo a shell command if desired, and execute it
+do_cmd() {
+ if test -n "$verbose"; then
+ echo $@
+ eval $@
+ else
+ eval $@ > /dev/null 2>&1
+ fi
+ return
+}
+
+# parse command line
+while getopts o:k:s:i:d:r:a:l:nuzv option; do
+ case "$option" in
+ o) output=$OPTARG ;;
+ k) kernel=$OPTARG ;;
+ s) sysmap=$OPTARG ;;
+ i) initrd=$OPTARG ;;
+ d) objdir=$OPTARG ;;
+ r) release=$OPTARG ;;
+ a) arch=$OPTARG ;;
+ l) linkaddr=$OPTARG ;;
+ n) noinitrd="Yes" ;;
+ z) compressed="Yes" ;;
+ u) compressed="No" ;;
+ v) verbose="Yes" ;;
+ *) usage; exit 0 ;;
+ esac
+done
+
+# Let's provide some subarch dependent defaults
+case $arch in
+ apus|miboot)
+ # miboot and apus don't use builtin initrds,
+ # and need to stay elf kernels, as we don't use a wrapper.
+ elf="Yes"
+ noinitrd="Yes"
+ ;;
+esac
+
+# use non-option arguments as release version and kernel image file if needed
+shift $(( $OPTIND - 1 ))
+if test -z "$release" -a -n "$1"; then
+ release=$1
+fi
+if test -z "$kernel" -a -n "$2"; then
+ kernel=$2
+fi
+
+# if no sub-architecture was specified, read it from /proc
+if test -z "$arch"; then
+ case $(grep ^machine /proc/cpuinfo) in
+ *PReP*Blackhawk*) arch=ppcbug ;;
+ *PReP*) arch=prep ;;
+ *CHRP*) arch=chrp ;;
+ *Amiga*) arch=apus ;;
+ *)
+ case $(grep ^pmac-generation /proc/cpuinfo) in
+ *NewWorld) arch=pmac ;;
+ *OldWorld) arch=coff ;;
+ esac
+ ;;
+ esac
+fi
+
+test -z "$verbose" || echo === Building for sub-architecture $arch.
+
+# if no kernel was specified, try to find one
+if test -z "$kernel"; then
+
+ # guess the location of a kernel
+ if kernel=/boot/vmlinux-$release; test -n "$release" -a -r $kernel; then
+ :
+ elif kernel=/boot/vmlinux-$(uname -r); test -r $kernel; then
+ :
+ else
+ kernel=""
+ fi
+
+ # we couldn't find a kernel, and therefore give up
+ if test -z "$kernel"; then
+ echo Could not find a kernel image file, please specify one.
+ exit 1
+ fi
+
+ # sanitize the location of the kernel
+ kernel=$(readlink -f $kernel)
+
+fi
+
+test -z "$verbose" || echo === Using kernel image file $kernel.
+
+# if no initrd was specified, try to find one that goes with the kernel
+if test -z "$noinitrd" -a -z "$initrd"; then
+
+ # guess the location of an initrd, but don't try too hard
+ if initrd=${kernel/vmlinux/initrd.img}; test -r $initrd; then
+ :
+ else
+ initrd=""
+ fi
+
+ # sanitize the location of the initrd
+ if test -n "$initrd"; then
+ initrd=$(readlink -f $initrd)
+ fi
+
+fi
+
+test -z "$verbose" -o -z "$initrd" || echo === Using initrd image file $initrd.
+
+# if no release was specified, extract it from the kernel image name
+if test -z "$release"; then
+ release=$(echo $kernel | sed s/.*vmlinux-//)
+ if echo $release | grep -q '2\.[46]\.[0-9]*'; then
+ :
+ else
+ release=""
+ fi
+fi
+
+if dpkg --compare-versions $release ge 2.6.16 && test "$arch" != "prep" ; then
+ post_2_6_16=Yes
+else
+ post_2_6_16=
+fi
+
+if dpkg --compare-versions $release ge 2.6.18 && test "$arch" != "prep" ; then
+ post_2_6_18=Yes
+else
+ post_2_6_18=
+fi
+
+if dpkg --compare-versions $release ge 2.6.19 && test "$arch" != "prep" ; then
+ post_2_6_19=Yes
+else
+ post_2_6_19=
+fi
+
+test -z "$verbose" || echo === Release version seems to be $release.
+
+# if no object file directory was specified, try to find one
+if test -z "$objdir"; then
+
+ # try using $STEM-image, then linux-image, then kernel-image
+ # in a default location, then use the current directory
+ if objdir=/usr/lib/$STEM-image-$release; test -d $objdir; then
+ :
+ elif objdir=/usr/lib/linux-image-$release; test -d $objdir; then
+ :
+ elif objdir=/usr/lib/kernel-image-$release; test -d $objdir; then
+ :
+ # /usr/lib/mkvmlinuz is a copy of arch/powerpc/boot taken from 2.6.17.
+ # It is used as a fallback when a kernel package is not present
+ # or when it does not provide the tools.
+ elif objdir=/usr/lib/mkvmlinuz; test -d $objdir && test "$arch" = "chrp"; then
+ post_2_6_16=Yes
+ else
+ objdir="$PWD"
+ fi
+fi
+if test \! -d "$objdir"; then
+ echo Object directory does not exist.
+ exit 1
+fi
+
+test -z "$verbose" || echo === Using object files from $objdir.
+
+# if no output file was specified, source the configuration file
+if test -z "$output" -a -r /etc/mkvmlinuz/output; then
+ . /etc/mkvmlinuz/output
+fi
+
+# we absolutely need an output file, and won't attempt guesses
+if test -z "$output"; then
+ echo Please specify an output file.
+ exit 1
+fi
+
+test -z "$verbose" || echo === Building a bootable compressed kernel image in $output.
+
+# create a work directory
+work=$(mktemp -d)
+
+test -z "$verbose" || echo === Doing build in $work.
+
+# utilities
+if test "$post_2_6_16"; then
+ ADDNOTE=$objdir/addnote # must be present in mkvmlinuz fallback tools
+ if test \! -f "$ADDNOTE"; then
+ echo "Missing utility: $ADDNOTE"
+ exit 1
+ fi
+ ADDRAMDISK=$objdir/addRamDisk # unseen in mkvmlinuz fallback tools
+ objs=$objdir
+ STRIP="strip -s -R .comment"
+ GZIP="gzip --force --best"
+else
+ ADDNOTE=$objdir/utils/addnote # unseen in -prep kernel package, but present in -powerpc kernel package
+ if test \! -f "$ADDNOTE" && echo "$release"|grep -q -- '-powerpc$'; then
+ # addnote must exist if we use a -powerpc kernel package
+ echo "Missing utility: $ADDNOTE"
+ exit 1
+ fi
+ HACKOFF=$objdir/utils/hack-coff # unseen in kernel package tools
+ MKNOTE=$objdir/utils/mknote # unseen in kernel package tools
+ MKPREP=$objdir/utils/mkprep # must be present in kernel package tools
+ if test \! -f "$MKPREP"; then
+ echo "Missing utility: $MKPREP"
+ exit 1
+ fi
+ MKBUGBOOT=$objdir/utils/mkbugboot # must be present in kernel package tools
+ if test \! -f "$MKBUGBOOT"; then
+ echo "Missing utility: $MKBUGBOOT"
+ exit 1
+ fi
+ libs=$objdir/lib
+ objs=$objdir/obj
+ GZIP=gzip
+ STRIP=strip
+fi
+LD=ld
+OBJCOPY=objcopy
+MV=mv
+
+case "$arch","$post_2_6_16","$release" in
+ apus,Yes,*|miboot,Yes,*|prep,Yes,*|ppcbug,Yes,*)
+ ;;
+ chrp,Yes,*|pmac,Yes,*)
+ dummy_kernel=$objs/mkvmlinuz-kernel-vmlinux.strip.o
+ dummy_initrd=$objs/mkvmlinuz-kernel-initrd.o
+ OBJS="$objs/crt0.o $objs/string.o $objs/prom.o $objs/stdio.o $objs/main.o $objs/div64.o"
+ if test "$post_2_6_18"; then
+ OBJS="$OBJS $objs/inffast.o $objs/inflate.o $objs/inftrees.o"
+ else
+ OBJS="$OBJS $objs/infblock.o $objs/infcodes.o $objs/inffast.o $objs/inflate.o $objs/inftrees.o $objs/infutil.o"
+ fi
+ ;;
+ apus,,*|miboot,,*|*,Yes,*)
+ ;;
+ prep,,2.6*|ppcbug,,2.6*)
+ test -d $objs/simple && objs=$objs/simple
+ if test -r $objs/legacy.o; then prepmap=legacy; else prepmap=prepmap; fi
+ OBJS="$objs/head.o $objs/relocate.o $objs/$prepmap.o $objs/misc.o $objs/misc-prep.o $objs/mpc10x_memory.o"
+ LIBS="$libs/common.a $libs/ppc.a $libs/of.a"
+ dummy=$objs/dummy.o
+ ;;
+ pmac,,2.6*)
+ test -d $objs/openfirmware && objs=$objs/openfirmware
+ OBJS="$objs/start.o $objs/misc.o $objs/common.o $objs/newworldmain.o"
+ LIBS="$libs/lib.a $libs/ppc.a $libs/of.a $libs/common.a"
+ dummy=$objs/dummy.o
+ ;;
+ *,,2.6*)
+ test -d $objs/openfirmware && objs=$objs/openfirmware
+ OBJS="$objs/start.o $objs/misc.o $objs/common.o $objs/${arch}main.o"
+ LIBS="$libs/lib.a $libs/ppc.a $libs/of.a $libs/common.a"
+ dummy=$objs/dummy.o
+ ;;
+ chrp,,2.4*)
+ test -d $objs/chrp && objs=$objs/chrp
+ OBJS="$objs/start.o $objs/main.o $objs/misc.o"
+ OBJS="$OBJS $objs/../common/string.o $objs/../common/ofcommon.o"
+ LIBS="$libs/lib.a $libs/zlib.a $libs/of1275.a"
+ dummy=$objs/../common/dummy.o
+ ;;
+esac
+
+# off we go...
+
+# create the compressed initrd image file
+if test -n "$initrd"; then
+ test -z "$verbose" || echo === Creating compressed initrd image initrd.gz...
+ if test -z "$compressed"; then
+ # Detect if the file was already compressed by gzip.
+ if test "`od -A n -c -N 2 $initrd`" = " 037 213"; then
+ compressed="Yes"
+ else
+ compressed="No"
+ fi
+ fi
+ case "$compressed" in
+ Yes)
+ do_cmd cp -p $initrd $work/initrd.gz
+ ;;
+ No)
+ do_cmd cp -p $initrd $work/initrd
+ do_cmd $GZIP $work/initrd
+ ;;
+ esac
+fi
+
+# If we are on ARCH=powerpc and 2.6.19 or higher, we just call the provided wrapper script.
+
+if test -n "$post_2_6_19" && test "$arch" != "prep"; then
+ WRAPPER=$objdir/wrapper
+ vmlinuz=$work/vmlinuz.$arch
+ if test -n "$initrd"; then
+ INITRD="-i $work/initrd.gz"
+ fi
+ $WRAPPER -c -o $vmlinuz -p $arch $INITRD -D $objdir -W $work $kernel
+else
+ # create the compressed kernel image file
+ test -z "$verbose" || echo === Creating compressed kernel image vmlinux.gz...
+ if test -n "$elf" || test -n "$post_2_6_16"; then
+ do_cmd $STRIP $kernel -o $work/vmlinux
+ else
+ do_cmd $OBJCOPY -O binary $kernel $work/vmlinux
+ fi
+ do_cmd $GZIP $work/vmlinux
+
+ # create the raw ELF image file; this is not needed for the miBoot image
+ if test -z "$elf"; then
+ test -z "$verbose" || echo === Putting everything into ELF image file image.o...
+ if test -n "$post_2_6_16"; then
+ do_cmd $OBJCOPY $dummy_kernel $work/dummy_kernel.o \
+ --add-section=.kernel:vmlinux.strip=$work/vmlinux.gz \
+ --set-section-flags=.kernel:vmlinux.strip=contents,alloc,load,readonly,data
+ if test -n "$initrd"; then
+ do_cmd $OBJCOPY $dummy_initrd $work/dummy_initrd.o \
+ --add-section=.kernel:initrd=$work/initrd.gz \
+ --set-section-flags=.kernel:initrd=contents,alloc,load,readonly,data
+ fi
+ else
+ do_cmd $OBJCOPY -R .comment $dummy $work/image.o
+ do_cmd $OBJCOPY $work/image.o $work/image.o \
+ --add-section=.image=$work/vmlinux.gz \
+ --set-section-flags=.image=contents,alloc,load,readonly,data
+ if test -n "$sysmap"; then
+ do_cmd $OBJCOPY $work/image.o $work/image.o \
+ --add-section=.sysmap=$sysmap \
+ --set-section-flags=.sysmap=contents,alloc,load,readonly,data
+ fi
+ if test -n "$initrd"; then
+ do_cmd $OBJCOPY $work/image.o $work/image.o \
+ --add-section=.ramdisk=$work/initrd.gz \
+ --set-section-flags=.ramdisk=contents,alloc,load,readonly,data
+ fi
+ fi
+ else
+ do_cmd $MV $work/vmlinux.gz $work/vmlinuz.$arch.tmp
+ fi
+
+ # link everything into the final image file and make it bootable
+ vmlinuz=$work/vmlinuz.$arch
+ if test "$post_2_6_16"; then
+ LD_ARGS="-m elf32ppc -T $objs/zImage.lds"
+ else
+ LD_ARGS="-T $objdir/boot/ld.script"
+ fi
+ OBJCOPY_ARGS="-R .comment"
+ test -z "$verbose" || echo === Creating bootable kernel image file vmlinuz.$arch...
+ case "$arch","$post_2_6_16","$release" in
+ chrp,Yes,*|pmac,Yes,*)
+ if test -n "$initrd"; then
+ do_cmd $LD $LD_ARGS -o $vmlinuz $OBJS $work/dummy_kernel.o $work/dummy_initrd.o
+ else
+ do_cmd $LD $LD_ARGS -o $vmlinuz $OBJS $work/dummy_kernel.o
+ fi
+ do_cmd $ADDNOTE $vmlinuz
+ ;;
+ chrp,,2.6*)
+ if [ -z "$linkaddr" ]; then linkaddr=0x00800000; fi
+ LD_ARGS="$LD_ARGS -e _start -Ttext $linkaddr"
+ do_cmd $LD -o $vmlinuz $LD_ARGS $objs/crt0.o $OBJS $work/image.o $LIBS
+ do_cmd $OBJCOPY $OBJCOPY_ARGS $vmlinuz $vmlinuz
+ do_cmd cp -p $objdir/boot/note $work
+ do_cmd $ADDNOTE $vmlinuz
+ ;;
+ chrp,,2.4*)
+ if [ -z "$linkaddr" ]; then linkaddr=0x00800000; fi
+ LD_ARGS="$LD_ARGS -e _start -Ttext $linkaddr"
+ do_cmd $LD -o $vmlinuz $LD_ARGS $objs/../common/crt0.o $OBJS $work/image.o $LIBS
+ do_cmd $OBJCOPY $OBJCOPY_ARGS $vmlinuz $vmlinuz
+ do_cmd $ADDNOTE $vmlinuz
+ ;;
+ coff,,2.6*)
+ if [ -z "$linkaddr" ]; then linkaddr=0x00500000; fi
+ LD_ARGS="$LD_ARGS -e _start -Ttext $linkaddr -Bstatic"
+ OBJCOPY_ARGS="-O aixcoff-rs6000 -R .stab -R .stabstr $OBJCOPY_ARGS"
+ do_cmd $LD -o $vmlinuz $LD_ARGS $objs/coffcrt0.o $OBJS $work/image.o $LIBS
+ do_cmd $OBJCOPY $OBJCOPY_ARGS $vmlinuz $vmlinuz
+ do_cmd $HACKOFF $vmlinuz
+ ;;
+ pmac,,2.6*)
+ if [ -z "$linkaddr" ]; then linkaddr=0x01000000; fi
+ LD_ARGS="$LD_ARGS -e _start -Ttext $linkaddr"
+ OBJCOPY_ARGS="--add-section=.note=$work/note $OBJCOPY_ARGS"
+ do_cmd $LD -o $vmlinuz $LD_ARGS $objs/crt0.o $OBJS $LIBS $work/image.o
+ do_cmd $MKNOTE > $work/note
+ do_cmd $OBJCOPY $OBJCOPY_ARGS $vmlinuz $vmlinuz
+ ;;
+ ppcbug,*,2.6*)
+ if [ -z "$linkaddr" ]; then linkaddr=0x00800000; fi
+ LD_ARGS="$LD_ARGS -Ttext $linkaddr -Bstatic"
+ OBJCOPY_ARGS="-O elf32-powerpc $OBJCOPY_ARGS -R .stab -R .stabstr -R .sysmap"
+ do_cmd $LD -o $vmlinuz $LD_ARGS $OBJS $work/image.o $LIBS
+ do_cmd $OBJCOPY $OBJCOPY_ARGS $vmlinuz $vmlinuz.tmp
+ do_cmd $MKBUGBOOT $vmlinuz.tmp $vmlinuz
+ ;;
+ prep,*,2.6*)
+ if [ -z "$linkaddr" ]; then linkaddr=0x00800000; fi
+ LD_ARGS="$LD_ARGS -Ttext $linkaddr -Bstatic"
+ OBJCOPY_ARGS="-O elf32-powerpc $OBJCOPY_ARGS -R .stab -R .stabstr -R .sysmap"
+ do_cmd $LD -o $vmlinuz $LD_ARGS $OBJS $work/image.o $LIBS
+ do_cmd $OBJCOPY $OBJCOPY_ARGS $vmlinuz $vmlinuz.tmp
+ do_cmd $MKPREP -pbp $vmlinuz.tmp $vmlinuz
+ ;;
+ miboot,,2.6*|apus,,2.6*)
+ do_cmd $MV $vmlinuz.tmp $vmlinuz
+ ;;
+ *)
+ echo Sorry, I do not know how to handle PowerPC sub-architecture $arch in version $release.
+ esac
+fi
+
+# move bootable kernel image to its final location and creating symlinks.
+if test -e $vmlinuz; then
+ if test -n "$linkname"; then
+ oldlink="`readlink $linkname`"
+ fi
+ test -z "$verbose" || echo === Moving bootable kernel image file to $output...
+ if test -e $output; then
+ echo Output file $output exists, attempting to back it up...
+ mv $output $output.old 2> /dev/null
+ if test -n "$linkname" && test "$oldlink" = "`basename $output`"; then
+ oldlink=$output.old
+ fi
+ fi
+ cat $vmlinuz > $output
+ if test -n "$linkname"; then
+ test -z "$verbose" || echo Creating symlink : $linkname -\> $output
+ if test -L "$linkname"; then
+ unlink $linkname
+ fi
+ ln -sf "`basename $output`" $linkname
+ if test -n "$oldlink"; then
+ test -z "$verbose" || echo Creating backup symlink : $linkname.old -\> $oldlink
+ if test -L "$linkname.old"; then
+ unlink $linkname.old
+ fi
+ ln -sf $oldlink $linkname.old
+ fi
+ fi
+fi
+
+# clean up
+test -z "$verbose" || echo === Cleaning up...
+rm -rf $work
diff -Nru ../mkvmlinuz-33+nmu1.old/output ../mkvmlinuz-33+nmu1/output
--- ../mkvmlinuz-33+nmu1.old/output 1970-01-01 01:00:00.000000000 +0100
+++ ../mkvmlinuz-33+nmu1/output 2007-01-14 14:21:33.000000000 +0100
@@ -0,0 +1,31 @@
+# This is a shell script fragment that is sourced by mkvmlinuz(8) in
+# order to determine the output file for the compressed kernel image.
+# if the output file is not specified on the command line. Therefore,
+# it should set the shell variable "output" at some point.
+
+# When this fragment is sourced, the following shell variables are set
+# and may be used to construct the filename:
+#
+# arch - PowerPC sub-architecture
+# kernel - path to kernel image file in uncompressed ELF format
+# sysmap - path to System.map file
+# initrd - path to ramdisk (initrd) image file
+# objdir - path to directory with additional object files
+# release - kernel release number
+
+# Example:
+output=/boot/vmlinuz-$release
+
+# Simple example:
+#output=/vmlinuz
+
+# Sophisticated example:
+#if test -z "$initrd"; then
+#output=/boot/vmlinuz-$release.$arch
+#else
+#output=/boot/vmlinuz-initrd-$release.$arch
+#fi
+
+# Let's define also the name of the symlink here.
+# An empty $linkname means no symlink created.
+linkname=/boot/vmlinuz
Attachment:
signature.asc
Description: Digital signature