Sync from SUSE:SLFO:Main crash revision 27fa679933d6ecc4bf9248e54616d054
This commit is contained in:
commit
4bfa86ed8c
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
Module.supported
Normal file
1
Module.supported
Normal file
@ -0,0 +1 @@
|
||||
crash.ko
|
22
README.SUSE
Normal file
22
README.SUSE
Normal file
@ -0,0 +1,22 @@
|
||||
Changes in the SUSE package
|
||||
===========================
|
||||
|
||||
- Emacs is the default editing mode, can still be overwritten to vi mode via
|
||||
command line or configuration file
|
||||
- added the Crash Whitepaper from
|
||||
http://people.redhat.com/anderson/.crash_whitepaper/
|
||||
|
||||
As-of May 30th 2020 the Crash Whitepaper has been moved to
|
||||
https://crash-utility.github.io/crash_whitepaper.html
|
||||
- fix for LKCD header (SLES9 has another header format than SLES10) in IA64
|
||||
|
||||
|
||||
SIAL
|
||||
====
|
||||
|
||||
To use the SIAL extension, install crash-sial and load it with "extend sial.so"
|
||||
in crash. If you want to have the sial extension automatically loaded at
|
||||
startup, add this command to your ~/.crashrc configuration file.
|
||||
|
||||
Place custom scripts in /usr/share/sial/crash (system wide) or ~/.sial (per
|
||||
user).
|
BIN
crash-8.0.4.tar.gz
(Stored with Git LFS)
Normal file
BIN
crash-8.0.4.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -0,0 +1,39 @@
|
||||
From 28fa7bd09013455b5ddc020dea4706278cda0d65 Mon Sep 17 00:00:00 2001
|
||||
From: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Date: Wed, 20 Jun 2018 01:34:22 +0530
|
||||
Subject: book3s/ppc64: Increase the VA range
|
||||
Upstream: no, adapts the below upstream commit for SLE15 SP1
|
||||
Git-commit: 28fa7bd09013455b5ddc020dea4706278cda0d65
|
||||
|
||||
Fix for PPC64 kernel virtual address translation in Linux 4.17 and
|
||||
later kernels with commit c2b4d8b7417a59b7f9a52d0d8402f5257cbbd398,
|
||||
titled "powerpc/mm/hash64: Increase the VA range", in which the
|
||||
maximum virtual address value has been increased to 4PB. Without
|
||||
the patch, the translation/access of high vmalloc space addresses
|
||||
fails; for example, the "kmem -[sS]" option fails the translation
|
||||
of per-cpu kmem_cache_cpu addresses located in vmalloc space, with
|
||||
the error messages "kmem: invalid kernel virtual address: <address>
|
||||
type: kmem_cache_cpu.freelist" and "kmem: invalid kernel virtual
|
||||
address: <address> type: kmem_cache_cpu.page", and the "vtop"
|
||||
command shows the addresses as "(not mapped)". (hbathini@linux.ibm.com)
|
||||
|
||||
[note: apply on 4.12+ for SLE 15 SP1 - incompatible with SLE 15 SP0]
|
||||
|
||||
---
|
||||
|
||||
Index: crash-7.2.8/ppc64.c
|
||||
===================================================================
|
||||
--- crash-7.2.8.orig/ppc64.c
|
||||
+++ crash-7.2.8/ppc64.c
|
||||
@@ -519,8 +519,9 @@ ppc64_init(int when)
|
||||
|
||||
if (THIS_KERNEL_VERSION >= LINUX(4,12,0)) {
|
||||
ms->l2_index_size = PMD_INDEX_SIZE_L4_64K_4_12;
|
||||
- if (THIS_KERNEL_VERSION >= LINUX(4,17,0))
|
||||
- ms->l3_index_size = PUD_INDEX_SIZE_L4_64K_4_17;
|
||||
+ if (THIS_KERNEL_VERSION >= LINUX(4,17,0) ||
|
||||
+ is_SLE15SP1())
|
||||
+ ms->l3_index_size = PUD_INDEX_SIZE_L4_64K_4_17;
|
||||
else
|
||||
ms->l3_index_size = PUD_INDEX_SIZE_L4_64K_4_12;
|
||||
ms->l4_index_size = PGD_INDEX_SIZE_L4_64K_4_12;
|
@ -0,0 +1,52 @@
|
||||
From 599a6579aa916df7800f8e889d68e4287e4520dd Mon Sep 17 00:00:00 2001
|
||||
From: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Date: Thu, 27 Sep 2018 02:06:49 +0530
|
||||
Subject: ppc64: increase MAX_PHYSMEM_BITS to 128TB
|
||||
Upstream: no, adapts the below upstream commit for SLE15 SP1
|
||||
Git-commit: 599a6579aa916df7800f8e889d68e4287e4520dd
|
||||
|
||||
With Linux 4.19-rc1 commit 7d4340bb92a9df78e6e28152f3dd89d9bd82146b,
|
||||
titled "powerpc/mm: Increase MAX_PHYSMEM_BITS to 128TB with
|
||||
SPARSEMEM_VMEMMAP config", the PPC64 MAX_PHYSMEM_BITS value has been
|
||||
bumped up to 47. The appropriate update has been made in this patch.
|
||||
(hbathini@linux.ibm.com)
|
||||
|
||||
[note: apply on 4.12+ for SLE 15 SP1 - incompatible with SLE 15 SP0]
|
||||
---
|
||||
|
||||
Index: crash-7.2.8/defs.h
|
||||
===================================================================
|
||||
--- crash-7.2.8.orig/defs.h
|
||||
+++ crash-7.2.8/defs.h
|
||||
@@ -6896,6 +6896,9 @@ extern struct lkcd_environment *lkcd;
|
||||
#define is_SLES9() \
|
||||
((THIS_KERNEL_VERSION == LINUX(2,6,5)) && kt->is_suse_kernel)
|
||||
|
||||
+#define is_SLE15SP1() \
|
||||
+ ((THIS_KERNEL_VERSION >= LINUX(4,12,0)) && kt->is_suse_kernel)
|
||||
+
|
||||
/*
|
||||
* gdb_interface.c
|
||||
*/
|
||||
Index: crash-7.2.8/ppc64.c
|
||||
===================================================================
|
||||
--- crash-7.2.8.orig/ppc64.c
|
||||
+++ crash-7.2.8/ppc64.c
|
||||
@@ -244,9 +244,14 @@ static int set_ppc64_max_physmem_bits(vo
|
||||
*/
|
||||
machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_4_20;
|
||||
} else if ((machdep->flags & VMEMMAP) &&
|
||||
- ((THIS_KERNEL_VERSION >= LINUX(4,19,0)) || is_RHEL8())) {
|
||||
- /* SPARSEMEM_VMEMMAP & v4.19 kernel or later, or RHEL8 */
|
||||
- machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_4_19;
|
||||
+ ((THIS_KERNEL_VERSION >= LINUX(4,19,0)) ||
|
||||
+ is_RHEL8() ||
|
||||
+ is_SLE15SP1())) {
|
||||
+ /*
|
||||
+ * SPARSEMEM_VMEMMAP & v4.19 kernel or later,
|
||||
+ * or RHEL8 or SLE-15-SP1
|
||||
+ */
|
||||
+ machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_4_19;
|
||||
} else if (THIS_KERNEL_VERSION >= LINUX(3,7,0))
|
||||
machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_3_7;
|
||||
else
|
38
crash-allow-use-of-sadump-captured-KASLR-kernel.patch
Normal file
38
crash-allow-use-of-sadump-captured-KASLR-kernel.patch
Normal file
@ -0,0 +1,38 @@
|
||||
This patch fix a problem that crash cannot open a dumpfile which is
|
||||
captured by sadump in KASLR enabled kernel.
|
||||
|
||||
When KASLR feature is enabled, a kernel is placed on the memory randomly
|
||||
and therefore crash cannot open a dumpfile captured by sadump because
|
||||
addresses of kernel symbols in System.map or vmlinux are different from
|
||||
actual addresses.
|
||||
|
||||
To solve this problem, we need to calculate kaslr offset(the difference
|
||||
between original symbol address and actual address) and phys_base, and
|
||||
adjust symbol table of crash. In the case of dumpfile of kdump, these
|
||||
information is included in the header, but dumpfile of sadump does not
|
||||
have such a information.
|
||||
|
||||
This patch calculate kaslr offset and phys_base to solve this problem.
|
||||
Please see the comment in the calc_kaslr_offset() for the detail idea.
|
||||
The basic idea is getting register (IDTR and CR3) from dump header, and
|
||||
calculate kaslr_offset/phys_base using them.
|
||||
|
||||
Signed-off-by: Takao Indoh <indou.takao@jp.fujitsu.com>
|
||||
---
|
||||
symbols.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
Index: b/symbols.c
|
||||
===================================================================
|
||||
--- a/symbols.c
|
||||
+++ b/symbols.c
|
||||
@@ -1209,6 +1209,9 @@ symname_hash_install(struct syment *spn)
|
||||
}
|
||||
}
|
||||
}
|
||||
+
|
||||
+ if (SADUMP_DUMPFILE())
|
||||
+ kt->flags2 |= KASLR_CHECK;
|
||||
}
|
||||
|
||||
/*
|
72
crash-compressed-booted-kernel.patch
Normal file
72
crash-compressed-booted-kernel.patch
Normal file
@ -0,0 +1,72 @@
|
||||
From: Petr Tesarik <ptesarik@suse.cz>
|
||||
Subject: Automatically detect compressed booted kernel
|
||||
References: bnc#777516, bnc#828260
|
||||
Upstream: not yet
|
||||
|
||||
Signed-off-by: Petr Tesarik <ptesarik@suse.cz>
|
||||
|
||||
---
|
||||
filesys.c | 26 ++++++++++++++++++++++----
|
||||
1 file changed, 22 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: b/filesys.c
|
||||
===================================================================
|
||||
--- a/filesys.c
|
||||
+++ b/filesys.c
|
||||
@@ -588,6 +588,7 @@ static int
|
||||
find_booted_kernel(void)
|
||||
{
|
||||
char kernel[BUFSIZE];
|
||||
+ char *real_kernel;
|
||||
char buffer[BUFSIZE];
|
||||
char **searchdirs;
|
||||
int i, preferred, wrapped;
|
||||
@@ -637,16 +638,24 @@ find_booted_kernel(void)
|
||||
sprintf(kernel, "%s%s", searchdirs[i], dp->d_name);
|
||||
|
||||
if (mount_point(kernel) ||
|
||||
- !file_readable(kernel) ||
|
||||
- !is_kernel(kernel))
|
||||
+ !file_readable(kernel))
|
||||
continue;
|
||||
|
||||
+ if (!is_compressed_kernel(kernel, &real_kernel))
|
||||
+ real_kernel = kernel;
|
||||
+
|
||||
if (CRASHDEBUG(1))
|
||||
fprintf(fp, "find_booted_kernel: check: %s\n",
|
||||
kernel);
|
||||
|
||||
- found = match_file_string(kernel, kt->proc_version, buffer);
|
||||
-
|
||||
+ if (!is_kernel(real_kernel)) {
|
||||
+ if (real_kernel != kernel)
|
||||
+ free(real_kernel);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ found = match_file_string(real_kernel, kt->proc_version, buffer);
|
||||
+
|
||||
if (found)
|
||||
break;
|
||||
}
|
||||
@@ -666,10 +675,19 @@ find_booted_kernel(void)
|
||||
if (CRASHDEBUG(1))
|
||||
fprintf(fp, "find_booted_kernel: found: %s\n",
|
||||
pc->namelist);
|
||||
+ if (real_kernel != kernel) {
|
||||
+ pc->namelist_orig = pc->namelist;
|
||||
+ pc->namelist = real_kernel;
|
||||
+ }
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
+ if (real_kernel != kernel) {
|
||||
+ remove(real_kernel);
|
||||
+ free(real_kernel);
|
||||
+ }
|
||||
+
|
||||
error(INFO,
|
||||
"cannot find booted kernel -- please enter namelist argument\n\n");
|
||||
return FALSE;
|
67
crash-debuginfo-compressed.patch
Normal file
67
crash-debuginfo-compressed.patch
Normal file
@ -0,0 +1,67 @@
|
||||
From: Petr Tesarik <ptesarik@suse.cz>
|
||||
Subject: Search debuginfo files in the original directory
|
||||
References: bnc#723639
|
||||
|
||||
If debuginfo is in a separate file and the kernel image is compressed,
|
||||
then it should be found in the same directory as the original (compressed)
|
||||
image, not in the directory with the uncompressed image (TMPDIR).
|
||||
|
||||
Signed-off-by: Petr Tesarik <ptesarik@suse.cz>
|
||||
|
||||
---
|
||||
symbols.c | 17 ++++++++++-------
|
||||
1 file changed, 10 insertions(+), 7 deletions(-)
|
||||
|
||||
Index: b/symbols.c
|
||||
===================================================================
|
||||
--- a/symbols.c
|
||||
+++ b/symbols.c
|
||||
@@ -240,9 +240,9 @@ symtab_init(void)
|
||||
* Pull a bait-and-switch on st->bfd if we've got a separate
|
||||
* .gnu_debuglink file that matches the CRC. Not done for kerntypes.
|
||||
*/
|
||||
- if (!(LKCD_KERNTYPES()) &&
|
||||
- !(bfd_get_file_flags(st->bfd) & HAS_SYMS)) {
|
||||
- if (!check_gnu_debuglink(st->bfd))
|
||||
+ if (!(LKCD_KERNTYPES())) {
|
||||
+ if (!check_gnu_debuglink(st->bfd) &&
|
||||
+ !(bfd_get_file_flags(st->bfd) & HAS_SYMS))
|
||||
no_debugging_data(FATAL);
|
||||
}
|
||||
|
||||
@@ -304,13 +304,16 @@ check_gnu_debuglink(bfd *bfd)
|
||||
char *contents;
|
||||
int crc_offset;
|
||||
unsigned long crc32;
|
||||
+ char *namelist;
|
||||
char *dirname;
|
||||
char *namelist_debug;
|
||||
char **matching;
|
||||
|
||||
+ namelist = pc->namelist_orig ? pc->namelist_orig : pc->namelist;
|
||||
+
|
||||
sect = bfd_get_section_by_name(bfd, ".gnu_debuglink");
|
||||
if (!sect) {
|
||||
- error(INFO, "%s: no .gnu_debuglink section\n", pc->namelist);
|
||||
+ error(INFO, "%s: no .gnu_debuglink section\n", namelist);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -331,14 +334,14 @@ check_gnu_debuglink(bfd *bfd)
|
||||
contents, crc32);
|
||||
|
||||
if ((pc->debuginfo_file = (char *)
|
||||
- malloc(((strlen(pc->namelist) + strlen("/.debug/") +
|
||||
+ malloc(((strlen(namelist) + strlen("/.debug/") +
|
||||
+ strlen(".debug") + strlen(" /usr/lib/debug/boot/ "))*10)
|
||||
+ strlen(pc->namelist_debug ? pc->namelist_debug : " "))) == NULL)
|
||||
error(FATAL, "debuginfo file name malloc: %s\n",
|
||||
strerror(errno));
|
||||
|
||||
- dirname = GETBUF(strlen(pc->namelist)+1);
|
||||
- strcpy(dirname, pc->namelist);
|
||||
+ dirname = GETBUF(strlen(namelist)+1);
|
||||
+ strcpy(dirname, namelist);
|
||||
|
||||
for (i = strlen(dirname)-1; i >= 0; i--)
|
||||
{
|
27
crash-enable-zstd-support.patch
Normal file
27
crash-enable-zstd-support.patch
Normal file
@ -0,0 +1,27 @@
|
||||
From 1917e50265c15ff00c6f40b64720ef173f550059 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Wed, 10 Nov 2021 12:30:27 +0100
|
||||
Subject: [PATCH] crash: enable zstd support
|
||||
|
||||
---
|
||||
CFLAGS.extra | 2 +-
|
||||
LDFLAGS.extra | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/CFLAGS.extra b/CFLAGS.extra
|
||||
index 4fafcff..825d5ee 100644
|
||||
--- a/CFLAGS.extra
|
||||
+++ b/CFLAGS.extra
|
||||
@@ -1 +1 @@
|
||||
--DLZO -DSNAPPY
|
||||
+-DLZO -DSNAPPY -DZSTD
|
||||
diff --git a/LDFLAGS.extra b/LDFLAGS.extra
|
||||
index 83f3661..ffc6ee8 100644
|
||||
--- a/LDFLAGS.extra
|
||||
+++ b/LDFLAGS.extra
|
||||
@@ -1 +1 @@
|
||||
--llzo2 -lsnappy
|
||||
+-llzo2 -lsnappy -lzstd
|
||||
--
|
||||
2.33.1
|
||||
|
13
crash-extensions-rule-for-defs.patch
Normal file
13
crash-extensions-rule-for-defs.patch
Normal file
@ -0,0 +1,13 @@
|
||||
Index: b/extensions/Makefile
|
||||
===================================================================
|
||||
--- a/extensions/Makefile
|
||||
+++ b/extensions/Makefile
|
||||
@@ -32,6 +32,8 @@ link_defs:
|
||||
@rm -f defs.h
|
||||
@ln ../defs.h
|
||||
|
||||
+defs.h: link_defs
|
||||
+
|
||||
$(CONTRIB_SO): %.so: %.c defs.h
|
||||
@if [ -f $*.mk ]; then \
|
||||
$(MAKE) -f $*.mk; \
|
1
crash-gdb-10.2.series
Normal file
1
crash-gdb-10.2.series
Normal file
@ -0,0 +1 @@
|
||||
gdb-gnulib-define-warndecl.patch
|
31
crash-gdb-gnulib-define-warndecl.patch
Normal file
31
crash-gdb-gnulib-define-warndecl.patch
Normal file
@ -0,0 +1,31 @@
|
||||
From: Petr Tesarik <petr@tesarici.cz>
|
||||
Subject: gnulib: Provide a definition of __warndecl
|
||||
Upstream: never, compatibility with SLE12 only
|
||||
|
||||
The local copy of string.h includes the system string.h. Older glibc makes
|
||||
use of the __warndecl macro, but gnulib's cdefs.h does not provide one.
|
||||
|
||||
Signed-off-by: Petr Tesarik <petr@tesarici.cz>
|
||||
---
|
||||
gdb-10.2/gnulib/import/cdefs.h | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
--- a/gnulib/import/cdefs.h
|
||||
+++ b/gnulib/import/cdefs.h
|
||||
@@ -704,4 +704,16 @@ _Static_assert (0, "IEEE 128-bits long d
|
||||
# define __attribute_returns_twice__ /* Ignore. */
|
||||
#endif
|
||||
|
||||
+#if __GNUC_PREREQ (4,3)
|
||||
+# define __warndecl(name, msg) \
|
||||
+ extern void name (void) __attribute__((__warning__ (msg)))
|
||||
+# define __warnattr(msg) __attribute__((__warning__ (msg)))
|
||||
+# define __errordecl(name, msg) \
|
||||
+ extern void name (void) __attribute__((__error__ (msg)))
|
||||
+#else
|
||||
+# define __warndecl(name, msg) extern void name (void)
|
||||
+# define __warnattr(msg)
|
||||
+# define __errordecl(name, msg) extern void name (void)
|
||||
+#endif
|
||||
+
|
||||
#endif /* sys/cdefs.h */
|
1
crash-kmp-preamble
Normal file
1
crash-kmp-preamble
Normal file
@ -0,0 +1 @@
|
||||
Requires: kernel-%1
|
30
crash-make-emacs-default.diff
Normal file
30
crash-make-emacs-default.diff
Normal file
@ -0,0 +1,30 @@
|
||||
---
|
||||
main.c | 8 +-------
|
||||
1 file changed, 1 insertion(+), 7 deletions(-)
|
||||
|
||||
Index: b/main.c
|
||||
===================================================================
|
||||
--- a/main.c
|
||||
+++ b/main.c
|
||||
@@ -1183,12 +1183,6 @@ setup_environment(int argc, char **argv)
|
||||
pc->flags |= READLINE;
|
||||
pc->editing_mode = "no_mode";
|
||||
|
||||
- if ((p1 = getenv("EDITOR"))) {
|
||||
- if (strstr(p1, "vi"))
|
||||
- pc->editing_mode = "vi";
|
||||
- if (strstr(p1, "emacs"))
|
||||
- pc->editing_mode = "emacs";
|
||||
- }
|
||||
|
||||
/*
|
||||
* Resolve $HOME .rc file first, then the one in the local directory.
|
||||
@@ -1238,7 +1232,7 @@ setup_environment(int argc, char **argv)
|
||||
}
|
||||
|
||||
if (STREQ(pc->editing_mode, "no_mode"))
|
||||
- pc->editing_mode = "vi";
|
||||
+ pc->editing_mode = "emacs";
|
||||
|
||||
machdep_init(SETUP_ENV);
|
||||
}
|
32
crash-patch-gdb.patch
Normal file
32
crash-patch-gdb.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From: Petr Tesarik <ptesarik@suse.cz>
|
||||
Subject: Apply custom patches to gdb
|
||||
Upstream: never
|
||||
|
||||
Enhance the crash specfile to allow applying custom patches.
|
||||
|
||||
Update jeffm 17 Sep 2014: What used to be in the series file is now in
|
||||
gdb-7.6-ppc64le-support.patch. We used to apply it unconditionally so
|
||||
we'll continue to do so.
|
||||
|
||||
Signed-off-by: Petr Tesarik <ptesarik@suse.cz>
|
||||
|
||||
---
|
||||
Makefile | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: b/Makefile
|
||||
===================================================================
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -293,6 +293,11 @@ gdb_unzip:
|
||||
gdb_patch:
|
||||
if [ -f ${GDB}.patch ] && [ -s ${GDB}.patch ]; then \
|
||||
patch -p0 < ${GDB}.patch; cp ${GDB}.patch ${GDB}; fi
|
||||
+ if [ -f ${GDB}.series ]; then \
|
||||
+ while read p; do \
|
||||
+ patch -d ${GDB} -p1 -F0 < "$$p" ; \
|
||||
+ done < ${GDB}.series ; \
|
||||
+ fi
|
||||
|
||||
library: ${OBJECT_FILES}
|
||||
ar -rs ${PROGRAM}lib.a ${OBJECT_FILES}
|
4
crash-rpmlintrc
Normal file
4
crash-rpmlintrc
Normal file
@ -0,0 +1,4 @@
|
||||
addFilter("devel-file-in-non-devel-package .*/usr/share/sial/crash.*")
|
||||
# crash-7.0.9.tar compresses better with gzip than with bzip2
|
||||
addFilter(" source-or-patch-not-bzipped crash-7.0.9.tar.gz")
|
||||
addFilter(" source-or-patch-not-compressed bz2 crash-7.0.9.tar.gz")
|
15
crash-sial-ps-2.6.29.diff
Normal file
15
crash-sial-ps-2.6.29.diff
Normal file
@ -0,0 +1,15 @@
|
||||
diff -Nurp sial-scripts-2008-02-08.orig//ps.c sial-scripts-2008-02-08/ps.c
|
||||
--- sial-scripts-2008-02-08.orig//ps.c 2010-03-12 19:59:03.227788951 +0100
|
||||
+++ sial-scripts-2008-02-08/ps.c 2010-03-12 19:59:16.690665574 +0100
|
||||
@@ -192,7 +192,11 @@ string cmd;
|
||||
|
||||
printf("%p %7d %7d %7d 0x%02x 0x%08x %5d:%-5d %s\n"
|
||||
, t
|
||||
+#if LINUX_RELEASE > 0x02061d
|
||||
+ , t->real_cred->uid
|
||||
+#else
|
||||
, t->uid
|
||||
+#endif
|
||||
, t->pid
|
||||
#if LINUX_2_6_X
|
||||
, t->parent->pid
|
75
crash-sles9-quirk.patch
Normal file
75
crash-sles9-quirk.patch
Normal file
@ -0,0 +1,75 @@
|
||||
From: Bernhard Walle <bwalle@suse.de>
|
||||
Subject: [PATCH] Add quirk for SLES9 LKCD header
|
||||
Upstream: never
|
||||
|
||||
On SLES9, we have a different header on IA64:
|
||||
|
||||
SLES 10:
|
||||
|
||||
typedef struct __dump_header_asm {
|
||||
uint64_t dha_magic_number;
|
||||
uint32_t dha_version;
|
||||
uint32_t dha_header_size;
|
||||
uint64_t dha_pt_regs;
|
||||
struct pt_regs dha_regs;
|
||||
uint64_t dha_rnat;
|
||||
uint64_t dha_pfs;
|
||||
uint64_t dha_bspstore;
|
||||
uint32_t dha_smp_num_cpus;
|
||||
uint32_t dha_dumping_cpu;
|
||||
struct pt_regs dha_smp_regs[NR_CPUS];
|
||||
uint64_t dha_smp_current_task[NR_CPUS];
|
||||
uint64_t dha_stack[NR_CPUS];
|
||||
uint64_t dha_stack_ptr[NR_CPUS];
|
||||
uint64_t dha_kernel_addr;
|
||||
} __attribute__((packed)) dump_header_asm_t;
|
||||
|
||||
SLES 9:
|
||||
typedef struct __dump_header_asm {
|
||||
uint64_t dha_magic_number;
|
||||
uint32_t dha_version;
|
||||
uint32_t dha_header_size;
|
||||
uint64_t dha_kernel_addr;
|
||||
uint64_t dha_pt_regs;
|
||||
struct pt_regs dha_regs;
|
||||
uint64_t dha_rnat;
|
||||
uint64_t dha_pfs;
|
||||
uint64_t dha_bspstore;
|
||||
uint32_t dha_smp_num_cpus;
|
||||
uint32_t dha_dumping_cpu;
|
||||
struct pt_regs dha_smp_regs[NR_CPUS];
|
||||
uint64_t dha_smp_current_task[NR_CPUS];
|
||||
uint64_t dha_stack[NR_CPUS];
|
||||
uint64_t dha_stack_ptr[NR_CPUS];
|
||||
} __attribute__((packed)) dump_header_asm_t;
|
||||
|
||||
That patch tries to guess if it's a SLES 9 or a SLES 10 header
|
||||
at runtime.
|
||||
|
||||
|
||||
Signed-off-by: Bernhard Walle <bwalle@suse.de>
|
||||
|
||||
---
|
||||
lkcd_v8.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
--- a/lkcd_v8.c
|
||||
+++ b/lkcd_v8.c
|
||||
@@ -130,6 +130,17 @@ lkcd_dump_init_v8_arch(dump_header_t *dh
|
||||
goto err;
|
||||
}
|
||||
|
||||
+#if IA64
|
||||
+ /* SLES9 on IA64? */
|
||||
+ if ( *((uint64_t *)(hdr_buf + hdr_size - sizeof(uint64_t))) <= NR_CPUS) {
|
||||
+ uint64_t kernel_addr;
|
||||
+ kernel_addr = ((dump_header_asm_t *)hdr_buf)->dha_pt_regs;
|
||||
+ memmove(hdr_buf + offsetof(dump_header_asm_t, dha_pt_regs),
|
||||
+ hdr_buf + offsetof(dump_header_asm_t, dha_regs),
|
||||
+ hdr_size - offsetof(dump_header_asm_t, dha_regs));
|
||||
+ *((uint64_t *)(hdr_buf + hdr_size - sizeof(uint64_t))) = kernel_addr;
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Though we have KL_NR_CPUS is 128, the header size is different
|
105
crash-sles9-time.patch
Normal file
105
crash-sles9-time.patch
Normal file
@ -0,0 +1,105 @@
|
||||
From: Alan Tyson <atyson@hp.com>
|
||||
Subject: [PATCH] Fix "uptime" and "ps -t" for SLES9
|
||||
References: 352836
|
||||
|
||||
This patch adds a quirk for SLES9 jiffies initialisation and corrects the time
|
||||
data in "uptime" and "ps -t" command.
|
||||
|
||||
|
||||
Acked-by: Bernhard Walle <bwalle@suse.de>
|
||||
|
||||
---
|
||||
defs.h | 8 ++++++++
|
||||
kernel.c | 9 ++++++++-
|
||||
task.c | 11 +++++++++++
|
||||
3 files changed, 27 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: b/defs.h
|
||||
===================================================================
|
||||
--- a/defs.h
|
||||
+++ b/defs.h
|
||||
@@ -767,6 +767,7 @@ struct kernel_table {
|
||||
ulong p2m_missing;
|
||||
} pvops_xen;
|
||||
int highest_irq;
|
||||
+ int is_suse_kernel;
|
||||
#define IKCONFIG_AVAIL 0x1 /* kernel contains ikconfig data */
|
||||
#define IKCONFIG_LOADED 0x2 /* ikconfig data is currently loaded */
|
||||
int ikconfig_flags;
|
||||
@@ -7674,6 +7675,13 @@ extern struct lkcd_environment *lkcd;
|
||||
|
||||
#endif /* LKCD_COMMON */
|
||||
|
||||
+
|
||||
+/*
|
||||
+ * SUSE specific
|
||||
+ */
|
||||
+#define is_SLES9() \
|
||||
+ ((THIS_KERNEL_VERSION == LINUX(2,6,5)) && kt->is_suse_kernel)
|
||||
+
|
||||
/*
|
||||
* gdb_interface.c
|
||||
*/
|
||||
Index: b/kernel.c
|
||||
===================================================================
|
||||
--- a/kernel.c
|
||||
+++ b/kernel.c
|
||||
@@ -315,6 +315,12 @@ kernel_init()
|
||||
|
||||
verify_version();
|
||||
|
||||
+ /*
|
||||
+ * check if we have a suse kernel (this is the module supported
|
||||
+ * patch of agruen@suse.de
|
||||
+ */
|
||||
+ kt->is_suse_kernel = symbol_exists("unsupported");
|
||||
+
|
||||
if (symbol_exists("__per_cpu_offset")) {
|
||||
if (LKCD_KERNTYPES())
|
||||
i = get_cpus_possible();
|
||||
@@ -5852,7 +5858,7 @@ get_uptime(char *buf, ulonglong *j64p)
|
||||
|
||||
if (symbol_exists("jiffies_64")) {
|
||||
get_symbol_data("jiffies_64", sizeof(ulonglong), &jiffies_64);
|
||||
- if (THIS_KERNEL_VERSION >= LINUX(2,6,0)) {
|
||||
+ if (THIS_KERNEL_VERSION >= LINUX(2,6,0) && !is_SLES9()) {
|
||||
wrapped = (jiffies_64 & 0xffffffff00000000ULL);
|
||||
if (wrapped) {
|
||||
wrapped -= 0x100000000ULL;
|
||||
@@ -6454,6 +6460,7 @@ no_cpu_flags:
|
||||
fprintf(fp, " p2m_mid_missing: %lx\n", kt->pvops_xen.p2m_mid_missing);
|
||||
fprintf(fp, " p2m_missing: %lx\n", kt->pvops_xen.p2m_missing);
|
||||
}
|
||||
+ fprintf(fp, " is_suse_kernel: %d\n", kt->is_suse_kernel);
|
||||
}
|
||||
|
||||
/*
|
||||
Index: b/task.c
|
||||
===================================================================
|
||||
--- a/task.c
|
||||
+++ b/task.c
|
||||
@@ -4687,6 +4687,12 @@ start_time_timespec(void)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
+ /* SLES9 stores start_time in nanoseconds, so set TIMESPEC in order */
|
||||
+ /* to do the right calculations in convert_start_time */
|
||||
+ if (is_SLES9()) {
|
||||
+ tt->flags |= TIMESPEC;
|
||||
+ return TRUE;
|
||||
+ }
|
||||
|
||||
tt->flags |= NO_TIMESPEC;
|
||||
|
||||
@@ -4710,6 +4716,11 @@ convert_start_time(ulonglong start_time,
|
||||
ulong tmp1, tmp2;
|
||||
ulonglong wrapped;
|
||||
|
||||
+ /* SLES9's start_time is neither jiffies nor a timespec. It's ns */
|
||||
+ if (is_SLES9()) {
|
||||
+ start_time = start_time / 1000000000;
|
||||
+ }
|
||||
+
|
||||
switch(tt->flags & (TIMESPEC | NO_TIMESPEC | START_TIME_NSECS))
|
||||
{
|
||||
case START_TIME_NSECS:
|
34
crash-stop_read_error_when_intent_is_retry.patch
Normal file
34
crash-stop_read_error_when_intent_is_retry.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From: David Mair <dmair@suse.com>
|
||||
Date: 2017-05-25 10:27:21 -0600
|
||||
Subject: Avoid printing a read error for a failed read that can be retried
|
||||
References: bnc#1038839
|
||||
Upstream: tbd
|
||||
|
||||
When reading a memory image fails it may not be an error if it is still
|
||||
possible to switch image and retry the read. Fix the error message output
|
||||
to only occur if no retries are intended.
|
||||
|
||||
---
|
||||
|
||||
Index: b/memory.c
|
||||
===================================================================
|
||||
--- a/memory.c
|
||||
+++ b/memory.c
|
||||
@@ -2442,8 +2442,6 @@ readmem(ulonglong addr, int memtype, voi
|
||||
goto readmem_error;
|
||||
|
||||
case READ_ERROR:
|
||||
- if (PRINT_ERROR_MESSAGE)
|
||||
- error(INFO, READ_ERRMSG, memtype_string(memtype, 0), addr, type);
|
||||
if ((pc->flags & DEVMEM) && (kt->flags & PRE_KERNEL_INIT) &&
|
||||
!(error_handle & NO_DEVMEM_SWITCH) && devmem_is_restricted() &&
|
||||
switch_to_proc_kcore()) {
|
||||
@@ -2451,6 +2449,8 @@ readmem(ulonglong addr, int memtype, voi
|
||||
return(readmem(addr, memtype, bufptr, size,
|
||||
type, error_handle));
|
||||
}
|
||||
+ if (PRINT_ERROR_MESSAGE)
|
||||
+ error(INFO, READ_ERRMSG, memtype_string(memtype, 0), addr, type);
|
||||
goto readmem_error;
|
||||
|
||||
case PAGE_EXCLUDED:
|
59
crash-usrmerge.patch
Normal file
59
crash-usrmerge.patch
Normal file
@ -0,0 +1,59 @@
|
||||
From: Ludwig Nussel <lnussel@suse.de>
|
||||
Subject: debug info is in /usr/lib/debug/usr/lib/modules
|
||||
References: boo#1190434
|
||||
Upstream: to be done (must not break Red Hat)
|
||||
|
||||
---
|
||||
defs.h | 2 +-
|
||||
help.c | 2 +-
|
||||
symbols.c | 4 ++--
|
||||
3 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: b/defs.h
|
||||
===================================================================
|
||||
--- a/defs.h
|
||||
+++ b/defs.h
|
||||
@@ -413,7 +413,7 @@ struct number_option {
|
||||
#define PIPE_OPTIONS (FROM_COMMAND_LINE | FROM_INPUT_FILE | REDIRECT_TO_PIPE | \
|
||||
REDIRECT_TO_STDPIPE | REDIRECT_TO_FILE)
|
||||
|
||||
-#define DEFAULT_REDHAT_DEBUG_LOCATION "/usr/lib/debug/lib/modules"
|
||||
+#define DEFAULT_REDHAT_DEBUG_LOCATION "/usr/lib/debug/usr/lib/modules"
|
||||
|
||||
#define MEMORY_DRIVER_MODULE "crash"
|
||||
#define MEMORY_DRIVER_DEVICE "/dev/crash"
|
||||
Index: b/help.c
|
||||
===================================================================
|
||||
--- a/help.c
|
||||
+++ b/help.c
|
||||
@@ -9649,7 +9649,7 @@ README_ENTER_DIRECTORY,
|
||||
README_MEMORY_DRIVER,
|
||||
"",
|
||||
" If the kernel file is stored in /boot, /, /boot/efi, or in any /usr/src",
|
||||
-" or /usr/lib/debug/lib/modules subdirectory, then no command line arguments",
|
||||
+" or " DEFAULT_REDHAT_DEBUG_LOCATION " subdirectory, then no command line arguments",
|
||||
" are required -- the first kernel found that matches /proc/version will be",
|
||||
" used as the namelist.",
|
||||
" ",
|
||||
Index: b/symbols.c
|
||||
===================================================================
|
||||
--- a/symbols.c
|
||||
+++ b/symbols.c
|
||||
@@ -335,7 +335,7 @@ check_gnu_debuglink(bfd *bfd)
|
||||
|
||||
if ((pc->debuginfo_file = (char *)
|
||||
malloc(((strlen(namelist) + strlen("/.debug/") +
|
||||
- + strlen(".debug") + strlen(" /usr/lib/debug/boot/ "))*10)
|
||||
+ + strlen(".debug") + strlen(" /usr/lib/debug/usr/lib/modules/ "))*10)
|
||||
+ strlen(pc->namelist_debug ? pc->namelist_debug : " "))) == NULL)
|
||||
error(FATAL, "debuginfo file name malloc: %s\n",
|
||||
strerror(errno));
|
||||
@@ -411,7 +411,7 @@ check_gnu_debuglink(bfd *bfd)
|
||||
}
|
||||
}
|
||||
|
||||
- sprintf(pc->debuginfo_file, "/usr/lib/debug/boot/%s", contents);
|
||||
+ sprintf(pc->debuginfo_file, "/usr/lib/debug/%s/%s", dirname, contents);
|
||||
if (separate_debug_file_exists(pc->debuginfo_file, crc32, &exists)) {
|
||||
if (CRASHDEBUG(1))
|
||||
fprintf(fp, "%s: CRC matches\n", pc->debuginfo_file);
|
4452
crash.changes
Normal file
4452
crash.changes
Normal file
File diff suppressed because it is too large
Load Diff
352
crash.spec
Normal file
352
crash.spec
Normal file
@ -0,0 +1,352 @@
|
||||
#
|
||||
# spec file for package crash
|
||||
#
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
# needssslcertforbuild
|
||||
|
||||
|
||||
%define whitepaper_version 2003
|
||||
%define scripts_version 2008-02-08
|
||||
%define gcore_version 2023-02-28
|
||||
|
||||
%if 0%{!?have_snappy:1}
|
||||
%if 0%{?suse_version} >= 1310
|
||||
%define have_snappy 1
|
||||
%else
|
||||
%define have_snappy 0
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%if 0%{!?have_zstd:1}
|
||||
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150200
|
||||
# the zstd patch depends on the snappy patch
|
||||
%define have_zstd %{have_snappy}
|
||||
%else
|
||||
%define have_zstd 0
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%ifarch %ix86 x86_64
|
||||
%define build_gcore 1
|
||||
%else
|
||||
%define build_gcore 0
|
||||
%endif
|
||||
|
||||
%define build_kmp 1
|
||||
%if 0%{?suse_version} <= 1500 && 0%{?suse_version} >= 1315
|
||||
# kernel is missing on 32bit SLE - cannot build a KMP
|
||||
%ifarch %ix86 s390
|
||||
%define build_kmp 0
|
||||
%endif
|
||||
%endif
|
||||
# kernel is missing on 32-bit ppc
|
||||
%ifarch ppc
|
||||
%define build_kmp 0
|
||||
%endif
|
||||
|
||||
Name: crash
|
||||
URL: https://crash-utility.github.io/
|
||||
Summary: Crash utility for live systems; netdump, diskdump, LKCD or mcore dumpfiles
|
||||
License: GFDL-1.2-only AND GPL-3.0-or-later
|
||||
Group: Development/Tools/Debuggers
|
||||
Version: 8.0.4
|
||||
Release: 0
|
||||
Source: https://github.com/crash-utility/crash/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
||||
Source1: https://ftp.gnu.org/gnu/gdb/gdb-10.2.tar.gz
|
||||
Source2: crash_whitepaper-%{whitepaper_version}.tar.bz2
|
||||
Source3: README.SUSE
|
||||
Source4: sial-scripts-%{scripts_version}.tar.bz2
|
||||
Source5: gcore-%{gcore_version}.tar.bz2
|
||||
Source6: Module.supported
|
||||
Source7: https://ftp.gnu.org/gnu/gdb/gdb-10.2.tar.gz.sig
|
||||
Source8: gnu.keyring
|
||||
Source95: get-kernel-flavors.sh
|
||||
Source96: depmod.sh
|
||||
Source97: mkinitrd.sh
|
||||
Source98: %{name}-kmp-preamble
|
||||
Source99: crash-rpmlintrc
|
||||
Source100: %{name}-gdb-10.2.series
|
||||
Source101: %{name}-gdb-gnulib-define-warndecl.patch
|
||||
Patch1: %{name}-make-emacs-default.diff
|
||||
Patch2: %{name}-sles9-quirk.patch
|
||||
Patch4: %{name}-sles9-time.patch
|
||||
Patch9: %{name}-debuginfo-compressed.patch
|
||||
Patch10: %{name}_enable_lzo_support.patch
|
||||
Patch11: %{name}-compressed-booted-kernel.patch
|
||||
Patch13: %{name}-patch-gdb.patch
|
||||
Patch15: %{name}_enable_snappy_support.patch
|
||||
Patch18: %{name}-stop_read_error_when_intent_is_retry.patch
|
||||
Patch21: %{name}-allow-use-of-sadump-captured-KASLR-kernel.patch
|
||||
Patch23: %{name}-SLE15-SP1-With-Linux-4.19-rc1-up-MAX_PHYSMEM_BITS-to-128TB.patch
|
||||
Patch24: %{name}-SLE15-SP1-Fix-for-PPC64-kernel-virtual-address-translation-in.patch
|
||||
Patch30: %{name}-enable-zstd-support.patch
|
||||
Patch32: %{name}-extensions-rule-for-defs.patch
|
||||
Patch90: %{name}-sial-ps-2.6.29.diff
|
||||
Patch99: %{name}-usrmerge.patch
|
||||
BuildRequires: bison
|
||||
BuildRequires: flex
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: lzo-devel
|
||||
BuildRequires: makeinfo
|
||||
BuildRequires: ncurses-devel
|
||||
%if %{have_snappy}
|
||||
BuildRequires: snappy-devel
|
||||
%endif
|
||||
%if %{have_zstd}
|
||||
BuildRequires: libzstd-devel
|
||||
%endif
|
||||
BuildRequires: libelf-devel
|
||||
BuildRequires: zlib-devel
|
||||
Requires: /usr/bin/nm
|
||||
ExclusiveArch: %ix86 x86_64 ia64 s390 s390x ppc ppc64 ppc64le alpha aarch64 %arm riscv64
|
||||
%if 0%{?build_kmp}
|
||||
BuildRequires: kernel-syms
|
||||
%ifarch x86_64
|
||||
%if 0%{?suse_version} >= 1520 && 0%{?suse_version} < 1550
|
||||
BuildRequires: kernel-syms-rt
|
||||
%endif
|
||||
%endif
|
||||
%if 0%{?suse_version} >= 1130
|
||||
BuildRequires: kernel-devel
|
||||
%endif
|
||||
%if %{defined kernel_module_package_buildreqs}
|
||||
BuildRequires: %kernel_module_package_buildreqs
|
||||
%endif
|
||||
BuildRequires: module-init-tools
|
||||
%endif
|
||||
|
||||
%if 0%{?build_kmp} && %{defined suse_kernel_module_package}
|
||||
%suse_kernel_module_package -n crash -p %_sourcedir/%{name}-kmp-preamble um
|
||||
%define arch %_target_cpu
|
||||
%define kmp_pkg KMP
|
||||
%endif
|
||||
|
||||
%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 and diskdump packages from Red Hat Linux, the mcore kernel
|
||||
patch offered by Mission Critical Linux, or the LKCD kernel patch.
|
||||
|
||||
|
||||
|
||||
Authors:
|
||||
--------
|
||||
David Anderson <anderson@redhat.com>
|
||||
|
||||
%package doc
|
||||
Requires: %{name} = %{version}
|
||||
Summary: Documentation for Crash
|
||||
License: GFDL-1.2-only
|
||||
Group: Development/Tools/Debuggers
|
||||
|
||||
%description doc
|
||||
This subpackage contains the crash whitepaper from Dave Anderson.
|
||||
|
||||
|
||||
|
||||
Authors:
|
||||
--------
|
||||
David Anderson <anderson@redhat.com>
|
||||
|
||||
%package devel
|
||||
Requires: %{name} = %{version}
|
||||
Summary: Development files for crash
|
||||
License: GPL-2.0-or-later
|
||||
Group: Development/Tools/Debuggers
|
||||
Requires: zlib-devel
|
||||
|
||||
%description devel
|
||||
This files are required to build extensions for crash.
|
||||
|
||||
Crash is the core analysis suite that can be used to investigate either
|
||||
live systems, kernel core dumps created from the netdump and diskdump
|
||||
packages from Red Hat Linux, the mcore kernel patch offered by Mission
|
||||
Critical Linux, or the LKCD kernel patch.
|
||||
|
||||
|
||||
|
||||
Authors:
|
||||
--------
|
||||
David Anderson <anderson@redhat.com>
|
||||
|
||||
%if %build_gcore
|
||||
|
||||
%package gcore
|
||||
Requires: %{name} = %{version}
|
||||
Summary: Gcore extension for crash
|
||||
License: GPL-2.0-or-later
|
||||
Group: Development/Tools/Debuggers
|
||||
|
||||
%description gcore
|
||||
Create a core dump file of a user-space task that was running in a
|
||||
kernel dumpfile.
|
||||
|
||||
|
||||
|
||||
Authors:
|
||||
--------
|
||||
Daisuke Hatayama <d.hatayama@jp.fujitsu.com>
|
||||
|
||||
%endif
|
||||
|
||||
%package %kmp_pkg
|
||||
Summary: Memory driver for the crash utility
|
||||
License: GPL-2.0-only
|
||||
Group: System/Kernel
|
||||
|
||||
%description %kmp_pkg
|
||||
To run the crash utility on a live system, a memory device must be present.
|
||||
Due to many limitations of the /dev/mem interface, a separate kernel module
|
||||
is provided to access all RAM through the /dev/crash device.
|
||||
|
||||
Authors:
|
||||
--------
|
||||
David Anderson <anderson@redhat.com>
|
||||
|
||||
# Compatibility cruft
|
||||
# there is no %%license prior to SLE12
|
||||
%if %{undefined _defaultlicensedir}
|
||||
%define license %doc
|
||||
%else
|
||||
# filesystem before SLE12 SP3 lacks /usr/share/licenses
|
||||
%if 0%(test ! -d %{_defaultlicensedir} && echo 1)
|
||||
%define _defaultlicensedir %{_defaultdocdir}
|
||||
%endif
|
||||
%endif
|
||||
# End of compatibility cruft
|
||||
|
||||
%prep
|
||||
%setup -q -a 2 -a 4
|
||||
ln -s %{SOURCE1} .
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch4 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch13 -p1
|
||||
%patch18 -p1
|
||||
%patch21 -p1
|
||||
# Patches for SLE 15 SP1 potentially break support for SLE15 and SLE 12 SP4
|
||||
# Don't apply on these (and earlier) versions - see bsc#1148197
|
||||
%if 0%{?sle_version} > 120400 && 0%{?sle_version} != 150000
|
||||
%patch23 -p1
|
||||
%patch24 -p1
|
||||
%endif
|
||||
%if %{have_snappy}
|
||||
%patch15 -p1
|
||||
%endif
|
||||
%if %{have_zstd}
|
||||
%patch30 -p1
|
||||
%endif
|
||||
## GDB patches
|
||||
for f in %{S:100} %{S:101}; do
|
||||
base=`basename "$f"`
|
||||
cp "$f" "${base#%{name}-}"
|
||||
done
|
||||
|
||||
%patch32 -p1
|
||||
|
||||
## SIAL patches
|
||||
cd sial-scripts-%{scripts_version}
|
||||
%patch90 -p1
|
||||
cd -
|
||||
cd extensions
|
||||
## gcore extension
|
||||
tar xfvj %{S:5}
|
||||
cd -
|
||||
cp %{S:3} .
|
||||
mkdir kbuild
|
||||
cp %{S:6} memory_driver
|
||||
%if 0%{?suse_version} > 1550
|
||||
%patch99 -p1
|
||||
%endif
|
||||
|
||||
%build
|
||||
%ifarch ppc64le ppc64
|
||||
# for ppc64le use -mfull-toc needed by lto as per boo#1146646
|
||||
export CFLAGS="$RPM_OPT_FLAGS -fno-builtin-memset -fno-strict-aliasing -mfull-toc"
|
||||
%else
|
||||
export CFLAGS="$RPM_OPT_FLAGS -fno-builtin-memset -fno-strict-aliasing"
|
||||
%endif
|
||||
export GDB="gdb-%{gdb_version}"
|
||||
make RPMPKG="`cat .rh_rpm_package`" %{?jobs:-j%jobs}
|
||||
make extensions %{?jobs:-j%jobs}
|
||||
%if 0%{?build_kmp}
|
||||
export EXTRA_CFLAGS='-DVERSION=\"%version\"'
|
||||
for flavor in %flavors_to_build; do
|
||||
rm -rf kbuild/$flavor
|
||||
cp -r memory_driver kbuild/$flavor
|
||||
make -C /usr/src/linux-obj/%arch/$flavor modules \
|
||||
M=$PWD/kbuild/$flavor
|
||||
done
|
||||
%endif
|
||||
|
||||
%install
|
||||
mkdir -p %{buildroot}%{_bindir}
|
||||
mkdir -p %{buildroot}%{_libdir}
|
||||
make DESTDIR=%{buildroot} install
|
||||
mkdir -p %{buildroot}%{_mandir}/man8
|
||||
install -m 0644 crash.8 %{buildroot}%{_mandir}/man8/crash.8
|
||||
# devel files
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_includedir}/crash
|
||||
install -m 0644 defs.h $RPM_BUILD_ROOT/%{_includedir}/crash
|
||||
# permissions
|
||||
chmod 644 COPYING3
|
||||
# extensions
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_libdir}/crash/extensions
|
||||
install -m 0644 extensions/dminfo.so extensions/snap.so \
|
||||
$RPM_BUILD_ROOT/%{_libdir}/crash/extensions
|
||||
%if %build_gcore
|
||||
install -m 0644 extensions/gcore.so $RPM_BUILD_ROOT/%{_libdir}/crash/extensions
|
||||
%endif
|
||||
%if 0%{?build_kmp}
|
||||
# memory driver module
|
||||
export INSTALL_MOD_PATH=$RPM_BUILD_ROOT
|
||||
export INSTALL_MOD_DIR=updates
|
||||
for flavor in %flavors_to_build; do
|
||||
make -C /usr/src/linux-obj/%arch/$flavor modules_install \
|
||||
M=$PWD/kbuild/$flavor
|
||||
done
|
||||
%endif
|
||||
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
%{_bindir}/crash
|
||||
%{_mandir}/man8/crash.8*
|
||||
%license COPYING3
|
||||
%doc README README.SUSE
|
||||
%dir %{_libdir}/crash
|
||||
%dir %{_libdir}/crash/extensions
|
||||
%{_libdir}/crash/extensions/dminfo.so
|
||||
%{_libdir}/crash/extensions/snap.so
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root)
|
||||
%{_includedir}/*
|
||||
|
||||
%files doc
|
||||
%defattr(-,root,root)
|
||||
%doc crash_whitepaper/*
|
||||
|
||||
%if %build_gcore
|
||||
|
||||
%files gcore
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/crash/extensions/gcore.so
|
||||
%doc extensions/README.gcore
|
||||
%endif
|
||||
|
||||
%changelog
|
13
crash_enable_lzo_support.patch
Normal file
13
crash_enable_lzo_support.patch
Normal file
@ -0,0 +1,13 @@
|
||||
---
|
||||
CFLAGS.extra | 1 +
|
||||
LDFLAGS.extra | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
--- /dev/null
|
||||
+++ b/CFLAGS.extra
|
||||
@@ -0,0 +1 @@
|
||||
+-DLZO
|
||||
--- /dev/null
|
||||
+++ b/LDFLAGS.extra
|
||||
@@ -0,0 +1 @@
|
||||
+-llzo2
|
21
crash_enable_snappy_support.patch
Normal file
21
crash_enable_snappy_support.patch
Normal file
@ -0,0 +1,21 @@
|
||||
From: Petr Tesarik <ptesarik@suse.cz>
|
||||
Subject: enably snappy support
|
||||
Upstream: never, configurable default
|
||||
|
||||
Signed-off-by: Petr Tesarik <ptesarik@suse.cz>
|
||||
|
||||
---
|
||||
CFLAGS.extra | 2 +-
|
||||
LDFLAGS.extra | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/CFLAGS.extra
|
||||
+++ b/CFLAGS.extra
|
||||
@@ -1 +1 @@
|
||||
--DLZO
|
||||
+-DLZO -DSNAPPY
|
||||
--- a/LDFLAGS.extra
|
||||
+++ b/LDFLAGS.extra
|
||||
@@ -1 +1 @@
|
||||
--llzo2
|
||||
+-llzo2 -lsnappy
|
BIN
crash_whitepaper-2003.tar.bz2
(Stored with Git LFS)
Normal file
BIN
crash_whitepaper-2003.tar.bz2
(Stored with Git LFS)
Normal file
Binary file not shown.
6
depmod.sh
Normal file
6
depmod.sh
Normal file
@ -0,0 +1,6 @@
|
||||
# Need to call depmod when the list of modules changes
|
||||
for kernelrelease in $KERNELRELEASES; do
|
||||
if [ -e /boot/System.map-$kernelrelease ]; then
|
||||
depmod -a -F /boot/System.map-$kernelrelease $kernelrelease
|
||||
fi
|
||||
done
|
BIN
gcore-2023-02-28.tar.bz2
(Stored with Git LFS)
Normal file
BIN
gcore-2023-02-28.tar.bz2
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
gdb-10.2.tar.gz
(Stored with Git LFS)
Normal file
BIN
gdb-10.2.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
gdb-10.2.tar.gz.sig
Normal file
BIN
gdb-10.2.tar.gz.sig
Normal file
Binary file not shown.
10
get-kernel-flavors.sh
Normal file
10
get-kernel-flavors.sh
Normal file
@ -0,0 +1,10 @@
|
||||
#! /bin/sh
|
||||
arch=$1
|
||||
flavors=
|
||||
for flavor in $(ls /usr/src/linux-obj/$arch 2>/dev/null); do
|
||||
if [ "$flavor" = um ]; then
|
||||
continue
|
||||
fi
|
||||
flavors="$flavors $flavor"
|
||||
done
|
||||
echo $flavors
|
BIN
gnu.keyring
Normal file
BIN
gnu.keyring
Normal file
Binary file not shown.
25
mkinitrd.sh
Normal file
25
mkinitrd.sh
Normal file
@ -0,0 +1,25 @@
|
||||
# If one of the modules in this package is in the initrd,
|
||||
# we need to recreate the initrd.
|
||||
|
||||
if [ -e /etc/sysconfig/kernel -a -f /etc/fstab ]; then
|
||||
source /etc/sysconfig/kernel
|
||||
run_mkinitrd=
|
||||
for module in $INITRD_MODULES; do
|
||||
case " $MODULES " in
|
||||
*" $module "*)
|
||||
run_mkinitrd=1
|
||||
break ;;
|
||||
esac
|
||||
done
|
||||
if [ -n "$run_mkinitrd" ]; then
|
||||
for kernelrelease in $KERNELRELEASES; do
|
||||
for image in vmlinuz image vmlinux linux bzImage; do
|
||||
if [ -f /boot/$image-$kernelrelease ]; then
|
||||
/sbin/mkinitrd -k /boot/$image-$kernelrelease \
|
||||
-i /boot/initrd-$kernelrelease \
|
||||
|| exit 1
|
||||
fi
|
||||
done
|
||||
done
|
||||
fi
|
||||
fi
|
BIN
sial-scripts-2008-02-08.tar.bz2
(Stored with Git LFS)
Normal file
BIN
sial-scripts-2008-02-08.tar.bz2
(Stored with Git LFS)
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user