diff --git a/kexec-tools-elf32-elf64-fix b/kexec-tools-elf32-elf64-fix deleted file mode 100644 index 4d94a91..0000000 --- a/kexec-tools-elf32-elf64-fix +++ /dev/null @@ -1,37 +0,0 @@ -From b41eacb1069eeefd630d807b1587247e6d89628c Mon Sep 17 00:00:00 2001 -From: Ken'ichi Ohmichi -Date: Tue, 13 Nov 2007 19:29:16 +0900 -Subject: [PATCH] Fix the feature determining ELF32/ELF64 automatically - -Hi, - -This patch fixes the problem that the kexec command cannot determine -ELF32/ELF64 automatically. - -On i386 system, the kexec command always determined an ELF32 /proc/vmcore -even if the memory is 4GB or larger, because of referring the outside -of the array "range[]". - - -Thanks -Ken'ichi Ohmichi - - -Signed-off-by: Ken'ichi Ohmichi -Signed-off-by: Simon Horman - ---- - kexec/arch/i386/crashdump-x86.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/kexec/arch/i386/crashdump-x86.c -+++ b/kexec/arch/i386/crashdump-x86.c -@@ -528,7 +528,7 @@ static enum coretype get_core_type(struc - if (ranges == 0) - return CORE_TYPE_ELF64; - -- if (range[ranges].end > 0xFFFFFFFFUL) -+ if (range[ranges - 1].end > 0xFFFFFFFFUL) - return CORE_TYPE_ELF64; - else - return CORE_TYPE_ELF32; diff --git a/kexec-tools-portability-issue b/kexec-tools-portability-issue new file mode 100644 index 0000000..0c911c2 --- /dev/null +++ b/kexec-tools-portability-issue @@ -0,0 +1,25 @@ +From: Bernhard Walle +Subject: [PATCH] Fix compilation warning + +This patch fixes following compilation warning: + +purgatory/purgatory.c:21: warning: passing argument 2 of 'sha256_update' makes pointer from integer without a cast + + +Signed-off-by: Bernhard Walle + +--- + purgatory/purgatory.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/purgatory/purgatory.c ++++ b/purgatory/purgatory.c +@@ -18,7 +18,7 @@ void verify_sha256_digest(void) + sha256_starts(&ctx); + end = &sha256_regions[sizeof(sha256_regions)/sizeof(sha256_regions[0])]; + for(ptr = sha256_regions; ptr < end; ptr++) { +- sha256_update(&ctx, ptr->start, ptr->len); ++ sha256_update(&ctx, (uint8_t *)ptr->start, ptr->len); + } + sha256_finish(&ctx, digest); + if (memcmp(digest, sha256_digest, sizeof(digest)) != 0) { diff --git a/kexec-tools-testing-20071030.tar.bz2 b/kexec-tools-testing-20071030.tar.bz2 deleted file mode 100644 index 2138e88..0000000 --- a/kexec-tools-testing-20071030.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6468054ca33cdafb109fa6888cf35f497e277811f81d4278efc71706a5d874b6 -size 211843 diff --git a/kexec-tools-testing-20080219-rc.tar.bz2 b/kexec-tools-testing-20080219-rc.tar.bz2 new file mode 100644 index 0000000..e3667f0 --- /dev/null +++ b/kexec-tools-testing-20080219-rc.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3ded4283e7b26e502c26dc6bf47ab6a562d004519c7244ff17c98d44dc33c93 +size 300304 diff --git a/kexec-tools.changes b/kexec-tools.changes index 70722c4..6fa0321 100644 --- a/kexec-tools.changes +++ b/kexec-tools.changes @@ -1,3 +1,28 @@ +------------------------------------------------------------------- +Wed Feb 20 08:30:37 CET 2008 - bwalle@suse.de + +- update to kexec-tools-testing v20080219-rc + o Fix the feature determining ELF32/ELF64 automatically + o Enable building a 32 bit binary for ppc64 platforms. + o Consolidate BOOTLOADER defines + o Use config.h for defines + o Add gamecube to config.h defines + o removed partially duplicated system headers + o Use general _SRCS and _OBJS, rather and _C_{SRCS, OBJS} and + _S_{SRCS, OBJS} + o build system fixes + o Add documentation on creating include/config.h.in to INSTALL + o Log unknown reloc name instead of its number + o Use zlib if present + o kexec buffer overflow on ppc platform + o sh: Remove hardcoded PAGE_SIZE in NetBSD loader + o Add ARM support to kexec + o Remove some extraneous whitespace + o kexec: Use target linker for purgatory +- removed kexec-tools-elf32-elf64-fix: mainline +- removed kexec-tools.ppc64-32bit-build.patch: mainline +- removed kexec-tools.fread-buffer-overflow.patch: mainline + ------------------------------------------------------------------- Wed Jan 30 15:17:18 CET 2008 - sassmann@suse.de diff --git a/kexec-tools.fread-buffer-overflow.patch b/kexec-tools.fread-buffer-overflow.patch deleted file mode 100644 index 1371fd4..0000000 --- a/kexec-tools.fread-buffer-overflow.patch +++ /dev/null @@ -1,36 +0,0 @@ - -Index: kexec-tools-testing-20071030/kexec/arch/ppc64/kexec-ppc64.c -=================================================================== ---- kexec-tools-testing-20071030.orig/kexec/arch/ppc64/kexec-ppc64.c -+++ kexec-tools-testing-20071030/kexec/arch/ppc64/kexec-ppc64.c -@@ -160,7 +160,7 @@ static int get_base_ranges(void) - int local_memory_ranges = 0; - char device_tree[256] = "/proc/device-tree/"; - char fname[256]; -- char buf[MAXBYTES-1]; -+ char buf[MAXBYTES]; - DIR *dir, *dmem; - FILE *file; - struct dirent *dentry, *mentry; -@@ -258,7 +258,7 @@ static int get_devtree_details(unsigned - unsigned long long htab_base, htab_size; - unsigned long long kernel_end; - unsigned long long initrd_start, initrd_end; -- char buf[MAXBYTES-1]; -+ char buf[MAXBYTES]; - char device_tree[256] = "/proc/device-tree/"; - char fname[256]; - DIR *dir, *cdir; -Index: kexec-tools-testing-20071030/kexec/arch/ppc64/crashdump-ppc64.c -=================================================================== ---- kexec-tools-testing-20071030.orig/kexec/arch/ppc64/crashdump-ppc64.c -+++ kexec-tools-testing-20071030/kexec/arch/ppc64/crashdump-ppc64.c -@@ -101,7 +101,7 @@ static int get_crash_memory_ranges(struc - int memory_ranges = 0; - char device_tree[256] = "/proc/device-tree/"; - char fname[256]; -- char buf[MAXBYTES-1]; -+ char buf[MAXBYTES]; - DIR *dir, *dmem; - FILE *file; - struct dirent *dentry, *mentry; diff --git a/kexec-tools.ppc32-64bit-purgatory.patch b/kexec-tools.ppc32-64bit-purgatory.patch index 2456694..b6fbe14 100644 --- a/kexec-tools.ppc32-64bit-purgatory.patch +++ b/kexec-tools.ppc32-64bit-purgatory.patch @@ -1,7 +1,7 @@ --- kexec/arch/ppc64/crashdump-ppc64.h | 4 ++-- - purgatory/Makefile | 3 +++ - 2 files changed, 5 insertions(+), 2 deletions(-) + purgatory/Makefile | 7 ++++++- + 2 files changed, 8 insertions(+), 3 deletions(-) --- a/kexec/arch/ppc64/crashdump-ppc64.h +++ b/kexec/arch/ppc64/crashdump-ppc64.h @@ -19,13 +19,19 @@ #define MAXMEM (-KERNELBASE-VMALLOCBASE) --- a/purgatory/Makefile +++ b/purgatory/Makefile -@@ -7,6 +7,9 @@ - # should keep us from accidentially include unsafe library functions - # or headers. +@@ -40,9 +40,14 @@ $(PURGATORY): CPPFLAGS+=-I$(srcdir)/purg + $(PURGATORY): LDFLAGS+=--no-undefined -nostartfiles -nostdlib -nodefaultlibs \ + -e purgatory_start -r -+ifeq ($(ARCH),ppc) -+EXTRA_LDFLAGS = -melf64ppc ++LDFLAGS_P = $(shell echo $(LDFLAGS) | sed -e 's/-lz//g') ++ifeq ($(ARCH),ppc64) ++LDFLAGS_P+=-melf64ppc -m64 +endif - ifeq ($(ARCH),ppc64) - EXTRA_LDFLAGS = -melf64ppc - endif ++ + $(PURGATORY): $(PURGATORY_OBJS) + $(MKDIR) -p $(@D) +- $(CC) $(LDFLAGS) -o $@ $^ ++ $(CC) $(LDFLAGS_P) -o $@ $^ + + # $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) --no-undefined -e purgatory_start -r -o $@ $(PURGATORY_OBJS) $(UTIL_LIB) + diff --git a/kexec-tools.ppc64-32bit-build.patch b/kexec-tools.ppc64-32bit-build.patch deleted file mode 100644 index efaaa32..0000000 --- a/kexec-tools.ppc64-32bit-build.patch +++ /dev/null @@ -1,255 +0,0 @@ ---- - kexec/arch/ppc64/crashdump-ppc64.h | 4 ++-- - kexec/arch/ppc64/kexec-elf-ppc64.c | 26 +++++++++++++------------- - kexec/arch/ppc64/kexec-elf-rel-ppc64.c | 4 ++-- - kexec/arch/ppc64/kexec-ppc64.c | 20 ++++++++++---------- - kexec/arch/ppc64/kexec-ppc64.h | 2 +- - kexec/kexec-sha256.h | 4 ++-- - purgatory/arch/ppc64/Makefile | 2 ++ - purgatory/purgatory.c | 4 +++- - 8 files changed, 35 insertions(+), 31 deletions(-) - ---- a/kexec/arch/ppc64/crashdump-ppc64.h -+++ b/kexec/arch/ppc64/crashdump-ppc64.h -@@ -23,8 +23,8 @@ void add_usable_mem_rgns(unsigned long l - #define _ALIGN_UP(addr,size) (((addr)+((size)-1))&(~((size)-1))) - #define _ALIGN_DOWN(addr,size) ((addr)&(~((size)-1))) - --extern unsigned long long crash_base; --extern unsigned long long crash_size; -+extern uint64_t crash_base; -+extern uint64_t crash_size; - extern unsigned int rtas_base; - extern unsigned int rtas_size; - ---- a/kexec/arch/ppc64/kexec-elf-ppc64.c -+++ b/kexec/arch/ppc64/kexec-elf-ppc64.c -@@ -42,7 +42,7 @@ - #define BOOTLOADER "kexec" - #define BOOTLOADER_VERSION VERSION - --unsigned long initrd_base, initrd_size; -+uint64_t initrd_base, initrd_size; - unsigned char reuse_initrd = 0; - const char *ramdisk; - -@@ -83,19 +83,19 @@ int elf_ppc64_load(int argc, char **argv - char *cmdline, *modified_cmdline; - const char *devicetreeblob; - int cmdline_len, modified_cmdline_len; -- unsigned long long max_addr, hole_addr; -+ uint64_t max_addr, hole_addr; - unsigned char *seg_buf = NULL; - off_t seg_size = 0; - struct mem_phdr *phdr; - size_t size; -- unsigned long long *rsvmap_ptr; -+ uint64_t *rsvmap_ptr; - struct bootblock *bb_ptr; - unsigned int nr_segments, i; - int result, opt; -- unsigned long my_kernel, my_dt_offset; -+ uint64_t my_kernel, my_dt_offset; - unsigned int my_panic_kernel; -- unsigned long my_stack, my_backup_start; -- unsigned long toc_addr; -+ uint64_t my_stack, my_backup_start; -+ uint64_t toc_addr; - unsigned int slave_code[256/sizeof (unsigned int)], master_entry; - - #define OPT_APPEND (OPT_ARCH_MAX+0) -@@ -237,10 +237,10 @@ int elf_ppc64_load(int argc, char **argv - } - seg_buf = (unsigned char *)slurp_file(ramdisk, &seg_size); - add_buffer(info, seg_buf, seg_size, seg_size, 0, 0, max_addr, 1); -- hole_addr = (unsigned long long) -+ hole_addr = (uint64_t) - info->segment[info->nr_segments-1].mem; - initrd_base = hole_addr; -- initrd_size = (unsigned long long) -+ initrd_size = (uint64_t) - info->segment[info->nr_segments-1].memsz; - } /* ramdisk */ - -@@ -270,25 +270,25 @@ int elf_ppc64_load(int argc, char **argv - */ - bb_ptr = (struct bootblock *)( - (unsigned char *)info->segment[(info->nr_segments)-1].buf); -- rsvmap_ptr = (unsigned long long *)( -+ rsvmap_ptr = (uint64_t *)( - (unsigned char *)info->segment[(info->nr_segments)-1].buf + - bb_ptr->off_mem_rsvmap); - while (*rsvmap_ptr || *(rsvmap_ptr+1)) - rsvmap_ptr += 2; - rsvmap_ptr -= 2; -- *rsvmap_ptr = (unsigned long long)( -+ *rsvmap_ptr = (uint64_t)( - info->segment[(info->nr_segments)-1].mem); - rsvmap_ptr++; -- *rsvmap_ptr = (unsigned long long)bb_ptr->totalsize; -+ *rsvmap_ptr = (uint64_t)bb_ptr->totalsize; - - nr_segments = info->nr_segments; - - /* Set kernel */ -- my_kernel = (unsigned long )info->segment[0].mem; -+ my_kernel = (uint64_t)info->segment[0].mem; - elf_rel_set_symbol(&info->rhdr, "kernel", &my_kernel, sizeof(my_kernel)); - - /* Set dt_offset */ -- my_dt_offset = (unsigned long )info->segment[nr_segments-1].mem; -+ my_dt_offset = (uint64_t)info->segment[nr_segments-1].mem; - elf_rel_set_symbol(&info->rhdr, "dt_offset", &my_dt_offset, - sizeof(my_dt_offset)); - ---- a/kexec/arch/ppc64/kexec-elf-rel-ppc64.c -+++ b/kexec/arch/ppc64/kexec-elf-rel-ppc64.c -@@ -101,10 +101,10 @@ void machine_apply_elf_rel(struct mem_eh - break; - - case R_PPC64_ADDR16_HIGHEST: -- *(uint16_t *)location = ((value>>48) & 0xffff); -+ *(uint16_t *)location = (((uint64_t)value>>48) & 0xffff); - break; - case R_PPC64_ADDR16_HIGHER: -- *(uint16_t *)location = ((value>>32) & 0xffff); -+ *(uint16_t *)location = (((uint64_t)value>>32) & 0xffff); - break; - - default: ---- a/kexec/arch/ppc64/kexec-ppc64.c -+++ b/kexec/arch/ppc64/kexec-ppc64.c -@@ -41,7 +41,7 @@ static struct memory_range *base_memory_ - static unsigned long long rmo_top; - unsigned long long memory_max = 0; - static int nr_memory_ranges, nr_exclude_ranges; --unsigned long long crash_base, crash_size; -+uint64_t crash_base, crash_size; - unsigned int rtas_base, rtas_size; - int max_memory_ranges; - -@@ -203,10 +203,10 @@ static int get_base_ranges(void) - break; - } - base_memory_range[local_memory_ranges].start = -- ((unsigned long long *)buf)[0]; -+ ((uint64_t *)buf)[0]; - base_memory_range[local_memory_ranges].end = - base_memory_range[local_memory_ranges].start + -- ((unsigned long long *)buf)[1]; -+ ((uint64_t *)buf)[1]; - base_memory_range[local_memory_ranges].type = RANGE_RAM; - local_memory_ranges++; - dbgprintf("%016llx-%016llx : %x\n", -@@ -231,7 +231,7 @@ static int get_base_ranges(void) - static int sort_ranges(void) - { - int i, j; -- unsigned long long tstart, tend; -+ uint64_t tstart, tend; - for (i = 0; i < nr_exclude_ranges - 1; i++) { - for (j = 0; j < nr_exclude_ranges - i - 1; j++) { - if (exclude_range[j].start > exclude_range[j+1].start) { -@@ -292,7 +292,7 @@ static int get_devtree_details(unsigned - perror(fname); - goto error_opencdir; - } -- if (fread(&kernel_end, sizeof(unsigned long), 1, file) != 1) { -+ if (fread(&kernel_end, sizeof(uint64_t), 1, file) != 1) { - perror(fname); - goto error_openfile; - } -@@ -312,7 +312,7 @@ static int get_devtree_details(unsigned - perror(fname); - goto error_opencdir; - } -- if (fread(&crash_base, sizeof(unsigned long), 1, -+ if (fread(&crash_base, sizeof(uint64_t), 1, - file) != 1) { - perror(fname); - goto error_openfile; -@@ -327,7 +327,7 @@ static int get_devtree_details(unsigned - perror(fname); - goto error_opencdir; - } -- if (fread(&crash_size, sizeof(unsigned long), 1, -+ if (fread(&crash_size, sizeof(uint64_t), 1, - file) != 1) { - perror(fname); - goto error_openfile; -@@ -356,7 +356,7 @@ static int get_devtree_details(unsigned - perror(fname); - goto error_opendir; - } -- if (fread(&htab_base, sizeof(unsigned long), 1, file) != 1) { -+ if (fread(&htab_base, sizeof(uint64_t), 1, file) != 1) { - perror(fname); - goto error_openfile; - } -@@ -368,7 +368,7 @@ static int get_devtree_details(unsigned - perror(fname); - goto error_opencdir; - } -- if (fread(&htab_size, sizeof(unsigned long), 1, file) != 1) { -+ if (fread(&htab_size, sizeof(uint64_t), 1, file) != 1) { - perror(fname); - goto error_openfile; - } -@@ -487,7 +487,7 @@ static int get_devtree_details(unsigned - perror(fname); - goto error_opendir; - } -- if (fread(&tce_base, sizeof(unsigned long), 1, file) != 1) { -+ if (fread(&tce_base, sizeof(uint64_t), 1, file) != 1) { - perror(fname); - goto error_openfile; - return -1; ---- a/kexec/arch/ppc64/kexec-ppc64.h -+++ b/kexec/arch/ppc64/kexec-ppc64.h -@@ -14,7 +14,7 @@ int elf_ppc64_load(int argc, char **argv - void elf_ppc64_usage(void); - void reserve(unsigned long long where, unsigned long long length); - --extern unsigned long initrd_base, initrd_size; -+extern uint64_t initrd_base, initrd_size; - extern int max_memory_ranges; - extern unsigned char reuse_initrd; - ---- a/kexec/kexec-sha256.h -+++ b/kexec/kexec-sha256.h -@@ -2,8 +2,8 @@ - #define KEXEC_SHA256_H - - struct sha256_region { -- const void *start; -- unsigned long len; -+ uint64_t start; -+ uint64_t len; - }; - - #define SHA256_REGIONS 16 ---- a/purgatory/arch/ppc64/Makefile -+++ b/purgatory/arch/ppc64/Makefile -@@ -6,3 +6,5 @@ PURGATORY_S_SRCS+= purgatory/arch/ppc64/ - PURGATORY_C_SRCS += purgatory/arch/ppc64/purgatory-ppc64.c - PURGATORY_C_SRCS += purgatory/arch/ppc64/console-ppc64.c - PURGATORY_C_SRCS += purgatory/arch/ppc64/crashdump_backup.c -+ -+PCFLAGS += -m64 -mcall-aixdesc ---- a/purgatory/purgatory.c -+++ b/purgatory/purgatory.c -@@ -18,7 +18,7 @@ void verify_sha256_digest(void) - sha256_starts(&ctx); - end = &sha256_regions[sizeof(sha256_regions)/sizeof(sha256_regions[0])]; - for(ptr = sha256_regions; ptr < end; ptr++) { -- sha256_update(&ctx, ptr->start, ptr->len); -+ sha256_update(&ctx, (char *)ptr->start, ptr->len); - } - sha256_finish(&ctx, digest); - if (memcmp(digest, sha256_digest, sizeof(digest)) != 0) { -@@ -46,3 +46,5 @@ void purgatory(void) - verify_sha256_digest(); - post_verification_setup_arch(); - } -+ -+#include "../util_lib/sha256.c" diff --git a/kexec-tools.spec b/kexec-tools.spec index ce7bf58..0652eab 100644 --- a/kexec-tools.spec +++ b/kexec-tools.spec @@ -10,30 +10,29 @@ # norootforbuild + Name: kexec-tools # kdump does not work yet, kexec-tools.ppc64.rpm still required for kdump %ifarch ppc BuildRequires: gcc-64bit glibc-devel-64bit %endif -%define package_version testing-20071030 +%define package_version testing-20080219-rc License: GPL v2 or later Group: System/Kernel Requires: %insserv_prereq %fillup_prereq AutoReqProv: on Summary: Tools for fast kernel loading Version: 1.101 -Release: 164 +Release: 169 Source: %{name}-%{package_version}.tar.bz2 Source1: README.SUSE -Url: http://www.vergenet.net/linux/kexec/kexec-tools/ +Url: http://ftp.kernel.org/pub/linux/kernel/people/horms/kexec-tools/ BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: zlib-devel Patch1: kexec-longer-cmdline.diff -Patch2: kexec-tools-elf32-elf64-fix -Patch20: kexec-tools.ppc64-32bit-build.patch -Patch21: kexec-tools.ppc32-64bit-purgatory.patch -Patch22: kexec-tools.gcc-bug.patch -Patch30: kexec-tools.fread-buffer-overflow.patch +Patch2: kexec-tools.ppc32-64bit-purgatory.patch +Patch3: kexec-tools.gcc-bug.patch +Patch4: kexec-tools-portability-issue %description Kexec is a user space utility for loading another kernel and asking the @@ -56,27 +55,25 @@ Authors: %setup -q -n kexec-tools-%{package_version} %patch1 -p1 %patch2 -p1 -# -%patch20 -p1 -%patch21 -p1 -%patch22 -p1 -%patch30 -p1 +%patch3 -p1 +%patch4 -p1 %build %{?suse_update_config -f} cp %{SOURCE1} . -autoreconf -fi -./configure \ - --prefix=/ \ -%ifarch ppc - ARCH=ppc64 \ -%endif - --sbindir=/sbin \ - --libdir=/%_lib %ifarch ia64 RPM_OPT_FLAGS=$(echo $RPM_OPT_FLAGS | sed -e 's/-fstack-protector//') %endif -make CPPFLAGS="$RPM_OPT_FLAGS" +CFLAGS=$RPM_OPT_FLAGS ./configure \ + --prefix=/ \ +%ifarch ppc + --host=powerpc64-suse-linux \ + --build=powerpc64-suse-linux \ +%endif + --sbindir=/sbin \ + --libdir=/%_lib +make clean +make #CPPFLAGS="$RPM_OPT_FLAGS" %install make DESTDIR=$RPM_BUILD_ROOT install @@ -96,6 +93,28 @@ install -c -m 0644 kexec/kexec.8 $RPM_BUILD_ROOT%{_mandir}/man8 %endif %changelog +* Wed Feb 20 2008 bwalle@suse.de +- update to kexec-tools-testing v20080219-rc + o Fix the feature determining ELF32/ELF64 automatically + o Enable building a 32 bit binary for ppc64 platforms. + o Consolidate BOOTLOADER defines + o Use config.h for defines + o Add gamecube to config.h defines + o removed partially duplicated system headers + o Use general _SRCS and _OBJS, rather and _C_{SRCS, OBJS} and + _S_{SRCS, OBJS} + o build system fixes + o Add documentation on creating include/config.h.in to INSTALL + o Log unknown reloc name instead of its number + o Use zlib if present + o kexec buffer overflow on ppc platform + o sh: Remove hardcoded PAGE_SIZE in NetBSD loader + o Add ARM support to kexec + o Remove some extraneous whitespace + o kexec: Use target linker for purgatory +- removed kexec-tools-elf32-elf64-fix: mainline +- removed kexec-tools.ppc64-32bit-build.patch: mainline +- removed kexec-tools.fread-buffer-overflow.patch: mainline * Wed Jan 30 2008 sassmann@suse.de - fix fread buffer overflow on ppc * Tue Jan 22 2008 ro@suse.de