From 3e5f3d0d8d8a81d16609f776990b8c79bf0f4246 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 02 2021 20:45:46 +0000 Subject: import crash-7.3.0-6.el9 --- diff --git a/.crash.metadata b/.crash.metadata new file mode 100644 index 0000000..1238fca --- /dev/null +++ b/.crash.metadata @@ -0,0 +1,2 @@ +35a06244e58606ebf2b5612fbfcb51301bd5877a SOURCES/crash-7.3.0.tar.gz +026f4c9e1c8152a2773354551c523acd32d7f00e SOURCES/gdb-7.6.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..169176a --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/crash-7.3.0.tar.gz +SOURCES/gdb-7.6.tar.gz diff --git a/SOURCES/0001-Fix-for-kmem-s-S-option-on-Linux-5.7-and-later-kerne.patch b/SOURCES/0001-Fix-for-kmem-s-S-option-on-Linux-5.7-and-later-kerne.patch new file mode 100644 index 0000000..fd8b759 --- /dev/null +++ b/SOURCES/0001-Fix-for-kmem-s-S-option-on-Linux-5.7-and-later-kerne.patch @@ -0,0 +1,58 @@ +From 647a5c33e1c94054d7b63168cd6c12901591cb77 Mon Sep 17 00:00:00 2001 +From: Lianbo Jiang +Date: Thu, 27 May 2021 18:02:11 +0800 +Subject: [PATCH] Fix for "kmem -s|-S" option on Linux 5.7 and later kernels + +Linux 5.7 and later kernels that contain kernel commit 1ad53d9fa3f6 +("slub: improve bit diffusion for freelist ptr obfuscation") changed +the calculation formula in the freelist_ptr(), which added a swab() +call to mix bits a little more. When kernel is configured with the +"CONFIG_SLAB_FREELIST_HARDENED=y", without the patch, the "kmem -s|-S" +options display wrong statistics and state whether slab objects are +in use or free and can print the following errors: + + crash> kmem -s + CACHE OBJSIZE ALLOCATED TOTAL SLABS SSIZE NAME + 87201e00 528 0 0 0 8k xfs_dqtrx + 87201f00 496 0 0 0 8k xfs_dquot + kmem: xfs_buf: slab: 37202e6e900 invalid freepointer: b844bab900001d70 + kmem: xfs_buf: slab: 3720250fd80 invalid freepointer: b8603f9400001370 + ... + +Signed-off-by: Lianbo Jiang +--- + memory.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/memory.c b/memory.c +index 8c6bbe409922..a3cf8a86728d 100644 +--- a/memory.c ++++ b/memory.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + + struct meminfo { /* general purpose memory information structure */ + ulong cache; /* used by the various memory searching/dumping */ +@@ -19336,10 +19337,14 @@ count_free_objects(struct meminfo *si, ulong freelist) + static ulong + freelist_ptr(struct meminfo *si, ulong ptr, ulong ptr_addr) + { +- if (VALID_MEMBER(kmem_cache_random)) ++ if (VALID_MEMBER(kmem_cache_random)) { + /* CONFIG_SLAB_FREELIST_HARDENED */ ++ ++ if (THIS_KERNEL_VERSION >= LINUX(5,7,0)) ++ ptr_addr = (sizeof(long) == 8) ? bswap_64(ptr_addr) ++ : bswap_32(ptr_addr); + return (ptr ^ si->random ^ ptr_addr); +- else ++ } else + return ptr; + } + +-- +2.30.2 + diff --git a/SOURCES/0001-Handle-task_struct-state-member-changes-for-kernels-.patch b/SOURCES/0001-Handle-task_struct-state-member-changes-for-kernels-.patch new file mode 100644 index 0000000..ef66c25 --- /dev/null +++ b/SOURCES/0001-Handle-task_struct-state-member-changes-for-kernels-.patch @@ -0,0 +1,76 @@ +From 8f8314dcaad34983d1d7b8f828a9dad65ae4073d Mon Sep 17 00:00:00 2001 +From: Alexander Egorenkov +Date: Tue, 29 Jun 2021 08:39:00 +0200 +Subject: [PATCH] Handle task_struct state member changes for kernels >= + 5.14-rc1 + +Kernel commit 2f064a59a11ff9bc22e52e9678bc601404c7cb34 ("sched: Change +task_struct::state") renamed the member state of task_struct to __state +and its type changed from long to unsigned int. Without the patch, +crash fails to start up with the following error: + + crash: invalid structure member offset: task_struct_state + FILE: task.c LINE: 5929 FUNCTION: task_state() + +Signed-off-by: Alexander Egorenkov +--- + defs.h | 1 + + symbols.c | 1 + + task.c | 10 +++++++++- + 3 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/defs.h b/defs.h +index 68d29bd28719..a3f6aa3a7ad5 100644 +--- a/defs.h ++++ b/defs.h +@@ -2300,6 +2300,7 @@ struct size_table { /* stash of commonly-used sizes */ + long printk_info; + long printk_ringbuffer; + long prb_desc; ++ long task_struct_state; + }; + + struct array_table { +diff --git a/symbols.c b/symbols.c +index 370d4c3e8ac0..af1741f44777 100644 +--- a/symbols.c ++++ b/symbols.c +@@ -10672,6 +10672,7 @@ dump_offset_table(char *spec, ulong makestruct) + SIZE(page_cache_bucket)); + fprintf(fp, " pt_regs: %ld\n", SIZE(pt_regs)); + fprintf(fp, " task_struct: %ld\n", SIZE(task_struct)); ++ fprintf(fp, " task_struct_state: %ld\n", SIZE(task_struct_state)); + fprintf(fp, " task_struct_flags: %ld\n", SIZE(task_struct_flags)); + fprintf(fp, " task_struct_policy: %ld\n", SIZE(task_struct_policy)); + fprintf(fp, " thread_info: %ld\n", SIZE(thread_info)); +diff --git a/task.c b/task.c +index 36cf259e5d7b..672b41697e75 100644 +--- a/task.c ++++ b/task.c +@@ -297,6 +297,11 @@ task_init(void) + } + + MEMBER_OFFSET_INIT(task_struct_state, "task_struct", "state"); ++ MEMBER_SIZE_INIT(task_struct_state, "task_struct", "state"); ++ if (INVALID_MEMBER(task_struct_state)) { ++ MEMBER_OFFSET_INIT(task_struct_state, "task_struct", "__state"); ++ MEMBER_SIZE_INIT(task_struct_state, "task_struct", "__state"); ++ } + MEMBER_OFFSET_INIT(task_struct_exit_state, "task_struct", "exit_state"); + MEMBER_OFFSET_INIT(task_struct_pid, "task_struct", "pid"); + MEMBER_OFFSET_INIT(task_struct_comm, "task_struct", "comm"); +@@ -5926,7 +5931,10 @@ task_state(ulong task) + if (!tt->last_task_read) + return 0; + +- state = ULONG(tt->task_struct + OFFSET(task_struct_state)); ++ if (SIZE(task_struct_state) == sizeof(ulong)) ++ state = ULONG(tt->task_struct + OFFSET(task_struct_state)); ++ else ++ state = UINT(tt->task_struct + OFFSET(task_struct_state)); + exit_state = VALID_MEMBER(task_struct_exit_state) ? + ULONG(tt->task_struct + OFFSET(task_struct_exit_state)) : 0; + +-- +2.30.2 + diff --git a/SOURCES/0001-arm64-rename-ARM64_PAGE_OFFSET_ACTUAL-to-ARM64_FLIP_.patch b/SOURCES/0001-arm64-rename-ARM64_PAGE_OFFSET_ACTUAL-to-ARM64_FLIP_.patch new file mode 100644 index 0000000..6d91794 --- /dev/null +++ b/SOURCES/0001-arm64-rename-ARM64_PAGE_OFFSET_ACTUAL-to-ARM64_FLIP_.patch @@ -0,0 +1,61 @@ +From 5719afc7a40868418405a87a2711088556e68a3b Mon Sep 17 00:00:00 2001 +From: Pingfan Liu +Date: Fri, 2 Jul 2021 10:14:21 +0800 +Subject: [PATCH 1/4] arm64: rename ARM64_PAGE_OFFSET_ACTUAL to + ARM64_FLIP_PAGE_OFFSET_ACTUAL + +Reflect the flipped layout of kernel VA, which is introduced by +kernel commit 14c127c957c1 ("arm64: mm: Flip kernel VA space"). + +Signed-off-by: Pingfan Liu +--- + arm64.c | 10 ++++++---- + defs.h | 3 ++- + 2 files changed, 8 insertions(+), 5 deletions(-) + +diff --git a/arm64.c b/arm64.c +index 8934961..9fe1a4a 100644 +--- a/arm64.c ++++ b/arm64.c +@@ -217,10 +217,12 @@ arm64_init(int when) + arm64_calc_VA_BITS(); + arm64_calc_KERNELPACMASK(); + ms = machdep->machspec; ++ ++ /* vabits_actual introduced after mm flip, so it should be flipped layout */ + if (ms->VA_BITS_ACTUAL) { +- ms->page_offset = ARM64_PAGE_OFFSET_ACTUAL; +- machdep->identity_map_base = ARM64_PAGE_OFFSET_ACTUAL; +- machdep->kvbase = ARM64_PAGE_OFFSET_ACTUAL; ++ ms->page_offset = ARM64_FLIP_PAGE_OFFSET_ACTUAL; ++ machdep->identity_map_base = ARM64_FLIP_PAGE_OFFSET_ACTUAL; ++ machdep->kvbase = ARM64_FLIP_PAGE_OFFSET_ACTUAL; + ms->userspace_top = ARM64_USERSPACE_TOP_ACTUAL; + } else { + ms->page_offset = ARM64_PAGE_OFFSET; +@@ -401,7 +403,7 @@ arm64_init(int when) + fprintf(fp, "CONFIG_ARM64_VA_BITS: %ld\n", ms->CONFIG_ARM64_VA_BITS); + fprintf(fp, " VA_BITS_ACTUAL: %ld\n", ms->VA_BITS_ACTUAL); + fprintf(fp, "(calculated) VA_BITS: %ld\n", ms->VA_BITS); +- fprintf(fp, " PAGE_OFFSET: %lx\n", ARM64_PAGE_OFFSET_ACTUAL); ++ fprintf(fp, " PAGE_OFFSET: %lx\n", ARM64_FLIP_PAGE_OFFSET_ACTUAL); + fprintf(fp, " VA_START: %lx\n", ms->VA_START); + fprintf(fp, " modules: %lx - %lx\n", ms->modules_vaddr, ms->modules_end); + fprintf(fp, " vmalloc: %lx - %lx\n", ms->vmalloc_start_addr, ms->vmalloc_end); +diff --git a/defs.h b/defs.h +index 5d32954..eb7ce6a 100644 +--- a/defs.h ++++ b/defs.h +@@ -3233,7 +3233,8 @@ typedef signed int s32; + + #define ARM64_PAGE_OFFSET ((0xffffffffffffffffUL) \ + << (machdep->machspec->VA_BITS - 1)) +-#define ARM64_PAGE_OFFSET_ACTUAL ((0xffffffffffffffffUL) \ ++/* kernels >= v5.4 the kernel VA space is flipped */ ++#define ARM64_FLIP_PAGE_OFFSET_ACTUAL ((0xffffffffffffffffUL) \ + - ((1UL) << machdep->machspec->VA_BITS_ACTUAL) + 1) + + #define ARM64_USERSPACE_TOP ((1UL) << machdep->machspec->VA_BITS) +-- +2.29.2 + diff --git a/SOURCES/0001-memory-Add-support-for-SECTION_TAINT_ZONE_DEVICE-fla.patch b/SOURCES/0001-memory-Add-support-for-SECTION_TAINT_ZONE_DEVICE-fla.patch new file mode 100644 index 0000000..fe76553 --- /dev/null +++ b/SOURCES/0001-memory-Add-support-for-SECTION_TAINT_ZONE_DEVICE-fla.patch @@ -0,0 +1,101 @@ +From 0b5435e10161345cf713ed447a155a611a1b408b Mon Sep 17 00:00:00 2001 +From: Kazuhito Hagio +Date: Wed, 26 May 2021 17:33:13 +0900 +Subject: [PATCH 1/2] memory: Add support for SECTION_TAINT_ZONE_DEVICE flag + +Fix for "kmem -n|-p" options on Linux 5.12-rc1 and later kernels +that contain commit 1f90a3477df3f ("mm: teach pfn_to_online_page() +about ZONE_DEVICE section collisions"). Without the patch, the +"kmem -n" option incorrectly shows mem_map addresses containing the +flag in bit 5 as part of the virtual address, and also the "kmem -p" +option shows page structures at wrong position. With the patch, +the "kmem -n" option displays the new "D" state flag. + +Without the patch: + crash> kmem -n + ... + NR SECTION CODED_MEM_MAP MEM_MAP STATE PFN + 1040 ffff9edf3ffd4100 ffffe2bcc0000010 ffffe2bd42000010 PMOE 34078720 + ^ ^ + crash> kmem -p + PAGE PHYSICAL MAPPING INDEX CNT FLAGS + ffffe2bd42000010 2080000000 400040 1ffffffff 9961471 dead000000000122 referenced,active,error + ffffe2bd42000050 2080001000 800080 1ffffffff 9961471 dead000000000122 referenced,active,error + ffffe2bd42000090 2080002000 0 1ffffffff 9961471 dead000000000122 referenced,active,error + ^^ +With the patch: + crash> kmem -n + ... + NR SECTION CODED_MEM_MAP MEM_MAP STATE PFN + 1040 ffff9edf3ffd4100 ffffe2bcc0000000 ffffe2bd42000000 PMOED 34078720 + + crash> kmem -p + PAGE PHYSICAL MAPPING INDEX CNT FLAGS + ffffe2bd42000000 2080000000 ffff9ebfc0044100 0 1 97ffffc0000200 slab + ffffe2bd42000040 2080001000 ffff9ebfc0044400 0 1 97ffffc0000200 slab + ffffe2bd42000080 2080002000 0 0 1 97ffffc0000000 + +Signed-off-by: Kazuhito Hagio +--- + help.c | 11 +++++++---- + memory.c | 15 +++++++++------ + 2 files changed, 16 insertions(+), 10 deletions(-) + +diff --git a/help.c b/help.c +index e0c84087add3..9649cc81fa36 100644 +--- a/help.c ++++ b/help.c +@@ -6584,10 +6584,13 @@ char *help_kmem[] = { + " kernels, the vm_zone_stat, vm_node_stat and vm_numa_stat tables,", + " the cumulative page_states counter values if they exist, and/or ", + " the cumulative, vm_event_states counter values if they exist.", +-" -n display memory node, memory section, and memory block data", +-" and state; the state of each memory section state is encoded", +-" as \"P\", \"M\", \"O\" and/or \"E\", meaning SECTION_MARKED_PRESENT,", +-" SECTION_HAS_MEM_MAP, SECTION_IS_ONLINE and SECTION_IS_EARLY.", ++" -n display memory node, memory section, memory block data and state;", ++" the state of each memory section is shown as the following flags:", ++" \"P\": SECTION_MARKED_PRESENT", ++" \"M\": SECTION_HAS_MEM_MAP", ++" \"O\": SECTION_IS_ONLINE", ++" \"E\": SECTION_IS_EARLY", ++" \"D\": SECTION_TAINT_ZONE_DEVICE", + " -z displays per-zone memory statistics.", + " -o displays each cpu's offset value that is added to per-cpu symbol", + " values to translate them into kernel virtual addresses.", +diff --git a/memory.c b/memory.c +index a3cf8a86728d..2c4f9790f498 100644 +--- a/memory.c ++++ b/memory.c +@@ -17270,12 +17270,13 @@ nr_to_section(ulong nr) + * which results in PFN_SECTION_SHIFT equal 6. + * To sum it up, at least 6 bits are available. + */ +-#define SECTION_MARKED_PRESENT (1UL<<0) +-#define SECTION_HAS_MEM_MAP (1UL<<1) +-#define SECTION_IS_ONLINE (1UL<<2) +-#define SECTION_IS_EARLY (1UL<<3) +-#define SECTION_MAP_LAST_BIT (1UL<<4) +-#define SECTION_MAP_MASK (~(SECTION_MAP_LAST_BIT-1)) ++#define SECTION_MARKED_PRESENT (1UL<<0) ++#define SECTION_HAS_MEM_MAP (1UL<<1) ++#define SECTION_IS_ONLINE (1UL<<2) ++#define SECTION_IS_EARLY (1UL<<3) ++#define SECTION_TAINT_ZONE_DEVICE (1UL<<4) ++#define SECTION_MAP_LAST_BIT (1UL<<5) ++#define SECTION_MAP_MASK (~(SECTION_MAP_LAST_BIT-1)) + + + int +@@ -17373,6 +17374,8 @@ fill_mem_section_state(ulong state, char *buf) + bufidx += sprintf(buf + bufidx, "%s", "O"); + if (state & SECTION_IS_EARLY) + bufidx += sprintf(buf + bufidx, "%s", "E"); ++ if (state & SECTION_TAINT_ZONE_DEVICE) ++ bufidx += sprintf(buf + bufidx, "%s", "D"); + } + + void +-- +2.30.2 + diff --git a/SOURCES/0002-arm64-assign-page_offset-with-VA_BITS-kernel-configu.patch b/SOURCES/0002-arm64-assign-page_offset-with-VA_BITS-kernel-configu.patch new file mode 100644 index 0000000..70af173 --- /dev/null +++ b/SOURCES/0002-arm64-assign-page_offset-with-VA_BITS-kernel-configu.patch @@ -0,0 +1,56 @@ +From 167d37e347fe35c6f7db826e8539e192c4375564 Mon Sep 17 00:00:00 2001 +From: Pingfan Liu +Date: Fri, 2 Jul 2021 10:14:22 +0800 +Subject: [PATCH 2/4] arm64: assign page_offset with VA_BITS kernel + configuration value + +On RHEL9, crash hits a bug when executing "crash /proc/kcore": +seek error: kernel virtual address: ffff6a0f3fff0000 type: "pmd page" + +The kernel virtual address does not vary with vabits_actual, instead, +is determined by configuration value. But crash does not observe this +fact. + +Since vabits_actual related kernel commit is introduced after arm64 +mm layout flip commit, so changes are safe under the condition if +(ms->VA_BITS_ACTUAL), and keep the else branch untouched. + +Signed-off-by: Pingfan Liu +--- + arm64.c | 7 ++++--- + defs.h | 1 + + 2 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/arm64.c b/arm64.c +index 9fe1a4a..149db36 100644 +--- a/arm64.c ++++ b/arm64.c +@@ -220,9 +220,10 @@ arm64_init(int when) + + /* vabits_actual introduced after mm flip, so it should be flipped layout */ + if (ms->VA_BITS_ACTUAL) { +- ms->page_offset = ARM64_FLIP_PAGE_OFFSET_ACTUAL; +- machdep->identity_map_base = ARM64_FLIP_PAGE_OFFSET_ACTUAL; +- machdep->kvbase = ARM64_FLIP_PAGE_OFFSET_ACTUAL; ++ ms->page_offset = ARM64_FLIP_PAGE_OFFSET; ++ /* useless on arm64 */ ++ machdep->identity_map_base = ARM64_FLIP_PAGE_OFFSET; ++ machdep->kvbase = ARM64_FLIP_PAGE_OFFSET; + ms->userspace_top = ARM64_USERSPACE_TOP_ACTUAL; + } else { + ms->page_offset = ARM64_PAGE_OFFSET; +diff --git a/defs.h b/defs.h +index eb7ce6a..b7b20af 100644 +--- a/defs.h ++++ b/defs.h +@@ -3234,6 +3234,7 @@ typedef signed int s32; + #define ARM64_PAGE_OFFSET ((0xffffffffffffffffUL) \ + << (machdep->machspec->VA_BITS - 1)) + /* kernels >= v5.4 the kernel VA space is flipped */ ++#define ARM64_FLIP_PAGE_OFFSET (-(1UL) << machdep->machspec->CONFIG_ARM64_VA_BITS) + #define ARM64_FLIP_PAGE_OFFSET_ACTUAL ((0xffffffffffffffffUL) \ + - ((1UL) << machdep->machspec->VA_BITS_ACTUAL) + 1) + +-- +2.29.2 + diff --git a/SOURCES/0002-memory-Fix-for-kmem-n-option-to-display-NID-correctl.patch b/SOURCES/0002-memory-Fix-for-kmem-n-option-to-display-NID-correctl.patch new file mode 100644 index 0000000..6ac3c71 --- /dev/null +++ b/SOURCES/0002-memory-Fix-for-kmem-n-option-to-display-NID-correctl.patch @@ -0,0 +1,48 @@ +From ec44b902d3467e7b86ee39e2d7d472b9cb202148 Mon Sep 17 00:00:00 2001 +From: Kazuhito Hagio +Date: Mon, 31 May 2021 14:08:28 +0900 +Subject: [PATCH 2/2] memory: Fix for "kmem -n" option to display NID correctly + +The nid member of struct memory_block is a 4-byte integer, but read +and printed as a 8-byte integer on 64-bit machines. Without the +patch, the option displays wrong NIDs. + + crash> kmem -n + ... + MEM_BLOCK NAME PHYSICAL RANGE NODE STATE START_SECTION_NO + ffff9edeff2b9400 memory0 0 - 7fffffff 14195095130662240256 ONLINE 0 + ffff9edeff2bb400 memory2 100000000 - 17fffffff 14195094718345379840 ONLINE 32 + +The issue seems to appear on Linux 5.12 and later kernels that contain +commit e9a2e48e8704c ("drivers/base/memory: don't store phys_device +in memory blocks"), which changed the arrangement of the members of +struct memory_block. + +Signed-off-by: Kazuhito Hagio +--- + memory.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/memory.c b/memory.c +index 2c4f9790f498..cbe90eebe748 100644 +--- a/memory.c ++++ b/memory.c +@@ -17568,13 +17568,13 @@ print_memory_block(ulong memory_block) + + if (MEMBER_EXISTS("memory_block", "nid")) { + readmem(memory_block + OFFSET(memory_block_nid), KVADDR, &nid, +- sizeof(void *), "memory_block nid", FAULT_ON_ERROR); ++ sizeof(int), "memory_block nid", FAULT_ON_ERROR); + fprintf(fp, " %s %s %s %s %s %s\n", + mkstring(buf1, VADDR_PRLEN, LJUST|LONG_HEX, + MKSTR(memory_block)), + mkstring(buf2, 12, CENTER, name), + parangebuf, +- mkstring(buf5, strlen("NODE"), CENTER|LONG_DEC, ++ mkstring(buf5, strlen("NODE"), CENTER|INT_DEC, + MKSTR(nid)), + mkstring(buf6, strlen("OFFLINE"), LJUST, + statebuf), +-- +2.30.2 + diff --git a/SOURCES/0003-arm64-use-dedicated-bits-to-record-the-VA-space-layo.patch b/SOURCES/0003-arm64-use-dedicated-bits-to-record-the-VA-space-layo.patch new file mode 100644 index 0000000..dfb3067 --- /dev/null +++ b/SOURCES/0003-arm64-use-dedicated-bits-to-record-the-VA-space-layo.patch @@ -0,0 +1,83 @@ +From bf1379a8b6ff8d6a8fa12978f7194f15f85c4380 Mon Sep 17 00:00:00 2001 +From: Pingfan Liu +Date: Fri, 2 Jul 2021 10:14:23 +0800 +Subject: [PATCH 3/4] arm64: use dedicated bits to record the VA space layout + changes + +arm64 memory layout experiences big changes due to the following kernel +commits in date descending order: + 5. 7bc1a0f9e176 arm64: mm: use single quantity to represent the PA to VA translation + 4. b6d00d47e81a arm64: mm: Introduce 52-bit Kernel VAs + 3. 5383cc6efed1 arm64: mm: Introduce vabits_actual + 2. 14c127c957c1 arm64: mm: Flip kernel VA space + 1. f80fb3a3d508 arm64: add support for kernel ASLR + +For 1, crash has already used NEW_VMEMMAP to trace it. +For 2, crash lacks a flag to tag it and handle it differently. +For 3, two important kernel variables vabits_actual and physvirt_offset +are introduced. +For 4, since it comes immediately after 3, crash-utility does not need +to distinguish it. +For 5, kernel variable phyvirt_offset is removed + +These changes have effects on PTOV()/VTOP() formula. So introducing +two bits HAS_PHYSVIRT_OFFSET and FLIPPED_VM as hint to apply different +formula. + +Signed-off-by: Pingfan Liu +--- + arm64.c | 10 ++++++++++ + defs.h | 2 ++ + 2 files changed, 12 insertions(+) + +diff --git a/arm64.c b/arm64.c +index 149db36..b04369f 100644 +--- a/arm64.c ++++ b/arm64.c +@@ -563,6 +563,10 @@ arm64_dump_machdep_table(ulong arg) + fprintf(fp, "%sMACHDEP_BT_TEXT", others++ ? "|" : ""); + if (machdep->flags & NEW_VMEMMAP) + fprintf(fp, "%sNEW_VMEMMAP", others++ ? "|" : ""); ++ if (machdep->flags & FLIPPED_VM) ++ fprintf(fp, "%sFLIPPED_VM", others++ ? "|" : ""); ++ if (machdep->flags & HAS_PHYSVIRT_OFFSET) ++ fprintf(fp, "%sHAS_PHYSVIRT_OFFSET", others++ ? "|" : ""); + fprintf(fp, ")\n"); + + fprintf(fp, " kvbase: %lx\n", machdep->kvbase); +@@ -997,6 +1001,7 @@ arm64_calc_physvirt_offset(void) + if (READMEM(pc->mfd, &physvirt_offset, sizeof(physvirt_offset), + sp->value, sp->value - + machdep->machspec->kimage_voffset) > 0) { ++ machdep->flags |= HAS_PHYSVIRT_OFFSET; + ms->physvirt_offset = physvirt_offset; + } + } +@@ -3963,6 +3968,11 @@ arm64_calc_VA_BITS(void) + error(FATAL, "cannot determine VA_BITS_ACTUAL\n"); + } + ++ /* ++ * The mm flip commit is introduced before 52-bits VA, which is before the ++ * commit to export NUMBER(TCR_EL1_T1SZ) ++ */ ++ machdep->flags |= FLIPPED_VM; + return; + } + +diff --git a/defs.h b/defs.h +index b7b20af..eca145c 100644 +--- a/defs.h ++++ b/defs.h +@@ -3214,6 +3214,8 @@ typedef signed int s32; + #define NEW_VMEMMAP (0x80) + #define VM_L4_4K (0x100) + #define UNW_4_14 (0x200) ++#define FLIPPED_VM (0x400) ++#define HAS_PHYSVIRT_OFFSET (0x800) + + /* + * Get kimage_voffset from /dev/crash +-- +2.29.2 + diff --git a/SOURCES/0004-arm64-implement-switchable-PTOV-VTOP-for-kernels-5.1.patch b/SOURCES/0004-arm64-implement-switchable-PTOV-VTOP-for-kernels-5.1.patch new file mode 100644 index 0000000..8370c09 --- /dev/null +++ b/SOURCES/0004-arm64-implement-switchable-PTOV-VTOP-for-kernels-5.1.patch @@ -0,0 +1,165 @@ +From f53b73e8380bca054cebd2b61ff118c46609429b Mon Sep 17 00:00:00 2001 +From: Pingfan Liu +Date: Fri, 2 Jul 2021 10:14:24 +0800 +Subject: [PATCH 4/4] arm64: implement switchable PTOV()/VTOP() for kernels >= + 5.10 + +Crash encounters a bug like the following: + ... + SECTION_SIZE_BITS: 30 + CONFIG_ARM64_VA_BITS: 52 + VA_BITS_ACTUAL: 48 + (calculated) VA_BITS: 48 + PAGE_OFFSET: ffff000000000000 + VA_START: ffff800000000000 + modules: ffff800008000000 - ffff80000fffffff + vmalloc: ffff800010000000 - ffffffdfdffeffff + kernel image: ffff800010000000 - ffff800012750000 + vmemmap: ffffffdfffe00000 - ffffffffffffffff + + + + read_netdump: addr: ffff800011c53bc8 paddr: eb453bc8 cnt: 4 offset: 1c73bc8 + irq_stack_ptr: + type: 1, TYPE_CODE_PTR + target_typecode: 8, TYPE_CODE_INT + target_length: 8 + length: 8 + GNU_GET_DATATYPE[thread_union]: returned via gdb_error_hook + + + read_netdump: READ_ERROR: offset not found for paddr: fff1000bf79c0050 + crash: read error: kernel virtual address: ffff000b779c0050 type: "IRQ stack pointer" + ... + +Apparently, for a normal system, the 'paddr: fff1000bf79c0050' is +unreasonable. + +This bug connects with kernel commit 7bc1a0f9e176 ("arm64: mm: use +single quantity to represent the PA to VA translation"), which removed +physvirt_offset kernel variable and changed the PTOV()/VTOP() formulas. + +Implement switchable PTOV()/VTOP() to cope with different kernel +version. + +Signed-off-by: Pingfan Liu +--- + arm64.c | 37 +++++++++++++++++++++++++++++++++---- + defs.h | 9 ++++----- + 2 files changed, 37 insertions(+), 9 deletions(-) + +diff --git a/arm64.c b/arm64.c +index b04369f..d73d5c5 100644 +--- a/arm64.c ++++ b/arm64.c +@@ -994,8 +994,6 @@ arm64_calc_physvirt_offset(void) + ulong physvirt_offset; + struct syment *sp; + +- ms->physvirt_offset = ms->phys_offset - ms->page_offset; +- + if ((sp = kernel_symbol_search("physvirt_offset")) && + machdep->machspec->kimage_voffset) { + if (READMEM(pc->mfd, &physvirt_offset, sizeof(physvirt_offset), +@@ -1003,8 +1001,13 @@ arm64_calc_physvirt_offset(void) + machdep->machspec->kimage_voffset) > 0) { + machdep->flags |= HAS_PHYSVIRT_OFFSET; + ms->physvirt_offset = physvirt_offset; ++ return; + } + } ++ ++ /* Useless if no symbol 'physvirt_offset', just keep semantics */ ++ ms->physvirt_offset = ms->phys_offset - ms->page_offset; ++ + } + + static void +@@ -1051,6 +1054,7 @@ arm64_calc_phys_offset(void) + if (READMEM(pc->mfd, &phys_offset, sizeof(phys_offset), + vaddr, paddr) > 0) { + ms->phys_offset = phys_offset; ++ + return; + } + } +@@ -1178,6 +1182,21 @@ arm64_init_kernel_pgd(void) + vt->kernel_pgd[i] = value; + } + ++ulong arm64_PTOV(ulong paddr) ++{ ++ struct machine_specific *ms = machdep->machspec; ++ ++ /* ++ * Either older kernel before kernel has 'physvirt_offset' or newer ++ * kernel which removes 'physvirt_offset' has the same formula: ++ * #define __phys_to_virt(x) ((unsigned long)((x) - PHYS_OFFSET) | PAGE_OFFSET) ++ */ ++ if (!(machdep->flags & HAS_PHYSVIRT_OFFSET)) ++ return (paddr - ms->phys_offset) | PAGE_OFFSET; ++ else ++ return paddr - ms->physvirt_offset; ++} ++ + ulong + arm64_VTOP(ulong addr) + { +@@ -1188,8 +1207,18 @@ arm64_VTOP(ulong addr) + return addr - machdep->machspec->kimage_voffset; + } + +- if (addr >= machdep->machspec->page_offset) +- return addr + machdep->machspec->physvirt_offset; ++ if (addr >= machdep->machspec->page_offset) { ++ if (machdep->flags & HAS_PHYSVIRT_OFFSET) { ++ return addr + machdep->machspec->physvirt_offset; ++ } else { ++ /* ++ * Either older kernel before kernel has 'physvirt_offset' or newer ++ * kernel which removes 'physvirt_offset' has the same formula: ++ * #define __lm_to_phys(addr) (((addr) & ~PAGE_OFFSET) + PHYS_OFFSET) ++ */ ++ return (addr & ~PAGE_OFFSET) + machdep->machspec->phys_offset; ++ } ++ } + else if (machdep->machspec->kimage_voffset) + return addr - machdep->machspec->kimage_voffset; + else /* no randomness */ +diff --git a/defs.h b/defs.h +index eca145c..c91177a 100644 +--- a/defs.h ++++ b/defs.h +@@ -3092,11 +3092,6 @@ typedef u64 pte_t; + #define _64BIT_ + #define MACHINE_TYPE "ARM64" + +-#define PTOV(X) \ +- ((unsigned long)(X) - (machdep->machspec->physvirt_offset)) +- +-#define VTOP(X) arm64_VTOP((ulong)(X)) +- + #define USERSPACE_TOP (machdep->machspec->userspace_top) + #define PAGE_OFFSET (machdep->machspec->page_offset) + #define VMALLOC_START (machdep->machspec->vmalloc_start_addr) +@@ -3106,6 +3101,9 @@ typedef u64 pte_t; + #define MODULES_VADDR (machdep->machspec->modules_vaddr) + #define MODULES_END (machdep->machspec->modules_end) + ++#define PTOV(X) arm64_PTOV((ulong)(X)) ++#define VTOP(X) arm64_VTOP((ulong)(X)) ++ + #define IS_VMALLOC_ADDR(X) arm64_IS_VMALLOC_ADDR((ulong)(X)) + + #define PAGEBASE(X) (((ulong)(X)) & (ulong)machdep->pagemask) +@@ -5910,6 +5908,7 @@ void unwind_backtrace(struct bt_info *); + void arm64_init(int); + void arm64_dump_machdep_table(ulong); + ulong arm64_VTOP(ulong); ++ulong arm64_PTOV(ulong); + int arm64_IS_VMALLOC_ADDR(ulong); + ulong arm64_swp_type(ulong); + ulong arm64_swp_offset(ulong); +-- +2.29.2 + diff --git a/SOURCES/lzo_snappy.patch b/SOURCES/lzo_snappy.patch new file mode 100644 index 0000000..4075b06 --- /dev/null +++ b/SOURCES/lzo_snappy.patch @@ -0,0 +1,22 @@ +--- crash-7.3.0/diskdump.c.orig ++++ crash-7.3.0/diskdump.c +@@ -23,6 +23,8 @@ + * GNU General Public License for more details. + */ + ++#define LZO ++#define SNAPPY + #include "defs.h" + #include "diskdump.h" + #include "xen_dom0.h" +--- crash-7.3.0/Makefile.orig ++++ crash-7.3.0/Makefile +@@ -228,7 +228,7 @@ all: make_configure + gdb_merge: force + @if [ ! -f ${GDB}/README ]; then \ + make --no-print-directory gdb_unzip; fi +- @echo "${LDFLAGS} -lz -ldl -rdynamic" > ${GDB}/gdb/mergelibs ++ @echo "${LDFLAGS} -lz -llzo2 -lsnappy -ldl -rdynamic" > ${GDB}/gdb/mergelibs + @echo "../../${PROGRAM} ../../${PROGRAM}lib.a" > ${GDB}/gdb/mergeobj + @rm -f ${PROGRAM} + @if [ ! -f ${GDB}/config.status ]; then \ diff --git a/SPECS/crash.spec b/SPECS/crash.spec new file mode 100644 index 0000000..f7dec71 --- /dev/null +++ b/SPECS/crash.spec @@ -0,0 +1,534 @@ +# +# crash core analysis suite +# +Summary: Kernel analysis utility for live systems, netdump, diskdump, kdump, LKCD or mcore dumpfiles +Name: crash +Version: 7.3.0 +Release: 6%{?dist} +License: GPLv3 +Source0: https://github.com/crash-utility/crash/archive/crash-%{version}.tar.gz +Source1: http://ftp.gnu.org/gnu/gdb/gdb-7.6.tar.gz +URL: https://crash-utility.github.io +ExclusiveOS: Linux +ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le +BuildRequires: ncurses-devel zlib-devel lzo-devel snappy-devel bison +BuildRequires: gcc gcc-c++ +BuildRequires: make +Requires: binutils +Provides: bundled(libiberty) +Provides: bundled(gdb) = 7.6 +Patch0: lzo_snappy.patch +Patch1: 0001-Fix-for-kmem-s-S-option-on-Linux-5.7-and-later-kerne.patch +Patch2: 0001-memory-Add-support-for-SECTION_TAINT_ZONE_DEVICE-fla.patch +Patch3: 0002-memory-Fix-for-kmem-n-option-to-display-NID-correctl.patch +Patch4: 0001-arm64-rename-ARM64_PAGE_OFFSET_ACTUAL-to-ARM64_FLIP_.patch +Patch5: 0002-arm64-assign-page_offset-with-VA_BITS-kernel-configu.patch +Patch6: 0003-arm64-use-dedicated-bits-to-record-the-VA-space-layo.patch +Patch7: 0004-arm64-implement-switchable-PTOV-VTOP-for-kernels-5.1.patch +Patch8: 0001-Handle-task_struct-state-member-changes-for-kernels-.patch + +%description +The core analysis suite is a self-contained tool that can be used to +investigate either live systems, kernel core dumps created from the +netdump, diskdump and kdump packages from Red Hat Linux, the mcore kernel patch +offered by Mission Critical Linux, or the LKCD kernel patch. + +%package devel +Requires: %{name} = %{version}, zlib-devel +Summary: kernel crash analysis utility for live systems, netdump, diskdump, kdump, LKCD or mcore dumpfiles + +%description devel +The core analysis suite is a self-contained tool that can be used to +investigate either live systems, kernel core dumps created from the +netdump, diskdump and kdump packages from Red Hat Linux, the mcore kernel patch +offered by Mission Critical Linux, or the LKCD kernel patch. + +%prep +%setup -n %{name}-%{version} -q +%patch0 -p1 -b lzo_snappy.patch +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 + +%build +# This package has an internal copy of GDB which has broken configure code for +# INTDIV0_RAISES_SIGFPE and MUST_REINSTALL_SIGHANDLERS +# Updating that code properly seems nontrivial and best left to the package +# maintainer. +# Disable LTO +%define _lto_cflags %{nil} + +cp %{SOURCE1} . +make RPMPKG="%{version}-%{release}" CFLAGS="%{optflags}" LDFLAGS="%{build_ldflags}" + +%install +rm -rf %{buildroot} +mkdir -p %{buildroot}%{_bindir} +%make_install +mkdir -p %{buildroot}%{_mandir}/man8 +cp -p crash.8 %{buildroot}%{_mandir}/man8/crash.8 +mkdir -p %{buildroot}%{_includedir}/crash +chmod 0644 defs.h +cp -p defs.h %{buildroot}%{_includedir}/crash + +%files +%{_bindir}/crash +%{_mandir}/man8/crash.8* +%doc README COPYING3 + +%files devel +%{_includedir}/* + +%changelog +* Mon Aug 09 2021 Mohan Boddu - 7.3.0-6 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Thu Jul 22 2021 Lianbo Jiang - 7.3.0-5 +- Fix for handling task_struct state member changes(kernels >= 5.14-rc1) + +* Wed Jul 07 2021 Lianbo Jiang - 7.3.0-4 +- Fix memory layout for aarch64 + +* Mon Jul 05 2021 Lianbo Jiang - 7.3.0-3 +- Fix "kmem -n|-p" options display wrong values. + +* Fri Jun 11 2021 Lianbo Jiang - 7.3.0-2 +- Fix for "kmem -s|-S" option on Linux 5.7 and later kernels + +* Mon May 10 2021 Lianbo Jiang - 7.3.0-1 +- Rebase to upstream 7.3.0 + +* Thu Apr 15 2021 Mohan Boddu - 7.2.9-7 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Apr 13 2021 Lianbo Jiang - 7.2.9-6 +- Update to the latest upstream: commit <8dfc228b29ae> + +* Mon Mar 08 2021 Lianbo Jiang - 7.2.9-5 +- Fix Segmentation fault +- Update to the latest upstream: commit <9c0c6c1b3750> + +* Fri Feb 05 2021 Lianbo Jiang - 7.2.9-4 +- Update to the latest upstream: commit + +* Tue Jan 26 2021 Fedora Release Engineering - 7.2.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Dec 11 2020 Lianbo Jiang - 7.2.9-2 +- Add support for lockless ringbuffer + +* Wed Nov 25 2020 Lianbo Jiang - 7.2.9-1 +- Update to latest upstream release + +* Mon Jul 27 2020 Fedora Release Engineering - 7.2.8-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 13 2020 Tom Stellard - 7.2.8-4 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + +* Tue Jun 30 2020 Jeff Law - 7.2.8-3 +- Disable LTO + +* Fri Jan 31 2020 Dave Anderson - 7.2.8-2 +- Update to latest upstream release +- Fix aarch64 build for gcc-10 -fno-common + +* Tue Jan 28 2020 Fedora Release Engineering - 7.2.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Sep 23 2019 Dave Anderson - 7.2.7-1 +- Update to latest upstream release + +* Wed Jul 24 2019 Fedora Release Engineering - 7.2.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon May 6 2019 Dave Anderson - 7.2.6-1 +- Update to latest upstream release + +* Sun Feb 17 2019 Igor Gnatenko - 7.2.5-3 +- Rebuild for readline 8.0 + +* Thu Jan 31 2019 Fedora Release Engineering - 7.2.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jan 11 2019 Dave Anderson - 7.2.5-1 +- Update to latest upstream release + +* Mon Sep 24 2018 Dave Anderson - 7.2.4-1 +- Update to latest upstream release + +* Thu Jul 12 2018 Fedora Release Engineering - 7.2.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri May 18 2018 Dave Anderson - 7.2.3-1 +- Update to latest upstream release + +* Fri Feb 23 2018 Dave Anderson - 7.2.1-2 +- Use RPM build flags for LDFLAGS + +* Fri Feb 16 2018 Dave Anderson - 7.2.1-1 +- Update to latest upstream release + +* Wed Feb 07 2018 Fedora Release Engineering - 7.2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Mon Oct 2 2017 Dave Anderson - 7.2.0-1 +- Update to latest upstream release + +* Wed Aug 02 2017 Fedora Release Engineering - 7.1.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 7.1.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Apr 24 2017 Dave Anderson - 7.1.9-1 +- Update to latest upstream release + +* Thu Feb 23 2017 Dave Anderson - 7.1.8-1 +- Update to latest upstream release + +* Fri Feb 10 2017 Fedora Release Engineering - 7.1.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Jan 12 2017 Igor Gnatenko - 7.1.7-2 +- Rebuild for readline 7.x + +* Tue Dec 6 2016 Dave Anderson - 7.1.7-1 +- Update to latest upstream release + +* Fri Oct 14 2016 Dave Anderson - 7.1.6-1 +- Update to latest upstream release +- Fix for RHBZ#1044119 - crash bundles gdb + +* Thu May 5 2016 Dave Anderson - 7.1.5-2 +- BZ #1333295 - FTBFS due compiler warnings in elf64-s390.c + +* Thu Apr 28 2016 Dave Anderson - 7.1.5-1 +- Update to latest upstream release + +* Wed Feb 03 2016 Fedora Release Engineering - 7.1.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Dec 17 2015 Dave Anderson - 7.1.4-1 +- Update to latest upstream release + +* Thu Sep 3 2015 Dave Anderson - 7.1.3-1 +- Update to latest upstream release + +* Mon Jul 13 2015 Dave Anderson - 7.1.2-1 +- Update to latest upstream release + +* Wed Jun 17 2015 Fedora Release Engineering - 7.1.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu May 28 2015 Dave Anderson - 7.1.1-1 +- Update to latest upstream release + +* Mon Mar 2 2015 Dave Anderson - 7.1.0-3 +- Support increment of Linux version from 3 to 4 + +* Sat Feb 21 2015 Till Maas - 7.1.0-2 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Tue Feb 10 2015 Dave Anderson - 7.1.0-1 +- Update to latest upstream release + +* Fri Nov 15 2014 Dave Anderson - 7.0.9-1 +- Update to latest upstream release + +* Mon Sep 15 2014 Dave Anderson - 7.0.8-1 +- Update to latest upstream release +- Add ppc64le as supported architecture for crash package (BZ #1136050) + +* Sat Aug 16 2014 Fedora Release Engineering - 7.0.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Wed Jul 02 2014 Dave Anderson - 7.0.7-2 +- Fix FTBS for aarch64 (BZ #1114588) + +* Wed Jun 11 2014 Dave Anderson - 7.0.7-1 +- Update to latest upstream release +- Fix Fedora_21_Mass_Rebuild FTBFS (BZ #1106090) + +* Sat Jun 07 2014 Fedora Release Engineering - 7.0.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri Feb 28 2014 Dave Anderson - 7.0.5-1 +- Update to latest upstream release +- Use system readline library +- Fix "crash --log vmcore" command for 3.11 and later kernels. + +* Tue Dec 17 2013 Toshio Kuratomi - 7.0.4-2 +- crash bundles gdb which bundles libiberty. Add virtual Provides for + libiberty tracking. Open a bug for unbundling gdb RHBZ#1044119 + +* Mon Dec 16 2013 Dave Anderson - 7.0.4-1 +- Update to latest upstream release + +* Tue Oct 29 2013 Dave Anderson - 7.0.3-1 +- Update to latest upstream release + +* Wed Sep 04 2013 Dave Anderson - 7.0.2-1 +- Update to latest upstream release +- Build with lzo and snappy compression capability + +* Sat Aug 03 2013 Fedora Release Engineering - 7.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jun 17 2013 Dave Anderson - 7.0.1-1 +- Update to latest upstream release +- Add aarch64 as an exclusive arch + +* Tue Apr 9 2013 Dave Anderson - 6.1.6-1 +- Update to latest upstream release + +* Tue Feb 19 2013 Dave Anderson - 6.1.4-1 +- Update to latest upstream release + +* Wed Feb 13 2013 Fedora Release Engineering - 6.1.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Jan 9 2013 Dave Anderson - 6.1.2-1 +- Update to latest upstream release + +* Tue Nov 27 2012 Dave Anderson - 6.1.1-1 +- Update to latest upstream release + +* Mon Sep 1 2012 Dave Anderson - 6.1.0-1 +- Add ppc to ExclusiveArch list +- Update to latest upstream release + +* Tue Aug 21 2012 Dave Anderson - 6.0.9-1 +- Update to latest upstream release + +* Wed Jul 18 2012 Fedora Release Engineering - 6.0.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jul 1 2012 Dave Anderson - 6.0.8-1 +- Update to latest upstream release. +- Replace usage of "struct siginfo" with "siginfo_t". + +* Mon Apr 30 2012 Dave Anderson - 6.0.6-1 +- Update to latest upstream release + +* Mon Mar 26 2012 Dave Anderson - 6.0.5-1 +- Update to latest upstream release + +* Wed Jan 4 2012 Dave Anderson - 6.0.2-1 +- Update to latest upstream release + +* Wed Oct 26 2011 Dave Anderson - 6.0.0-1 +- Update to latest upstream release + +* Tue Sep 20 2011 Dave Anderson - 5.1.8-1 +- Update to latest upstream release +- Additional fixes for gcc-4.6 -Werror compile failures for ARM architecture. + +* Thu Sep 1 2011 Dave Anderson - 5.1.7-2 +- Fixes for gcc-4.6 -Werror compile failures for ARM architecture. + +* Wed Aug 17 2011 Dave Anderson - 5.1.7-1 +- Update to latest upstream release +- Fixes for gcc-4.6 -Werror compile failures for ppc64/ppc. + +* Tue May 31 2011 Peter Robinson - 5.1.5-1 +- Update to latest upstream release +- Add ARM to the Exclusive arch + +* Wed Feb 25 2011 Dave Anderson - 5.1.2-2 +- Fixes for gcc-4.6 -Werror compile failures in gdb module. + +* Wed Feb 23 2011 Dave Anderson - 5.1.2-1 +- Upstream version. + +* Tue Feb 08 2011 Fedora Release Engineering - 5.0.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Jul 20 2010 Dave Anderson - 5.0.6-2 +- Bump version. + +* Tue Jul 20 2010 Dave Anderson - 5.0.6-1 +- Update to upstream version. + +* Fri Sep 11 2009 Dave Anderson - 4.0.9-2 + Bump version. + +* Fri Sep 11 2009 Dave Anderson - 4.0.9-1 +- Update to upstream release, which allows the removal of the + Revision tag workaround, the crash-4.0-8.11-dwarf3.patch and + the crash-4.0-8.11-optflags.patch + +* Sun Aug 05 2009 Lubomir Rintel - 4.0.8.11-2 +- Fix reading of dwarf 3 DW_AT_data_member_location +- Use proper compiler flags + +* Wed Aug 05 2009 Lubomir Rintel - 4.0.8.11-1 +- Update to later upstream release +- Fix abuse of Revision tag + +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild +* Fri Jul 24 2009 Fedora Release Engineering - 4.0-9.7.2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Tue Feb 24 2009 Fedora Release Engineering - 4.0-8.7.2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu Feb 19 2009 Dave Anderson - 4.0-7.7.2 +- Replace exclusive arch i386 with ix86. + +* Thu Feb 19 2009 Dave Anderson - 4.0-7.7.1 +- Updates to this file per crash merge review +- Update to upstream version 4.0-7.7. Full changelog viewable in: + http://people.redhat.com/anderson/crash.changelog.html + +* Tue Jul 15 2008 Tom "spot" Callaway 4.0-7 +- fix license tag + +* Tue Apr 29 2008 Dave Anderson - 4.0-6.3 +- Added crash-devel subpackage +- Updated crash.patch to match upstream version 4.0-6.3 + +* Wed Feb 20 2008 Dave Anderson - 4.0-6.0.5 +- Second attempt at addressing the GCC 4.3 build, which failed due + to additional ptrace.h includes in the lkcd vmdump header files. + +* Wed Feb 20 2008 Dave Anderson - 4.0-6.0.4 +- First attempt at addressing the GCC 4.3 build, which failed on x86_64 + because ptrace-abi.h (included by ptrace.h) uses the "u32" typedef, + which relies on , and include/asm-x86_64/types.h + does not not typedef u32 as done in include/asm-x86/types.h. + +* Mon Feb 18 2008 Fedora Release Engineering - 4.0-6.0.3 +- Autorebuild for GCC 4.3 + +* Wed Jan 23 2008 Dave Anderson - 4.0-5.0.3 +- Updated crash.patch to match upstream version 4.0-5.0. + +* Wed Aug 29 2007 Dave Anderson - 4.0-4.6.2 +- Updated crash.patch to match upstream version 4.0-4.6. + +* Wed Sep 13 2006 Dave Anderson - 4.0-3.3 +- Updated crash.patch to match upstream version 4.0-3.3. +- Support for x86_64 relocatable kernels. BZ #204557 + +* Mon Aug 7 2006 Dave Anderson - 4.0-3.1 +- Updated crash.patch to match upstream version 4.0-3.1. +- Added kdump reference to description. +- Added s390 and s390x to ExclusiveArch list. BZ #199125 +- Removed LKCD v1 pt_regs references for s390/s390x build. +- Removed LKCD v2_v3 pt_regs references for for s390/s390x build. + +* Fri Jul 14 2006 Jesse Keating - 4.0-3 +- rebuild + +* Mon May 15 2006 Dave Anderson - 4.0-2.26.4 +- Updated crash.patch such that is not #include'd + by s390_dump.c; IBM did not make the file s390[s] only; BZ #192719 + +* Mon May 15 2006 Dave Anderson - 4.0-2.26.3 +- Updated crash.patch such that is not #include'd + by vas_crash.h; only ia64 build complained; BZ #191719 + +* Mon May 15 2006 Dave Anderson - 4.0-2.26.2 +- Updated crash.patch such that is not #include'd + by lkcd_x86_trace.c; also for BZ #191719 + +* Mon May 15 2006 Dave Anderson - 4.0-2.26.1 +- Updated crash.patch to bring it up to 4.0-2.26, which should + address BZ #191719 - "crash fails to build in mock" + +* Tue Feb 07 2006 Jesse Keating - 4.0-2.18.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Wed Jan 04 2006 Dave Anderson 4.0-2.18 +- Updated source package to crash-4.0.tar.gz, and crash.patch + to bring it up to 4.0-2.18. + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Thu Mar 03 2005 Dave Anderson 3.10-13 +- Compiler error- and warning-related fixes for gcc 4 build. +- Update to enhance x86 and x86_64 gdb disassembly output so as to + symbolically display call targets from kernel module text without + requiring module debuginfo data. +- Fix hole where an ia64 vmcore could be mistakenly accepted as a + usable dumpfile on an x86_64 machine, leading eventually to a + non-related error message. +* Wed Mar 02 2005 Dave Anderson 3.10-12 +- rebuild (gcc 4) +* Thu Feb 10 2005 Dave Anderson 3.10-9 +- Updated source package to crash-3.10.tar.gz, containing + IBM's final ppc64 processor support for RHEL4 +- Fixes potential "bt -a" hang on dumpfile where netdump IPI interrupted + an x86 process while executing the instructions just after it had entered + the kernel for a syscall, but before calling the handler. BZ #139437 +- Update to handle backtraces in dumpfiles generated on IA64 with the + INIT switch (functionality intro'd in RHEL3-U5 kernel). BZ #139429 +- Fix for handling ia64 and x86_64 machines booted with maxcpus=1 on + an SMP kernel. BZ #139435 +- Update to handle backtraces in dumpfiles generated on x86_64 from the + NMI exception stack (functionality intro'd in RHEL3-U5 kernel). +- "kmem -[sS]" beefed up to more accurately verify slab cache chains + and report errors found. +- Fix for ia64 INIT switch-generated backtrace handling when + init_handler_platform() is inlined into ia64_init_handler(); + properly handles both RHEL3 and RHEL4 kernel patches. + BZ #138350 +- Update to enhance ia64 gdb disassembly output so as to + symbolically display call targets from kernel module + text without requiring module debuginfo data. + +* Wed Jul 14 2004 Dave Anderson 3.8-5 +- bump release for fc3 + +* Tue Jul 13 2004 Dave Anderson 3.8-4 +- Fix for gcc 3.4.x/gdb issue where vmlinux was mistakenly presumed non-debug + +* Fri Jun 25 2004 Dave Anderson 3.8-3 +- remove (harmless) error message during ia64 diskdump invocation when + an SMP system gets booted with maxcpus=1 +- several 2.6 kernel specific updates + +* Thu Jun 17 2004 Dave Anderson 3.8-2 +- updated source package to crash-3.8.tar.gz +- diskdump support +- x86_64 processor support + +* Mon Sep 22 2003 Dave Anderson 3.7-5 +- make bt recovery code start fix-up only upon reaching first faulting frame + +* Fri Sep 19 2003 Dave Anderson 3.7-4 +- fix "bt -e" and bt recovery code to recognize new __KERNEL_CS and DS + +* Wed Sep 10 2003 Dave Anderson 3.7-3 +- patch to recognize per-cpu GDT changes that redefine __KERNEL_CS and DS + +* Wed Sep 10 2003 Dave Anderson 3.7-2 +- patches for netdump active_set determination and slab info gathering + +* Wed Aug 20 2003 Dave Anderson 3.7-1 +- updated source package to crash-3.7.tar.gz + +* Wed Jul 23 2003 Dave Anderson 3.6-1 +- removed Packager, Distribution, and Vendor tags +- updated source package to crash-3.6.tar.gz + +* Fri Jul 18 2003 Jay Fenlason 3.5-2 +- remove ppc from arch list, since it doesn't work with ppc64 kernels +- remove alpha from the arch list since we don't build it any more + +* Fri Jul 18 2003 Matt Wilson 3.5-1 +- use %%defattr(-,root,root) + +* Tue Jul 15 2003 Jay Fenlason +- Updated spec file as first step in turning this into a real RPM for taroon. +- Wrote man page.