blob: d03da61353997335b8aad593dcf5c06453732850 [file] [log] [blame]
Andrew Geissler595f6302022-01-24 19:11:47 +00001SUMMARY = "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"
Andrew Geissler7e0e3c02022-02-25 20:34:39 +00005LICENSE = "GPL-2.0-only & GPL-2.0-or-later & LGPL-3.0-or-later & GPL-3.0-or-later"
Andrew Geissler595f6302022-01-24 19:11:47 +00006LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
Andrew Geisslerd5838332022-05-27 11:33:10 -05007 file://debuginfod/debuginfod-client.c;endline=28;md5=f0a7c3170776866ee94e8f9225a6ad79 \
Andrew Geissler595f6302022-01-24 19:11:47 +00008 "
9DEPENDS = "zlib virtual/libintl"
10DEPENDS:append:libc-musl = " argp-standalone fts musl-obstack "
11# 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://0001-dso-link-change.patch \
15 file://0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch \
16 file://0003-fixheadercheck.patch \
17 file://0006-Fix-build-on-aarch64-musl.patch \
18 file://0001-libasm-may-link-with-libbz2-if-found.patch \
19 file://0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch \
20 file://0001-skip-the-test-when-gcc-not-deployed.patch \
21 file://run-ptest \
22 file://ptest.patch \
23 file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \
Andrew Geissler595f6302022-01-24 19:11:47 +000024 "
25SRC_URI:append:libc-musl = " \
26 file://0003-musl-utils.patch \
27 file://0015-config-eu.am-do-not-use-Werror.patch \
28 "
Andrew Geisslerd5838332022-05-27 11:33:10 -050029SRC_URI[sha256sum] = "e70b0dfbe610f90c4d1fe0d71af142a4e25c3c4ef9ebab8d2d72b65159d454c8"
Andrew Geissler595f6302022-01-24 19:11:47 +000030
31inherit autotools gettext ptest pkgconfig
32PTEST_ENABLED:libc-musl = "0"
33
34EXTRA_OECONF = "--program-prefix=eu-"
35
Andrew Geisslerd5838332022-05-27 11:33:10 -050036BUILD_CFLAGS += "-Wno-error=stringop-overflow"
37
Andrew Geissler595f6302022-01-24 19:11:47 +000038DEPENDS_BZIP2 = "bzip2-replacement-native"
39DEPENDS_BZIP2:class-target = "bzip2"
40
41PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'debuginfod', 'debuginfod libdebuginfod', '', d)}"
42PACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}"
43PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
44PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
45PACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl"
46PACKAGECONFIG[debuginfod] = "--enable-debuginfod,--disable-debuginfod,libarchive sqlite3 libmicrohttpd"
47
48RDEPENDS:${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils iproute2-ss bsdtar gcc-symlinks binutils-symlinks libgcc-dev"
49
50EXTRA_OECONF:append:class-target = " --disable-tests-rpath"
51
52RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-dbg glibc-dev"
53INSANE_SKIP:${PN}-ptest = "debug-deps dev-deps"
54
55do_compile_ptest() {
56 cd ${B}/tests
57 oe_runmake buildtest-TESTS oecheck
58}
Andrew Geissler615f2f12022-07-15 14:00:58 -050059PTEST_PARALLEL_MAKE = ""
Andrew Geissler595f6302022-01-24 19:11:47 +000060
61do_install_ptest() {
62 if [ ${PTEST_ENABLED} = "1" ]; then
63 # copy the files which needed by the cases
64 TEST_FILES="strip strip.o addr2line elfcmp objdump readelf size.o nm.o nm elflint elfcompress elfclassify stack unstrip"
65 install -d -m 755 ${D}${PTEST_PATH}/src
66 install -d -m 755 ${D}${PTEST_PATH}/libelf
67 install -d -m 755 ${D}${PTEST_PATH}/libdw
68 install -d -m 755 ${D}${PTEST_PATH}/libdwfl
69 install -d -m 755 ${D}${PTEST_PATH}/libdwelf
70 install -d -m 755 ${D}${PTEST_PATH}/libasm
71 install -d -m 755 ${D}${PTEST_PATH}/libcpu
72 install -d -m 755 ${D}${PTEST_PATH}/libebl
73 for test_file in ${TEST_FILES}; do
74 if [ -f ${B}/src/${test_file} ]; then
75 cp -r ${B}/src/${test_file} ${D}${PTEST_PATH}/src
76 fi
77 done
78 cp ${D}${libdir}/libelf-${PV}.so ${D}${PTEST_PATH}/libelf/libelf.so
79 cp ${D}${libdir}/libdw-${PV}.so ${D}${PTEST_PATH}/libdw/libdw.so
80 cp ${D}${libdir}/libasm-${PV}.so ${D}${PTEST_PATH}/libasm/libasm.so
81 cp ${B}/libcpu/libcpu.a ${D}${PTEST_PATH}/libcpu/
82 cp ${B}/libebl/libebl.a ${D}${PTEST_PATH}/libebl/
83 cp ${S}/libelf/*.h ${D}${PTEST_PATH}/libelf/
84 cp ${S}/libdw/*.h ${D}${PTEST_PATH}/libdw/
85 cp ${S}/libdwfl/*.h ${D}${PTEST_PATH}/libdwfl/
86 cp ${S}/libdwelf/*.h ${D}${PTEST_PATH}/libdwelf/
87 cp ${S}/libasm/*.h ${D}${PTEST_PATH}/libasm/
88 cp -r ${S}/tests/ ${D}${PTEST_PATH}
89 cp -r ${B}/tests/* ${D}${PTEST_PATH}/tests
90 cp -r ${B}/config.h ${D}${PTEST_PATH}
91 cp -r ${B}/backends ${D}${PTEST_PATH}
92 cp -r ${B}/debuginfod ${D}${PTEST_PATH}
93 sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
94 find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
95 fi
96}
97
98EXTRA_OEMAKE:class-native = ""
99EXTRA_OEMAKE:class-nativesdk = ""
100
101BBCLASSEXTEND = "native nativesdk"
102
103# Package utilities separately
104PACKAGES =+ "${PN}-binutils libelf libasm libdw libdebuginfod"
105
Andrew Geissler9aee5002022-03-30 16:27:02 +0000106# Shared libraries are licensed GPL-2.0-only or GPL-3.0-or-later, binaries
107# GPL-3.0-or-later. According to NEWS file:
Andrew Geissler595f6302022-01-24 19:11:47 +0000108# "The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for stand-alone
109# programs. There is now also a formal CONTRIBUTING document describing how to
110# submit patches."
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000111LICENSE:${PN}-binutils = "GPL-3.0-or-later"
112LICENSE:${PN} = "GPL-3.0-or-later"
113LICENSE:libelf = "GPL-2.0-only | LGPL-3.0-or-later"
114LICENSE:libasm = "GPL-2.0-only | LGPL-3.0-or-later"
115LICENSE:libdw = "GPL-2.0-only | LGPL-3.0-or-later"
116LICENSE:libdebuginfod = "GPL-2.0-or-later | LGPL-3.0-or-later"
Andrew Geissler595f6302022-01-24 19:11:47 +0000117
118FILES:${PN}-binutils = "\
119 ${bindir}/eu-addr2line \
120 ${bindir}/eu-ld \
121 ${bindir}/eu-nm \
122 ${bindir}/eu-readelf \
123 ${bindir}/eu-size \
124 ${bindir}/eu-strip"
125
126FILES:libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*"
127FILES:libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*"
128FILES:libdw = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*"
129FILES:libdebuginfod = "${libdir}/libdebuginfod-${PV}.so ${libdir}/libdebuginfod.so.*"
130# Some packages have the version preceeding the .so instead properly
131# versioned .so.<version>, so we need to reorder and repackage.
132#FILES:${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
133#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
134
135# The package contains symlinks that trip up insane
136INSANE_SKIP:${MLPREFIX}libdw = "dev-so"
137# The nlist binary in the tests uses explicitly minimal compiler flags
138INSANE_SKIP:${PN}-ptest += "ldflags"
139
140# avoid stripping some generated binaries otherwise some of the tests such as test-nlist,
141# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
142INHIBIT_PACKAGE_STRIP_FILES = "\
143 ${PKGD}${PTEST_PATH}/tests/test-nlist \
144 ${PKGD}${PTEST_PATH}/tests/elfstrmerge \
145 ${PKGD}${PTEST_PATH}/tests/backtrace-child \
146 ${PKGD}${PTEST_PATH}/tests/backtrace-data \
147 ${PKGD}${PTEST_PATH}/tests/backtrace-dwarf \
148 ${PKGD}${PTEST_PATH}/tests/deleted \
149 ${PKGD}${PTEST_PATH}/tests/dwfllines \
150 ${PKGD}${PTEST_PATH}/src/strip \
151 ${PKGD}${PTEST_PATH}/src/addr2line \
152 ${PKGD}${PTEST_PATH}/src/elfcmp \
153 ${PKGD}${PTEST_PATH}/src/objdump \
154 ${PKGD}${PTEST_PATH}/src/readelf \
155 ${PKGD}${PTEST_PATH}/src/nm \
156 ${PKGD}${PTEST_PATH}/src/elflint \
157 ${PKGD}${PTEST_PATH}/src/elfclassify \
158 ${PKGD}${PTEST_PATH}/src/stack \
159 ${PKGD}${PTEST_PATH}/src/unstrip \
160 ${PKGD}${PTEST_PATH}/libelf/libelf.so \
161 ${PKGD}${PTEST_PATH}/libdw/libdw.so \
162 ${PKGD}${PTEST_PATH}/libasm/libasm.so \
163 ${PKGD}${PTEST_PATH}/backends/libebl_i386.so \
164 ${PKGD}${PTEST_PATH}/backends/libebl_x86_64.so \
165"
166
167PRIVATE_LIBS:${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1 libdebuginfod.so.1"