OBS User unknown 2007-12-10 23:23:17 +00:00 committed by Git OBS Bridge
parent 1b3d4ace7e
commit 3100679c90
3 changed files with 189 additions and 1 deletions

View File

@ -0,0 +1,179 @@
From: Bernhard Walle <bwalle@suse.de>
Subject: [PATCH] Fix vmcoreinfo generation on 32bit hosts for 64bit kernels
This bug fixes the generation of vmcoreinfo files on 32bit hosts for ELF64
files, i.e. 64bit kernels. The concrete problem was PPC64 which is built in a
32bit environment at SUSE.
Signed-off-by: Bernhard Walle <bwalle@suse.de>
---
makedumpfile.c | 37 ++++++++++++++++++-----------------
makedumpfile.h | 60 ++++++++++++++++++++++++++++-----------------------------
2 files changed, 49 insertions(+), 48 deletions(-)
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -123,7 +123,7 @@ vaddr_to_offset_general(unsigned long lo
* It is useful at few calls like get_str_osrelease_from_vmlinux().
*/
off_t
-vaddr_to_offset_slow(int fd, char *filename, unsigned long vaddr)
+vaddr_to_offset_slow(int fd, char *filename, unsigned long long vaddr)
{
off_t offset = 0;
int i, phnum, num_load, flag_elf64, elf_format;
@@ -170,6 +170,7 @@ vaddr_to_offset_slow(int fd, char *filen
break;
}
}
+
return offset;
}
@@ -937,11 +938,11 @@ out:
return ret;
}
-unsigned long
+unsigned long long
get_symbol_addr(char *symname)
{
int i;
- unsigned long symbol = NOT_FOUND_SYMBOL;
+ unsigned long long symbol = NOT_FOUND_SYMBOL;
Elf *elfd = NULL;
GElf_Shdr shdr;
GElf_Sym sym;
@@ -1900,7 +1901,7 @@ int
get_str_osrelease_from_vmlinux()
{
struct utsname system_utsname;
- unsigned long utsname;
+ unsigned long long utsname;
off_t offset;
const off_t failed = (off_t)-1;
@@ -1919,7 +1920,7 @@ get_str_osrelease_from_vmlinux()
dwarf_info.vmlinux_name, utsname);
if (!offset) {
- ERRMSG("Can't convert vaddr (%lx) of utsname to an offset.\n",
+ ERRMSG("Can't convert vaddr (%llx) of utsname to an offset.\n",
utsname);
return FALSE;
}
@@ -5431,19 +5432,19 @@ show_data_xen()
* Show data for debug
*/
MSG("\n");
- MSG("SYMBOL(dom_xen): %lx\n", SYMBOL(dom_xen));
- MSG("SYMBOL(dom_io): %lx\n", SYMBOL(dom_io));
- MSG("SYMBOL(domain_list): %lx\n", SYMBOL(domain_list));
- MSG("SYMBOL(xen_heap_start): %lx\n", SYMBOL(xen_heap_start));
- MSG("SYMBOL(frame_table): %lx\n", SYMBOL(frame_table));
- MSG("SYMBOL(alloc_bitmap): %lx\n", SYMBOL(alloc_bitmap));
- MSG("SYMBOL(max_page): %lx\n", SYMBOL(max_page));
- MSG("SYMBOL(pgd_l2): %lx\n", SYMBOL(pgd_l2));
- MSG("SYMBOL(pgd_l3): %lx\n", SYMBOL(pgd_l3));
- MSG("SYMBOL(pgd_l4): %lx\n", SYMBOL(pgd_l4));
- MSG("SYMBOL(xenheap_phys_end): %lx\n", SYMBOL(xenheap_phys_end));
- MSG("SYMBOL(xen_pstart): %lx\n", SYMBOL(xen_pstart));
- MSG("SYMBOL(frametable_pg_dir): %lx\n", SYMBOL(frametable_pg_dir));
+ MSG("SYMBOL(dom_xen): %llx\n", SYMBOL(dom_xen));
+ MSG("SYMBOL(dom_io): %llx\n", SYMBOL(dom_io));
+ MSG("SYMBOL(domain_list): %llx\n", SYMBOL(domain_list));
+ MSG("SYMBOL(xen_heap_start): %llx\n", SYMBOL(xen_heap_start));
+ MSG("SYMBOL(frame_table): %llx\n", SYMBOL(frame_table));
+ MSG("SYMBOL(alloc_bitmap): %llx\n", SYMBOL(alloc_bitmap));
+ MSG("SYMBOL(max_page): %llx\n", SYMBOL(max_page));
+ MSG("SYMBOL(pgd_l2): %llx\n", SYMBOL(pgd_l2));
+ MSG("SYMBOL(pgd_l3): %llx\n", SYMBOL(pgd_l3));
+ MSG("SYMBOL(pgd_l4): %llx\n", SYMBOL(pgd_l4));
+ MSG("SYMBOL(xenheap_phys_end): %llx\n", SYMBOL(xenheap_phys_end));
+ MSG("SYMBOL(xen_pstart): %llx\n", SYMBOL(xen_pstart));
+ MSG("SYMBOL(frametable_pg_dir): %llx\n", SYMBOL(frametable_pg_dir));
MSG("SIZE(page_info): %ld\n", SIZE(page_info));
MSG("OFFSET(page_info.count_info): %ld\n", OFFSET(page_info.count_info));
--- a/makedumpfile.h
+++ b/makedumpfile.h
@@ -258,7 +258,7 @@ do { \
#define WRITE_SYMBOL(str_symbol, symbol) \
do { \
if (SYMBOL(symbol) != NOT_FOUND_SYMBOL) { \
- fprintf(info->file_vmcoreinfo, "%s%lx\n", \
+ fprintf(info->file_vmcoreinfo, "%s%llx\n", \
STR_SYMBOL(str_symbol), SYMBOL(symbol)); \
} \
} while (0)
@@ -790,39 +790,39 @@ struct vm_table {
extern struct vm_table vt;
struct symbol_table {
- unsigned long mem_map;
- unsigned long mem_section;
- unsigned long pkmap_count;
- unsigned long pkmap_count_next;
- unsigned long system_utsname;
- unsigned long init_uts_ns;
- unsigned long _stext;
- unsigned long swapper_pg_dir;
- unsigned long init_level4_pgt;
- unsigned long phys_base;
- unsigned long node_online_map;
- unsigned long node_states;
- unsigned long node_memblk;
- unsigned long node_data;
- unsigned long pgdat_list;
- unsigned long contig_page_data;
+ unsigned long long mem_map;
+ unsigned long long mem_section;
+ unsigned long long pkmap_count;
+ unsigned long long pkmap_count_next;
+ unsigned long long system_utsname;
+ unsigned long long init_uts_ns;
+ unsigned long long _stext;
+ unsigned long long swapper_pg_dir;
+ unsigned long long init_level4_pgt;
+ unsigned long long phys_base;
+ unsigned long long node_online_map;
+ unsigned long long node_states;
+ unsigned long long node_memblk;
+ unsigned long long node_data;
+ unsigned long long pgdat_list;
+ unsigned long long contig_page_data;
/*
* for Xen extraction
*/
- unsigned long dom_xen;
- unsigned long dom_io;
- unsigned long domain_list;
- unsigned long frame_table;
- unsigned long xen_heap_start;
- unsigned long pgd_l2;
- unsigned long pgd_l3;
- unsigned long pgd_l4;
- unsigned long xenheap_phys_end;
- unsigned long xen_pstart;
- unsigned long frametable_pg_dir;
- unsigned long max_page;
- unsigned long alloc_bitmap;
+ unsigned long long dom_xen;
+ unsigned long long dom_io;
+ unsigned long long domain_list;
+ unsigned long long frame_table;
+ unsigned long long xen_heap_start;
+ unsigned long long pgd_l2;
+ unsigned long long pgd_l3;
+ unsigned long long pgd_l4;
+ unsigned long long xenheap_phys_end;
+ unsigned long long xen_pstart;
+ unsigned long long frametable_pg_dir;
+ unsigned long long max_page;
+ unsigned long long alloc_bitmap;
};
struct size_table {

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Mon Dec 10 18:23:53 CET 2007 - bwalle@suse.de
- Fix generation of vmcoreinfo for ELF64 kernels on 32bit machines
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Nov 29 13:41:09 CET 2007 - bwalle@suse.de Thu Nov 29 13:41:09 CET 2007 - bwalle@suse.de

View File

@ -15,12 +15,13 @@ BuildRequires: gcc-c++ libdw-devel libdw1 libelf-devel libelf0 libelf1 zlib-dev
%define elfutils_version 0.124 %define elfutils_version 0.124
License: GPL v2 or later License: GPL v2 or later
Version: 1.2.3 Version: 1.2.3
Release: 1 Release: 4
Summary: Partial kernel dump Summary: Partial kernel dump
Group: System/Kernel Group: System/Kernel
Url: https://sourceforge.net/projects/makedumpfile/ Url: https://sourceforge.net/projects/makedumpfile/
Source: makedumpfile-%{version}.tar.bz2 Source: makedumpfile-%{version}.tar.bz2
Patch: makedumpfile-coptflags.diff Patch: makedumpfile-coptflags.diff
Patch1: makedumpfile-fix-64bit-on-32bit
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description %description
@ -38,6 +39,7 @@ Authors:
%prep %prep
%setup -n makedumpfile -q %setup -n makedumpfile -q
%patch -p1 %patch -p1
%patch1 -p1
%build %build
make COPTFLAGS="$RPM_OPT_FLAGS" make COPTFLAGS="$RPM_OPT_FLAGS"
@ -59,6 +61,8 @@ install -c -m 0644 makedumpfile.8 $RPM_BUILD_ROOT%{_mandir}/man8
/bin/* /bin/*
%changelog %changelog
* Mon Dec 10 2007 - bwalle@suse.de
- Fix generation of vmcoreinfo for ELF64 kernels on 32bit machines
* Thu Nov 29 2007 - bwalle@suse.de * Thu Nov 29 2007 - bwalle@suse.de
- updated to 1.2.3 - updated to 1.2.3
o Add the filtering feature for free_pages of linux-2.6.24. o Add the filtering feature for free_pages of linux-2.6.24.