blob: b3b2476f0f3e07dae90b51e1930ba1eca1bf857b [file] [log] [blame]
Andrew Geissler517393d2023-01-13 08:55:19 -06001SUMMARY = "Utilities and libraries for handling compiled object files"
2HOMEPAGE = "https://sourceware.org/elfutils"
3DESCRIPTION = "elfutils is a collection of utilities and libraries to read, create and modify ELF binary files, find and handle DWARF debug data, symbols, thread state and stacktraces for processes and core files on GNU/Linux."
4SECTION = "base"
Patrick Williams705982a2024-01-12 09:51:57 -06005LICENSE = "( GPL-2.0-or-later | LGPL-3.0-or-later ) & GPL-3.0-or-later"
Andrew Geissler517393d2023-01-13 08:55:19 -06006LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
7 file://debuginfod/debuginfod-client.c;endline=28;md5=f0a7c3170776866ee94e8f9225a6ad79 \
8 "
9DEPENDS = "zlib virtual/libintl"
Andrew Geissler220dafd2023-10-04 10:18:08 -050010DEPENDS:append:libc-musl = " argp-standalone fts musl-legacy-error musl-obstack"
Andrew Geissler517393d2023-01-13 08:55:19 -060011# The Debian patches below are from:
12# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.176-1.debian.tar.xz
13SRC_URI = "https://sourceware.org/elfutils/ftp/${PV}/${BP}.tar.bz2 \
14 file://run-ptest \
15 file://0001-dso-link-change.patch \
16 file://0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch \
17 file://0003-fixheadercheck.patch \
18 file://0006-Fix-build-on-aarch64-musl.patch \
19 file://0001-libasm-may-link-with-libbz2-if-found.patch \
20 file://0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch \
21 file://0001-skip-the-test-when-gcc-not-deployed.patch \
22 file://ptest.patch \
23 file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \
24 "
25SRC_URI:append:libc-musl = " \
26 file://0003-musl-utils.patch \
Andrew Geissler517393d2023-01-13 08:55:19 -060027 "
Patrick Williamsb58112e2024-03-07 11:16:36 -060028SRC_URI[sha256sum] = "df76db71366d1d708365fc7a6c60ca48398f14367eb2b8954efc8897147ad871"
Andrew Geissler517393d2023-01-13 08:55:19 -060029
30inherit autotools gettext ptest pkgconfig
31
32EXTRA_OECONF = "--program-prefix=eu-"
33
Andrew Geissler220dafd2023-10-04 10:18:08 -050034# Only used at runtime for make check but we want deterministic makefiles for ptest so hardcode
35CACHED_CONFIGUREVARS += "ac_cv_prog_HAVE_BUNZIP2=yes"
36
Andrew Geissler517393d2023-01-13 08:55:19 -060037BUILD_CFLAGS += "-Wno-error=stringop-overflow"
Andrew Geissler517393d2023-01-13 08:55:19 -060038
39DEPENDS_BZIP2 = "bzip2-replacement-native"
40DEPENDS_BZIP2:class-target = "bzip2"
41
Patrick Williams169d7bc2024-01-05 11:33:25 -060042PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'debuginfod', 'debuginfod libdebuginfod', '', d)} \
43 ${@bb.utils.contains('DISTRO_FEATURES', 'minidebuginfo', 'xz', '', d)} \
44 "
Andrew Geissler517393d2023-01-13 08:55:19 -060045PACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}"
46PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
47PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
48PACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl"
49PACKAGECONFIG[debuginfod] = "--enable-debuginfod,--disable-debuginfod,libarchive sqlite3 libmicrohttpd"
50
51RDEPENDS:${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils iproute2-ss bsdtar gcc-symlinks binutils-symlinks libgcc-dev"
52
53EXTRA_OECONF:append:class-target = " --disable-tests-rpath"
54
55# symver functions not currently supported on microblaze
56EXTRA_OECONF:append:class-target:microblaze = " --disable-symbol-versioning"
57
58RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-dbg glibc-dev"
59INSANE_SKIP:${PN}-ptest = "debug-deps dev-deps"
60
61do_compile_ptest() {
62 cd ${B}/tests
63 oe_runmake buildtest-TESTS oecheck
64}
65PTEST_PARALLEL_MAKE = ""
66
67do_install_ptest() {
68 if [ ${PTEST_ENABLED} = "1" ]; then
69 # copy the files which needed by the cases
Patrick Williamsb58112e2024-03-07 11:16:36 -060070 TEST_FILES="strip strip.o addr2line elfcmp objdump readelf size.o nm.o nm elflint elfcompress elfclassify stack unstrip srcfiles"
Andrew Geissler517393d2023-01-13 08:55:19 -060071 install -d -m 755 ${D}${PTEST_PATH}/src
72 install -d -m 755 ${D}${PTEST_PATH}/lib
73 install -d -m 755 ${D}${PTEST_PATH}/libelf
74 install -d -m 755 ${D}${PTEST_PATH}/libdw
75 install -d -m 755 ${D}${PTEST_PATH}/libdwfl
76 install -d -m 755 ${D}${PTEST_PATH}/libdwelf
77 install -d -m 755 ${D}${PTEST_PATH}/libasm
78 install -d -m 755 ${D}${PTEST_PATH}/libcpu
79 install -d -m 755 ${D}${PTEST_PATH}/libebl
80 for test_file in ${TEST_FILES}; do
81 if [ -f ${B}/src/${test_file} ]; then
82 cp -r ${B}/src/${test_file} ${D}${PTEST_PATH}/src
83 fi
84 done
85 cp ${D}${libdir}/libelf-${PV}.so ${D}${PTEST_PATH}/libelf/libelf.so
86 cp ${D}${libdir}/libdw-${PV}.so ${D}${PTEST_PATH}/libdw/libdw.so
87 cp ${D}${libdir}/libasm-${PV}.so ${D}${PTEST_PATH}/libasm/libasm.so
88 cp ${B}/libcpu/libcpu.a ${D}${PTEST_PATH}/libcpu/
89 cp ${B}/libebl/libebl.a ${D}${PTEST_PATH}/libebl/
90 cp ${B}/lib/libeu.a ${D}${PTEST_PATH}/lib/
91 cp ${S}/libelf/*.h ${D}${PTEST_PATH}/libelf/
92 cp ${S}/libdw/*.h ${D}${PTEST_PATH}/libdw/
93 cp ${S}/libdwfl/*.h ${D}${PTEST_PATH}/libdwfl/
94 cp ${S}/libdwelf/*.h ${D}${PTEST_PATH}/libdwelf/
95 cp ${S}/libasm/*.h ${D}${PTEST_PATH}/libasm/
96 cp -r ${S}/tests/ ${D}${PTEST_PATH}
97 cp -r ${B}/tests/* ${D}${PTEST_PATH}/tests
98 cp -r ${B}/config.h ${D}${PTEST_PATH}
99 cp -r ${B}/backends ${D}${PTEST_PATH}
100 cp -r ${B}/debuginfod ${D}${PTEST_PATH}
101 sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
102 find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
Andrew Geissler517393d2023-01-13 08:55:19 -0600103 fi
104}
105
106EXTRA_OEMAKE:class-native = ""
107EXTRA_OEMAKE:class-nativesdk = ""
108
109BBCLASSEXTEND = "native nativesdk"
110
Patrick Williams705982a2024-01-12 09:51:57 -0600111# Package utilities and libraries are listed separately
Andrew Geissler517393d2023-01-13 08:55:19 -0600112PACKAGES =+ "${PN}-binutils libelf libasm libdw libdebuginfod"
113
Patrick Williams705982a2024-01-12 09:51:57 -0600114# According to the upstream website https://sourceware.org/elfutils, the latest
115# license policy is as follows:
116# "License. The libraries and backends are dual GPLv2+/LGPLv3+. The utilities
117# are GPLv3+."
Andrew Geissler517393d2023-01-13 08:55:19 -0600118LICENSE:${PN}-binutils = "GPL-3.0-or-later"
119LICENSE:${PN} = "GPL-3.0-or-later"
Patrick Williams705982a2024-01-12 09:51:57 -0600120LICENSE:libelf = "GPL-2.0-or-later | LGPL-3.0-or-later"
121LICENSE:libasm = "GPL-2.0-or-later | LGPL-3.0-or-later"
122LICENSE:libdw = "GPL-2.0-or-later | LGPL-3.0-or-later"
Andrew Geissler517393d2023-01-13 08:55:19 -0600123LICENSE:libdebuginfod = "GPL-2.0-or-later | LGPL-3.0-or-later"
124
125FILES:${PN}-binutils = "\
126 ${bindir}/eu-addr2line \
127 ${bindir}/eu-ld \
128 ${bindir}/eu-nm \
129 ${bindir}/eu-readelf \
130 ${bindir}/eu-size \
131 ${bindir}/eu-strip"
132
133FILES:libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*"
134FILES:libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*"
135FILES:libdw = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*"
136FILES:libdebuginfod = "${libdir}/libdebuginfod-${PV}.so ${libdir}/libdebuginfod.so.*"
137# Some packages have the version preceeding the .so instead properly
138# versioned .so.<version>, so we need to reorder and repackage.
139#FILES:${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
140#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
141
142# The package contains symlinks that trip up insane
143INSANE_SKIP:${MLPREFIX}libdw = "dev-so"
144# The nlist binary in the tests uses explicitly minimal compiler flags
145INSANE_SKIP:${PN}-ptest += "ldflags"
146
147# avoid stripping some generated binaries otherwise some of the tests such as test-nlist,
148# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
149INHIBIT_PACKAGE_STRIP_FILES = "\
150 ${PKGD}${PTEST_PATH}/tests/test-nlist \
151 ${PKGD}${PTEST_PATH}/tests/elfstrmerge \
152 ${PKGD}${PTEST_PATH}/tests/backtrace-child \
153 ${PKGD}${PTEST_PATH}/tests/backtrace-data \
154 ${PKGD}${PTEST_PATH}/tests/backtrace-dwarf \
155 ${PKGD}${PTEST_PATH}/tests/deleted \
156 ${PKGD}${PTEST_PATH}/tests/dwfllines \
157 ${PKGD}${PTEST_PATH}/src/strip \
158 ${PKGD}${PTEST_PATH}/src/addr2line \
159 ${PKGD}${PTEST_PATH}/src/elfcmp \
160 ${PKGD}${PTEST_PATH}/src/objdump \
161 ${PKGD}${PTEST_PATH}/src/readelf \
162 ${PKGD}${PTEST_PATH}/src/nm \
163 ${PKGD}${PTEST_PATH}/src/elflint \
164 ${PKGD}${PTEST_PATH}/src/elfclassify \
165 ${PKGD}${PTEST_PATH}/src/stack \
166 ${PKGD}${PTEST_PATH}/src/unstrip \
Patrick Williamsb58112e2024-03-07 11:16:36 -0600167 ${PKGD}${PTEST_PATH}/src/srcfiles \
Andrew Geissler517393d2023-01-13 08:55:19 -0600168 ${PKGD}${PTEST_PATH}/libelf/libelf.so \
169 ${PKGD}${PTEST_PATH}/libdw/libdw.so \
170 ${PKGD}${PTEST_PATH}/libasm/libasm.so \
171 ${PKGD}${PTEST_PATH}/backends/libebl_i386.so \
172 ${PKGD}${PTEST_PATH}/backends/libebl_x86_64.so \
173"
174
175PRIVATE_LIBS:${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1 libdebuginfod.so.1"