diff --git a/0001-PATCH-Fix-failure-of-hugetlb-pages-exclusion-on-Linu.patch b/0001-PATCH-Fix-failure-of-hugetlb-pages-exclusion-on-Linu.patch deleted file mode 100644 index ef9d837..0000000 --- a/0001-PATCH-Fix-failure-of-hugetlb-pages-exclusion-on-Linu.patch +++ /dev/null @@ -1,102 +0,0 @@ -From: Kazuhito Hagio -Date: Thu, 30 May 2024 16:59:02 +0900 -Subject: [PATCH] Fix failure of hugetlb pages exclusion on Linux 6.9 and later -Git-repo: https://github.com/makedumpfile/makedumpfile -Git-commit: 985e575253f1c2de8d6876cfe685c68a24ee06e1 -Patch-mainline: 1.7.6 -References: bsc#1228388 - -* Required for kernel 6.9 - -Kernel commit d99e3140a4d3 ("mm: turn folio_test_hugetlb into a -PageType") moved the PG_hugetlb flag from folio._flags_1 into -page._mapcount and introduced NUMBER(PAGE_HUGETLB_MAPCOUNT_VALUE) entry -into vmcoreinfo. - -Without the patch, "makedumpfile -d 8" cannot exclude hugetlb pages. - -Signed-off-by: Kazuhito Hagio -Signed-off-by: Jiri Slaby (SUSE) ---- - makedumpfile.c | 22 ++++++++++++++++++++-- - makedumpfile.h | 3 +++ - 2 files changed, 23 insertions(+), 2 deletions(-) - -diff --git a/makedumpfile.c b/makedumpfile.c -index d7f1dd41d2ca..437ad916f816 100644 ---- a/makedumpfile.c -+++ b/makedumpfile.c -@@ -2975,6 +2975,7 @@ read_vmcoreinfo(void) - READ_SRCFILE("pud_t", pud_t); - - READ_NUMBER("PAGE_BUDDY_MAPCOUNT_VALUE", PAGE_BUDDY_MAPCOUNT_VALUE); -+ READ_NUMBER("PAGE_HUGETLB_MAPCOUNT_VALUE", PAGE_HUGETLB_MAPCOUNT_VALUE); - READ_NUMBER("PAGE_OFFLINE_MAPCOUNT_VALUE", PAGE_OFFLINE_MAPCOUNT_VALUE); - READ_NUMBER("phys_base", phys_base); - READ_NUMBER("KERNEL_IMAGE_SIZE", KERNEL_IMAGE_SIZE); -@@ -6510,6 +6511,9 @@ __exclude_unnecessary_pages(unsigned long mem_map, - _count = UINT(pcache + OFFSET(page._refcount)); - mapping = ULONG(pcache + OFFSET(page.mapping)); - -+ if (OFFSET(page._mapcount) != NOT_FOUND_STRUCTURE) -+ _mapcount = UINT(pcache + OFFSET(page._mapcount)); -+ - compound_order = 0; - compound_dtor = 0; - /* -@@ -6520,6 +6524,22 @@ __exclude_unnecessary_pages(unsigned long mem_map, - if ((index_pg < PGMM_CACHED - 1) && isCompoundHead(flags)) { - unsigned char *addr = pcache + SIZE(page); - -+ /* -+ * Linux 6.9 and later kernels use _mapcount value for hugetlb pages. -+ * See kernel commit d99e3140a4d3. -+ */ -+ if (NUMBER(PAGE_HUGETLB_MAPCOUNT_VALUE) != NOT_FOUND_NUMBER) { -+ unsigned long _flags_1 = ULONG(addr + OFFSET(page.flags)); -+ unsigned int PG_hugetlb = ~NUMBER(PAGE_HUGETLB_MAPCOUNT_VALUE); -+ -+ compound_order = _flags_1 & 0xff; -+ -+ if ((_mapcount & (PAGE_TYPE_BASE | PG_hugetlb)) == PAGE_TYPE_BASE) -+ compound_dtor = IS_HUGETLB; -+ -+ goto check_order; -+ } -+ - /* - * Linux 6.6 and later. Kernels that have PG_hugetlb should also - * have the compound order in the low byte of folio._flags_1. -@@ -6564,8 +6584,6 @@ check_order: - if (OFFSET(page.compound_head) != NOT_FOUND_STRUCTURE) - compound_head = ULONG(pcache + OFFSET(page.compound_head)); - -- if (OFFSET(page._mapcount) != NOT_FOUND_STRUCTURE) -- _mapcount = UINT(pcache + OFFSET(page._mapcount)); - if (OFFSET(page.private) != NOT_FOUND_STRUCTURE) - private = ULONG(pcache + OFFSET(page.private)); - -diff --git a/makedumpfile.h b/makedumpfile.h -index 75b66ceaba21..f08c49fc73be 100644 ---- a/makedumpfile.h -+++ b/makedumpfile.h -@@ -165,6 +165,8 @@ test_bit(int nr, unsigned long addr) - #define isAnon(mapping, flags) (((unsigned long)mapping & PAGE_MAPPING_ANON) != 0 \ - && !isSlab(flags)) - -+#define PAGE_TYPE_BASE (0xf0000000) -+ - #define PTOB(X) (((unsigned long long)(X)) << PAGESHIFT()) - #define BTOP(X) (((unsigned long long)(X)) >> PAGESHIFT()) - -@@ -2255,6 +2257,7 @@ struct number_table { - long PG_hugetlb; - - long PAGE_BUDDY_MAPCOUNT_VALUE; -+ long PAGE_HUGETLB_MAPCOUNT_VALUE; - long PAGE_OFFLINE_MAPCOUNT_VALUE; - long SECTION_SIZE_BITS; - long MAX_PHYSMEM_BITS; --- -2.45.2 - diff --git a/0002-PATCH-Fix-wrong-exclusion-of-Slab-pages-on-Linux-6.1.patch b/0002-PATCH-Fix-wrong-exclusion-of-Slab-pages-on-Linux-6.1.patch deleted file mode 100644 index 3386317..0000000 --- a/0002-PATCH-Fix-wrong-exclusion-of-Slab-pages-on-Linux-6.1.patch +++ /dev/null @@ -1,132 +0,0 @@ -From: Kazuhito Hagio -Date: Fri, 7 Jun 2024 15:34:05 +0900 -Subject: [PATCH] Fix wrong exclusion of Slab pages on Linux 6.10-rc1 and later -Git-repo: https://github.com/makedumpfile/makedumpfile -Git-commit: bad2a7c4fa75d37a41578441468584963028bdda -Patch-mainline: 1.7.6 -References: bsc#1228388 - -* Required for kernel 6.10 - -Kernel commit 46df8e73a4a3 ("mm: free up PG_slab") moved the PG_slab -flag from page.flags into page._mapcount (slab.__page_type), and -introduced NUMBER(PAGE_SLAB_MAPCOUNT_VALUE) entry into vmcoreinfo. - -Without the patch, "makedumpfile -d 8" option wrongly excludes Slab -pages and crash cannot open the dumpfile with an error like this: - - $ crash --kaslr auto vmlinux dumpfile - ... - please wait... (gathering task table data) - crash: page excluded: kernel virtual address: ffff909980440270 type: "xa_node.slots[off]" - -Signed-off-by: Kazuhito Hagio -Signed-off-by: Jiri Slaby (SUSE) ---- - makedumpfile.c | 24 +++++++++++++++++++----- - makedumpfile.h | 6 +++--- - 2 files changed, 22 insertions(+), 8 deletions(-) - -diff --git a/makedumpfile.c b/makedumpfile.c -index 437ad916f816..5b347126db76 100644 ---- a/makedumpfile.c -+++ b/makedumpfile.c -@@ -275,13 +275,26 @@ isHugetlb(unsigned long dtor) - && (SYMBOL(free_huge_page) == dtor)); - } - -+static inline int -+isSlab(unsigned long flags, unsigned int _mapcount) -+{ -+ /* Linux 6.10 and later */ -+ if (NUMBER(PAGE_SLAB_MAPCOUNT_VALUE) != NOT_FOUND_NUMBER) { -+ unsigned int PG_slab = ~NUMBER(PAGE_SLAB_MAPCOUNT_VALUE); -+ if ((_mapcount & (PAGE_TYPE_BASE | PG_slab)) == PAGE_TYPE_BASE) -+ return TRUE; -+ } -+ -+ return flags & (1UL << NUMBER(PG_slab)); -+} -+ - static int - isOffline(unsigned long flags, unsigned int _mapcount) - { - if (NUMBER(PAGE_OFFLINE_MAPCOUNT_VALUE) == NOT_FOUND_NUMBER) - return FALSE; - -- if (flags & (1UL << NUMBER(PG_slab))) -+ if (isSlab(flags, _mapcount)) - return FALSE; - - if (_mapcount == (int)NUMBER(PAGE_OFFLINE_MAPCOUNT_VALUE)) -@@ -2977,6 +2990,7 @@ read_vmcoreinfo(void) - READ_NUMBER("PAGE_BUDDY_MAPCOUNT_VALUE", PAGE_BUDDY_MAPCOUNT_VALUE); - READ_NUMBER("PAGE_HUGETLB_MAPCOUNT_VALUE", PAGE_HUGETLB_MAPCOUNT_VALUE); - READ_NUMBER("PAGE_OFFLINE_MAPCOUNT_VALUE", PAGE_OFFLINE_MAPCOUNT_VALUE); -+ READ_NUMBER("PAGE_SLAB_MAPCOUNT_VALUE", PAGE_SLAB_MAPCOUNT_VALUE); - READ_NUMBER("phys_base", phys_base); - READ_NUMBER("KERNEL_IMAGE_SIZE", KERNEL_IMAGE_SIZE); - -@@ -6043,7 +6057,7 @@ static int - page_is_buddy_v3(unsigned long flags, unsigned int _mapcount, - unsigned long private, unsigned int _count) - { -- if (flags & (1UL << NUMBER(PG_slab))) -+ if (isSlab(flags, _mapcount)) - return FALSE; - - if (_mapcount == (int)NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE)) -@@ -6618,7 +6632,7 @@ check_order: - */ - else if ((info->dump_level & DL_EXCLUDE_CACHE) - && is_cache_page(flags) -- && !isPrivate(flags) && !isAnon(mapping, flags)) { -+ && !isPrivate(flags) && !isAnon(mapping, flags, _mapcount)) { - pfn_counter = &pfn_cache; - } - /* -@@ -6626,7 +6640,7 @@ check_order: - */ - else if ((info->dump_level & DL_EXCLUDE_CACHE_PRI) - && is_cache_page(flags) -- && !isAnon(mapping, flags)) { -+ && !isAnon(mapping, flags, _mapcount)) { - if (isPrivate(flags)) - pfn_counter = &pfn_cache_private; - else -@@ -6638,7 +6652,7 @@ check_order: - * - hugetlbfs pages - */ - else if ((info->dump_level & DL_EXCLUDE_USER_DATA) -- && (isAnon(mapping, flags) || isHugetlb(compound_dtor))) { -+ && (isAnon(mapping, flags, _mapcount) || isHugetlb(compound_dtor))) { - pfn_counter = &pfn_user; - } - /* -diff --git a/makedumpfile.h b/makedumpfile.h -index f08c49fc73be..6b43a8b44f93 100644 ---- a/makedumpfile.h -+++ b/makedumpfile.h -@@ -161,9 +161,8 @@ test_bit(int nr, unsigned long addr) - #define isSwapBacked(flags) test_bit(NUMBER(PG_swapbacked), flags) - #define isHWPOISON(flags) (test_bit(NUMBER(PG_hwpoison), flags) \ - && (NUMBER(PG_hwpoison) != NOT_FOUND_NUMBER)) --#define isSlab(flags) test_bit(NUMBER(PG_slab), flags) --#define isAnon(mapping, flags) (((unsigned long)mapping & PAGE_MAPPING_ANON) != 0 \ -- && !isSlab(flags)) -+#define isAnon(mapping, flags, _mapcount) \ -+ (((unsigned long)mapping & PAGE_MAPPING_ANON) != 0 && !isSlab(flags, _mapcount)) - - #define PAGE_TYPE_BASE (0xf0000000) - -@@ -2259,6 +2258,7 @@ struct number_table { - long PAGE_BUDDY_MAPCOUNT_VALUE; - long PAGE_HUGETLB_MAPCOUNT_VALUE; - long PAGE_OFFLINE_MAPCOUNT_VALUE; -+ long PAGE_SLAB_MAPCOUNT_VALUE; - long SECTION_SIZE_BITS; - long MAX_PHYSMEM_BITS; - long HUGETLB_PAGE_DTOR; --- -2.45.2 - diff --git a/eppic-21808c78596d6d80c67eeaa08a618570ae0d886d.tar.gz b/eppic-21808c78596d6d80c67eeaa08a618570ae0d886d.tar.gz deleted file mode 100644 index 5b32f27..0000000 --- a/eppic-21808c78596d6d80c67eeaa08a618570ae0d886d.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f33d5a47197da41e90c7fb0c1431ab43e784d74bbfb08a66392c0b3fd4591a51 -size 104758 diff --git a/eppic-63c2a2072464d774097a1a6cc1d2e98290f89c49.tar.gz b/eppic-63c2a2072464d774097a1a6cc1d2e98290f89c49.tar.gz new file mode 100644 index 0000000..fe4138a --- /dev/null +++ b/eppic-63c2a2072464d774097a1a6cc1d2e98290f89c49.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e9b3f3e9eec6f949ff573236488184754cc67979b62babd92ea8507a8e4f324 +size 104806 diff --git a/make-reserve_diskspace-do-nothing-for-flattened-form.patch b/make-reserve_diskspace-do-nothing-for-flattened-form.patch deleted file mode 100644 index 2e636db..0000000 --- a/make-reserve_diskspace-do-nothing-for-flattened-form.patch +++ /dev/null @@ -1,42 +0,0 @@ -From: Jiri Bohac -Subject: make reserve_diskspace do nothing for flattened format -Git-commit: 0bcf67df2114ee932af7e0af3ccafa0b349e90c1 -References: bsc#1226183 -Acked-by: Jiri Bohac - -reserve_diskspace() is called by write_elf_header() to make sure there is -always space to write the program header, even if writing other data fails -because of ENOSPC. - -This is harmful when writing the flattened format to STDOUT for two reasons: - -First, it actually wastes disk space, because first the block of zeroes is sent -to STDOUT by reserve_diskspace() and then the actual program header is sent, -meant to overwrite the zeroes when the flattened format is rearranged. - -Second, the algorithm used to read flattened format directly by the crash -program does not cope with the flattened file containing two chunks meant for -the same offset. It uses a binary search on a sorted array of flat_data headers -to find the data in the flat file. It may return the zeroed chunk written by -reserve_diskspace() near the beginning of the file instead of the actual ELF -header located near the end of the flattened file. - -Fixes: e39216fce9f73759509ec158e39c289e6c211125 ("Make the incomplete dumpfile generated by ENOSPC error analyzable.") - -diff --git a/makedumpfile.c b/makedumpfile.c -index cadc596..9624c3f 100644 ---- a/makedumpfile.c -+++ b/makedumpfile.c -@@ -5206,6 +5206,9 @@ reserve_diskspace(int fd, off_t start_offset, off_t end_offset, char *file_name) - - int ret = FALSE; - -+ if (info->flag_flatten) -+ return TRUE; -+ - assert(start_offset < end_offset); - buf_size = end_offset - start_offset; - --- -2.45.2 - diff --git a/makedumpfile-1.7.5.tar.gz b/makedumpfile-1.7.5.tar.gz deleted file mode 100644 index 1ca53b1..0000000 --- a/makedumpfile-1.7.5.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0c53f1e5e11e75e4896197df795bee63b3d46b8821fbc3368f7a240861b543b5 -size 210893 diff --git a/makedumpfile-gcc15.patch b/makedumpfile-gcc15.patch new file mode 100644 index 0000000..64570f3 --- /dev/null +++ b/makedumpfile-gcc15.patch @@ -0,0 +1,43 @@ + +github.com/makedumpfile/makedumpfile/commit/73e62a0 + + +From 73e62a08022bf8e5edad250f8c1452f0be3771a3 Mon Sep 17 00:00:00 2001 +From: Coiby Xu +Date: Thu, 23 Jan 2025 17:47:10 +0800 +Subject: [PATCH] [PATCH] fix gcc-15 compiling error: too many arguments to + function eppic_init +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2340813 + +When building makekdumpfile against gcc-15, the following error is +shown, + + erase_info.c: In function ‘process_eppic_file’: + erase_info.c:2226:13: error: too many arguments to function ‘eppic_init’; expected 0, have 1 + 2226 | if (eppic_init(&eppic_cb)) { + | ^~~~~~~~~~ ~~~~~~~~~ + make: *** [Makefile:109: erase_info.o] Error 1 + +Signed-off-by: Coiby Xu +--- + erase_info.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/erase_info.c b/erase_info.c +index cbe1681..af6bfae 100644 +--- a/erase_info.c ++++ b/erase_info.c +@@ -2192,7 +2192,7 @@ process_eppic_file(char *name_config) + { + void *handle; + void (*eppic_load)(char *), (*eppic_unload)(char *); +- int (*eppic_init)(); ++ int (*eppic_init)(struct call_back *); + + /* + * Dynamically load the eppic_makedumpfile.so library. + diff --git a/makedumpfile.changes b/makedumpfile.changes index 722f4d3..8533cfb 100644 --- a/makedumpfile.changes +++ b/makedumpfile.changes @@ -1,7 +1,14 @@ +------------------------------------------------------------------- +Sat Apr 12 16:08:52 UTC 2025 - Friedrich Haubensak + +- to fix gcc-15 compile time errors: + * add makedumpfile-gcc15.patch from upstream + * update eppic_commit, which adds syntax fixes for gcc-15 + ------------------------------------------------------------------- Thu Feb 27 10:09:29 UTC 2025 - Petr Tesařík -- Update to 1.7.5: +- Update to 1.7.6: * Support for kernels up to v6.11 (x86_64) - Drop upstreamed patches: * 0001-PATCH-Fix-failure-of-hugetlb-pages-exclusion-on-Linu.patch diff --git a/makedumpfile.spec b/makedumpfile.spec index 9a36cc2..abb08d8 100644 --- a/makedumpfile.spec +++ b/makedumpfile.spec @@ -17,7 +17,7 @@ %define build_eppic 1 -%define eppic_commit 21808c78596d6d80c67eeaa08a618570ae0d886d +%define eppic_commit 63c2a2072464d774097a1a6cc1d2e98290f89c49 %if 0%{!?have_zstd:1} %if 0%{?sle_version} >= 150200 || 0%{?suse_version} > 1500 @@ -41,6 +41,7 @@ Patch0: %{name}-override-libtinfo.patch Patch1: %{name}-ppc64-VA-range-SUSE.patch Patch2: %{name}-PN_XNUM.patch Patch3: %{name}-fix-detection-of-typed-compound-pages-Linux-6.12.patch +Patch4: makedumpfile-gcc15.patch BuildRequires: libbz2-devel BuildRequires: libdw-devel BuildRequires: libelf-devel