mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-06-04 14:39:54 +00:00
minicoredumper: Upgrade to 2.0.2 release
Drop patches already upstreamed. Add patch to fix tests with clang compiler Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
-128
@@ -1,128 +0,0 @@
|
||||
From 7a8c6a06c86e133e4346b1dc66483bd8d0d3c716 Mon Sep 17 00:00:00 2001
|
||||
From: John Ogness <john.ogness@linutronix.de>
|
||||
Date: Tue, 24 Aug 2021 21:10:43 +0200
|
||||
Subject: [PATCH] minicoredumper: retry elf parsing as long as needed
|
||||
|
||||
As was reported in github issue #2 ("maximum number of tries
|
||||
insufficient, in rare cases, for elf parse"), the number of retries
|
||||
for parsing a process may be insufficient. Rather than setting an
|
||||
upper limit on the maximum number of retries, track the number of
|
||||
headers seen. As long as the number of seen headers is greater than
|
||||
the previous try, try again.
|
||||
|
||||
In order to avoid introducing any new issues, preserve the behavior
|
||||
of retrying at least 10 times, even if no new headers are seen.
|
||||
|
||||
Reported-by: github.com/ssajal-wr
|
||||
Signed-off-by: John Ogness <john.ogness@linutronix.de>
|
||||
|
||||
Upstream-Status: Backport [7a8c6a06c86e133e4346b1dc66483bd8d0d3c716]
|
||||
|
||||
Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
|
||||
---
|
||||
src/minicoredumper/corestripper.c | 30 +++++++++++++++++++++++-------
|
||||
1 file changed, 23 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/minicoredumper/corestripper.c b/src/minicoredumper/corestripper.c
|
||||
index d96d1df..c96b350 100644
|
||||
--- a/src/minicoredumper/corestripper.c
|
||||
+++ b/src/minicoredumper/corestripper.c
|
||||
@@ -761,7 +761,7 @@ static int init_log(struct dump_info *di)
|
||||
typedef int elf_parse_cb(struct dump_info *di, Elf *elf, GElf_Phdr *phdr);
|
||||
|
||||
static int do_elf_ph_parse(struct dump_info *di, GElf_Phdr *type,
|
||||
- elf_parse_cb *callback)
|
||||
+ elf_parse_cb *callback, size_t *phnum_found)
|
||||
{
|
||||
GElf_Ehdr ehdr_mem;
|
||||
GElf_Ehdr *ehdr;
|
||||
@@ -770,6 +770,9 @@ static int do_elf_ph_parse(struct dump_info *di, GElf_Phdr *type,
|
||||
size_t phnum;
|
||||
size_t cnt;
|
||||
|
||||
+ if (phnum_found)
|
||||
+ *phnum_found = 0;
|
||||
+
|
||||
/* start from beginning of core */
|
||||
if (lseek64(di->elf_fd, 0, SEEK_SET) == -1) {
|
||||
info("lseek failed: %s", strerror(errno));
|
||||
@@ -809,6 +812,9 @@ static int do_elf_ph_parse(struct dump_info *di, GElf_Phdr *type,
|
||||
goto out;
|
||||
}
|
||||
|
||||
+ if (phnum_found)
|
||||
+ *phnum_found = phnum;
|
||||
+
|
||||
for (cnt = 0; cnt < phnum; cnt++) {
|
||||
GElf_Phdr phdr_mem;
|
||||
GElf_Phdr *phdr;
|
||||
@@ -891,7 +897,7 @@ static int vma_cb(struct dump_info *di, Elf *elf, GElf_Phdr *phdr)
|
||||
/*
|
||||
* Tries to parse the found ELF headers and reads all vmas from it.
|
||||
*/
|
||||
-static int parse_vma_info(struct dump_info *di)
|
||||
+static int parse_vma_info(struct dump_info *di, size_t *phnum_found)
|
||||
{
|
||||
unsigned long min_off = ULONG_MAX;
|
||||
unsigned long max_len = 0;
|
||||
@@ -911,7 +917,7 @@ static int parse_vma_info(struct dump_info *di)
|
||||
memset(&type, 0, sizeof(type));
|
||||
type.p_type = PT_LOAD;
|
||||
type.p_flags = PF_R;
|
||||
- if (do_elf_ph_parse(di, &type, vma_cb) != 0)
|
||||
+ if (do_elf_ph_parse(di, &type, vma_cb, phnum_found) != 0)
|
||||
return -1;
|
||||
|
||||
for (v = di->vma; v; v = v->next) {
|
||||
@@ -1614,8 +1620,10 @@ int add_core_data(struct dump_info *di, off64_t dest_offset, size_t len,
|
||||
*/
|
||||
static int init_src_core(struct dump_info *di, int src)
|
||||
{
|
||||
+ size_t last_phnum = 0;
|
||||
int tries = 0;
|
||||
int ret = -1;
|
||||
+ size_t phnum;
|
||||
size_t len;
|
||||
char *buf;
|
||||
long pos;
|
||||
@@ -1642,7 +1650,7 @@ again:
|
||||
goto out;
|
||||
|
||||
/* try to elf-parse the core to read vma info */
|
||||
- ret = parse_vma_info(di);
|
||||
+ ret = parse_vma_info(di, &phnum);
|
||||
|
||||
/* restore our position */
|
||||
if (lseek64(di->elf_fd, pos, SEEK_SET) == -1)
|
||||
@@ -1653,9 +1661,17 @@ again:
|
||||
|
||||
tries++;
|
||||
|
||||
- /* maybe try again */
|
||||
- if (tries < 10)
|
||||
+ if (phnum > last_phnum) {
|
||||
+ /* new headers found, keep trying */
|
||||
+ last_phnum = phnum;
|
||||
goto again;
|
||||
+ } else if (tries < 10) {
|
||||
+ /*
|
||||
+ * even if no new headers are found,
|
||||
+ * retry at least 10 times
|
||||
+ */
|
||||
+ goto again;
|
||||
+ }
|
||||
|
||||
goto out;
|
||||
}
|
||||
@@ -2106,7 +2122,7 @@ static int dump_stacks(struct dump_info *di)
|
||||
/* find and set the first task */
|
||||
memset(&type, 0, sizeof(type));
|
||||
type.p_type = PT_NOTE;
|
||||
- do_elf_ph_parse(di, &type, note_cb);
|
||||
+ do_elf_ph_parse(di, &type, note_cb, NULL);
|
||||
}
|
||||
|
||||
if (di->first_pid)
|
||||
--
|
||||
2.25.1
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
From abaac31d1cb4d0ba0e8e9ef7f344e62de3b150de Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 4 Feb 2023 16:50:46 -0800
|
||||
Subject: [PATCH] minicoredumper_demo: Use 'optnone' attribute with clang
|
||||
|
||||
clang does not support optimize("On") yet, therefore use optnone which
|
||||
should give intended results with clang compiler
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/diamon/minicoredumper/pull/7]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
src/minicoredumper_demo/main.c | 9 +++++++--
|
||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/minicoredumper_demo/main.c b/src/minicoredumper_demo/main.c
|
||||
index 65aac46..e60eb82 100644
|
||||
--- a/src/minicoredumper_demo/main.c
|
||||
+++ b/src/minicoredumper_demo/main.c
|
||||
@@ -11,8 +11,13 @@
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "minicoredumper.h"
|
||||
-
|
||||
-int __attribute__((optimize("O0"))) main(int argc, char *argv[])
|
||||
+int
|
||||
+#ifdef __clang__
|
||||
+__attribute__((optnone))
|
||||
+#else
|
||||
+__attribute__((optimize("O0")))
|
||||
+#endif
|
||||
+main(int argc, char *argv[])
|
||||
{
|
||||
char *str1 = "This is string 1.";
|
||||
unsigned long val1 = 0x1abc123f;
|
||||
--
|
||||
2.39.1
|
||||
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
From 5895caba6573e84f73f159d9e84cd1aa7e969f18 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sun, 9 May 2021 14:37:00 -0700
|
||||
Subject: [PATCH] replace pthread_mutexattr_setrobust_np with
|
||||
pthread_mutexattr_setrobust
|
||||
|
||||
This is now part of standard POSIX function [1]
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/diamon/minicoredumper/pull/3]
|
||||
|
||||
[1] https://man7.org/linux/man-pages/man3/pthread_mutexattr_setrobust_np.3.html
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
src/minicoredumper_regd/daemon.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/minicoredumper_regd/daemon.c b/src/minicoredumper_regd/daemon.c
|
||||
index 115ec92..b9ad1ea 100644
|
||||
--- a/src/minicoredumper_regd/daemon.c
|
||||
+++ b/src/minicoredumper_regd/daemon.c
|
||||
@@ -224,7 +224,7 @@ static int setup_shm(void)
|
||||
|
||||
pthread_mutexattr_init(&attr);
|
||||
pthread_mutexattr_setprotocol(&attr, PTHREAD_PRIO_INHERIT);
|
||||
- pthread_mutexattr_setrobust_np(&attr, PTHREAD_MUTEX_ROBUST_NP);
|
||||
+ pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST);
|
||||
pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
|
||||
pthread_mutex_init(&sh->m, &attr);
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
||||
+2
-5
@@ -9,15 +9,12 @@ DEPENDS = "elfutils dbus dbus-glib-native glib-2.0 dbus-glib util-linux json-c"
|
||||
|
||||
inherit autotools pkgconfig ptest systemd update-rc.d
|
||||
|
||||
SRCREV = "16a0d44f1725eaa93096eaa0e086f42ef4c2712c"
|
||||
|
||||
PR .= "+git${SRCPV}"
|
||||
SRCREV = "0bed11b3d69877ce59b1a71359349af60f2009ff"
|
||||
|
||||
SRC_URI = "git://github.com/diamon/minicoredumper;protocol=https;branch=master \
|
||||
file://0001-replace-pthread_mutexattr_setrobust_np-with-pthread_.patch \
|
||||
file://0001-minicoredumper_demo-Use-optnone-attribute-with-clang.patch \
|
||||
file://minicoredumper.service \
|
||||
file://minicoredumper.init \
|
||||
file://0001-minicoredumper-retry-elf-parsing-as-long-as-needed.patch \
|
||||
file://run-ptest \
|
||||
"
|
||||
|
||||
Reference in New Issue
Block a user