Initial commit

This commit is contained in:
Your Name
2026-04-23 17:07:55 +08:00
commit b7e39e063b
16725 changed files with 1625565 additions and 0 deletions
@@ -0,0 +1,28 @@
SUMMARY = "Tools for creating debuginfo and source file distributions"
DESCRIPTION = "debugedit provides programs and scripts for creating \
debuginfo and source file distributions, collect build-ids and rewrite \
source paths in DWARF data for debugging, tracing and profiling."
HOMEPAGE = "https://sourceware.org/debugedit/"
LICENSE = "GPL-2.0-only & GPL-3.0-only & LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
file://COPYING3;md5=d32239bcb673463ab874e80d47fae504"
SRC_URI = "https://sourceware.org/ftp/debugedit/${PV}/debugedit-${PV}.tar.xz"
SRC_URI:append:libc-musl = " \
file://0001-tools-Add-error.h-for-non-glibc-case.patch \
file://0002-sepdebugcrcfix.c-do-not-use-64bit-variants.patch \
file://0003-Makefile.am-do-not-update-manual.patch \
"
SRC_URI[sha256sum] = "e9ecd7d350bebae1f178ce6776ca19a648b6fe8fa22f5b3044b38d7899aa553e"
DEPENDS = "elfutils"
inherit pkgconfig autotools
RDEPENDS:${PN} += "bash elfutils-binutils"
BBCLASSEXTEND = "native nativesdk"
@@ -0,0 +1,102 @@
From 4c797d3b559ba51bd9ccd9a2036245819acce843 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Thu, 23 Mar 2023 10:54:21 +0800
Subject: [PATCH] tools: Add error.h for non-glibc case
error is glibc specific API, so this patch will mostly not accepted
upstream given that elfutils has been closely tied to glibc
This is a OE specific workaround for musl.
Upstream-Status: Inappropriate [OE Specific]
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
tools/debugedit.c | 7 ++++++-
tools/error.h | 27 +++++++++++++++++++++++++++
tools/sepdebugcrcfix.c | 7 ++++++-
3 files changed, 39 insertions(+), 2 deletions(-)
create mode 100644 tools/error.h
diff --git a/tools/debugedit.c b/tools/debugedit.c
index 668777a..a72c3c0 100644
--- a/tools/debugedit.c
+++ b/tools/debugedit.c
@@ -25,7 +25,6 @@
#include <byteswap.h>
#include <endian.h>
#include <errno.h>
-#include <error.h>
#include <limits.h>
#include <string.h>
#include <stdlib.h>
@@ -40,6 +39,12 @@
#include <gelf.h>
#include <dwarf.h>
+#ifdef __GLIBC__
+#include <error.h>
+#else
+#include "error.h"
+#endif
+
#ifndef MAX
#define MAX(m, n) ((m) < (n) ? (n) : (m))
#endif
diff --git a/tools/error.h b/tools/error.h
new file mode 100644
index 0000000..9b24418
--- /dev/null
+++ b/tools/error.h
@@ -0,0 +1,27 @@
+#ifndef _ERROR_H_
+#define _ERROR_H_
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+static unsigned int error_message_count = 0;
+
+static inline void error(int status, int errnum, const char* format, ...)
+{
+ va_list ap;
+ fprintf(stderr, "%s: ", program_invocation_name);
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+ if (errnum)
+ fprintf(stderr, ": %s", strerror(errnum));
+ fprintf(stderr, "\n");
+ error_message_count++;
+ if (status)
+ exit(status);
+}
+
+#endif /* _ERROR_H_ */
diff --git a/tools/sepdebugcrcfix.c b/tools/sepdebugcrcfix.c
index da50e6c..c4a9d56 100644
--- a/tools/sepdebugcrcfix.c
+++ b/tools/sepdebugcrcfix.c
@@ -29,10 +29,15 @@
#include <endian.h>
#include <stdio.h>
#include <stdlib.h>
-#include <error.h>
#include <libelf.h>
#include <gelf.h>
+#ifdef __GLIBC__
+#include <error.h>
+#else
+#include "error.h"
+#endif
+
#ifndef _
#define _(x) x
#endif
--
2.17.1
@@ -0,0 +1,56 @@
From 3e05bbc1f7909ab6f529e66f0d0f70fb1e60583a Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Thu, 23 Mar 2023 11:55:53 +0800
Subject: [PATCH 2/2] sepdebugcrcfix.c: do not use 64bit variants
configure.ac checks for largefile support via AC_SYS_LARGEFILE
already, therefore use off_t, open and lseek instead of 64bit
variants. Musl e.g. does not define them without _LARGEFILE64_SOURCE
and error is not seen on glibc because _GNU_SOURCE defines
_LARGEFILE64_SOURCE.
This patch is marked as inappropriate as debugedit obviously only
wants to support glibc or some glibc compatible libcs. We can see
this from the error() usage. And this patch is only for musl.
Upstream-Status: Inappropriate [OE Specific]
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
tools/sepdebugcrcfix.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/sepdebugcrcfix.c b/tools/sepdebugcrcfix.c
index c4a9d56..882e5f5 100644
--- a/tools/sepdebugcrcfix.c
+++ b/tools/sepdebugcrcfix.c
@@ -144,7 +144,7 @@ crc32 (const char *fname, const char *base_fname, uint32_t *crcp)
error (0, errno, _("cannot open \"%s\""), debugname);
return false;
}
- off64_t size = lseek64 (fd, 0, SEEK_END);
+ off_t size = lseek (fd, 0, SEEK_END);
if (size == -1)
{
error (0, errno, _("cannot get size of \"%s\""), debugname);
@@ -289,7 +289,7 @@ process (Elf *elf, int fd, const char *fname)
return true;
}
updated_count++;
- off64_t seekto = (shdr->sh_offset + data->d_off
+ off_t seekto = (shdr->sh_offset + data->d_off
+ (crcp - (const uint8_t *) data->d_buf));
uint32_t crc_targetendian = (ehdr->e_ident[EI_DATA] == ELFDATA2LSB
? htole32 (crc) : htobe32 (crc));
@@ -361,7 +361,7 @@ main (int argc, char **argv)
error (0, errno, _("cannot chmod \"%s\" to make sure we can read and write"), fname);
bool failed = false;
- int fd = open64 (fname, O_RDWR);
+ int fd = open (fname, O_RDWR);
if (fd == -1)
{
error (0, errno, _("cannot open \"%s\""), fname);
--
2.17.1
@@ -0,0 +1,65 @@
From 4f0d7d2f4900ce8555e09854dc681278b7a3d9a9 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Thu, 23 Mar 2023 13:09:23 +0800
Subject: [PATCH 3/3] Makefile.am: do not update manual
The tarball ships these manuals, no need to re-generate them.
We have local patches for debugedit.c and sepdebugcrcfix.c,
this will triger re-generation of the manuals, which causes
error of missing help2man.
This is an OE specific patch. If we don't have local patches
patching debugedit.c and sepdebugcrcfix.c, this patch is also
not needed.
Upstream-Status: Inappropriate [OE Specific]
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
Makefile.am | 30 ------------------------------
1 file changed, 30 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 98b2f20..f91deea 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -52,36 +52,6 @@ sepdebugcrcfix_LDADD = @LIBELF_LIBS@
# Manual pages are generated for dist
dist_man_MANS = debugedit.1 sepdebugcrcfix.1 find-debuginfo.1
-# The 'case' ensures the man pages are only generated if the corresponding
-# source script (the first prerequisite) or configure.ac (for the version)
-# has been changed. The executable prerequisite is solely meant to force
-# these docs to be made only after the executable has been compiled.
-# This makes sure help2man is not normally necessary (since the generated
-# man pages are distributed).
-debugedit.1: tools/debugedit.c configure.ac debugedit$(EXEEXT)
- @case '$?' in \
- *$<* | *configure.ac* ) $(HELP2MAN) -N --output=$@ \
- --name='debug source path manipulation tool' \
- ./debugedit$(EXEEXT) ;; \
- * ) : ;; \
- esac
-
-sepdebugcrcfix.1: tools/sepdebugcrcfix.c configure.ac sepdebugcrcfix$(EXEEXT)
- @case '$?' in \
- *$<* | *configure.ac* ) $(HELP2MAN) -N --output=$@ \
- --name='fixes CRC for separate .debug files' \
- ./sepdebugcrcfix$(EXEEXT) ;;\
- * ) : ;; \
- esac
-
-find-debuginfo.1: $(top_srcdir)/scripts/find-debuginfo.in configure.ac find-debuginfo
- @case '$?' in \
- *$<* | *configure.ac* ) $(HELP2MAN) -N --output=$@ \
- --name='finds debuginfo and processes it' \
- ./find-debuginfo ;;\
- * ) : ;; \
- esac
-
noinst_HEADERS= tools/ansidecl.h \
tools/hashtab.h \
tools/md5.h \
--
2.17.1