mirror of
https://git.yoctoproject.org/poky
synced 2026-04-20 00:32:13 +02:00
debugedit: add recipe
This recipe provides find-debuginfo which is used by rpm, more
specifically rpmbuild.
RPM upstream removed find-debuginfo and switched to use debugedit
in the following commit.
04b0805a75
Without debugedit, rpmbuild fails to generate debuginfo package when
%debug_package is added to spec file.
(From OE-Core rev: f7ada8b4d003473abce5b589cc38aec1e5e5f18a)
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -135,6 +135,7 @@ RECIPE_MAINTAINER:pn-dbus = "Chen Qi <Qi.Chen@windriver.com>"
|
||||
RECIPE_MAINTAINER:pn-dbus-glib = "Chen Qi <Qi.Chen@windriver.com>"
|
||||
RECIPE_MAINTAINER:pn-dbus-wait = "Chen Qi <Qi.Chen@windriver.com>"
|
||||
RECIPE_MAINTAINER:pn-debianutils = "Yi Zhao <yi.zhao@windriver.com>"
|
||||
RECIPE_MAINTAINER:pn-debugedit = "Chen Qi <Qi.Chen@windriver.com>"
|
||||
RECIPE_MAINTAINER:pn-dejagnu = "Nathan Rossi <nathan@nathanrossi.com>"
|
||||
RECIPE_MAINTAINER:pn-depmodwrapper-cross = "Unassigned <unassigned@yoctoproject.org>"
|
||||
RECIPE_MAINTAINER:pn-desktop-file-utils = "Alexander Kanavin <alex.kanavin@gmail.com>"
|
||||
|
||||
28
meta/recipes-devtools/debugedit/debugedit_5.0.bb
Normal file
28
meta/recipes-devtools/debugedit/debugedit_5.0.bb
Normal file
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user