Compare commits
No commits in common. "c8" and "c9-beta" have entirely different histories.
@ -1 +1 @@
|
|||||||
70f9352418f658080e988d5b7e7d3b4ce6a98f99 SOURCES/crash-gcore-command-1.6.3.tar.gz
|
2c15b78c28ef2e71307e826a5a7912346b4c4d2a SOURCES/crash-gcore-command-1.6.4.tar.gz
|
||||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/crash-gcore-command-1.6.3.tar.gz
|
SOURCES/crash-gcore-command-1.6.4.tar.gz
|
||||||
|
@ -0,0 +1,60 @@
|
|||||||
|
From 33f3c97f7d45c8bb1b43a8d551cb01a9873bb123 Mon Sep 17 00:00:00 2001
|
||||||
|
From: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
||||||
|
Date: Tue, 28 Feb 2023 03:59:16 -0500
|
||||||
|
Subject: [PATCH 1/2] coredump: fix building failure due to undefined macros
|
||||||
|
MAPLE_TREE_{COUNT,GATHER}
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
As of the commit 13794ace3830bf0274fe7b2e0e579ad72e31848f (coredump:
|
||||||
|
fix failure of executing gcore command due to introduction of maple
|
||||||
|
tree management on vma list), gcore.so fails to get built with the
|
||||||
|
following error messages with defs.h without maple tree API support:
|
||||||
|
|
||||||
|
libgcore/gcore_coredump.c:189:50: error: ‘MAPLE_TREE_COUNT’ undeclared (first use in this function); did you mean ‘RADIX_TREE_COUNT’?
|
||||||
|
189 | entry_num = do_maple_tree(mm_mt, MAPLE_TREE_COUNT, NULL);
|
||||||
|
| ^~~~~~~~~~~~~~~~
|
||||||
|
| RADIX_TREE_COUNT
|
||||||
|
libgcore/gcore_coredump.c:189:50: note: each undeclared identifier is reported only once for each function it appears in
|
||||||
|
libgcore/gcore_coredump.c:191:38: error: ‘MAPLE_TREE_GATHER’ undeclared (first use in this function); did you mean ‘RADIX_TREE_GATHER’?
|
||||||
|
191 | do_maple_tree(mm_mt, MAPLE_TREE_GATHER, entry_list);
|
||||||
|
| ^~~~~~~~~~~~~~~~~
|
||||||
|
| RADIX_TREE_GATHER
|
||||||
|
|
||||||
|
This is caused by the missing macros MAPLE_TREE_COUNT and
|
||||||
|
MAPLE_TREE_GATHER.
|
||||||
|
|
||||||
|
To fix the issue, define the two macros within crash gcore so that
|
||||||
|
build is successfully done expecting the resulting binary works well
|
||||||
|
when it is ran against new crash utility that has maple tree API
|
||||||
|
support.
|
||||||
|
|
||||||
|
Signed-off-by: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
||||||
|
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
|
||||||
|
---
|
||||||
|
src/libgcore/gcore_coredump.c | 8 ++++++++
|
||||||
|
1 file changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/libgcore/gcore_coredump.c b/src/libgcore/gcore_coredump.c
|
||||||
|
index fa744d4c26a5..8eece96777be 100644
|
||||||
|
--- a/src/libgcore/gcore_coredump.c
|
||||||
|
+++ b/src/libgcore/gcore_coredump.c
|
||||||
|
@@ -128,6 +128,14 @@ void gcore_readmem_user(ulong addr, void *buf, long size, char *type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if !defined(MAPLE_TREE_COUNT)
|
||||||
|
+#define MAPLE_TREE_COUNT (1)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(MAPLE_TREE_GATHER)
|
||||||
|
+#define MAPLE_TREE_GATHER (4)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
ulong __attribute__((weak))
|
||||||
|
do_maple_tree(ulong root, int flag, struct list_pair *lp)
|
||||||
|
{
|
||||||
|
--
|
||||||
|
2.45.1
|
||||||
|
|
@ -1,53 +0,0 @@
|
|||||||
From 4731ebf085fe6322ba8c7ca14918d3cab2186cf0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
|
||||||
Date: Fri, 25 Feb 2022 04:45:37 -0500
|
|
||||||
Subject: [PATCH 1/3] coredump: use MEMBER_{OFFSET, SIZE} instead of
|
|
||||||
GCORE_{OFFSET, SIZE}
|
|
||||||
|
|
||||||
fill_auxv_note() and compat_fill_auxv_note() is called just once each
|
|
||||||
time gcore command is invoked because each process has just one
|
|
||||||
NT_AUXV. This means using MEMBER_{OFFSET, SIZE} is enough; using
|
|
||||||
GCORE_{OFFSET, SIZE} is overkill.
|
|
||||||
|
|
||||||
Signed-off-by: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
|
||||||
---
|
|
||||||
src/libgcore/gcore_coredump.c | 12 ++++++------
|
|
||||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/libgcore/gcore_coredump.c b/src/libgcore/gcore_coredump.c
|
|
||||||
index 3d0c0fcce61e..6f57b21b62b6 100644
|
|
||||||
--- a/src/libgcore/gcore_coredump.c
|
|
||||||
+++ b/src/libgcore/gcore_coredump.c
|
|
||||||
@@ -930,11 +930,11 @@ fill_auxv_note(struct elf_note_info *info, struct task_context *tc,
|
|
||||||
ulong *auxv;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
- auxv = (ulong *)GETBUF(GCORE_SIZE(mm_struct_saved_auxv));
|
|
||||||
+ auxv = (ulong *)GETBUF(MEMBER_SIZE("mm_struct", "saved_auxv"));
|
|
||||||
|
|
||||||
readmem(task_mm(tc->task, FALSE) +
|
|
||||||
- GCORE_OFFSET(mm_struct_saved_auxv), KVADDR, auxv,
|
|
||||||
- GCORE_SIZE(mm_struct_saved_auxv), "fill_auxv_note",
|
|
||||||
+ MEMBER_OFFSET("mm_struct", "saved_auxv"), KVADDR, auxv,
|
|
||||||
+ MEMBER_SIZE("mm_struct", "saved_auxv"), "fill_auxv_note",
|
|
||||||
gcore_verbose_error_handle());
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
@@ -956,11 +956,11 @@ compat_fill_auxv_note(struct elf_note_info *info,
|
|
||||||
uint32_t *auxv;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
- auxv = (uint32_t *)GETBUF(GCORE_SIZE(mm_struct_saved_auxv));
|
|
||||||
+ auxv = (uint32_t *)GETBUF(MEMBER_SIZE("mm_struct", "saved_auxv"));
|
|
||||||
|
|
||||||
readmem(task_mm(tc->task, FALSE) +
|
|
||||||
- GCORE_OFFSET(mm_struct_saved_auxv), KVADDR, auxv,
|
|
||||||
- GCORE_SIZE(mm_struct_saved_auxv), "fill_auxv_note32",
|
|
||||||
+ MEMBER_OFFSET("mm_struct", "saved_auxv"), KVADDR, auxv,
|
|
||||||
+ MEMBER_SIZE("mm_struct", "saved_auxv"), "fill_auxv_note32",
|
|
||||||
gcore_verbose_error_handle());
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
--
|
|
||||||
2.30.2
|
|
||||||
|
|
@ -1,114 +0,0 @@
|
|||||||
From 03f9360715731f18e4fdae7b30aa34b30dddcd57 Mon Sep 17 00:00:00 2001
|
|
||||||
From: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
|
||||||
Date: Sat, 26 Mar 2022 21:42:02 +0900
|
|
||||||
Subject: [PATCH 1/5] x86: Fix failure of collecting vsyscall mapping due to
|
|
||||||
change of enum type of vsyscall_mode
|
|
||||||
|
|
||||||
vsyscall mapping fails to get collected because the commit
|
|
||||||
bd49e16e3339 (x86/vsyscall: Add a new vsyscall=xonly mode) merged at
|
|
||||||
kernel v5.2-rc7 added constant XONLY to the anonymous enumeration type
|
|
||||||
of variable vsyscall_mode, which made the value of constant NONE
|
|
||||||
change from 1 to 2.
|
|
||||||
|
|
||||||
This commit fixes the issue by checking the value of constant NONE
|
|
||||||
using gdb's print command and typeof operator since there's no utility
|
|
||||||
function to handle such anonymous enumeration type currently in crash
|
|
||||||
utility.
|
|
||||||
|
|
||||||
Signed-off-by: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
|
||||||
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
|
|
||||||
---
|
|
||||||
src/libgcore/gcore_x86.c | 56 ++++++++++++++++++++++++++++++++++++++--
|
|
||||||
1 file changed, 54 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/libgcore/gcore_x86.c b/src/libgcore/gcore_x86.c
|
|
||||||
index 08e573c741f6..f334a85d4240 100644
|
|
||||||
--- a/src/libgcore/gcore_x86.c
|
|
||||||
+++ b/src/libgcore/gcore_x86.c
|
|
||||||
@@ -41,6 +41,9 @@ struct gcore_x86_table
|
|
||||||
static struct gcore_x86_table gcore_x86_table;
|
|
||||||
struct gcore_x86_table *gxt = &gcore_x86_table;
|
|
||||||
|
|
||||||
+static void gdb_run_command(char *cmd, char *buf, size_t size);
|
|
||||||
+static int get_vsyscall_mode_none(void);
|
|
||||||
+
|
|
||||||
#ifdef X86_64
|
|
||||||
static ulong gcore_x86_64_get_old_rsp(int cpu);
|
|
||||||
static ulong gcore_x86_64_get_per_cpu__old_rsp(int cpu);
|
|
||||||
@@ -2367,6 +2370,54 @@ int gcore_is_arch_32bit_emulation(struct task_context *tc)
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void gdb_run_command(char *cmd, char *buf, size_t size)
|
|
||||||
+{
|
|
||||||
+ open_tmpfile();
|
|
||||||
+ if (!gdb_pass_through(cmd,
|
|
||||||
+ pc->tmpfile,
|
|
||||||
+ GNU_RETURN_ON_ERROR)) {
|
|
||||||
+ close_tmpfile();
|
|
||||||
+ error(FATAL, "gdb command failed: %s", cmd);
|
|
||||||
+ }
|
|
||||||
+ rewind(pc->tmpfile);
|
|
||||||
+ fgets(buf, size, pc->tmpfile);
|
|
||||||
+ close_tmpfile();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int get_vsyscall_mode_none(void)
|
|
||||||
+{
|
|
||||||
+ static int none = -1;
|
|
||||||
+ char cmd[32], buf[BUFSIZE];
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ if (none != -1)
|
|
||||||
+ return none;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Variable vsyscall_mode is of anonymous enumeration
|
|
||||||
+ * type. Because there's no utility function in crash utility
|
|
||||||
+ * to get value of each constant in specified anonymous
|
|
||||||
+ * enumeration type, we have no choice but rely on gdb's print
|
|
||||||
+ * command in combination with typeof operator.
|
|
||||||
+ */
|
|
||||||
+ for (i = 0; i < 10; ++i) {
|
|
||||||
+ snprintf(cmd, sizeof(cmd), "p (typeof(vsyscall_mode))%d", i);
|
|
||||||
+ gdb_run_command(cmd, buf, sizeof(buf));
|
|
||||||
+ if (strstr(buf, "NONE"))
|
|
||||||
+ return none = i;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * When the above logic doesn't work as expected, use 2, which
|
|
||||||
+ * is the value on the definition where vsyscall_mode was
|
|
||||||
+ * first introduced at the commit 3ae36655b97a (x86-64: Rework
|
|
||||||
+ * vsyscall emulation and add vsyscall= parameter).
|
|
||||||
+ */
|
|
||||||
+ none = 2;
|
|
||||||
+
|
|
||||||
+ return none;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Return an address to gate_vma.
|
|
||||||
*/
|
|
||||||
@@ -2377,7 +2428,8 @@ ulong gcore_arch_get_gate_vma(void)
|
|
||||||
return 0UL;
|
|
||||||
|
|
||||||
if (symbol_exists("vsyscall_mode")) {
|
|
||||||
- enum { ENUMERATE, NONE } vsyscall_mode;
|
|
||||||
+ int vsyscall_mode;
|
|
||||||
+ int none = get_vsyscall_mode_none();
|
|
||||||
|
|
||||||
readmem(symbol_value("vsyscall_mode"),
|
|
||||||
KVADDR,
|
|
||||||
@@ -2386,7 +2438,7 @@ ulong gcore_arch_get_gate_vma(void)
|
|
||||||
"gcore_arch_get_gate_vma: vsyscall_mode",
|
|
||||||
gcore_verbose_error_handle());
|
|
||||||
|
|
||||||
- if (vsyscall_mode == NONE)
|
|
||||||
+ if (vsyscall_mode == none)
|
|
||||||
return 0UL;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.37.1
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
|||||||
From 1ba701c1d7bd94cc5a02f51652712acdcbf0875c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Vincent Whitchurch <vincent.whitchurch@axis.com>
|
|
||||||
Date: Tue, 21 Jun 2022 09:15:33 +0000
|
|
||||||
Subject: [PATCH 2/5] coredump: fix segmentation fault caused by type mismatch
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
crash gcore command on ARM sometimes results in segmentation fault:
|
|
||||||
|
|
||||||
crash> gcore -v 0
|
|
||||||
Segmentation fault (core dumped)
|
|
||||||
|
|
||||||
This is caused by type mismatch of a variable paddr in function
|
|
||||||
gcore_readmem_user() to hold a physical address, which is indicated by
|
|
||||||
the following warning message:
|
|
||||||
|
|
||||||
libgcore/gcore_coredump.c: In function ‘gcore_readmem_user’:
|
|
||||||
libgcore/gcore_coredump.c:85:26: warning: passing argument 2 of
|
|
||||||
‘uvtop_quiet’ from incompatible pointer type
|
|
||||||
[-Wincompatible-pointer-types]
|
|
||||||
|
|
||||||
if (!uvtop_quiet(addr, &paddr)) {
|
|
||||||
^~~~~~
|
|
||||||
libgcore/gcore_coredump.c:71:49: note: expected ‘physaddr_t *’ {aka
|
|
||||||
‘long long unsigned int *’} but argument is of type ‘ulong *’ {aka ‘long
|
|
||||||
unsigned int *’}
|
|
||||||
|
|
||||||
static int uvtop_quiet(ulong vaddr, physaddr_t *paddr);
|
|
||||||
~~~~~~~~~~~~^~~~~
|
|
||||||
|
|
||||||
On ARM, long unsigned int has 4 byte length, while physaddr_t has 8
|
|
||||||
byte length. The mismatch causes overwriting of stack variables.
|
|
||||||
|
|
||||||
Fix this by changing the type of the variable paddr to physaddr_t.
|
|
||||||
|
|
||||||
Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
|
|
||||||
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
|
|
||||||
---
|
|
||||||
src/libgcore/gcore_coredump.c | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/libgcore/gcore_coredump.c b/src/libgcore/gcore_coredump.c
|
|
||||||
index c14cc116e951..424b0a40a42b 100644
|
|
||||||
--- a/src/libgcore/gcore_coredump.c
|
|
||||||
+++ b/src/libgcore/gcore_coredump.c
|
|
||||||
@@ -78,7 +78,8 @@ readswap(ulonglong pte_val, char *buf, ulong len, ulonglong vaddr)
|
|
||||||
|
|
||||||
void gcore_readmem_user(ulong addr, void *buf, long size, char *type)
|
|
||||||
{
|
|
||||||
- ulong paddr, cnt;
|
|
||||||
+ physaddr_t paddr;
|
|
||||||
+ ulong cnt;
|
|
||||||
char *bufptr = buf;
|
|
||||||
|
|
||||||
while (size > 0) {
|
|
||||||
--
|
|
||||||
2.37.1
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
|||||||
From 6f4357340807f70bd1999f0b88435361c583f0b9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
|
||||||
Date: Fri, 25 Feb 2022 04:51:06 -0500
|
|
||||||
Subject: [PATCH 2/3] gcore, defs: remove definitions and initializations for
|
|
||||||
saved_auxv entries of offset and size tables
|
|
||||||
|
|
||||||
saved_auxv entries of offset and size tables are now not used in the
|
|
||||||
source code by the previous commit. Let's remove definitions and
|
|
||||||
initializations for them.
|
|
||||||
|
|
||||||
Signed-off-by: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
|
||||||
---
|
|
||||||
src/gcore.c | 2 --
|
|
||||||
src/libgcore/gcore_defs.h | 2 --
|
|
||||||
2 files changed, 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/gcore.c b/src/gcore.c
|
|
||||||
index 5b78d9980887..f86b15f8a9f6 100644
|
|
||||||
--- a/src/gcore.c
|
|
||||||
+++ b/src/gcore.c
|
|
||||||
@@ -371,7 +371,6 @@ static void gcore_offset_table_init(void)
|
|
||||||
GCORE_MEMBER_OFFSET_INIT(mm_struct_arg_end, "mm_struct", "arg_end");
|
|
||||||
GCORE_MEMBER_OFFSET_INIT(mm_struct_map_count, "mm_struct", "map_count");
|
|
||||||
GCORE_MEMBER_OFFSET_INIT(mm_struct_reserved_vm, "mm_struct", "reserved_vm");
|
|
||||||
- GCORE_MEMBER_OFFSET_INIT(mm_struct_saved_auxv, "mm_struct", "saved_auxv");
|
|
||||||
GCORE_MEMBER_OFFSET_INIT(mm_struct_saved_files, "mm_struct", "saved_files");
|
|
||||||
GCORE_MEMBER_OFFSET_INIT(mm_struct_context, "mm_struct", "context");
|
|
||||||
GCORE_MEMBER_OFFSET_INIT(pid_level, "pid", "level");
|
|
||||||
@@ -520,7 +519,6 @@ static void gcore_size_table_init(void)
|
|
||||||
{
|
|
||||||
GCORE_STRUCT_SIZE_INIT(i387_union, "i387_union");
|
|
||||||
GCORE_STRUCT_SIZE_INIT(mm_context_t, "mm_context_t");
|
|
||||||
- GCORE_MEMBER_SIZE_INIT(mm_struct_saved_auxv, "mm_struct", "saved_auxv");
|
|
||||||
GCORE_MEMBER_SIZE_INIT(mm_struct_saved_files, "mm_struct", "saved_files");
|
|
||||||
GCORE_MEMBER_SIZE_INIT(thread_struct_ds, "thread_struct", "ds");
|
|
||||||
GCORE_MEMBER_SIZE_INIT(thread_struct_es, "thread_struct", "es");
|
|
||||||
diff --git a/src/libgcore/gcore_defs.h b/src/libgcore/gcore_defs.h
|
|
||||||
index df87851d23a1..3233ea533ca0 100644
|
|
||||||
--- a/src/libgcore/gcore_defs.h
|
|
||||||
+++ b/src/libgcore/gcore_defs.h
|
|
||||||
@@ -1072,7 +1072,6 @@ struct gcore_offset_table
|
|
||||||
long mm_struct_arg_end;
|
|
||||||
long mm_struct_map_count;
|
|
||||||
long mm_struct_reserved_vm;
|
|
||||||
- long mm_struct_saved_auxv;
|
|
||||||
long mm_struct_saved_files;
|
|
||||||
long mm_struct_context;
|
|
||||||
long pid_level;
|
|
||||||
@@ -1148,7 +1147,6 @@ struct gcore_offset_table
|
|
||||||
struct gcore_size_table
|
|
||||||
{
|
|
||||||
long mm_context_t;
|
|
||||||
- long mm_struct_saved_auxv;
|
|
||||||
long mm_struct_saved_files;
|
|
||||||
long thread_struct_ds;
|
|
||||||
long thread_struct_es;
|
|
||||||
--
|
|
||||||
2.30.2
|
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
From b3af265aa60251f282145bb0eee3b83d8a15ebb7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
||||||
|
Date: Mon, 18 Sep 2023 20:45:11 -0400
|
||||||
|
Subject: [PATCH 2/2] x86: fix extend gcore.so taking much time like more than
|
||||||
|
1 hour when huge thread group is present
|
||||||
|
|
||||||
|
extend gcore.so command takes lengthy time such as more than 1 hour
|
||||||
|
when huge thread group is present.
|
||||||
|
|
||||||
|
The root cause of this issue is that we never take into account time
|
||||||
|
complexity of function gcore_arch_vsyscall_has_vm_alwaysdump_flag()
|
||||||
|
sufficiently, which iterates the task list and vma lists of each task
|
||||||
|
to detect existence of VM_ALWAYS flag in a given crash dump and so has
|
||||||
|
O(nm) where the n is the length of the task list and the m is the
|
||||||
|
total number of vma among all tasks.
|
||||||
|
|
||||||
|
To fix this issue, skip this process for the kernels whose version is
|
||||||
|
equal to or larger than v3.4.0.
|
||||||
|
|
||||||
|
Originally, this process was implemented to detect existence of
|
||||||
|
VM_ALWAYS flag that was removed at the commit
|
||||||
|
909af768e88867016f427264ae39d27a57b6a8ed (coredump: remove
|
||||||
|
VM_ALWAYSDUMP flag) included at Linux kernel v3.4. However, the base
|
||||||
|
kernel version of RHEL7.0 GA is 3.10.0-123.el7. Hence, the kernels for
|
||||||
|
RHEL7 and later have included the commit. For RHEL7 and later, it's
|
||||||
|
sufficient to conclude absence of the flag by checking kernel version
|
||||||
|
of a given crash dump.
|
||||||
|
|
||||||
|
The issue could still remain on RHEL6 and older, but we think it's
|
||||||
|
acceptable because today we rarely handle crash dump files of RHEL6
|
||||||
|
and older.
|
||||||
|
|
||||||
|
Signed-off-by: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
||||||
|
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
|
||||||
|
---
|
||||||
|
src/libgcore/gcore_x86.c | 15 +++++++++++++++
|
||||||
|
1 file changed, 15 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/libgcore/gcore_x86.c b/src/libgcore/gcore_x86.c
|
||||||
|
index 8878f79d4c08..3ddf5109ade0 100644
|
||||||
|
--- a/src/libgcore/gcore_x86.c
|
||||||
|
+++ b/src/libgcore/gcore_x86.c
|
||||||
|
@@ -2502,6 +2502,21 @@ int gcore_arch_vsyscall_has_vm_alwaysdump_flag(void)
|
||||||
|
struct task_context *tc;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * The commit 909af768e88867016f427264ae39d27a57b6a8ed
|
||||||
|
+ * (coredump: remove VM_ALWAYSDUMP flag) of the Linux kernel
|
||||||
|
+ * was merged at v3.4. We can say VM_ALWAYSDUMP flag doesn't
|
||||||
|
+ * exist for the version 3.4.0 or later. The base kernel
|
||||||
|
+ * version of RHEL7.0 GA is 3.10.0-123.el7. Hence, this
|
||||||
|
+ * condition is expected to match RHEL7 and later RHEL major
|
||||||
|
+ * versions. On the other hand, the commit
|
||||||
|
+ * 909af768e88867016f427264ae39d27a57b6a8ed was backported
|
||||||
|
+ * into the kernel package in RHEL6 and the exploring code is
|
||||||
|
+ * still needed.
|
||||||
|
+ */
|
||||||
|
+ if (THIS_KERNEL_VERSION >= LINUX(3, 4, 0))
|
||||||
|
+ return FALSE;
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* For simplicity, consider that VM_ALWAYSDUMP was already not
|
||||||
|
* present when maple tree was introduced.
|
||||||
|
--
|
||||||
|
2.45.1
|
||||||
|
|
@ -1,66 +0,0 @@
|
|||||||
From 8ff3de974aa9fdf8934797122dc55428ef571ab2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Vincent Whitchurch <vincent.whitchurch@axis.com>
|
|
||||||
Date: Tue, 21 Jun 2022 09:15:34 +0000
|
|
||||||
Subject: [PATCH 3/5] elf: fix warning message caused by type mismatch of
|
|
||||||
offset types
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Use loff_t consistently to fix these warnings on -m32 builds on 64-bit:
|
|
||||||
|
|
||||||
libgcore/gcore_coredump.c: In function ‘writenote’:
|
|
||||||
libgcore/gcore_coredump.c:701:58: warning: passing argument 3 of
|
|
||||||
‘gcore->elf->ops->write_note_header’ from incompatible pointer type
|
|
||||||
[-Wincompatible-pointer-types]
|
|
||||||
|
|
||||||
if (!gcore->elf->ops->write_note_header(gcore->elf, fp, foffset))
|
|
||||||
^~~~~~~
|
|
||||||
libgcore/gcore_coredump.c:701:58: note: expected ‘off_t *’ {aka ‘long
|
|
||||||
int *’} but argument is of type ‘loff_t *’ {aka ‘long long int *’}
|
|
||||||
|
|
||||||
Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
|
|
||||||
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
|
|
||||||
---
|
|
||||||
src/libgcore/gcore_defs.h | 2 +-
|
|
||||||
src/libgcore/gcore_elf_struct.c | 4 ++--
|
|
||||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/libgcore/gcore_defs.h b/src/libgcore/gcore_defs.h
|
|
||||||
index 3233ea533ca0..409678e1ad68 100644
|
|
||||||
--- a/src/libgcore/gcore_defs.h
|
|
||||||
+++ b/src/libgcore/gcore_defs.h
|
|
||||||
@@ -1232,7 +1232,7 @@ struct gcore_elf_operations
|
|
||||||
int (*write_section_header)(struct gcore_elf_struct *this, FILE *fp);
|
|
||||||
int (*write_program_header)(struct gcore_elf_struct *this, FILE *fp);
|
|
||||||
int (*write_note_header)(struct gcore_elf_struct *this, FILE *fp,
|
|
||||||
- off_t *offset);
|
|
||||||
+ loff_t *offset);
|
|
||||||
|
|
||||||
uint64_t (*get_e_phoff)(struct gcore_elf_struct *this);
|
|
||||||
uint64_t (*get_e_shoff)(struct gcore_elf_struct *this);
|
|
||||||
diff --git a/src/libgcore/gcore_elf_struct.c b/src/libgcore/gcore_elf_struct.c
|
|
||||||
index 2aca984cf90f..b31388aa7e28 100644
|
|
||||||
--- a/src/libgcore/gcore_elf_struct.c
|
|
||||||
+++ b/src/libgcore/gcore_elf_struct.c
|
|
||||||
@@ -141,7 +141,7 @@ static int elf64_write_program_header(struct gcore_elf_struct *this, FILE *fp)
|
|
||||||
}
|
|
||||||
|
|
||||||
static int elf64_write_note_header(struct gcore_elf_struct *this, FILE *fp,
|
|
||||||
- off_t *offset)
|
|
||||||
+ loff_t *offset)
|
|
||||||
{
|
|
||||||
Elf64_Nhdr *n = &((struct gcore_elf64_struct *)this)->nhdr;
|
|
||||||
|
|
||||||
@@ -314,7 +314,7 @@ static int elf32_write_program_header(struct gcore_elf_struct *this, FILE *fp)
|
|
||||||
}
|
|
||||||
|
|
||||||
static int elf32_write_note_header(struct gcore_elf_struct *this, FILE *fp,
|
|
||||||
- off_t *offset)
|
|
||||||
+ loff_t *offset)
|
|
||||||
{
|
|
||||||
Elf32_Nhdr *n = &((struct gcore_elf32_struct *)this)->nhdr;
|
|
||||||
|
|
||||||
--
|
|
||||||
2.37.1
|
|
||||||
|
|
@ -1,128 +0,0 @@
|
|||||||
From 4cb65a0d9168778d120920418b968d05da10989f Mon Sep 17 00:00:00 2001
|
|
||||||
From: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
|
||||||
Date: Fri, 25 Feb 2022 04:59:48 -0500
|
|
||||||
Subject: [PATCH 3/3] gcore: fix memory allocation failure during processing
|
|
||||||
NT_AUXV note
|
|
||||||
|
|
||||||
For crash dumps generated using kernel-4.18.0-365.el8 or later on
|
|
||||||
CentOS stream 8, crash gcore command fails as follows:
|
|
||||||
|
|
||||||
crash> gcore -v 7 -f 128 10604
|
|
||||||
gcore: Opening file core.10604.test-dumpfilter ...
|
|
||||||
gcore: done.
|
|
||||||
gcore: Writing ELF header ...
|
|
||||||
gcore: done.
|
|
||||||
gcore: Retrieving and writing note information ...
|
|
||||||
gcore: zero-size memory allocation! (called from 7fd558ce1e05)
|
|
||||||
Failed.
|
|
||||||
|
|
||||||
This memory allocation failure occurs in fill_auxv_note() that creates
|
|
||||||
NT_AUXV note due to saved_auxv entries of size and offset tables are
|
|
||||||
somehow 0.
|
|
||||||
|
|
||||||
This is because during the merge of the upstream kernel commit
|
|
||||||
1c33bb0507508af24fd754dd7123bd8e997fab2f (x86/elf: Support a new ELF
|
|
||||||
aux vector AT_MINSIGSTKSZ), location of saved_auxv of struct mm_struct
|
|
||||||
has been moved as workaround in order to avoid kABI breakage.
|
|
||||||
|
|
||||||
Fix this by using RHEL-specific location for saved_auxv if there is
|
|
||||||
member rh_reserved_saved_auxv in struct mm_struct.
|
|
||||||
|
|
||||||
Signed-off-by: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
|
||||||
---
|
|
||||||
src/libgcore/gcore_coredump.c | 54 +++++++++++++++++++++++++++++------
|
|
||||||
1 file changed, 46 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/libgcore/gcore_coredump.c b/src/libgcore/gcore_coredump.c
|
|
||||||
index 6f57b21b62b6..c14cc116e951 100644
|
|
||||||
--- a/src/libgcore/gcore_coredump.c
|
|
||||||
+++ b/src/libgcore/gcore_coredump.c
|
|
||||||
@@ -18,6 +18,10 @@
|
|
||||||
|
|
||||||
static struct elf_note_info *elf_note_info_init(void);
|
|
||||||
|
|
||||||
+static void get_auxv_size_addr(struct task_context *tc,
|
|
||||||
+ size_t *size,
|
|
||||||
+ ulong *addr);
|
|
||||||
+
|
|
||||||
static void fill_prstatus_note(struct elf_note_info *info,
|
|
||||||
struct task_context *tc,
|
|
||||||
struct memelfnote *memnote);
|
|
||||||
@@ -923,18 +927,49 @@ compat_fill_prstatus_note(struct elf_note_info *info,
|
|
||||||
|
|
||||||
#endif /* GCORE_ARCH_COMPAT */
|
|
||||||
|
|
||||||
+static void get_auxv_size_addr(struct task_context *tc,
|
|
||||||
+ size_t *psize,
|
|
||||||
+ ulong *paddr)
|
|
||||||
+{
|
|
||||||
+ size_t size;
|
|
||||||
+ ulong addr;
|
|
||||||
+
|
|
||||||
+ if (MEMBER_EXISTS("mm_struct", "rh_reserved_saved_auxv")) {
|
|
||||||
+ ulong mm_rh;
|
|
||||||
+
|
|
||||||
+ size = MEMBER_SIZE("mm_struct_rh", "saved_auxv");
|
|
||||||
+ readmem(task_mm(tc->task, FALSE) + MEMBER_OFFSET("mm_struct", "mm_rh"),
|
|
||||||
+ KVADDR,
|
|
||||||
+ &mm_rh,
|
|
||||||
+ sizeof(mm_rh),
|
|
||||||
+ "mm_struct mm_rh",
|
|
||||||
+ gcore_verbose_error_handle());
|
|
||||||
+ addr = mm_rh + MEMBER_OFFSET("mm_struct_rh", "saved_auxv");
|
|
||||||
+ } else {
|
|
||||||
+ size = MEMBER_SIZE("mm_struct", "saved_auxv");
|
|
||||||
+ addr = task_mm(tc->task, FALSE) +
|
|
||||||
+ MEMBER_OFFSET("mm_struct", "saved_auxv");
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ *psize = size;
|
|
||||||
+ *paddr = addr;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void
|
|
||||||
fill_auxv_note(struct elf_note_info *info, struct task_context *tc,
|
|
||||||
struct memelfnote *memnote)
|
|
||||||
{
|
|
||||||
ulong *auxv;
|
|
||||||
+ ulong addr;
|
|
||||||
+ size_t size;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
- auxv = (ulong *)GETBUF(MEMBER_SIZE("mm_struct", "saved_auxv"));
|
|
||||||
+ get_auxv_size_addr(tc, &size, &addr);
|
|
||||||
|
|
||||||
- readmem(task_mm(tc->task, FALSE) +
|
|
||||||
- MEMBER_OFFSET("mm_struct", "saved_auxv"), KVADDR, auxv,
|
|
||||||
- MEMBER_SIZE("mm_struct", "saved_auxv"), "fill_auxv_note",
|
|
||||||
+ auxv = (ulong *)GETBUF(size);
|
|
||||||
+
|
|
||||||
+ readmem(addr, KVADDR, auxv,
|
|
||||||
+ size, "fill_auxv_note",
|
|
||||||
gcore_verbose_error_handle());
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
@@ -954,13 +989,16 @@ compat_fill_auxv_note(struct elf_note_info *info,
|
|
||||||
struct memelfnote *memnote)
|
|
||||||
{
|
|
||||||
uint32_t *auxv;
|
|
||||||
+ ulong addr;
|
|
||||||
+ size_t size;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
- auxv = (uint32_t *)GETBUF(MEMBER_SIZE("mm_struct", "saved_auxv"));
|
|
||||||
+ get_auxv_size_addr(tc, &size, &addr);
|
|
||||||
+
|
|
||||||
+ auxv = (uint32_t *)GETBUF(size);
|
|
||||||
|
|
||||||
- readmem(task_mm(tc->task, FALSE) +
|
|
||||||
- MEMBER_OFFSET("mm_struct", "saved_auxv"), KVADDR, auxv,
|
|
||||||
- MEMBER_SIZE("mm_struct", "saved_auxv"), "fill_auxv_note32",
|
|
||||||
+ readmem(addr, KVADDR, auxv,
|
|
||||||
+ size, "fill_auxv_note32",
|
|
||||||
gcore_verbose_error_handle());
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
--
|
|
||||||
2.30.2
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
|||||||
From dbb542e10bfe1b2e21c7927bda9be1d301cfef65 Mon Sep 17 00:00:00 2001
|
|
||||||
From: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
|
||||||
Date: Fri, 17 Jun 2022 20:38:19 +0900
|
|
||||||
Subject: [PATCH 4/5] coredump: fix unexpected truncation of generated core
|
|
||||||
files
|
|
||||||
|
|
||||||
Core files generated by crash gcore command are sometimes unexpectedly
|
|
||||||
truncated. Then, we can get aware of this from the following warning
|
|
||||||
message output by gdb:
|
|
||||||
|
|
||||||
BFD: warning: /root/./core.1.systemd is truncated: expected core file size >= 43606016, found: 43597824
|
|
||||||
|
|
||||||
From the investigation, it turned out that this truncation is
|
|
||||||
occurring when there is no write() operation after the area skipped by
|
|
||||||
lseek(). Holes are generated only when there is write() operation.
|
|
||||||
|
|
||||||
To fix this issue, use ftruncate() to allocate holes explicitly.
|
|
||||||
|
|
||||||
Signed-off-by: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
|
||||||
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
|
|
||||||
---
|
|
||||||
src/libgcore/gcore_coredump.c | 15 +++++++++++++++
|
|
||||||
1 file changed, 15 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/libgcore/gcore_coredump.c b/src/libgcore/gcore_coredump.c
|
|
||||||
index 424b0a40a42b..27086d91468b 100644
|
|
||||||
--- a/src/libgcore/gcore_coredump.c
|
|
||||||
+++ b/src/libgcore/gcore_coredump.c
|
|
||||||
@@ -331,6 +331,21 @@ void gcore_coredump(void)
|
|
||||||
}
|
|
||||||
progressf("done.\n");
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * Use ftruncate() to generate holes explicitly, or core file
|
|
||||||
+ * gets truncated if there is no write() operation after the
|
|
||||||
+ * area skipped by lseek().
|
|
||||||
+ */
|
|
||||||
+ if (fflush(gcore->fp))
|
|
||||||
+ error(FATAL, "%s: fflush: %s\n",
|
|
||||||
+ gcore->corename,
|
|
||||||
+ strerror(errno));
|
|
||||||
+
|
|
||||||
+ if (ftruncate(fileno(gcore->fp), ftell(gcore->fp)) < 0)
|
|
||||||
+ error(FATAL, "%s: ftruncate: %s\n",
|
|
||||||
+ gcore->corename,
|
|
||||||
+ strerror(errno));
|
|
||||||
+
|
|
||||||
gcore->flags |= GCF_SUCCESS;
|
|
||||||
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.37.1
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
|||||||
From d2795659986dacc51e98a3d1dbc8b673582c20fe Mon Sep 17 00:00:00 2001
|
|
||||||
From: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
|
||||||
Date: Tue, 28 Jun 2022 03:54:46 +0900
|
|
||||||
Subject: [PATCH 5/5] gcore.mk: fix mismatch of _FILE_OFFSET_BITS when building
|
|
||||||
gcore.so
|
|
||||||
|
|
||||||
On arm and mips, while _FILE_OFFSET_BITS=64 is used when building
|
|
||||||
gcore.so by make extensions, it is not used by gcore.mk.
|
|
||||||
|
|
||||||
Fix this inconsistency by using _FILE_OFFSET_BITS=64 in gcore.mk on
|
|
||||||
arm and mips.
|
|
||||||
|
|
||||||
Signed-off-by: HATAYAMA Daisuke <d.hatayama@fujitsu.com>
|
|
||||||
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
|
|
||||||
---
|
|
||||||
src/gcore.mk | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/gcore.mk b/src/gcore.mk
|
|
||||||
index 4af292b79c60..1fd4d84c2ded 100644
|
|
||||||
--- a/src/gcore.mk
|
|
||||||
+++ b/src/gcore.mk
|
|
||||||
@@ -32,7 +32,7 @@ endif
|
|
||||||
|
|
||||||
ifeq ($(shell arch), arm)
|
|
||||||
TARGET=ARM
|
|
||||||
- TARGET_CFLAGS=
|
|
||||||
+ TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64
|
|
||||||
ARCH=SUPPORTED
|
|
||||||
endif
|
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ endif
|
|
||||||
|
|
||||||
ifeq ($(shell arch), mips)
|
|
||||||
TARGET=MIPS
|
|
||||||
- TARGET_CFLAGS=
|
|
||||||
+ TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64
|
|
||||||
ARCH=SUPPORTED
|
|
||||||
endif
|
|
||||||
|
|
||||||
--
|
|
||||||
2.37.1
|
|
||||||
|
|
@ -1,137 +1,63 @@
|
|||||||
#
|
|
||||||
# crash core analysis suite
|
|
||||||
#
|
|
||||||
%global reponame crash-gcore
|
%global reponame crash-gcore
|
||||||
|
|
||||||
Summary: Gcore extension module for the crash utility
|
Summary: Gcore extension module for the crash utility
|
||||||
Name: crash-gcore-command
|
Name: crash-gcore-command
|
||||||
Version: 1.6.3
|
Version: 1.6.4
|
||||||
Release: 3%{?dist}
|
Release: 1%{?dist}
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
Group: Development/Debuggers
|
Source0: https://github.com/fujitsu/crash-gcore/archive/v%{version}/%{name}-%{version}.tar.gz
|
||||||
Source: https://github.com/fujitsu/crash-gcore/archive/v%{version}/%{name}-%{version}.tar.gz
|
|
||||||
URL: https://github.com/fujitsu/crash-gcore
|
URL: https://github.com/fujitsu/crash-gcore
|
||||||
# Vendor: FUJITSU LIMITED
|
|
||||||
# Packager: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
|
|
||||||
ExclusiveOS: Linux
|
ExclusiveOS: Linux
|
||||||
ExclusiveArch: x86_64 %{ix86} arm aarch64 ppc64 ppc64le
|
ExclusiveArch: aarch64 ppc64le x86_64
|
||||||
Buildroot: %{_tmppath}/%{name}-root
|
BuildRequires: crash-devel >= 5.1.5
|
||||||
BuildRequires: crash-devel >= 5.1.5, zlib-devel lzo-devel snappy-devel
|
BuildRequires: gcc
|
||||||
Requires: crash >= 5.1.5
|
Requires: crash >= 5.1.5
|
||||||
Patch0: 0001-coredump-use-MEMBER_-OFFSET-SIZE-instead-of-GCORE_-O.patch
|
|
||||||
Patch1: 0002-gcore-defs-remove-definitions-and-initializations-fo.patch
|
Patch0: 0001-coredump-fix-building-failure-due-to-undefined-macro.patch
|
||||||
Patch2: 0003-gcore-fix-memory-allocation-failure-during-processin.patch
|
Patch1: 0002-x86-fix-extend-gcore.so-taking-much-time-like-more-t.patch
|
||||||
Patch3: 0001-x86-Fix-failure-of-collecting-vsyscall-mapping-due-t.patch
|
|
||||||
Patch4: 0002-coredump-fix-segmentation-fault-caused-by-type-misma.patch
|
|
||||||
Patch5: 0003-elf-fix-warning-message-caused-by-type-mismatch-of-o.patch
|
|
||||||
Patch6: 0004-coredump-fix-unexpected-truncation-of-generated-core.patch
|
|
||||||
Patch7: 0005-gcore.mk-fix-mismatch-of-_FILE_OFFSET_BITS-when-buil.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Command for creating a core dump file of a user-space task that was
|
Command for creating a core dump file of a user-space task that was
|
||||||
running in a kernel dumpfile.
|
running in a kernel dump file.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{reponame}-%{version}
|
%autosetup -n %{reponame}-%{version} -p1
|
||||||
%patch0 -p1
|
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
%patch5 -p1
|
|
||||||
%patch6 -p1
|
|
||||||
%patch7 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
make CFLAGS="%{optflags} -Wl,-z,now" -C src -f gcore.mk
|
%make_build CFLAGS="%{optflags} -Wl,-z,now" -C src -f gcore.mk
|
||||||
|
|
||||||
%install
|
%install
|
||||||
rm -Rf $RPM_BUILD_ROOT
|
install -m 0755 -d %{buildroot}%{_libdir}/crash/extensions
|
||||||
mkdir -p %{buildroot}%{_libdir}/crash/extensions/
|
install -m 0755 -t %{buildroot}%{_libdir}/crash/extensions %{_builddir}/%{reponame}-%{version}/src/gcore.so
|
||||||
cp %{_builddir}/%{reponame}-%{version}/src/gcore.so %{buildroot}%{_libdir}/crash/extensions/
|
|
||||||
|
|
||||||
%clean
|
|
||||||
rm -rf %{buildroot}
|
|
||||||
rm -Rf $RPM_BUILD_ROOT
|
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%dir %{_libdir}/crash
|
||||||
|
%dir %{_libdir}/crash/extensions
|
||||||
%{_libdir}/crash/extensions/gcore.so
|
%{_libdir}/crash/extensions/gcore.so
|
||||||
%doc COPYING
|
%license COPYING
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Fri Nov 18 2022 Lianbo Jiang <lijiang@redhat.com> - 1.6.3-3
|
* Fri Jul 05 2024 Lianbo Jiang <lijiang@redhat.com> - 1.6.4-1
|
||||||
- Update to upstream commit d2795659986d
|
- Rebase to upstream 1.6.4
|
||||||
- Resolves: rhbz#2119697
|
|
||||||
|
|
||||||
* Tue Apr 12 2022 Tao Liu <ltao@redhat.com> - 1.6.3-2
|
* Fri Nov 18 2022 Lianbo Jiang <lijiang@redhat.com> - 1.6.3-2
|
||||||
- Rebase to upstream crash-gcore-command-1.6.3
|
- Update to the latest commit d2795659986d
|
||||||
- Fix memory allocation failure issue
|
|
||||||
- Resolves: rhbz#2060355
|
|
||||||
|
|
||||||
* Wed Dec 2 2020 Bhupesh Sharma <bhsharma@redhat.com> - 1.6.0-1
|
* Mon Dec 27 2021 Lianbo Jiang <lijiang@redhat.com> - 1.6.3-1
|
||||||
- Rebase crash-gcore-command to github upstream version crash-gcore-command-1.6.0
|
- Rebase to upstream 1.6.3
|
||||||
Resolves: rhbz#1903465
|
|
||||||
|
|
||||||
* Wed Jul 8 2020 Bhupesh Sharma <bhsharma@redhat.com> - 1.5.1-1
|
* Wed Dec 15 2021 Lianbo Jiang <lijiang@redhat.com> - 1.6.2-5
|
||||||
- Rebase crash-gcore-command to github upstream version crash-gcore-command-1.5.1
|
- Rebuild for the compatibility issue
|
||||||
Resolves: rhbz#1851747
|
|
||||||
|
|
||||||
* Tue Jun 25 2019 Dave Anderson <anderson@redhat.com> - 1.3.1-4
|
* Tue Dec 07 2021 Lianbo Jiang <lijiang@redhat.com> - 1.6.2-4
|
||||||
- Fix "invalid structure size: pid_link"
|
- Fix the hardening issue "FAIL: bind-now test because not linked with -Wl,-z,now"
|
||||||
Resolves: rhbz#1722726
|
|
||||||
|
|
||||||
* Tue Dec 4 2018 Dave Anderson <anderson@redhat.com> - 1.3.1-3
|
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.6.2-3
|
||||||
- Fix x86_64 "invalid structure member offset: thread_struct_fs"
|
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||||
Resolves: rhbz#1589019
|
Related: rhbz#1991688
|
||||||
- Fix arm64 "invalid structure member offset: thread_struct_fpsimd_state"
|
|
||||||
Resolves: rhbz#1625810
|
|
||||||
|
|
||||||
* Wed Sep 10 2018 Dave Anderson <anderson@redhat.com> - 1.3.1-2
|
* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 1.6.2-2
|
||||||
- Address annocheck link issue
|
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
|
||||||
Resolves: rhbz#1630556
|
|
||||||
|
|
||||||
* Mon Aug 13 2018 Dave Anderson <anderson@redhat.com> - 1.3.1-1
|
* Fri Jan 22 2021 HATAYAMA Daisuke <d.hatayama@fujitsu.com> - 1.6.2-1
|
||||||
- Bump release for mass rebuild
|
|
||||||
Resolves: rhbz#1615509
|
|
||||||
|
|
||||||
* Thu Nov 6 2014 Dave Anderson <anderson@redhat.com> - 1.3.1-0
|
|
||||||
- Rebase to 1.3.1 to address 32-bit x86 build error.
|
|
||||||
- Resolves: rhbz#1077311
|
|
||||||
|
|
||||||
* Tue Nov 4 2014 Dave Anderson <anderson@redhat.com> - 1.3.0-0
|
|
||||||
- Add aarch64 support
|
|
||||||
- Resolves: rhbz#1077311
|
|
||||||
- Add ppc64/ppc64le support
|
|
||||||
- Resolves: rhbz#1125485
|
|
||||||
|
|
||||||
* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 1.2.1-2
|
|
||||||
- Mass rebuild 2013-12-27
|
|
||||||
|
|
||||||
|
|
||||||
* Tue Aug 20 2013 Dave Anderson <anderson@redhat.com> - 1.2.1-1
|
|
||||||
crash utility has added LZO and snappy compression in addition to zlib.
|
|
||||||
|
|
||||||
* Thu May 23 2013 HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com> - 1.2.1-0
|
|
||||||
Fixes for missing VDSO and vsyscall pages in core dump.
|
|
||||||
|
|
||||||
* Wed Nov 21 2012 HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com> - 1.2-0
|
|
||||||
Support recent kernels around 3.6.
|
|
||||||
|
|
||||||
* Tue Jan 31 2012 Dave Anderson <anderson@redhat.com> - 1.0-3
|
|
||||||
Address Pkgwrangler/rpmlint issues.
|
|
||||||
Resolves: rbhz#692799
|
|
||||||
|
|
||||||
* Wed Jan 25 2012 Dave Anderson <anderson@redhat.com> - 1.0-2
|
|
||||||
Compile with RPM_OPT_FLAGS and fix warnings generated from using it.
|
|
||||||
Resolves: rbhz#692799
|
|
||||||
|
|
||||||
* Thu Apr 13 2011 HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com> - 1.0-1
|
|
||||||
- Remove inclusion of kvmdump.h and unwind_x86_64.h due to non-supporting issue
|
|
||||||
on crash-devel package. Instead, use a new interface for them.
|
|
||||||
- Remove ppc64, ia64, s390 and s390x from ExclusiveArch, leave x86_64
|
|
||||||
and %%{ix86} there.
|
|
||||||
- Add descriptions in BuildRequires and Requires about crash and crash-devel.
|
|
||||||
|
|
||||||
* Wed Apr 6 2011 HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com> - 1.0-0
|
|
||||||
- Initial crash-gcore-command package
|
- Initial crash-gcore-command package
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user