diff --git a/kexec-tools-1.101-et-dyn.patch b/kexec-tools-1.101-et-dyn.patch new file mode 100644 index 0000000..ad2c1f2 --- /dev/null +++ b/kexec-tools-1.101-et-dyn.patch @@ -0,0 +1,44 @@ +--- kexec-tools-1.101/kexec/kexec-elf.h.orig 2006-07-31 10:41:57.000000000 -0400 ++++ kexec-tools-1.101/kexec/kexec-elf.h 2006-07-31 10:42:09.000000000 -0400 +@@ -89,7 +89,7 @@ extern int build_elf_info(const char *bu + extern int build_elf_exec_info(const char *buf, off_t len, struct mem_ehdr *ehdr); + extern int build_elf_rel_info(const char *buf, off_t len, struct mem_ehdr *ehdr); + +-extern int elf_exec_load(const struct mem_ehdr *ehdr, struct kexec_info *info); ++extern int elf_exec_load(struct mem_ehdr *ehdr, struct kexec_info *info); + extern int elf_rel_load(struct mem_ehdr *ehdr, struct kexec_info *info, + unsigned long min, unsigned long max, int end); + +--- kexec-tools-1.101/kexec/kexec-elf-exec.c.orig 2006-07-31 10:14:20.000000000 -0400 ++++ kexec-tools-1.101/kexec/kexec-elf-exec.c 2006-07-31 10:18:25.000000000 -0400 +@@ -47,7 +47,7 @@ int build_elf_exec_info(const char *buf, + } + + +-int elf_exec_load(const struct mem_ehdr *ehdr, struct kexec_info *info) ++int elf_exec_load(struct mem_ehdr *ehdr, struct kexec_info *info) + { + unsigned long base; + int result; +@@ -79,8 +79,8 @@ int elf_exec_load(const struct mem_ehdr + } + start = phdr->p_paddr; + stop = start + phdr->p_memsz; +- if (start > first) { +- start = first; ++ if (first > start) { ++ first = start; + } + if (last < stop) { + last = stop; +@@ -126,6 +126,10 @@ int elf_exec_load(const struct mem_ehdr + phdr->p_data, size, + phdr->p_paddr + base, phdr->p_memsz); + } ++ ++ /* Update entry point to reflect new load address*/ ++ ehdr->e_entry += base; ++ + result = 0; + out: + return result; diff --git a/kexec-tools.spec b/kexec-tools.spec index 52e26e3..2dd02b7 100644 --- a/kexec-tools.spec +++ b/kexec-tools.spec @@ -1,6 +1,6 @@ Name: kexec-tools Version: 1.101 -Release: 31%{dist}.1 +Release: 32%{dist}.1 License: GPL Group: Applications/System Summary: The kexec/kdump userspace component. @@ -50,6 +50,7 @@ Patch501: kexec-tools-1.101-ppc-fixup.patch # Patch601: kexec-tools-1.101-Makefile.patch Patch602: kexec-tools-1.101-Makefile-kcp.patch +Patch603: kexec-tools-1.101-et-dyn.patch %description kexec-tools provides /sbin/kexec binary that facilitates a new @@ -69,6 +70,7 @@ rm -f ../kexec-tools-1.101.spec %patch501 -p1 %patch601 -p1 %patch602 -p1 +%patch603 -p1 cp $RPM_SOURCE_DIR/kdump.init . cp $RPM_SOURCE_DIR/kdump.sysconfig . @@ -127,11 +129,14 @@ exit 0 %doc TODO %changelog +* Mon Jul 31 2006 Neil Horman - 1.101-32%{dist}.1 +- added et-dyn patch to allow loading of relocatable kernels + * Thu Jul 27 2006 Neil Horman - 1.101-30%{dist}.1 --fixing up missing patch to kdump.init +- fixing up missing patch to kdump.init * Wed Jul 19 2006 Neil Horman - 1.101-30%{dist}.1 --add kexec frontend (bz 197695) +- add kexec frontend (bz 197695) * Wed Jul 12 2006 Jesse Keating - 1.101-29%{dist}.1 - rebuild