From a72cf6bbbb2cc55ae120b836f66643ae7d363506 Mon Sep 17 00:00:00 2001 From: Sergio Durigan Junior Date: Fri, 2 Sep 2022 22:11:29 +0100 Subject: [PATCH] Import elfutils_0.187-2.debian.tar.xz [dgit import tarball elfutils 0.187-2 elfutils_0.187-2.debian.tar.xz] --- changelog | 955 ++++++++++++++++++ compat | 1 + control | 167 +++ copyright | 71 ++ debuginfod.install | 4 + docs | 3 + elfutils.install | 3 + libasm-dev.install | 3 + libasm1.install | 2 + libasm1.symbols | 6 + libdebuginfod-common.config | 22 + libdebuginfod-common.install | 3 + libdebuginfod-common.postinst | 52 + libdebuginfod-common.postrm | 34 + libdebuginfod-common.templates | 25 + libdebuginfod-dev.install | 4 + libdebuginfod1.install | 2 + libdebuginfod1.symbols | 5 + libdw-dev.install | 8 + libdw1.install | 2 + libdw1.symbols | 28 + libelf-dev.install | 9 + libelf1.install | 3 + libelf1.symbols | 10 + ...ces-between-mips-machine-identifiers.patch | 31 + ...ort-for-mips64-abis-in-mips_retval.c.patch | 168 +++ ...-Add-mips-n64-relocation-format-hack.patch | 226 +++++ patches/arm_backend.diff | 600 +++++++++++ patches/disable-some-tests.diff | 11 + patches/disable_werror.patch | 23 + patches/hppa_backend.diff | 778 ++++++++++++++ patches/hurd-hacks.diff | 58 ++ patches/hurd_path.patch | 14 + patches/ignore_strmerge.diff | 11 + patches/kfreebsd-debuginfod | 23 + patches/kfreebsd-mremap-stub | 17 + patches/kfreebsd_path.patch | 17 + patches/mips_backend.diff | 685 +++++++++++++ patches/mips_cfi.patch | 114 +++ patches/mips_readelf_w.patch | 22 + patches/remove-old-glibc-hack.diff | 17 + patches/riscv-retval-workaround.patch | 11 + patches/series | 19 + patches/testsuite-ignore-elflint.diff | 36 + po/POTFILES.in | 1 + po/templates.pot | 37 + rules | 181 ++++ source/format | 1 + source/include-binaries | 1 + upstream-signing-key.pgp | Bin 0 -> 5236 bytes watch | 7 + 51 files changed, 4531 insertions(+) create mode 100644 changelog create mode 100644 compat create mode 100644 control create mode 100644 copyright create mode 100644 debuginfod.install create mode 100644 docs create mode 100644 elfutils.install create mode 100644 libasm-dev.install create mode 100644 libasm1.install create mode 100644 libasm1.symbols create mode 100644 libdebuginfod-common.config create mode 100644 libdebuginfod-common.install create mode 100644 libdebuginfod-common.postinst create mode 100644 libdebuginfod-common.postrm create mode 100644 libdebuginfod-common.templates create mode 100644 libdebuginfod-dev.install create mode 100644 libdebuginfod1.install create mode 100644 libdebuginfod1.symbols create mode 100644 libdw-dev.install create mode 100644 libdw1.install create mode 100644 libdw1.symbols create mode 100644 libelf-dev.install create mode 100644 libelf1.install create mode 100644 libelf1.symbols create mode 100644 patches/0001-Ignore-differences-between-mips-machine-identifiers.patch create mode 100644 patches/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch create mode 100644 patches/0003-Add-mips-n64-relocation-format-hack.patch create mode 100644 patches/arm_backend.diff create mode 100644 patches/disable-some-tests.diff create mode 100644 patches/disable_werror.patch create mode 100644 patches/hppa_backend.diff create mode 100644 patches/hurd-hacks.diff create mode 100644 patches/hurd_path.patch create mode 100644 patches/ignore_strmerge.diff create mode 100644 patches/kfreebsd-debuginfod create mode 100644 patches/kfreebsd-mremap-stub create mode 100644 patches/kfreebsd_path.patch create mode 100644 patches/mips_backend.diff create mode 100644 patches/mips_cfi.patch create mode 100644 patches/mips_readelf_w.patch create mode 100644 patches/remove-old-glibc-hack.diff create mode 100644 patches/riscv-retval-workaround.patch create mode 100644 patches/series create mode 100644 patches/testsuite-ignore-elflint.diff create mode 100644 po/POTFILES.in create mode 100644 po/templates.pot create mode 100755 rules create mode 100644 source/format create mode 100644 source/include-binaries create mode 100644 upstream-signing-key.pgp create mode 100644 watch diff --git a/changelog b/changelog new file mode 100644 index 0000000..019fe2b --- /dev/null +++ b/changelog @@ -0,0 +1,955 @@ +elfutils (0.187-2) unstable; urgency=medium + + * Pass --sysconfdir to configure and install elfutils.urls. + - d/rules: Pass --sysconfdir to configure; don't delete elfutils.urls. + - d/libdebuginfod-common.install: Adjust paths and install + elfutils.urls. + * d/rules: Cleanup debuginfod code and support Ubuntu's debuginfod. + * d/libdebuginfod-common.templates: New question for Ubuntu's debuginfod. + * d/libdebuginfod-common.config: Ask about Ubuntu's debuginfod. + * d/libdebuginfod-common.post{inst,rm}: Cleanup code, fix problems + and support Ubuntu. + Thanks to наб (Closes: #987787) + + -- Sergio Durigan Junior Fri, 02 Sep 2022 17:11:29 -0400 + +elfutils (0.187-1) unstable; urgency=medium + + * New upstream release. + + -- Matthias Klose Wed, 04 May 2022 01:08:42 +0200 + +elfutils (0.186-1build1) jammy; urgency=medium + + * No-change rebuild for ppc64el baseline bump. + + -- Łukasz 'sil2100' Zemczak Wed, 23 Mar 2022 14:51:35 +0100 + +elfutils (0.186-1) unstable; urgency=medium + + * New upstream release. + * Don't yet install elfutils.urls. + * Update symbols file. + + -- Matthias Klose Wed, 17 Nov 2021 21:49:08 +0100 + +elfutils (0.185-2) unstable; urgency=medium + + * Upload to unstable. + + -- Matthias Klose Sun, 15 Aug 2021 18:27:02 +0200 + +elfutils (0.185-1) experimental; urgency=medium + + * New upstream release. + * Refresh patches. + + -- Matthias Klose Tue, 25 May 2021 20:31:36 +0200 + +elfutils (0.184-1) experimental; urgency=medium + + * New upstream release. + + -- Matthias Klose Mon, 17 May 2021 12:10:27 +0200 + +elfutils (0.183-8) experimental; urgency=medium + + * libdebuginfod1: Relax dependency on libdebuginfod-common. Closes: #986375. + * libdebuginfod-common: Update package description. Closes: #987036. + * Always install the shell snippets into /etc/profile.d/. + + -- Matthias Klose Sat, 17 Apr 2021 09:58:41 +0200 + +elfutils (0.183-7) experimental; urgency=medium + + [ Sergio Durigan Junior ] + * d/rules: Populate binary-indep with proper build instructions. + * d/control: Remove ${shlibs:Depends} from libdebuginfod-common. + + [ Matthias Klose ] + * d/rules: Move dh_install to the install target. + * d/rules: Add -a/-i options to the dh_ commands. + + -- Matthias Klose Thu, 15 Apr 2021 17:49:43 +0200 + +elfutils (0.183-6) experimental; urgency=medium + + * d/libdebuginfod-common.install: Remove file. + * d/rules: + Implement logic to decide whether to install the debuginfod shell + snippets under /etc/profile.d/ based on the existence of a debuginfod + service available for the current distribution. This is needed mostly + for Ubuntu and other derivatives which don't have debuginfod services + available yet. + + -- Sergio Durigan Junior Fri, 26 Mar 2021 01:14:28 -0400 + +elfutils (0.183-5) experimental; urgency=medium + + * d/libdebuginfod-common.install: + Install the debuginfod profile.d snippets under + /usr/share/libdebuginfod-common/ instead of directly under + /etc/profile.d/. + * d/libdebuginfod-common.config: + Check for the "debuginfod.sh" snippet under + /usr/share/libdebuginfod-common/. + * d/libdebuginfod-common.postinst: + Perform modifications in the debuginfod shell snippets that now live + under /usr/share/libdebuginfod-common/, before moving them (using ucf) + to /etc/profile.d/. (Closes: #985044) + * d/libdebuginfod-common.postrm: + New postrm file which takes care of purging the debuginfod shell + snippets under /etc/profile.d/. + * d/control: Make libdebuginfod-common depend on ucf. + + -- Sergio Durigan Junior Fri, 19 Mar 2021 15:58:25 -0400 + +elfutils (0.183-4) experimental; urgency=medium + + * Apply KFreeBSD patches (Christoph Berg), not forwarded. + * Fix build on the Hurd. + + -- Matthias Klose Tue, 09 Mar 2021 20:10:42 +0100 + +elfutils (0.183-2) unstable; urgency=medium + + * d/control: + - B-D on lsb-release. + - B-D on po-debconf. + - Create new libdebuginfod-common package. + - Add myself to Uploaders. + * d/rules: + - Use https://debuginfod.debian.net as our default service. + Also, revamp the code responsible for determining libdebuginfod + configuration flags. + - Invoke dh_installdebconf. + * d/libdebuginfod-common.templates: Create a debconf template. + Also, create d/po/POTFILES.in and d/po/templates.pot. + This template is for the question of whether the user accepts GDB or + another debuginfo consumer program to connect to Debian's debuginfod + server. + * d/libdebuginfod-common.config: Ask if the user accepts to use Debian's + debuginfod. + * d/libdebuginfod-common.postinst: Act upon the user's answer to the + debconf question. + If the user has accepted to use Debian's debuginfod, then the script + confirms the value of the DEBUGINFOD_URLS environment variable present + in the shell excerpts under /etc/profile.d. Otherwise, the script + will set the variable to an empty value, disabling the remote + connection to the debuginfod server. (Closes: #983434) + * d/libdebuginfod-common.install: Install the profile.d snippets. + + -- Sergio Durigan Junior Sun, 28 Feb 2021 21:07:16 -0500 + +elfutils (0.183-1) unstable; urgency=medium + + * New upstream release. Changes compared to the snapshot: + - backends/ppc_initreg.c: include . + - NEWS and version, and copyright updates. + + -- Matthias Klose Mon, 08 Feb 2021 09:56:24 +0100 + +elfutils (0.182+20210205-1) unstable; urgency=high + + * Snapshot, taken three days before the 0.183 release. Create a source + tarball using make dist. + * Make the build reproducible (Helmut Grohne). Closes: #981835, #981924. + + -- Matthias Klose Fri, 05 Feb 2021 19:07:32 +0100 + +elfutils (0.182+20210203-1) unstable; urgency=medium + + * Snapshot, taken five days before the 0.183 release. + * Update libdebuginfod1 symbols file. + + -- Matthias Klose Wed, 03 Feb 2021 14:59:12 +0100 + +elfutils (0.182-3) unstable; urgency=medium + + * Build with -flto-partition=none when building with -flto. + * Stop building with -fpermissive. + * tests/dwfl-proc-attach.c: Remove old glibc hack. + + -- Matthias Klose Wed, 06 Jan 2021 14:05:13 +0100 + +elfutils (0.182-2) unstable; urgency=medium + + * Fix FTCBFS: perform bootstrap build with dummy libdebuginfod and without + debuginfod (Helmut Grohne). Closes: #973981. + * Fix build profile pkg.elfutils.nodebuginfod. Closes: #976875. + * Don't use MAKEFLAGS in the packaging. Closes: #965955. + * Fix unwinding support for 32bit S390, taken from the trunk. + Thanks to Andreas Krebbel and Frank Heimes. LP: #1908756. + * Call dh_dwz. + * Bump standards version. + + -- Matthias Klose Thu, 31 Dec 2020 12:52:31 +0100 + +elfutils (0.182-1) unstable; urgency=medium + + * New upstream release. + * Fix typo in debian/copyright. Closes: #914414. + * Add pkg.elfutils.nodebuginfod build profile (Helmut Grohne). + Closes: #966705. + + -- Matthias Klose Sat, 07 Nov 2020 10:22:37 +0100 + +elfutils (0.181-1) unstable; urgency=medium + + * New upstream release. + + -- Matthias Klose Tue, 15 Sep 2020 22:31:59 +0200 + +elfutils (0.180-1) unstable; urgency=medium + + * Transfer to team maintenance, add Kurt Roeckx and myself as uploaders. + * Add VCS attributes to the control file. + * New upstream release. + * Build-depend on pkg-config, libarchive-dev, libmicrohttpd-dev, + libcurl4-gnutls-dev, libsqlite3-dev. + * Build with -fpermissive. + * Don't package debuginfod yet. + * New binary packages debuginfod, libdebuginfod1, libdebuginfod-dev. + * Use dh_autoreconf. + + -- Matthias Klose Thu, 16 Jul 2020 19:34:22 +0200 + +elfutils (0.176-1.1) unstable; urgency=medium + + * Non-maintainer upload with maintainer permission + * Fixes FTBFS on riscv64 (Closes: #928832) + + -- Karsten Merker Tue, 28 May 2019 20:53:12 +0200 + +elfutils (0.176-1) unstable; urgency=medium + + * New upstream release + - Fixes CVE-2019-7150 (Closes: #920909) + - Fixes CVE-2019-7149 (Closes: #920910) + - Fixes CVE-2019-7146 (Closes: #920911) + - Fixes CVE-2019-7665 (Closes: #921880) + - Fixes CVE-2019-7664 (Closes: #921881) + - Fixes CVE-2019-7148 + - Drop 0001-tests-Call-test_cleanup-in-backtrace-subr.sh-check_u.patch, + applied upstream. + * Update upstream PGP key to new one + + -- Kurt Roeckx Sat, 16 Feb 2019 14:54:50 +0100 + +elfutils (0.175-2) unstable; urgency=medium + + * Add support for the mips ABI CFI callback + * Properly clean up in test suite on skipped tests + + -- Kurt Roeckx Sun, 30 Dec 2018 15:02:01 +0100 + +elfutils (0.175-1) unstable; urgency=medium + + * New upstream release + - Build with gcc-8 (Closes: #911276) + - Drop fix-gcc7-ftbfs.diff + - Drop GNU_variable_value.patch + - Drop locviews.patch + - Update patches + * Fixes CVE-2018-18521 (Closes: #911413) + * Fixes CVE-2018-18520 (Closes: #911414) + * Fixes CVE-2018-18310 (Closes: #911083) + * Fixes CVE-2018-16403 + * Fixes CVE-2018-16402 + * Fixes CVE-2018-16062 (Closes: #907562) + + -- Kurt Roeckx Sun, 18 Nov 2018 23:01:23 +0100 + +elfutils (0.170-0.5) unstable; urgency=medium + + * Non-maintainer upload acked by Kurt Roeckx. + * Fix FTCBFS: Add zlib1g-dev:native to Build-Depends. (Closes: #901748) + + -- Helmut Grohne Sun, 24 Jun 2018 20:54:50 +0200 + +elfutils (0.170-0.4) unstable; urgency=medium + + * Non-maintainer upload. + * Backport patches for DWARF locview support (Mark Wielaard). + + -- Matthias Klose Mon, 09 Apr 2018 14:21:19 +0200 + +elfutils (0.170-0.3) unstable; urgency=medium + + * Non-maintainer upload. + * Add disable_werror.patch. (Closes: #886004) + + -- Helmut Grohne Sun, 28 Jan 2018 14:52:20 +0100 + +elfutils (0.170-0.2) unstable; urgency=medium + + * Non-maintainer upload, acked by maintainer. + * libelf-dev,libdw-dev: Add missing dependencies for packages that + our pkg-config files requires (zlib1g-dev, liblzma-dev). + (Closes: #885071) + + -- Andreas Henriksson Sat, 30 Dec 2017 18:14:17 +0100 + +elfutils (0.170-0.1) unstable; urgency=medium + + * Non-maintainer upload. + * New upstream release + * Fix fallthrough warnings exposed by GCC 7. Closes: #853387. + * Bump standards version. + * Configure with --disable-silent-rules. + * Update libdw1 symbols file. + + -- Matthias Klose Tue, 12 Sep 2017 00:07:19 +0200 + +elfutils (0.168-1) unstable; urgency=medium + + * Fix CVE-2017-7607 (Closes: #859996) + * Fix CVE-2017-7608 (Closes: #859995) + * Fix CVE-2017-7609 (Closes: #859994) + * Fix CVE-2017-7610 (Closes: #859993) + * Fix CVE-2017-7611 (Closes: #859992) + * Fix CVE-2017-7612 (Closes: #859991) + * Fix CVE-2017-7613 (Closes: #859990) + + -- Kurt Roeckx Sat, 27 May 2017 15:05:37 +0200 + +elfutils (0.168-0.2) unstable; urgency=medium + + * debian/copyright: Update to the current licensing, as introduced + with elfutils 0.154. + * Drop the m68k_backend.diff patch. + + -- Matthias Klose Thu, 29 Dec 2016 14:23:54 +0100 + +elfutils (0.168-0.1) experimental; urgency=medium + + * Non-maintainer upload. + * New upstream release + - m68k_backend.diff: Don't apply. + - testsuite-amd64-fix-backtrace-native.patch: Remove, applied upstream. + - Refresh patches. + - Build failure on non Linux targets fixed. Closes: #816394. + * Update libdw1 symbols file. + * Improve DEB_BUILD_OPTIONS=nocheck handling (Helmut Grohne). See #832456. + - Don't treat DEB_BUILD_OPTIONS=casinocheck as nocheck. + - Don't default to nocheck for cross building. + - Annotate Build-Depends: gcc-multilib with profile. + * Update reference to new sourceware.org home. + + -- Matthias Klose Thu, 29 Dec 2016 06:09:04 +0100 + +elfutils (0.166-2.2) unstable; urgency=medium + + * Non-maintainer upload. + * testsuite-amd64-fix-backtrace-native.patch: Backport upstream + patch to fix FTBFS on amd64 (Closes: #841124) + + -- James Clarke Tue, 18 Oct 2016 08:13:34 +0100 + +elfutils (0.166-2.1) unstable; urgency=medium + + * Non-maintainer upload. + * Build-Depend on gcc-multilib and libc6-dbg on sparc64 (Closes: #832584) + + -- James Clarke Fri, 07 Oct 2016 15:16:09 +0100 + +elfutils (0.166-2) unstable; urgency=medium + + * Actually add ignore_strmerge.diff to the patch series. + + -- Kurt Roeckx Sat, 23 Jul 2016 18:46:20 +0200 + +elfutils (0.166-1) unstable; urgency=medium + + * New upstream release + * Ignore run-native-test on Hurd, the maps file doesn't have + paths in it. Patch from Samuel Thibault + (Closes: #682101) + * Make cross compilation actually work. Patch from Helmut Grohne + (Closes: #818099) + * Add libebl.a to libdw-dev (Closes: #825747, #647918) + * Ignore strmerge test failured, needed on at least mips. Patch + from Jurica Stanojkovic + (Closes: #818485) + * Change versioned build-depends on debhelper from 8.1.3 to 9 to + make lintian happy. + * Update Standards-Version to 3.9.8, no changes required. + + -- Kurt Roeckx Sat, 23 Jul 2016 17:25:04 +0200 + +elfutils (0.165-3) unstable; urgency=medium + + * Add patches from Mark Wielaard to fix non-Linux issues. + + -- Kurt Roeckx Sat, 16 Jan 2016 17:53:34 +0100 + +elfutils (0.165-2) unstable; urgency=medium + + * Make the new libelf.h work with older elf.h from glibc (Closes: #810885) + + -- Kurt Roeckx Wed, 13 Jan 2016 17:50:08 +0100 + +elfutils (0.165-1) unstable; urgency=medium + + * New upstream release + * Install libelf.pc and libdw.pc file. + * Update libelf1.symbols and libdw1.symbols with 0.165 version + + -- Kurt Roeckx Mon, 11 Jan 2016 21:28:32 +0100 + +elfutils (0.164-1) unstable; urgency=medium + + * New upstream release + - Fixes sparc64 issues (Closes: #805630) + - Drop patches applied upstream: 0001-Reduce-scope-of-some-includes.patch, + 0002-tests-Mark-an-unused-argument-as-such.patch, + 0003-tests-dwfl-bug-fd-leak-Guard-against-null-module-add.patch, + 0004-tests-skip-run-deleted.sh-when-dwfl_linux_proc_attac.patch, + pr18792.diff + - Remove redhat-portability.diff and scanf-format.patch + - Update backend to use to stop using the old-style function + definition: hppa_backend.diff, m68k_backend.diff, mips_backend.diff + + -- Kurt Roeckx Sat, 26 Dec 2015 20:55:48 +0100 + +elfutils (0.163-5.1) unstable; urgency=medium + + * Non-maintainer upload. + * Fix finding the detached debug info when no build-id's are used. + Closes: #795386. + + -- Matthias Klose Fri, 14 Aug 2015 12:25:05 +0200 + +elfutils (0.163-5) unstable; urgency=medium + + * Fix typo in 0003-Add-mips-n64-relocation-format-hack.patch that + causing crash (Closes: #794488) + + -- Kurt Roeckx Sat, 08 Aug 2015 15:12:31 +0200 + +elfutils (0.163-4) unstable; urgency=medium + + * More fixes for kfreebsd and hurd + + -- Kurt Roeckx Tue, 21 Jul 2015 11:39:55 +0000 + +elfutils (0.163-3) unstable; urgency=medium + + * Fix build failures on kfreebsd and hurd + + -- Kurt Roeckx Tue, 21 Jul 2015 13:01:57 +0200 + +elfutils (0.163-2) unstable; urgency=medium + + * Drop non_linux.patch, it has been applied upstream + + -- Kurt Roeckx Mon, 20 Jul 2015 15:49:09 +0200 + +elfutils (0.163-1) unstable; urgency=medium + + * New upstream release + - Drop arm_unsupported.patch, arm64.patch, CVE-2014-9447.patch, + arm_syscall.patch, arm_func_value.patch, arm_unwind_ret_mask.patch, + unaligned.patch, aarch64-run-native-test-fix.patch: applied upstream + - Added ppc64el support (Closes: #754798) + - Fixed too much string replacement (Closes: #775117) + * Add flex and bison to build-depends + * Change hppa, m68k and mips backend to not use the removed DW_TAG_mutable_type. + * Ignore errors on kfreebsd in the native test suite (Closes: #649038) + * Add mips64el support (Closes: #774639) + * install known-dwarf.h in libdw-dev + * Update libdw1.symbols file + + -- Kurt Roeckx Mon, 20 Jul 2015 14:30:21 +0200 + +elfutils (0.159-4.2) unstable; urgency=medium + + * Non-maintainer upload. + * Apply an upstream patch to fix the build failure on arm64 (closes: #776523). + + -- Michael Gilbert Fri, 13 Feb 2015 22:30:44 +0000 + +elfutils (0.159-4.1) unstable; urgency=high + + * Non-maintainer upload by the Security Team. + * Fix CVE-2014-9447: path traversal issue in ar (closes: #775536). + + -- Michael Gilbert Mon, 26 Jan 2015 01:49:30 +0000 + +elfutils (0.159-4) unstable; urgency=medium + + [ Wookey ] + * Fix failing run-native-test on arm64 (from Mark Wielaard) + (Closes: #753552) + + -- Kurt Roeckx Sun, 06 Jul 2014 15:21:48 +0200 + +elfutils (0.159-3) unstable; urgency=medium + + * Make it build again on the non linux ports. + * Handle unaligned data when reading core files. + + -- Kurt Roeckx Tue, 24 Jun 2014 22:14:25 +0200 + +elfutils (0.159-2) unstable; urgency=medium + + * Add patches from Mark Wielaard to make + things work on armhf. + * Build-Depends on libc6-dbg on arm* to make the backtrace + tests work instead of skip. + + -- Kurt Roeckx Sun, 15 Jun 2014 16:15:55 +0200 + +elfutils (0.159-1) unstable; urgency=medium + + * New upstream release + - Removed patches applied upstream: elfutils-robustify.patch, + core_filename.patch, CVE-2014-0172.patch, unwind_non_linux.patch + - Add libdwelf.h to libdw-dev + - New functions in libdw: udpate symbols file + * Also output tests/test-suite.log on failure + * Also Build-Depend on libc6-dbg on powerpcspe, ppc64 and ppc64el + + -- Kurt Roeckx Mon, 26 May 2014 22:03:29 +0200 + +elfutils (0.158-2) unstable; urgency=medium + + * There is no support for unwinding on non-Linux ports, make it + build on them and make the test suite skip the tests. + * Build-Depend on libc6-dbg on powerpc so that we have unwind + information. This is a work around for things not being + build using -fasynchronous-unwind-tables + * Output tests/test-suite.log + * Add support for parallel building + + -- Kurt Roeckx Thu, 01 May 2014 19:04:06 +0200 + +elfutils (0.158-1) unstable; urgency=medium + + * New upstream release + - Drop patch applied upstream + - Add supports for arm64 (Closes: #745368) + - Update libdw1.symbols. + * Apply core_filename.patch from Matthias Klose + * Fix CVE-2014-0172 (Closes: #744017) + * Add upstream signing key. + * Remove config/ar-lib file during clean + + -- Kurt Roeckx Mon, 21 Apr 2014 12:59:25 +0200 + +elfutils (0.157-3) unstable; urgency=low + + * Build-Depend on gcc-multilib on [any-amd64] instead of [amd64] + + -- Kurt Roeckx Sun, 17 Nov 2013 22:54:31 +0100 + +elfutils (0.157-2) unstable; urgency=low + + * Application in the readelf binary package, libdw1 itself use internal + APIs from libelf and so need a strict dependency on the same libelf1 + binary package. libasm1 also needs a strict dependency on libdw1 since + it uses libebl.a and so uses the MODVERSION to open the backends. The + dependency from libasm1 to libdw1 was missing. + Disabling the thread safety resulted in struct Elf's size changing + causing things like eu-readelf to break when an older libelf1 was + installed. + * Apply patch from upstream to fix the IA64 regression failure + with a powerpc binary + + -- Kurt Roeckx Sun, 03 Nov 2013 15:20:06 +0100 + +elfutils (0.157-1) unstable; urgency=low + + * New upstream release + - Update portability and robustify patch + - Make arm_backend.diff apply to the new upstream version + - Adjust symbol files for new symbols + * Adjust addrcfi test results for arm to work with our arm patch. + + -- Kurt Roeckx Tue, 01 Oct 2013 18:21:23 +0200 + +elfutils (0.156-1) unstable; urgency=low + + * New upstream release + - Update portability and robustify patch + - Make hppa_backend.diff, arm_backend.diff, mips_backend.diff, + m68k_backend.diff, testsuite-ignore-elflint apply to the new + upstream version + - Drop patches elf_end_unlock.patch, alldts.patch, strip_sh_type.patch: + applied upstream + - Works with binutils-gold (Closes: #647359) + - Works with gcc 4.8 (Closes: #701271) + * drop elf_additions.diff, it's not used. + * Remove config.h.in and test-driver during clean (Closes: #695927) + * Add build dependency on gcc-multilib [amd64] to have a working gcc -m32 + for the test suite. + * arm backend: change r12 back to signed, no idea why it was made unsigned. + * arm backend: rename the "special" set to "state". + * Our arm backend patch adds more registers, update the arm_backend.diff to + expectd those changes in the test suite + * disable thread safety, it's not tested upstream. + * Update libdw1.symbols + + -- Kurt Roeckx Sun, 28 Jul 2013 14:32:23 +0200 + +elfutils (0.153-2) unstable; urgency=low + + * Make it actually build properly using build-arch. (Closes: #684528) + * Call rwlock_unlock() before rwlock_fini(). The lock was still held + causing problems on kfreebsd. (Closes: #662041) + * Don't exclude sh_type >= SHT_NUM from stripping, it's set to + SHT_MIPS_DWARF on mips. (Closes: #662041) + * readelf -w didn't show the content of debug sections on mips + because sh_type was set to SHT_MIPS_DWARF. + + -- Kurt Roeckx Tue, 18 Sep 2012 21:12:08 +0200 + +elfutils (0.153-1) unstable; urgency=low + + [ Jonathan Nieder ] + * Run autotools at build time. + - debian/control: Build-Depends: autoconf, automake. + - debian/rules: + - config.status: + - depend on configure.ac, not configure. + - autoreconf -fis. + - clean: remove autotools-generated files to avoid .diff.gz + changes when built twice in a row. + - debian/patches: remove do-autoreconf.diff. + + [ Marcin Juszkiewicz ] + * Convert to multiarch. (Closes: #657139) + * Added build-{arch,indep} targets. + * Switched to use 'dh_prep' instead of 'dh_clean -k' + + [ Kurt Roeckx ] + * New upstream release + - Portability patch has workaround for broken bswap_32 macro. + This should also have been fixed in glibc code. (Closes: #595496) + - Fix bashism in configure script (Closes: #647350) + * Remove Christian Aichinger from uploaders (Closes: #661119) + * Make the m68k port functional, thanks to a patch from + Thorsten Glaser (Patch in #595496, #384794) + * Fix test suite to set up test environment (alldts.patch). + * Use dpkg-buildflags. Build-Depend on dpkg-dev (>= 1.16.1~) for + buildflags.mk. + * Call configure with --enable-maintainer-mode so all files get regenerated + Also add Build-Depends on gawk for this to work. + * Revert %m[ to %a[ change in addr2line and line2addr from the portability + patch. + * Clean up more files (Makefile.in, libdw/known-dwarf.h) + * Set libdir to the multiarch dir, so that the rpath gets set up correctly + and that we don't have to move the files in the rules file. + + -- Kurt Roeckx Fri, 24 Feb 2012 20:23:08 +0100 + +elfutils (0.152-1) unstable; urgency=low + + * New upstream release + - Update portability and robustify patch. + - Update symbol file for libdw1, 2 new functions. + * Remove obsolete files from the debian dir. + * Update watch file to work with newer versions. + + -- Kurt Roeckx Wed, 08 Sep 2010 19:54:20 +0200 + +elfutils (0.148-1) unstable; urgency=low + + * New upstream release + - Drop debug_filename.patch, applied upstream. + - New symbols in libdw1, update symbols file. + + -- Kurt Roeckx Sat, 03 Jul 2010 15:01:59 +0200 + +elfutils (0.147-2) unstable; urgency=low + + * Open the proper file with debug info in case they have the same + name. (Closes: #555549) + + -- Kurt Roeckx Thu, 17 Jun 2010 18:38:27 +0200 + +elfutils (0.147-1) unstable; urgency=low + + * New upstream release + + -- Kurt Roeckx Mon, 24 May 2010 10:49:05 +0200 + +elfutils (0.146-1) unstable; urgency=low + + * New upstream release + - adds better support for the sh arch + - Add build-depedency on liblzma-dev + - Add build-depedency on gettext + - Add tanslations to libelf1. All packges making use of those + files depend on it. + - New symbols dwfl_core_file_report in libdw1, update symbol file. + * Call configure with --enable-thread-safety + + -- Kurt Roeckx Sat, 24 Apr 2010 11:55:24 +0200 + +elfutils (0.145-1) unstable; urgency=low + + * New upstream release + * Make elfutils depend libdw1 (= ${binary:Version}). The static libebl.a + that it used by the applications in changes MODVERSION on rebuild. It's + the only thing making use of libebl.a + + -- Kurt Roeckx Wed, 24 Feb 2010 19:36:07 +0100 + +elfutils (0.144-1) unstable; urgency=low + + * New upstream version + - Fixes segfault in systemtap (Closes: #556133) + - Remove elflint-comment.diff and nobits.diff, applied upstream. + - dwarf_aggregate_size got added in libdw1, + elf_getphdrnum got added to libelf: update symbol file. + * Switch to dpkg-source 3.0 (quilt) format + * hppa: Use dwarf_aggregate_size(). + * Add ${misc:Depends} to all packages + * Change Standards-Version to 3.8.4, no changes required. + + -- Kurt Roeckx Mon, 15 Feb 2010 23:27:18 +0100 + +elfutils (0.143-2) unstable; urgency=low + + * Prevent segfault from debug only files. (Closes: #556133) + + -- Kurt Roeckx Mon, 16 Nov 2009 18:22:43 +0100 + +elfutils (0.143-1) unstable; urgency=low + + * New upstream release. + - Upstream added new symbols in libdw1, adjust symbol file. + * Remove the fix-bswap-warnings.diff and pointer_cast.diff + patch, they weren't used anyway. + * Remove posix_fadvise.diff and namelen.diff, applied upstream. + * Add elflint-comment.diff, from upstream git. Fixes a regression + suite error with newer binutils. + + -- Kurt Roeckx Mon, 21 Sep 2009 21:06:21 +0000 + +elfutils (0.142-1) unstable; urgency=low + + * New upstream version + * Provide a static version of libdw. Do not use it unless you + know what you're doing. (Closes: #538375) + * Replace elf_getshstrndx by elf_getshdrstrndx in the mips backend. + elf_getshstrndx has been deprecated. + * Upstream added new symbols, adjust symbol files. + + -- Kurt Roeckx Fri, 14 Aug 2009 13:56:30 +0200 + +elfutils (0.141-2) unstable; urgency=low + + * Make libdw-dev Depend on libdw1 (Closes: #526824) + + -- Kurt Roeckx Sun, 03 May 2009 22:07:59 +0200 + +elfutils (0.141-1) unstable; urgency=low + + * New upstream release + - Update redhat-robustify.diff and redhat-portability.diff + - Remove redhat-strip-copy-symtab.diff, does not seem to be used anymore. + Also remove things in the rules file that deal with it, and + drop sharutils from build-depends. + - Remove elflint_initialization.diff, unaligned.diff, pointer_cast.diff, + gnu_inline.diff, readelf_subelf.diff, gcc-4.3_support: applied or + fixed some other way upstream + * Update watch file to new location. + * Make libasm-dev conflict with libasm0-dev (Closes: #509042) + * Create a shared version of libdw, and move libebl's file + in the libdw1 package. Drop the static versions of libdw and libebl. + There is no libebl-dev anymore. (Closes: #457543) + * Add elfutils/version.h to libelf-dev + * Run test suite with LC_CTYPE=C, to have the same sort ordering. + * Add Build-Dependency on zlib1g-dev, libbz2-dev and m4. + * Start using dpkg-gensymbols: + - libasm1: Upstream added disasm_begin, disasm_cb, disasm_end + and disasm_str to ELFUTILS_1.0 in 0.132, the others are there + since 0.120. + - libelf1: ELFUTILS_1.2 was added in 0.122, ELFUTILS_1.3 in + 0.130 and ELFUTILS_1.4 in 0.132. gelf_rawchunk + and gelf_freechunk got removed in 0.131. + - libdw1: Versions are when get got introduced. dwarf_getelf + was removed from ELFUTILS_0.122 and changed to ELFUTILS_0.126 + in 0.126 + * libasm1 and libelf1 added new functions, bump shlibs + * Update Standards-Version to 3.8.1 + - Change ${Source-Version} to ${binary:Version} + - Add support for DEB_BUILD_OPTIONS nocheck + - Add upstream Homepage + * Don't use -$(MAKE) distclean + * Remove debian/dirs file. + + -- Kurt Roeckx Sat, 02 May 2009 16:30:39 +0200 + +elfutils (0.131-4) unstable; urgency=low + + * Move static functions the only file that uses it. Avoids warning + using gcc-4.3. Thanks to Maximiliano Curia for the patch. + (Closes: #467103) + + -- Kurt Roeckx Sat, 05 Apr 2008 13:40:13 +0000 + +elfutils (0.131-3) unstable; urgency=low + + * Add m68k backend. + * Fix copyright file to point to /usr/share/common-licenses/GPL-2 + + -- Kurt Roeckx Wed, 26 Dec 2007 19:53:09 +0100 + +elfutils (0.131-2) unstable; urgency=low + + * Bump shlibs for libelf1 since it added new functions. + + -- Kurt Roeckx Mon, 17 Dec 2007 18:33:45 +0100 + +elfutils (0.131-1) unstable; urgency=low + + * New usptream version. (Closes: #455878) + - ebl_core_note() changed function arguments. + - libelf: Add functions: gelf_getauxv(), gelf_update_auxv(), + gelf_getnote(), elf_getdata_rawchunk(). + removed gelf_rawchunk(), gelf_freechunk() + - Changed some types from off_t to off64_t. The library + was always build with LFS, so it's just a correction of the types. + * merge patches + * arm, hppa and mips backend: Use dwarf_attr_integrate() instead of + dwarf_attr(), and dwarf_hasattr_integrate() instead of dwarf_hasattr(). + * Add patch from Aurelien Jarno to support + GNU/kFreeBSD (Closes: #452428) + + -- Kurt Roeckx Sat, 15 Dec 2007 20:31:14 +0100 + +elfutils (0.128-1) unstable; urgency=low + + * New upstream release: + Remove patch alpha_backend_regs.diff, upstream implemented + it themself (with the aliases for the register names). + * Make libasm-dev conflict with libelfsh0-dev again, the 0.123-3 change + got lost. (Closes: #404054) + * First cast main to an intptr_t before casting it to a 64 bit int. + Directly casting from a pointer to 64 bit int gives a warning + on 32 bit systems (with gcc-4.2). (Closes: #431455) + * Also check for /proc/$$. + + -- Kurt Roeckx Sun, 08 Jul 2007 19:28:46 +0000 + +elfutils (0.127-4) unstable; urgency=low + + * Use the gnu_inline attribute for inline functions so it build with + gcc-4.2. (Closes: #424548) + * Add check for maps and auxv file in the proc dir to try and debug + the sparc build failure. + + -- Kurt Roeckx Fri, 18 May 2007 13:41:35 +0200 + +elfutils (0.127-3) unstable; urgency=low + + * Update unaligned patch to also work when we're using -O2. + + -- Kurt Roeckx Sun, 13 May 2007 22:48:57 +0200 + +elfutils (0.127-2) unstable; urgency=low + + * Remove duplicate initialization of DT_PLTRELSZ in elflint. + (Closes: #393812) + * Only using posix_fadvise() when we have POSIX_FADV_SEQUENTIAL since + some arches like kFreeBSD don't support it. (Closes: #404091) + * Fix unaligned accesses on IA64. Added patch unaligned.diff. + + -- Kurt Roeckx Sun, 13 May 2007 18:12:01 +0200 + +elfutils (0.127-1) unstable; urgency=low + + * New upstream release: + Remove patches applied upstream: fix-testsuite.diff, maintainer_mode.diff, + fix-distclean-to-really-distclean.diff, sparc_retval-backend.diff, + elflint-alpha.diff, fix-readelf.diff, fix-alignment-sparc.diff, + native-pid.diff, unalligned-endian.diff + * register_name() got replaced by register_info(). Update backends + to add dwarf type and number of bits info for those backends: + alpha, arm, hppa, mips + * Added redhat-strip-copy-symtab.diff patch. Inlucde + testfile16.symtab.bz2 and testfile16.symtab.debug.bz2 test files. + Add sharutils to build-depends for uudecode. + * Updated redhat-portability.diff: Now includes fix-mipsel-ftbfs.diff + so remove it. + * Add various types to elf.h + * Update watch file to use a different url. + + -- Kurt Roeckx Sat, 5 May 2007 15:59:46 +0200 + +elfutils (0.123-2) unstable; urgency=low + + [ Kurt Roeckx ] + * Add backend support for alpha: adding the registers. + * Add backend support for arm: adding regs and retval. + Thanks to Eugeniy Meshcheryakov + * Add backend support for hppa, thanks to + Eugeniy Meshcheryakov + * Add some missing ELFOSABI_* and EM_* to elf.h + + [ Christian Aichinger ] + * Fix sparc backend retval + * Add mips backend. + * Rewrite the static backend so making changes to the backends + is easier. + + -- Kurt Roeckx Sun, 27 Aug 2006 15:48:23 +0000 + +elfutils (0.123-1) unstable; urgency=low + + * New upstream release + - Add IA64 backend support + - Remove redhat-fix-cast.diff, applied upstream + - Make patches apply to new upstream version. + * Include configure and all Makefile.in's in the configure patch. + + -- Kurt Roeckx Tue, 15 Aug 2006 19:42:44 +0000 + +elfutils (0.122-4) unstable; urgency=low + + [ Kurt Roeckx ] + * The backends init functions should be functions, not pointers + to functions. Also thanks to Eugeniy Meshcheryakov + for pointing out the same. This should fix the segmentation faults + seen on ia64. + * When doing x && y &, bash retuns the pid for x, while the script + expected the one for y. Other shells I've tried return that of y. + As a result the run-native-test.sh keeps a "native" process running. + Removed the &&, so it always gets the correct pid. (Closes: #382758) + * Fix endiannes problems for opening files of your own endiannes + when not avoiding unaligned access. This didn't affect + i386 and amd64. + + -- Kurt Roeckx Sun, 13 Aug 2006 15:08:32 +0000 + +elfutils (0.122-3) unstable; urgency=low + + [ Kurt Roeckx ] + * Add build dependency on bzip2, so that all the regression + tests can run. + * elflint: Add EM_ALPHA to valid_e_machine. + + [ Christian Aichinger] + * Add retval to the sparc backend. + * Ignore testsuite failures that elflint reports. + * readelf should check destshdr instead of shdr. + * Fix alignment problems in libdw_alloc seen on sparc. + + -- Kurt Roeckx Wed, 9 Aug 2006 19:21:05 +0000 + +elfutils (0.122-2) unstable; urgency=low + + * Make libelf-dev Conflict with libelfg0-dev since they both ship + the same library and headers. + + -- Kurt Roeckx Fri, 4 Aug 2006 19:38:32 +0000 + +elfutils (0.122-1) unstable; urgency=low + + * Initial release (Closes: #368248) + + -- Kurt Roeckx Sun, 21 May 2006 15:03:01 +0000 + diff --git a/compat b/compat new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/compat @@ -0,0 +1 @@ +11 diff --git a/control b/control new file mode 100644 index 0000000..b47dc7f --- /dev/null +++ b/control @@ -0,0 +1,167 @@ +Source: elfutils +Priority: optional +Maintainer: Debian Elfutils Maintainers +Uploaders: Kurt Roeckx , + Matthias Klose , + Sergio Durigan Junior , +Build-Depends: debhelper (>= 11), + autoconf, automake, lsb-release, + bzip2, zlib1g-dev, zlib1g-dev:native, libbz2-dev, liblzma-dev, + m4, gettext, po-debconf, + gawk, dpkg-dev (>= 1.16.1~), + gcc-multilib [any-amd64 sparc64] , + libc6-dbg [powerpc powerpcspe ppc64 ppc64el armel armhf arm64 sparc64 riscv64], + flex, bison, + pkg-config, + libarchive-dev , + libmicrohttpd-dev , libcurl4-gnutls-dev , libsqlite3-dev , +Build-Conflicts: autoconf2.13 +Standards-Version: 4.5.1 +Section: libs +Homepage: https://sourceware.org/elfutils/ +Vcs-Browser: https://salsa.debian.org/toolchain-team/elfutils +Vcs-Git: https://salsa.debian.org/toolchain-team/elfutils.git + +Package: elfutils +Section: utils +Architecture: any +Multi-Arch: foreign +Depends: ${shlibs:Depends}, ${misc:Depends}, + libelf1 (= ${binary:Version}), libdw1 (= ${binary:Version}) +Description: collection of utilities to handle ELF objects + Elfutils is a collection of utilities, including eu-ld (a linker), + eu-nm (for listing symbols from object files), eu-size (for listing the + section sizes of an object or archive file), eu-strip (for discarding + symbols), eu-readelf (to see the raw ELF file structures), and eu-elflint + (to check for well-formed ELF files). + +Package: libelf1 +Architecture: any +Multi-Arch: same +Depends: ${shlibs:Depends}, ${misc:Depends} +Pre-Depends: ${misc:Pre-Depends} +Description: library to read and write ELF files + The libelf1 package provides a shared library which allows reading and + writing ELF files on a high level. Third party programs depend on + this package to read internals of ELF files. The programs of the + elfutils package use it also to generate new ELF files. + . + This library is part of elfutils. + +Package: libelf-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: libelf1 (= ${binary:Version}), ${misc:Depends}, zlib1g-dev +Conflicts: libelfg0-dev +Description: libelf1 development libraries and header files + libelf1 provides a shared library which allows reading and writing of ELF + files on a high level. + . + This package contains development libraries and header files for libelf1. + +Package: libdw-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: libelf-dev, libdw1 (= ${binary:Version}), ${misc:Depends}, + zlib1g-dev, liblzma-dev +Description: libdw1 development libraries and header files + libdw1 provides a library that provides access to DWARF debug information + stored inside ELF files. + . + This package contains development libraries and header files for libdw1. + . + It also contains a static version of libdw. Only link to the static version + for special cases and when you don't need anything from the ebl backends. + +Package: libdw1 +Architecture: any +Multi-Arch: same +Depends: ${shlibs:Depends}, libelf1 (= ${binary:Version}), ${misc:Depends} +Pre-Depends: ${misc:Pre-Depends} +Description: library that provides access to the DWARF debug information + libdw1 provides a library that provides access to DWARF debug information + stored inside ELF files. + . + This library is part of elfutils. + +Package: libasm1 +Architecture: any +Multi-Arch: same +Depends: ${shlibs:Depends}, ${misc:Depends}, + libelf1 (= ${binary:Version}), libdw1 (= ${binary:Version}) +Pre-Depends: ${misc:Pre-Depends} +Description: library with a programmable assembler interface + The libasm1 package provides a library with a programmable assembler + interface. It allows you to create ELF files on a low level. + . + This library is part of elfutils. + +Package: libasm-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: libasm1 (= ${binary:Version}), libelf-dev, ${misc:Depends} +Conflicts: libelfsh0-dev, libasm0-dev +Description: libasm development libraries and header files + libasm1 allows you to create ELF files on a low level. + . + This package contains development libraries and header files for libasm1. + +Package: libdebuginfod1 +Build-Profiles: +Architecture: any +Multi-Arch: same +Depends: ${shlibs:Depends}, ${misc:Depends}, + libelf1 (= ${binary:Version}), libdw1 (= ${binary:Version}), + libdebuginfod-common (>= ${source:Version}) +Pre-Depends: ${misc:Pre-Depends} +Description: library to interact with debuginfod (development files) + The libdebuginfo1 package provides a library with an interface to interact + with debuginfod. + . + This library is part of elfutils. + +Package: libdebuginfod-dev +Build-Profiles: +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: libdebuginfod1 (= ${binary:Version}), ${misc:Depends}, libelf-dev, +Description: libdebuginfod development libraries and header files + libasm1 allows you to interact with debuginfod. + . + This package contains development libraries and header files for + libdebuginfod1. + +Package: debuginfod +Build-Profiles: +Section: devel +Architecture: any +Depends: libdebuginfod1 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: debuginfo-related http file-server daemon + Server, client tool and library to index and fetch ELF/DWARF files + addressed by build-id through HTTP. + +Package: libdebuginfod-common +Build-Profiles: +Section: devel +Architecture: all +Multi-Arch: foreign +Depends: ${misc:Depends}, ucf +Pre-Depends: ${misc:Pre-Depends}, debconf +Description: configuration to enable the Debian debug info server + This package asks if it should enable use of the Debian debug info + server with debugging tools that use libdebuginfo such as GDB. + . + When this is allowed by the sysadmin, a snippet will be added to the + shell configuration. You will need to restart your shell after + installing this package before the snippet will work. + . + The Debian debug info server will be contacted every time debugging + tools attempt to look up debug info for binaries or libraries but the + server does not log requests for debug info. + . + The Debian debug info server uses https to securely transfer debugging + files but does not offer OpenPGP signing of debug info. diff --git a/copyright b/copyright new file mode 100644 index 0000000..c0603db --- /dev/null +++ b/copyright @@ -0,0 +1,71 @@ +This package was debianized by Kurt Roeckx on +Sun, 21 May 2006 15:03:01 +0000. + +It was downloaded from +https://sourceware.org/elfutils/ftp/0.168/ + +It was original a .tar.bz2. It has been decompressed and +recompressed again using gzip. + +Copyright Holder: + Copyright (C) 2000 - 2016 Red Hat, Inc. + + Written by: + Ulrich Drepper + Jeff Johnson + Alexander Larsson + Jakub Jelinek + Roland McGrath + + +License: + +Most of the libraries (lib, libelf, libebl, libdw, libdwfl) have the following license: + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +The other files are covered by the following license: + + This file is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License version 2 can be found in +`/usr/share/common-licenses/GPL-2', the complete text of the GNU +General Public License version 3 can be found in +`/usr/share/common-licenses/GPL-3' and the complete text of the GNU +Lesser General Public License version 3 can be found in +`/usr/share/common-licenses/LGPL-3'. + diff --git a/debuginfod.install b/debuginfod.install new file mode 100644 index 0000000..344d740 --- /dev/null +++ b/debuginfod.install @@ -0,0 +1,4 @@ +usr/bin/debuginfod +usr/bin/debuginfod-find +usr/share/man/man1/debuginfod-find.1 +usr/share/man/man8/debuginfod.8 diff --git a/docs b/docs new file mode 100644 index 0000000..5502ed8 --- /dev/null +++ b/docs @@ -0,0 +1,3 @@ +NEWS +README +TODO diff --git a/elfutils.install b/elfutils.install new file mode 100644 index 0000000..407593f --- /dev/null +++ b/elfutils.install @@ -0,0 +1,3 @@ +usr/bin +usr/share/man/man1/eu-elfclassify.1 +usr/share/man/man1/eu-readelf.1 diff --git a/libasm-dev.install b/libasm-dev.install new file mode 100644 index 0000000..7c0a960 --- /dev/null +++ b/libasm-dev.install @@ -0,0 +1,3 @@ +usr/include/elfutils/libasm.h +usr/lib/*/libasm.a +usr/lib/*/libasm.so diff --git a/libasm1.install b/libasm1.install new file mode 100644 index 0000000..aa35d27 --- /dev/null +++ b/libasm1.install @@ -0,0 +1,2 @@ +usr/lib/*/libasm.so.1 +usr/lib/*/libasm-*.so diff --git a/libasm1.symbols b/libasm1.symbols new file mode 100644 index 0000000..0c72b9d --- /dev/null +++ b/libasm1.symbols @@ -0,0 +1,6 @@ +libasm.so.1 libasm1 #MINVER# + *@ELFUTILS_1.0 0.120 + disasm_begin@ELFUTILS_1.0 0.132 + disasm_cb@ELFUTILS_1.0 0.132 + disasm_end@ELFUTILS_1.0 0.132 + disasm_str@ELFUTILS_1.0 0.132 diff --git a/libdebuginfod-common.config b/libdebuginfod-common.config new file mode 100644 index 0000000..acfc4dd --- /dev/null +++ b/libdebuginfod-common.config @@ -0,0 +1,22 @@ +#!/bin/sh + +set -e + +. /usr/share/debconf/confmodule + +CONFTEMPLATEPATH="/usr/share/libdebuginfod-common" + +db_version 2.0 +db_capb + +# Ask whether the user is OK with using debuginfod. We just bother +# with the question if there is actually a debuginfod profile.d script +# available. +if [ -f "${CONFTEMPLATEPATH}"/debuginfod.sh ]; then + if grep -qFx "ID=debian" /etc/os-release; then + db_input medium libdebuginfod/usedebiandebuginfod || true + elif grep -qFx "ID=ubuntu" /etc/os-release; then + db_input high libdebuginfod/useubuntudebuginfod || true + fi + db_go || true +fi diff --git a/libdebuginfod-common.install b/libdebuginfod-common.install new file mode 100644 index 0000000..2956675 --- /dev/null +++ b/libdebuginfod-common.install @@ -0,0 +1,3 @@ +etc/profile.d/debuginfod.* usr/share/libdebuginfod-common/ +usr/share/man/man7/debuginfod-client-config.7 +etc/debuginfod/elfutils.urls etc/debuginfod/ diff --git a/libdebuginfod-common.postinst b/libdebuginfod-common.postinst new file mode 100644 index 0000000..e9b4f11 --- /dev/null +++ b/libdebuginfod-common.postinst @@ -0,0 +1,52 @@ +#!/bin/bash + +set -e + +. /usr/share/debconf/confmodule + +configure_debuginfod() +{ + local -r CONFTEMPLATEPATH="/usr/share/libdebuginfod-common" + local RET="false" + + if grep -qFx "ID=debian" /etc/os-release; then + db_get libdebuginfod/usedebiandebuginfod || RET="false" + elif grep -qFx "ID=ubuntu" /etc/os-release; then + db_get libdebuginfod/useubuntudebuginfod || RET="false" + fi + + for ext in sh csh; do + [ -f "${CONFTEMPLATEPATH}/debuginfod.${ext}" ] || continue + + if [ "$RET" = "true" ]; then + UCF_FORCE_CONFMISS=1 ucf --three-way --debconf-ok \ + "${CONFTEMPLATEPATH}/debuginfod.${ext}" \ + "/etc/profile.d/debuginfod.${ext}" + ucfr libdebuginfod-common "/etc/profile.d/debuginfod.${ext}" + chmod 0644 "/etc/profile.d/debuginfod.${ext}" + else + rm -f "/etc/profile.d/debuginfod.${ext}" + fi + done +} + +case "$1" in + configure) + configure_debuginfod + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/libdebuginfod-common.postrm b/libdebuginfod-common.postrm new file mode 100644 index 0000000..c072e1e --- /dev/null +++ b/libdebuginfod-common.postrm @@ -0,0 +1,34 @@ +#!/bin/bash + +set -e + +case "$1" in + purge) + for ext in sh csh; do + [ -f /etc/profile.d/debuginfod."${ext}" ] || continue + + if command -v ucf > /dev/null; then + ucf --purge /etc/profile.d/debuginfod."${ext}" + fi + if command -v ucfr > /dev/null; then + ucfr --purge libdebuginfod-common /etc/profile.d/debuginfod."${ext}" + fi + rm -f /etc/profile.d/debuginfod."${ext}" + done + ;; + + remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/libdebuginfod-common.templates b/libdebuginfod-common.templates new file mode 100644 index 0000000..4e168ba --- /dev/null +++ b/libdebuginfod-common.templates @@ -0,0 +1,25 @@ +Template: libdebuginfod/usedebiandebuginfod +Type: boolean +Default: false +_Description: Connect to Debian's debuginfod server to download debug symbols? + While debugging programs (with GDB, for example) or using + debuginfo-consumer applications, it is possible to connect to + Debian's debuginfod server and download the necessary debug + information for the program you are debugging on-the-fly, without the + need to configure the debian-debug apt repository nor installing + any dbgsym packages. This service is maintained by Debian, and the + only information you will have to send to it is the Build-ID hash of + the program(s)/library(ies) being debugged. + +Template: libdebuginfod/useubuntudebuginfod +Type: boolean +Default: false +_Description: Connect to Ubuntu's debuginfod server to download debug symbols? + While debugging programs (with GDB, for example) or using + debuginfo-consumer applications, it is possible to connect to + Ubuntu's debuginfod server and download the necessary debug + information for the program you are debugging on-the-fly, without the + need to configure the ddebs apt repository nor installing + any ddeb package. This service is maintained by Ubuntu, and the + only information you will have to send to it is the Build-ID hash of + the program(s)/library(ies) being debugged. diff --git a/libdebuginfod-dev.install b/libdebuginfod-dev.install new file mode 100644 index 0000000..f809099 --- /dev/null +++ b/libdebuginfod-dev.install @@ -0,0 +1,4 @@ +usr/lib/*/libdebuginfod.so +usr/lib/*/pkgconfig/libdebuginfod.pc +usr/include/elfutils/debuginfod.h +usr/share/man/man3/debuginfod_*.3 diff --git a/libdebuginfod1.install b/libdebuginfod1.install new file mode 100644 index 0000000..62b1838 --- /dev/null +++ b/libdebuginfod1.install @@ -0,0 +1,2 @@ +usr/lib/*/libdebuginfod.so.* +usr/lib/*/libdebuginfod-*.so diff --git a/libdebuginfod1.symbols b/libdebuginfod1.symbols new file mode 100644 index 0000000..59568fc --- /dev/null +++ b/libdebuginfod1.symbols @@ -0,0 +1,5 @@ +libdebuginfod.so.1 libdebuginfod1 #MINVER# + (symver)ELFUTILS_0.178 0.180 + (symver)ELFUTILS_0.179 0.180 + (symver)ELFUTILS_0 0.180 + (symver)ELFUTILS_0.183 0.182+20210203 diff --git a/libdw-dev.install b/libdw-dev.install new file mode 100644 index 0000000..4e08f98 --- /dev/null +++ b/libdw-dev.install @@ -0,0 +1,8 @@ +usr/include/dwarf.h +usr/include/elfutils/libdw.h +usr/include/elfutils/libdwfl.h +usr/include/elfutils/libdwelf.h +usr/include/elfutils/known-dwarf.h +usr/lib/*/libdw.so +usr/lib/*/libdw.a +usr/lib/*/pkgconfig/libdw.pc diff --git a/libdw1.install b/libdw1.install new file mode 100644 index 0000000..344fc0f --- /dev/null +++ b/libdw1.install @@ -0,0 +1,2 @@ +usr/lib/*/libdw.so.1 +usr/lib/*/libdw-0.*.so diff --git a/libdw1.symbols b/libdw1.symbols new file mode 100644 index 0000000..2e759d1 --- /dev/null +++ b/libdw1.symbols @@ -0,0 +1,28 @@ +libdw.so.1 libdw1 #MINVER# + *@ELFUTILS_0.122 0.126 + *@ELFUTILS_0.126 0.126 + *@ELFUTILS_0.127 0.127 + *@ELFUTILS_0.130 0.130 + *@ELFUTILS_0.136 0.136 + *@ELFUTILS_0.138 0.138 + *@ELFUTILS_0.142 0.142 + *@ELFUTILS_0.143 0.143 + *@ELFUTILS_0.144 0.144 + *@ELFUTILS_0.146 0.146 + *@ELFUTILS_0.148 0.148 + *@ELFUTILS_0.149 0.149 + *@ELFUTILS_0.156 0.156 + *@ELFUTILS_0.157 0.157 + *@ELFUTILS_0.158 0.158 + *@ELFUTILS_0.159 0.159 + *@ELFUTILS_0.160 0.160 + *@ELFUTILS_0.161 0.161 + *@ELFUTILS_0.165 0.165 + *@ELFUTILS_0.167 0.167 + *@ELFUTILS_0.170 0.170 + *@ELFUTILS_0.171 0.171 + *@ELFUTILS_0.173 0.173 + *@ELFUTILS_0.175 0.175 + *@ELFUTILS_0.177 0.177 + *@ELFUTILS_0.186 0.186 + *@ELFUTILS_0 0.126 diff --git a/libelf-dev.install b/libelf-dev.install new file mode 100644 index 0000000..6e14773 --- /dev/null +++ b/libelf-dev.install @@ -0,0 +1,9 @@ +usr/include/libelf.h +usr/include/gelf.h +usr/include/nlist.h +usr/include/elfutils/elf-knowledge.h +usr/include/elfutils/version.h +usr/lib/*/libelf.a +usr/lib/*/libelf.so +usr/lib/*/pkgconfig/libelf.pc +usr/share/man/man3/elf_*.3 diff --git a/libelf1.install b/libelf1.install new file mode 100644 index 0000000..4e2d096 --- /dev/null +++ b/libelf1.install @@ -0,0 +1,3 @@ +usr/lib/*/libelf.so.1 +usr/lib/*/libelf-*.so +usr/share/locale/ diff --git a/libelf1.symbols b/libelf1.symbols new file mode 100644 index 0000000..731af1f --- /dev/null +++ b/libelf1.symbols @@ -0,0 +1,10 @@ +libelf.so.1 libelf1 #MINVER# + *@ELFUTILS_1.0 0.131 + *@ELFUTILS_1.1 0.131 + *@ELFUTILS_1.1.1 0.131 + *@ELFUTILS_1.2 0.131 + *@ELFUTILS_1.3 0.131 + *@ELFUTILS_1.4 0.132 + *@ELFUTILS_1.5 0.142 + *@ELFUTILS_1.6 0.144 + *@ELFUTILS_1.7 0.165 diff --git a/patches/0001-Ignore-differences-between-mips-machine-identifiers.patch b/patches/0001-Ignore-differences-between-mips-machine-identifiers.patch new file mode 100644 index 0000000..a9a7210 --- /dev/null +++ b/patches/0001-Ignore-differences-between-mips-machine-identifiers.patch @@ -0,0 +1,31 @@ +From 77cb4a53c270d5854d3af24f19547bc3de825233 Mon Sep 17 00:00:00 2001 +From: James Cowgill +Date: Mon, 5 Jan 2015 15:16:58 +0000 +Subject: [PATCH 1/3] Ignore differences between mips machine identifiers + +Little endian binaries actually use EM_MIPS so you can't tell the endianness +from the elf machine id. Also, the EM_MIPS_RS3_LE machine is dead anyway (the +kernel will not load binaries containing it). + +Signed-off-by: James Cowgill +--- + backends/mips_init.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +Index: b/backends/mips_init.c +=================================================================== +--- a/backends/mips_init.c ++++ b/backends/mips_init.c +@@ -45,11 +45,7 @@ mips_init (Elf *elf __attribute__ ((unus + return NULL; + + /* We handle it. */ +- if (machine == EM_MIPS) +- eh->name = "MIPS R3000 big-endian"; +- else if (machine == EM_MIPS_RS3_LE) +- eh->name = "MIPS R3000 little-endian"; +- ++ eh->name = "MIPS"; + mips_init_reloc (eh); + HOOK (eh, reloc_simple_type); + HOOK (eh, return_value_location); diff --git a/patches/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch b/patches/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch new file mode 100644 index 0000000..72125c9 --- /dev/null +++ b/patches/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch @@ -0,0 +1,168 @@ +From fdaab18a65ed2529656baa64cb6169f34d7e507b Mon Sep 17 00:00:00 2001 +From: James Cowgill +Date: Mon, 5 Jan 2015 15:17:01 +0000 +Subject: [PATCH 2/3] Add support for mips64 abis in mips_retval.c + +Signed-off-by: James Cowgill +--- + backends/mips_retval.c | 104 ++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 94 insertions(+), 10 deletions(-) + +diff --git a/backends/mips_retval.c b/backends/mips_retval.c +index 33f12a7..d5c6ef0 100644 +--- a/backends/mips_retval.c ++++ b/backends/mips_retval.c +@@ -91,6 +91,8 @@ enum mips_abi find_mips_abi(Elf *elf) + default: + if ((elf_flags & EF_MIPS_ABI2)) + return MIPS_ABI_N32; ++ else if ((ehdr->e_ident[EI_CLASS] == ELFCLASS64)) ++ return MIPS_ABI_N64; + } + + /* GCC creates a pseudo-section whose name describes the ABI. */ +@@ -195,6 +197,57 @@ static const Dwarf_Op loc_aggregate[] = + }; + #define nloc_aggregate 1 + ++/* Test if a struct member is a float */ ++static int is_float_child(Dwarf_Die *childdie) ++{ ++ /* Test if this is actually a struct member */ ++ if (dwarf_tag(childdie) != DW_TAG_member) ++ return 0; ++ ++ /* Get type of member */ ++ Dwarf_Attribute attr_mem; ++ Dwarf_Die child_type_mem; ++ Dwarf_Die *child_typedie = ++ dwarf_formref_die(dwarf_attr_integrate(childdie, ++ DW_AT_type, ++ &attr_mem), &child_type_mem); ++ ++ if (dwarf_tag(child_typedie) != DW_TAG_base_type) ++ return 0; ++ ++ /* Get base subtype */ ++ Dwarf_Word encoding; ++ if (dwarf_formudata (dwarf_attr_integrate (child_typedie, ++ DW_AT_encoding, ++ &attr_mem), &encoding) != 0) ++ return 0; ++ ++ return encoding == DW_ATE_float; ++} ++ ++/* Returns the number of fpregs which can be returned in the given struct */ ++static int get_struct_fpregs(Dwarf_Die *structtypedie) ++{ ++ Dwarf_Die child_mem; ++ int fpregs = 0; ++ ++ /* Get first structure member */ ++ if (dwarf_child(structtypedie, &child_mem) != 0) ++ return 0; ++ ++ do ++ { ++ /* Ensure this register is a float */ ++ if (!is_float_child(&child_mem)) ++ return 0; ++ ++ fpregs++; ++ } ++ while (dwarf_siblingof (&child_mem, &child_mem) == 0); ++ ++ return fpregs; ++} ++ + int + mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) + { +@@ -240,6 +293,7 @@ mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) + tag = dwarf_tag (typedie); + } + ++ Dwarf_Word size; + switch (tag) + { + case -1: +@@ -258,8 +312,6 @@ mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) + case DW_TAG_enumeration_type: + case DW_TAG_pointer_type: + case DW_TAG_ptr_to_member_type: +- { +- Dwarf_Word size; + if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, + &attr_mem), &size) != 0) + { +@@ -289,7 +341,7 @@ mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) + if (size <= 4*regsize && abi == MIPS_ABI_O32) + return nloc_fpregquad; + +- goto aggregate; ++ goto large; + } + } + *locp = ABI_LOC(loc_intreg, regsize); +@@ -298,18 +350,50 @@ mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) + if (size <= 2*regsize) + return nloc_intregpair; + +- /* Else fall through. Shouldn't happen though (at least with gcc) */ +- } ++ /* Else pass in memory. Shouldn't happen though (at least with gcc) */ ++ goto large; + + case DW_TAG_structure_type: + case DW_TAG_class_type: + case DW_TAG_union_type: +- case DW_TAG_array_type: +- aggregate: +- /* XXX TODO: Can't handle structure return with other ABI's yet :-/ */ +- if ((abi != MIPS_ABI_O32) && (abi != MIPS_ABI_O64)) +- return -2; ++ /* Handle special cases for structures <= 128 bytes in newer ABIs */ ++ if (abi == MIPS_ABI_EABI32 || abi == MIPS_ABI_EABI64 || ++ abi == MIPS_ABI_N32 || abi == MIPS_ABI_N64) ++ { ++ if (dwarf_aggregate_size (typedie, &size) == 0 && size <= 16) ++ { ++ /* ++ * Special case in N64 / N32 - ++ * structures containing only floats are returned in fp regs. ++ * Everything else is returned in integer regs. ++ */ ++ if (tag != DW_TAG_union_type && ++ (abi == MIPS_ABI_N32 || abi == MIPS_ABI_N64)) ++ { ++ int num_fpregs = get_struct_fpregs(typedie); ++ if (num_fpregs == 1 || num_fpregs == 2) ++ { ++ *locp = loc_fpreg; ++ if (num_fpregs == 1) ++ return nloc_fpreg; ++ else ++ return nloc_fpregpair; ++ } ++ } ++ ++ *locp = loc_intreg; ++ if (size <= 8) ++ return nloc_intreg; ++ else ++ return nloc_intregpair; ++ } ++ } ++ ++ /* Fallthrough to handle large types */ + ++ case DW_TAG_array_type: ++ large: ++ /* Return large structures in memory */ + *locp = loc_aggregate; + return nloc_aggregate; + } +-- +2.1.4 + diff --git a/patches/0003-Add-mips-n64-relocation-format-hack.patch b/patches/0003-Add-mips-n64-relocation-format-hack.patch new file mode 100644 index 0000000..7cefeae --- /dev/null +++ b/patches/0003-Add-mips-n64-relocation-format-hack.patch @@ -0,0 +1,226 @@ +From 59d4b8c48e5040af7e02b34eb26ea602ec82a38e Mon Sep 17 00:00:00 2001 +From: James Cowgill +Date: Mon, 5 Jan 2015 15:17:02 +0000 +Subject: [PATCH 3/3] Add mips n64 relocation format hack + +MIPSEL N64 ELF files use a slightly different format for storing relocation +entries which is incompatible with the normal R_SYM / R_INFO macros. +To workaround this, we rearrange the bytes in the relocation's r_info field +when reading and writing the relocations. + +This patch also ensures that strip.c sets the correct value of e_machine +before manipulating relocations so that these changes take effect. + +Signed-off-by: James Cowgill +--- + libelf/gelf_getrel.c | 25 +++++++++++++++++++++++-- + libelf/gelf_getrela.c | 25 +++++++++++++++++++++++-- + libelf/gelf_update_rel.c | 20 +++++++++++++++++++- + libelf/gelf_update_rela.c | 20 +++++++++++++++++++- + src/strip.c | 17 +++++++++++++++++ + 5 files changed, 101 insertions(+), 6 deletions(-) + +Index: elfutils-0.175/libelf/gelf_getrel.c +=================================================================== +--- elfutils-0.175.orig/libelf/gelf_getrel.c ++++ elfutils-0.175/libelf/gelf_getrel.c +@@ -36,6 +36,7 @@ + + #include "libelfP.h" + ++#define EF_MIPS_ABI 0x0000F000 + + GElf_Rel * + gelf_getrel (Elf_Data *data, int ndx, GElf_Rel *dst) +@@ -89,8 +90,28 @@ gelf_getrel (Elf_Data *data, int ndx, GE + result = NULL; + } + else +- result = memcpy (dst, &((Elf64_Rel *) data_scn->d.d_buf)[ndx], +- sizeof (Elf64_Rel)); ++ { ++ GElf_Ehdr hdr; ++ result = memcpy (dst, &((Elf64_Rel *) data_scn->d.d_buf)[ndx], ++ sizeof (Elf64_Rel)); ++ ++ if (gelf_getehdr(scn->elf, &hdr) != NULL && ++ hdr.e_ident[EI_DATA] == ELFDATA2LSB && ++ hdr.e_machine == EM_MIPS && ++ (hdr.e_flags & EF_MIPS_ABI) == 0) ++ { ++ /* ++ * The relocation format is mangled on MIPSEL N64 ++ * We'll adjust it so at least R_SYM will work on it ++ */ ++ GElf_Xword r_info = dst->r_info; ++ dst->r_info = (r_info << 32) | ++ ((r_info >> 8) & 0xFF000000) | ++ ((r_info >> 24) & 0x00FF0000) | ++ ((r_info >> 40) & 0x0000FF00) | ++ ((r_info >> 56) & 0x000000FF); ++ } ++ } + } + + rwlock_unlock (scn->elf->lock); +Index: elfutils-0.175/libelf/gelf_getrela.c +=================================================================== +--- elfutils-0.175.orig/libelf/gelf_getrela.c ++++ elfutils-0.175/libelf/gelf_getrela.c +@@ -36,6 +36,7 @@ + + #include "libelfP.h" + ++#define EF_MIPS_ABI 0x0000F000 + + GElf_Rela * + gelf_getrela (Elf_Data *data, int ndx, GElf_Rela *dst) +@@ -90,8 +91,28 @@ gelf_getrela (Elf_Data *data, int ndx, G + result = NULL; + } + else +- result = memcpy (dst, &((Elf64_Rela *) data_scn->d.d_buf)[ndx], +- sizeof (Elf64_Rela)); ++ { ++ GElf_Ehdr hdr; ++ result = memcpy (dst, &((Elf64_Rela *) data_scn->d.d_buf)[ndx], ++ sizeof (Elf64_Rela)); ++ ++ if (gelf_getehdr(scn->elf, &hdr) != NULL && ++ hdr.e_ident[EI_DATA] == ELFDATA2LSB && ++ hdr.e_machine == EM_MIPS && ++ (hdr.e_flags & EF_MIPS_ABI) == 0) ++ { ++ /* ++ * The relocation format is mangled on MIPSEL N64 ++ * We'll adjust it so at least R_SYM will work on it ++ */ ++ GElf_Xword r_info = dst->r_info; ++ dst->r_info = (r_info << 32) | ++ ((r_info >> 8) & 0xFF000000) | ++ ((r_info >> 24) & 0x00FF0000) | ++ ((r_info >> 40) & 0x0000FF00) | ++ ((r_info >> 56) & 0x000000FF); ++ } ++ } + } + + rwlock_unlock (scn->elf->lock); +Index: elfutils-0.175/libelf/gelf_update_rel.c +=================================================================== +--- elfutils-0.175.orig/libelf/gelf_update_rel.c ++++ elfutils-0.175/libelf/gelf_update_rel.c +@@ -36,6 +36,7 @@ + + #include "libelfP.h" + ++#define EF_MIPS_ABI 0x0000F000 + + int + gelf_update_rel (Elf_Data *dst, int ndx, GElf_Rel *src) +@@ -86,6 +87,9 @@ gelf_update_rel (Elf_Data *dst, int ndx, + } + else + { ++ GElf_Ehdr hdr; ++ GElf_Rel value = *src; ++ + /* Check whether we have to resize the data buffer. */ + if (INVALID_NDX (ndx, Elf64_Rel, &data_scn->d)) + { +@@ -93,7 +97,21 @@ gelf_update_rel (Elf_Data *dst, int ndx, + goto out; + } + +- ((Elf64_Rel *) data_scn->d.d_buf)[ndx] = *src; ++ if (gelf_getehdr(scn->elf, &hdr) != NULL && ++ hdr.e_ident[EI_DATA] == ELFDATA2LSB && ++ hdr.e_machine == EM_MIPS && ++ (hdr.e_flags & EF_MIPS_ABI) == 0) ++ { ++ /* Undo the MIPSEL N64 hack from gelf_getrel */ ++ GElf_Xword r_info = value.r_info; ++ value.r_info = (r_info >> 32) | ++ ((r_info << 8) & 0x000000FF00000000) | ++ ((r_info << 24) & 0x0000FF0000000000) | ++ ((r_info << 40) & 0x00FF000000000000) | ++ ((r_info << 56) & 0xFF00000000000000); ++ } ++ ++ ((Elf64_Rel *) data_scn->d.d_buf)[ndx] = value; + } + + result = 1; +Index: elfutils-0.175/libelf/gelf_update_rela.c +=================================================================== +--- elfutils-0.175.orig/libelf/gelf_update_rela.c ++++ elfutils-0.175/libelf/gelf_update_rela.c +@@ -36,6 +36,7 @@ + + #include "libelfP.h" + ++#define EF_MIPS_ABI 0x0000F000 + + int + gelf_update_rela (Elf_Data *dst, int ndx, GElf_Rela *src) +@@ -89,6 +90,9 @@ gelf_update_rela (Elf_Data *dst, int ndx + } + else + { ++ GElf_Ehdr hdr; ++ GElf_Rela value = *src; ++ + /* Check whether we have to resize the data buffer. */ + if (INVALID_NDX (ndx, Elf64_Rela, &data_scn->d)) + { +@@ -96,7 +100,21 @@ gelf_update_rela (Elf_Data *dst, int ndx + goto out; + } + +- ((Elf64_Rela *) data_scn->d.d_buf)[ndx] = *src; ++ if (gelf_getehdr(scn->elf, &hdr) != NULL && ++ hdr.e_ident[EI_DATA] == ELFDATA2LSB && ++ hdr.e_machine == EM_MIPS && ++ (hdr.e_flags & EF_MIPS_ABI) == 0) ++ { ++ /* Undo the MIPSEL N64 hack from gelf_getrel */ ++ GElf_Xword r_info = value.r_info; ++ value.r_info = (r_info >> 32) | ++ ((r_info << 8) & 0x000000FF00000000) | ++ ((r_info << 24) & 0x0000FF0000000000) | ++ ((r_info << 40) & 0x00FF000000000000) | ++ ((r_info << 56) & 0xFF00000000000000); ++ } ++ ++ ((Elf64_Rela *) data_scn->d.d_buf)[ndx] = value; + } + + result = 1; +Index: elfutils-0.175/src/strip.c +=================================================================== +--- elfutils-0.175.orig/src/strip.c ++++ elfutils-0.175/src/strip.c +@@ -1062,6 +1062,23 @@ handle_elf (int fd, Elf *elf, const char + goto fail; + } + ++ /* Copy identity part of the ELF header now */ ++ newehdr = gelf_getehdr (newelf, &newehdr_mem); ++ if (newehdr == NULL) ++ INTERNAL_ERROR (fname); ++ ++ memcpy (newehdr->e_ident, ehdr->e_ident, EI_NIDENT); ++ newehdr->e_type = ehdr->e_type; ++ newehdr->e_machine = ehdr->e_machine; ++ newehdr->e_version = ehdr->e_version; ++ ++ if (gelf_update_ehdr (newelf, newehdr) == 0) ++ { ++ error (0, 0, gettext ("%s: error while creating ELF header: %s"), ++ fname, elf_errmsg (-1)); ++ return 1; ++ } ++ + /* Copy over the old program header if needed. */ + if (phnum > 0) + { diff --git a/patches/arm_backend.diff b/patches/arm_backend.diff new file mode 100644 index 0000000..6a85baf --- /dev/null +++ b/patches/arm_backend.diff @@ -0,0 +1,600 @@ +Index: elfutils-0.175/backends/arm_init.c +=================================================================== +--- elfutils-0.175.orig/backends/arm_init.c ++++ elfutils-0.175/backends/arm_init.c +@@ -35,20 +35,31 @@ + #define RELOC_PREFIX R_ARM_ + #include "libebl_CPU.h" + ++#include "libebl_arm.h" ++ + /* This defines the common reloc hooks based on arm_reloc.def. */ + #include "common-reloc.c" + + + const char * +-arm_init (Elf *elf __attribute__ ((unused)), ++arm_init (Elf *elf, + GElf_Half machine __attribute__ ((unused)), + Ebl *eh, + size_t ehlen) + { ++ int soft_float = 0; ++ + /* Check whether the Elf_BH object has a sufficent size. */ + if (ehlen < sizeof (Ebl)) + return NULL; + ++ if (elf) { ++ GElf_Ehdr ehdr_mem; ++ GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem); ++ if (ehdr && (ehdr->e_flags & EF_ARM_SOFT_FLOAT)) ++ soft_float = 1; ++ } ++ + /* We handle it. */ + eh->name = "ARM"; + arm_init_reloc (eh); +@@ -60,7 +71,10 @@ arm_init (Elf *elf __attribute__ ((unuse + HOOK (eh, core_note); + HOOK (eh, auxv_info); + HOOK (eh, check_object_attribute); +- HOOK (eh, return_value_location); ++ if (soft_float) ++ eh->return_value_location = arm_return_value_location_soft; ++ else ++ eh->return_value_location = arm_return_value_location_hard; + HOOK (eh, abi_cfi); + HOOK (eh, check_reloc_target_type); + HOOK (eh, symbol_type_name); +Index: elfutils-0.175/backends/arm_regs.c +=================================================================== +--- elfutils-0.175.orig/backends/arm_regs.c ++++ elfutils-0.175/backends/arm_regs.c +@@ -31,6 +31,7 @@ + #endif + + #include ++#include + #include + + #define BACKEND arm_ +@@ -76,6 +77,9 @@ arm_register_info (Ebl *ebl __attribute_ + break; + + case 16 + 0 ... 16 + 7: ++ /* AADWARF says that there are no registers in that range, ++ * but gcc maps FPA registers here ++ */ + regno += 96 - 16; + FALLTHROUGH; + case 96 + 0 ... 96 + 7: +@@ -87,11 +91,139 @@ arm_register_info (Ebl *ebl __attribute_ + namelen = 2; + break; + ++ case 64 + 0 ... 64 + 9: ++ *setname = "VFP"; ++ *bits = 32; ++ *type = DW_ATE_float; ++ name[0] = 's'; ++ name[1] = regno - 64 + '0'; ++ namelen = 2; ++ break; ++ ++ case 64 + 10 ... 64 + 31: ++ *setname = "VFP"; ++ *bits = 32; ++ *type = DW_ATE_float; ++ name[0] = 's'; ++ name[1] = (regno - 64) / 10 + '0'; ++ name[2] = (regno - 64) % 10 + '0'; ++ namelen = 3; ++ break; ++ ++ case 104 + 0 ... 104 + 7: ++ /* XXX TODO: ++ * This can be either intel wireless MMX general purpose/control ++ * registers or xscale accumulator, which have different usage. ++ * We only have the intel wireless MMX here now. ++ * The name needs to be changed for the xscale accumulator too. */ ++ *setname = "MMX"; ++ *type = DW_ATE_unsigned; ++ *bits = 32; ++ memcpy(name, "wcgr", 4); ++ name[4] = regno - 104 + '0'; ++ namelen = 5; ++ break; ++ ++ case 112 + 0 ... 112 + 9: ++ *setname = "MMX"; ++ *type = DW_ATE_unsigned; ++ *bits = 64; ++ name[0] = 'w'; ++ name[1] = 'r'; ++ name[2] = regno - 112 + '0'; ++ namelen = 3; ++ break; ++ ++ case 112 + 10 ... 112 + 15: ++ *setname = "MMX"; ++ *type = DW_ATE_unsigned; ++ *bits = 64; ++ name[0] = 'w'; ++ name[1] = 'r'; ++ name[2] = '1'; ++ name[3] = regno - 112 - 10 + '0'; ++ namelen = 4; ++ break; ++ + case 128: ++ *setname = "state"; + *type = DW_ATE_unsigned; + return stpcpy (name, "spsr") + 1 - name; + ++ case 129: ++ *setname = "state"; ++ *type = DW_ATE_unsigned; ++ return stpcpy(name, "spsr_fiq") + 1 - name; ++ ++ case 130: ++ *setname = "state"; ++ *type = DW_ATE_unsigned; ++ return stpcpy(name, "spsr_irq") + 1 - name; ++ ++ case 131: ++ *setname = "state"; ++ *type = DW_ATE_unsigned; ++ return stpcpy(name, "spsr_abt") + 1 - name; ++ ++ case 132: ++ *setname = "state"; ++ *type = DW_ATE_unsigned; ++ return stpcpy(name, "spsr_und") + 1 - name; ++ ++ case 133: ++ *setname = "state"; ++ *type = DW_ATE_unsigned; ++ return stpcpy(name, "spsr_svc") + 1 - name; ++ ++ case 144 ... 150: ++ *setname = "integer"; ++ *type = DW_ATE_signed; ++ *bits = 32; ++ return sprintf(name, "r%d_usr", regno - 144 + 8) + 1; ++ ++ case 151 ... 157: ++ *setname = "integer"; ++ *type = DW_ATE_signed; ++ *bits = 32; ++ return sprintf(name, "r%d_fiq", regno - 151 + 8) + 1; ++ ++ case 158 ... 159: ++ *setname = "integer"; ++ *type = DW_ATE_signed; ++ *bits = 32; ++ return sprintf(name, "r%d_irq", regno - 158 + 13) + 1; ++ ++ case 160 ... 161: ++ *setname = "integer"; ++ *type = DW_ATE_signed; ++ *bits = 32; ++ return sprintf(name, "r%d_abt", regno - 160 + 13) + 1; ++ ++ case 162 ... 163: ++ *setname = "integer"; ++ *type = DW_ATE_signed; ++ *bits = 32; ++ return sprintf(name, "r%d_und", regno - 162 + 13) + 1; ++ ++ case 164 ... 165: ++ *setname = "integer"; ++ *type = DW_ATE_signed; ++ *bits = 32; ++ return sprintf(name, "r%d_svc", regno - 164 + 13) + 1; ++ ++ case 192 ... 199: ++ *setname = "MMX"; ++ *bits = 32; ++ *type = DW_ATE_unsigned; ++ name[0] = 'w'; ++ name[1] = 'c'; ++ name[2] = regno - 192 + '0'; ++ namelen = 3; ++ break; ++ + case 256 + 0 ... 256 + 9: ++ /* XXX TODO: Neon also uses those registers and can contain ++ * both float and integers */ + *setname = "VFP"; + *type = DW_ATE_float; + *bits = 64; +Index: elfutils-0.175/backends/arm_retval.c +=================================================================== +--- elfutils-0.175.orig/backends/arm_retval.c ++++ elfutils-0.175/backends/arm_retval.c +@@ -48,6 +48,13 @@ static const Dwarf_Op loc_intreg[] = + #define nloc_intreg 1 + #define nloc_intregs(n) (2 * (n)) + ++/* f1 */ /* XXX TODO: f0 can also have number 96 if program was compiled with -mabi=aapcs */ ++static const Dwarf_Op loc_fpreg[] = ++ { ++ { .atom = DW_OP_reg16 }, ++ }; ++#define nloc_fpreg 1 ++ + /* The return value is a structure and is actually stored in stack space + passed in a hidden argument by the caller. But, the compiler + helpfully returns the address of that space in r0. */ +@@ -58,8 +65,9 @@ static const Dwarf_Op loc_aggregate[] = + #define nloc_aggregate 1 + + +-int +-arm_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) ++static int ++arm_return_value_location_ (Dwarf_Die *functypedie, const Dwarf_Op **locp, ++ int soft_float) + { + /* Start with the function's type, and get the DW_AT_type attribute, + which is the type of the return value. */ +@@ -98,6 +106,21 @@ arm_return_value_location (Dwarf_Die *fu + else + return -1; + } ++ if (tag == DW_TAG_base_type) ++ { ++ Dwarf_Word encoding; ++ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, ++ &attr_mem), &encoding) != 0) ++ return -1; ++ ++ if ((encoding == DW_ATE_float) && !soft_float) ++ { ++ *locp = loc_fpreg; ++ if (size <= 8) ++ return nloc_fpreg; ++ goto aggregate; ++ } ++ } + if (size <= 16) + { + intreg: +@@ -106,6 +129,7 @@ arm_return_value_location (Dwarf_Die *fu + } + + aggregate: ++ /* XXX TODO sometimes aggregates are returned in r0 (-mabi=aapcs) */ + *locp = loc_aggregate; + return nloc_aggregate; + } +@@ -125,3 +149,18 @@ arm_return_value_location (Dwarf_Die *fu + DWARF and might be valid. */ + return -2; + } ++ ++/* return location for -mabi=apcs-gnu -msoft-float */ ++int ++arm_return_value_location_soft (Dwarf_Die *functypedie, const Dwarf_Op **locp) ++{ ++ return arm_return_value_location_ (functypedie, locp, 1); ++} ++ ++/* return location for -mabi=apcs-gnu -mhard-float (current default) */ ++int ++arm_return_value_location_hard (Dwarf_Die *functypedie, const Dwarf_Op **locp) ++{ ++ return arm_return_value_location_ (functypedie, locp, 0); ++} ++ +Index: elfutils-0.175/libelf/elf.h +=================================================================== +--- elfutils-0.175.orig/libelf/elf.h ++++ elfutils-0.175/libelf/elf.h +@@ -2694,6 +2694,9 @@ enum + #define EF_ARM_EABI_VER4 0x04000000 + #define EF_ARM_EABI_VER5 0x05000000 + ++/* EI_OSABI values */ ++#define ELFOSABI_ARM_AEABI 64 /* Contains symbol versioning. */ ++ + /* Additional symbol types for Thumb. */ + #define STT_ARM_TFUNC STT_LOPROC /* A Thumb function. */ + #define STT_ARM_16BIT STT_HIPROC /* A Thumb label. */ +@@ -2711,12 +2714,19 @@ enum + + /* Processor specific values for the Phdr p_type field. */ + #define PT_ARM_EXIDX (PT_LOPROC + 1) /* ARM unwind segment. */ ++#define PT_ARM_UNWIND PT_ARM_EXIDX + + /* Processor specific values for the Shdr sh_type field. */ + #define SHT_ARM_EXIDX (SHT_LOPROC + 1) /* ARM unwind section. */ + #define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) /* Preemption details. */ + #define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) /* ARM attributes section. */ + ++/* Processor specific values for the Dyn d_tag field. */ ++#define DT_ARM_RESERVED1 (DT_LOPROC + 0) ++#define DT_ARM_SYMTABSZ (DT_LOPROC + 1) ++#define DT_ARM_PREEMTMAB (DT_LOPROC + 2) ++#define DT_ARM_RESERVED2 (DT_LOPROC + 3) ++#define DT_ARM_NUM 4 + + /* AArch64 relocs. */ + +@@ -3009,6 +3019,7 @@ enum + TLS block (LDR, STR). */ + #define R_ARM_TLS_IE12GP 111 /* 12 bit GOT entry relative + to GOT origin (LDR). */ ++/* 112 - 127 private range */ + #define R_ARM_ME_TOO 128 /* Obsolete. */ + #define R_ARM_THM_TLS_DESCSEQ 129 + #define R_ARM_THM_TLS_DESCSEQ16 129 +Index: elfutils-0.175/backends/libebl_arm.h +=================================================================== +--- /dev/null ++++ elfutils-0.175/backends/libebl_arm.h +@@ -0,0 +1,9 @@ ++#ifndef _LIBEBL_ARM_H ++#define _LIBEBL_ARM_H 1 ++ ++#include ++ ++extern int arm_return_value_location_soft(Dwarf_Die *, const Dwarf_Op **locp); ++extern int arm_return_value_location_hard(Dwarf_Die *, const Dwarf_Op **locp); ++ ++#endif +Index: elfutils-0.175/tests/run-allregs.sh +=================================================================== +--- elfutils-0.175.orig/tests/run-allregs.sh ++++ elfutils-0.175/tests/run-allregs.sh +@@ -2672,7 +2672,28 @@ integer registers: + 13: sp (sp), address 32 bits + 14: lr (lr), address 32 bits + 15: pc (pc), address 32 bits +- 128: spsr (spsr), unsigned 32 bits ++ 144: r8_usr (r8_usr), signed 32 bits ++ 145: r9_usr (r9_usr), signed 32 bits ++ 146: r10_usr (r10_usr), signed 32 bits ++ 147: r11_usr (r11_usr), signed 32 bits ++ 148: r12_usr (r12_usr), signed 32 bits ++ 149: r13_usr (r13_usr), signed 32 bits ++ 150: r14_usr (r14_usr), signed 32 bits ++ 151: r8_fiq (r8_fiq), signed 32 bits ++ 152: r9_fiq (r9_fiq), signed 32 bits ++ 153: r10_fiq (r10_fiq), signed 32 bits ++ 154: r11_fiq (r11_fiq), signed 32 bits ++ 155: r12_fiq (r12_fiq), signed 32 bits ++ 156: r13_fiq (r13_fiq), signed 32 bits ++ 157: r14_fiq (r14_fiq), signed 32 bits ++ 158: r13_irq (r13_irq), signed 32 bits ++ 159: r14_irq (r14_irq), signed 32 bits ++ 160: r13_abt (r13_abt), signed 32 bits ++ 161: r14_abt (r14_abt), signed 32 bits ++ 162: r13_und (r13_und), signed 32 bits ++ 163: r14_und (r14_und), signed 32 bits ++ 164: r13_svc (r13_svc), signed 32 bits ++ 165: r14_svc (r14_svc), signed 32 bits + FPA registers: + 16: f0 (f0), float 96 bits + 17: f1 (f1), float 96 bits +@@ -2690,7 +2711,72 @@ FPA registers: + 101: f5 (f5), float 96 bits + 102: f6 (f6), float 96 bits + 103: f7 (f7), float 96 bits ++MMX registers: ++ 104: wcgr0 (wcgr0), unsigned 32 bits ++ 105: wcgr1 (wcgr1), unsigned 32 bits ++ 106: wcgr2 (wcgr2), unsigned 32 bits ++ 107: wcgr3 (wcgr3), unsigned 32 bits ++ 108: wcgr4 (wcgr4), unsigned 32 bits ++ 109: wcgr5 (wcgr5), unsigned 32 bits ++ 110: wcgr6 (wcgr6), unsigned 32 bits ++ 111: wcgr7 (wcgr7), unsigned 32 bits ++ 112: wr0 (wr0), unsigned 64 bits ++ 113: wr1 (wr1), unsigned 64 bits ++ 114: wr2 (wr2), unsigned 64 bits ++ 115: wr3 (wr3), unsigned 64 bits ++ 116: wr4 (wr4), unsigned 64 bits ++ 117: wr5 (wr5), unsigned 64 bits ++ 118: wr6 (wr6), unsigned 64 bits ++ 119: wr7 (wr7), unsigned 64 bits ++ 120: wr8 (wr8), unsigned 64 bits ++ 121: wr9 (wr9), unsigned 64 bits ++ 122: wr10 (wr10), unsigned 64 bits ++ 123: wr11 (wr11), unsigned 64 bits ++ 124: wr12 (wr12), unsigned 64 bits ++ 125: wr13 (wr13), unsigned 64 bits ++ 126: wr14 (wr14), unsigned 64 bits ++ 127: wr15 (wr15), unsigned 64 bits ++ 192: wc0 (wc0), unsigned 32 bits ++ 193: wc1 (wc1), unsigned 32 bits ++ 194: wc2 (wc2), unsigned 32 bits ++ 195: wc3 (wc3), unsigned 32 bits ++ 196: wc4 (wc4), unsigned 32 bits ++ 197: wc5 (wc5), unsigned 32 bits ++ 198: wc6 (wc6), unsigned 32 bits ++ 199: wc7 (wc7), unsigned 32 bits + VFP registers: ++ 64: s0 (s0), float 32 bits ++ 65: s1 (s1), float 32 bits ++ 66: s2 (s2), float 32 bits ++ 67: s3 (s3), float 32 bits ++ 68: s4 (s4), float 32 bits ++ 69: s5 (s5), float 32 bits ++ 70: s6 (s6), float 32 bits ++ 71: s7 (s7), float 32 bits ++ 72: s8 (s8), float 32 bits ++ 73: s9 (s9), float 32 bits ++ 74: s10 (s10), float 32 bits ++ 75: s11 (s11), float 32 bits ++ 76: s12 (s12), float 32 bits ++ 77: s13 (s13), float 32 bits ++ 78: s14 (s14), float 32 bits ++ 79: s15 (s15), float 32 bits ++ 80: s16 (s16), float 32 bits ++ 81: s17 (s17), float 32 bits ++ 82: s18 (s18), float 32 bits ++ 83: s19 (s19), float 32 bits ++ 84: s20 (s20), float 32 bits ++ 85: s21 (s21), float 32 bits ++ 86: s22 (s22), float 32 bits ++ 87: s23 (s23), float 32 bits ++ 88: s24 (s24), float 32 bits ++ 89: s25 (s25), float 32 bits ++ 90: s26 (s26), float 32 bits ++ 91: s27 (s27), float 32 bits ++ 92: s28 (s28), float 32 bits ++ 93: s29 (s29), float 32 bits ++ 94: s30 (s30), float 32 bits ++ 95: s31 (s31), float 32 bits + 256: d0 (d0), float 64 bits + 257: d1 (d1), float 64 bits + 258: d2 (d2), float 64 bits +@@ -2723,6 +2809,13 @@ VFP registers: + 285: d29 (d29), float 64 bits + 286: d30 (d30), float 64 bits + 287: d31 (d31), float 64 bits ++state registers: ++ 128: spsr (spsr), unsigned 32 bits ++ 129: spsr_fiq (spsr_fiq), unsigned 32 bits ++ 130: spsr_irq (spsr_irq), unsigned 32 bits ++ 131: spsr_abt (spsr_abt), unsigned 32 bits ++ 132: spsr_und (spsr_und), unsigned 32 bits ++ 133: spsr_svc (spsr_svc), unsigned 32 bits + EOF + + # See run-readelf-mixed-corenote.sh for instructions to regenerate +Index: elfutils-0.175/tests/run-readelf-mixed-corenote.sh +=================================================================== +--- elfutils-0.175.orig/tests/run-readelf-mixed-corenote.sh ++++ elfutils-0.175/tests/run-readelf-mixed-corenote.sh +@@ -31,12 +31,11 @@ Note segment of 892 bytes at offset 0x27 + pid: 11087, ppid: 11063, pgrp: 11087, sid: 11063 + utime: 0.000000, stime: 0.010000, cutime: 0.000000, cstime: 0.000000 + orig_r0: -1, fpvalid: 1 +- r0: 1 r1: -1091672508 r2: -1091672500 +- r3: 0 r4: 0 r5: 0 +- r6: 33728 r7: 0 r8: 0 +- r9: 0 r10: -1225703496 r11: -1091672844 +- r12: 0 sp: 0xbeee64f4 lr: 0xb6dc3f48 +- pc: 0x00008500 spsr: 0x60000010 ++ r0: 1 r1: -1091672508 r2: -1091672500 r3: 0 ++ r4: 0 r5: 0 r6: 33728 r7: 0 ++ r8: 0 r9: 0 r10: -1225703496 r11: -1091672844 ++ r12: 0 sp: 0xbeee64f4 lr: 0xb6dc3f48 pc: 0x00008500 ++ spsr: 0x60000010 + CORE 124 PRPSINFO + state: 0, sname: R, zomb: 0, nice: 0, flag: 0x00400500 + uid: 0, gid: 0, pid: 11087, ppid: 11063, pgrp: 11087, sid: 11063 +Index: elfutils-0.175/tests/run-addrcfi.sh +=================================================================== +--- elfutils-0.175.orig/tests/run-addrcfi.sh ++++ elfutils-0.175/tests/run-addrcfi.sh +@@ -3554,6 +3554,38 @@ dwarf_cfi_addrframe (.eh_frame): no matc + FPA reg21 (f5): undefined + FPA reg22 (f6): undefined + FPA reg23 (f7): undefined ++ VFP reg64 (s0): undefined ++ VFP reg65 (s1): undefined ++ VFP reg66 (s2): undefined ++ VFP reg67 (s3): undefined ++ VFP reg68 (s4): undefined ++ VFP reg69 (s5): undefined ++ VFP reg70 (s6): undefined ++ VFP reg71 (s7): undefined ++ VFP reg72 (s8): undefined ++ VFP reg73 (s9): undefined ++ VFP reg74 (s10): undefined ++ VFP reg75 (s11): undefined ++ VFP reg76 (s12): undefined ++ VFP reg77 (s13): undefined ++ VFP reg78 (s14): undefined ++ VFP reg79 (s15): undefined ++ VFP reg80 (s16): undefined ++ VFP reg81 (s17): undefined ++ VFP reg82 (s18): undefined ++ VFP reg83 (s19): undefined ++ VFP reg84 (s20): undefined ++ VFP reg85 (s21): undefined ++ VFP reg86 (s22): undefined ++ VFP reg87 (s23): undefined ++ VFP reg88 (s24): undefined ++ VFP reg89 (s25): undefined ++ VFP reg90 (s26): undefined ++ VFP reg91 (s27): undefined ++ VFP reg92 (s28): undefined ++ VFP reg93 (s29): undefined ++ VFP reg94 (s30): undefined ++ VFP reg95 (s31): undefined + FPA reg96 (f0): undefined + FPA reg97 (f1): undefined + FPA reg98 (f2): undefined +@@ -3562,7 +3594,66 @@ dwarf_cfi_addrframe (.eh_frame): no matc + FPA reg101 (f5): undefined + FPA reg102 (f6): undefined + FPA reg103 (f7): undefined +- integer reg128 (spsr): undefined ++ MMX reg104 (wcgr0): undefined ++ MMX reg105 (wcgr1): undefined ++ MMX reg106 (wcgr2): undefined ++ MMX reg107 (wcgr3): undefined ++ MMX reg108 (wcgr4): undefined ++ MMX reg109 (wcgr5): undefined ++ MMX reg110 (wcgr6): undefined ++ MMX reg111 (wcgr7): undefined ++ MMX reg112 (wr0): undefined ++ MMX reg113 (wr1): undefined ++ MMX reg114 (wr2): undefined ++ MMX reg115 (wr3): undefined ++ MMX reg116 (wr4): undefined ++ MMX reg117 (wr5): undefined ++ MMX reg118 (wr6): undefined ++ MMX reg119 (wr7): undefined ++ MMX reg120 (wr8): undefined ++ MMX reg121 (wr9): undefined ++ MMX reg122 (wr10): undefined ++ MMX reg123 (wr11): undefined ++ MMX reg124 (wr12): undefined ++ MMX reg125 (wr13): undefined ++ MMX reg126 (wr14): undefined ++ MMX reg127 (wr15): undefined ++ state reg128 (spsr): undefined ++ state reg129 (spsr_fiq): undefined ++ state reg130 (spsr_irq): undefined ++ state reg131 (spsr_abt): undefined ++ state reg132 (spsr_und): undefined ++ state reg133 (spsr_svc): undefined ++ integer reg144 (r8_usr): undefined ++ integer reg145 (r9_usr): undefined ++ integer reg146 (r10_usr): undefined ++ integer reg147 (r11_usr): undefined ++ integer reg148 (r12_usr): undefined ++ integer reg149 (r13_usr): undefined ++ integer reg150 (r14_usr): undefined ++ integer reg151 (r8_fiq): undefined ++ integer reg152 (r9_fiq): undefined ++ integer reg153 (r10_fiq): undefined ++ integer reg154 (r11_fiq): undefined ++ integer reg155 (r12_fiq): undefined ++ integer reg156 (r13_fiq): undefined ++ integer reg157 (r14_fiq): undefined ++ integer reg158 (r13_irq): undefined ++ integer reg159 (r14_irq): undefined ++ integer reg160 (r13_abt): undefined ++ integer reg161 (r14_abt): undefined ++ integer reg162 (r13_und): undefined ++ integer reg163 (r14_und): undefined ++ integer reg164 (r13_svc): undefined ++ integer reg165 (r14_svc): undefined ++ MMX reg192 (wc0): undefined ++ MMX reg193 (wc1): undefined ++ MMX reg194 (wc2): undefined ++ MMX reg195 (wc3): undefined ++ MMX reg196 (wc4): undefined ++ MMX reg197 (wc5): undefined ++ MMX reg198 (wc6): undefined ++ MMX reg199 (wc7): undefined + VFP reg256 (d0): undefined + VFP reg257 (d1): undefined + VFP reg258 (d2): undefined diff --git a/patches/disable-some-tests.diff b/patches/disable-some-tests.diff new file mode 100644 index 0000000..7e79223 --- /dev/null +++ b/patches/disable-some-tests.diff @@ -0,0 +1,11 @@ +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -37,7 +37,7 @@ tests_rpath = no + endif + + check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \ +- showptable update1 update2 update3 update4 test-nlist \ ++ showptable update1 update2 update3 update4 \ + show-die-info get-files next-files get-lines next-lines \ + get-pubnames \ + get-aranges allfcts line2addr addrscopes funcscopes \ diff --git a/patches/disable_werror.patch b/patches/disable_werror.patch new file mode 100644 index 0000000..155a78f --- /dev/null +++ b/patches/disable_werror.patch @@ -0,0 +1,23 @@ +From: Helmut Grohne +Subject: disable -Werror as it tends to break with new gcc versions +Bug-Debian: https://bugs.debian.org/886004 +Last-Update: 2018-01-01 + +--- a/config/eu.am ++++ b/config/eu.am +@@ -91,7 +91,6 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -W + -Wold-style-definition -Wstrict-prototypes $(TRAMPOLINES_WARNING) \ + $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \ + $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \ +- $(if $($(*F)_no_Werror),,-Werror) \ + $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \ + $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \ + $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \ +@@ -101,7 +100,6 @@ AM_CXXFLAGS = -std=c++11 -Wall -Wshadow + $(TRAMPOLINES_WARNING) \ + $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \ + $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \ +- $(if $($(*F)_no_Werror),,-Werror) \ + $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \ + $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \ + $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \ diff --git a/patches/hppa_backend.diff b/patches/hppa_backend.diff new file mode 100644 index 0000000..658c4b2 --- /dev/null +++ b/patches/hppa_backend.diff @@ -0,0 +1,778 @@ +--- /dev/null ++++ b/backends/parisc_init.c +@@ -0,0 +1,73 @@ ++/* Initialization of PA-RISC specific backend library. ++ Copyright (C) 2002, 2005, 2006 Red Hat, Inc. ++ This file is part of Red Hat elfutils. ++ Written by Ulrich Drepper , 2002. ++ ++ Red Hat elfutils is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by the ++ Free Software Foundation; version 2 of the License. ++ ++ Red Hat elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with Red Hat elfutils; if not, write to the Free Software Foundation, ++ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. ++ ++ Red Hat elfutils is an included package of the Open Invention Network. ++ An included package of the Open Invention Network is a package for which ++ Open Invention Network licensees cross-license their patents. No patent ++ license is granted, either expressly or impliedly, by designation as an ++ included package. Should you wish to participate in the Open Invention ++ Network licensing program, please visit www.openinventionnetwork.com ++ . */ ++ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#define BACKEND parisc_ ++#define RELOC_PREFIX R_PARISC_ ++#include "libebl_CPU.h" ++#include "libebl_parisc.h" ++ ++/* This defines the common reloc hooks based on parisc_reloc.def. */ ++#include "common-reloc.c" ++ ++ ++const char * ++parisc_init (Elf *elf __attribute__ ((unused)), ++ GElf_Half machine __attribute__ ((unused)), ++ Ebl *eh, ++ size_t ehlen) ++{ ++ int pa64 = 0; ++ ++ /* Check whether the Elf_BH object has a sufficent size. */ ++ if (ehlen < sizeof (Ebl)) ++ return NULL; ++ ++ if (elf) { ++ GElf_Ehdr ehdr_mem; ++ GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem); ++ if (ehdr && (ehdr->e_flags & EF_PARISC_WIDE)) ++ pa64 = 1; ++ } ++ /* We handle it. */ ++ eh->name = "PA-RISC"; ++ parisc_init_reloc (eh); ++ HOOK (eh, reloc_simple_type); ++ HOOK (eh, machine_flag_check); ++ HOOK (eh, symbol_type_name); ++ HOOK (eh, segment_type_name); ++ HOOK (eh, section_type_name); ++ HOOK (eh, register_info); ++ if (pa64) ++ eh->return_value_location = parisc_return_value_location_64; ++ else ++ eh->return_value_location = parisc_return_value_location_32; ++ ++ return MODVERSION; ++} +--- /dev/null ++++ b/backends/parisc_regs.c +@@ -0,0 +1,159 @@ ++/* Register names and numbers for PA-RISC DWARF. ++ Copyright (C) 2005, 2006 Red Hat, Inc. ++ This file is part of Red Hat elfutils. ++ ++ Red Hat elfutils is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by the ++ Free Software Foundation; version 2 of the License. ++ ++ Red Hat elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with Red Hat elfutils; if not, write to the Free Software Foundation, ++ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. ++ ++ Red Hat elfutils is an included package of the Open Invention Network. ++ An included package of the Open Invention Network is a package for which ++ Open Invention Network licensees cross-license their patents. No patent ++ license is granted, either expressly or impliedly, by designation as an ++ included package. Should you wish to participate in the Open Invention ++ Network licensing program, please visit www.openinventionnetwork.com ++ . */ ++ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#include ++#include ++ ++#define BACKEND parisc_ ++#include "libebl_CPU.h" ++ ++ssize_t ++parisc_register_info (Ebl *ebl, int regno, char *name, size_t namelen, ++ const char **prefix, const char **setname, ++ int *bits, int *type) ++{ ++ int pa64 = 0; ++ ++ if (ebl->elf) { ++ GElf_Ehdr ehdr_mem; ++ GElf_Ehdr *ehdr = gelf_getehdr (ebl->elf, &ehdr_mem); ++ if (ehdr->e_flags & EF_PARISC_WIDE) ++ pa64 = 1; ++ } ++ ++ int nregs = pa64 ? 127 : 128; ++ ++ if (name == NULL) ++ return nregs; ++ ++ if (regno < 0 || regno >= nregs || namelen < 6) ++ return -1; ++ ++ *prefix = "%"; ++ ++ if (regno < 32) ++ { ++ *setname = "integer"; ++ *type = DW_ATE_signed; ++ if (pa64) ++ { ++ *bits = 64; ++ } ++ else ++ { ++ *bits = 32; ++ } ++ } ++ else if (regno == 32) ++ { ++ *setname = "special"; ++ if (pa64) ++ { ++ *bits = 6; ++ } ++ else ++ { ++ *bits = 5; ++ } ++ *type = DW_ATE_unsigned; ++ } ++ else ++ { ++ *setname = "FPU"; ++ *type = DW_ATE_float; ++ if (pa64) ++ { ++ *bits = 64; ++ } ++ else ++ { ++ *bits = 32; ++ } ++ } ++ ++ if (regno < 33) { ++ switch (regno) ++ { ++ case 0 ... 9: ++ name[0] = 'r'; ++ name[1] = regno + '0'; ++ namelen = 2; ++ break; ++ case 10 ... 31: ++ name[0] = 'r'; ++ name[1] = regno / 10 + '0'; ++ name[2] = regno % 10 + '0'; ++ namelen = 3; ++ break; ++ case 32: ++ *prefix = NULL; ++ name[0] = 'S'; ++ name[1] = 'A'; ++ name[2] = 'R'; ++ namelen = 3; ++ break; ++ } ++ } ++ else { ++ if (pa64 && ((regno - 72) % 2)) { ++ *setname = NULL; ++ return 0; ++ } ++ ++ switch (regno) ++ { ++ case 72 + 0 ... 72 + 11: ++ name[0] = 'f'; ++ name[1] = 'r'; ++ name[2] = (regno + 8 - 72) / 2 + '0'; ++ namelen = 3; ++ if ((regno + 8 - 72) % 2) { ++ name[3] = 'R'; ++ namelen++; ++ } ++ break; ++ case 72 + 12 ... 72 + 55: ++ name[0] = 'f'; ++ name[1] = 'r'; ++ name[2] = (regno + 8 - 72) / 2 / 10 + '0'; ++ name[3] = (regno + 8 - 72) / 2 % 10 + '0'; ++ namelen = 4; ++ if ((regno + 8 - 72) % 2) { ++ name[4] = 'R'; ++ namelen++; ++ } ++ break; ++ default: ++ *setname = NULL; ++ return 0; ++ } ++ } ++ name[namelen++] = '\0'; ++ return namelen; ++} +--- /dev/null ++++ b/backends/parisc_reloc.def +@@ -0,0 +1,128 @@ ++/* List the relocation types for PA-RISC. -*- C -*- ++ Copyright (C) 2005 Red Hat, Inc. ++ This file is part of Red Hat elfutils. ++ ++ Red Hat elfutils is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by the ++ Free Software Foundation; version 2 of the License. ++ ++ Red Hat elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with Red Hat elfutils; if not, write to the Free Software Foundation, ++ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. ++ ++ Red Hat elfutils is an included package of the Open Invention Network. ++ An included package of the Open Invention Network is a package for which ++ Open Invention Network licensees cross-license their patents. No patent ++ license is granted, either expressly or impliedly, by designation as an ++ included package. Should you wish to participate in the Open Invention ++ Network licensing program, please visit www.openinventionnetwork.com ++ . */ ++ ++/* NAME, REL|EXEC|DYN */ ++ ++RELOC_TYPE (NONE, EXEC|DYN) ++RELOC_TYPE (DIR32, REL|EXEC|DYN) ++RELOC_TYPE (DIR21L, REL|EXEC|DYN) ++RELOC_TYPE (DIR17R, REL) ++RELOC_TYPE (DIR17F, REL) ++RELOC_TYPE (DIR14R, REL|DYN) ++RELOC_TYPE (PCREL32, REL) ++RELOC_TYPE (PCREL21L, REL) ++RELOC_TYPE (PCREL17R, REL) ++RELOC_TYPE (PCREL17F, REL) ++RELOC_TYPE (PCREL14R, REL|EXEC) ++RELOC_TYPE (DPREL21L, REL) ++RELOC_TYPE (DPREL14WR, REL) ++RELOC_TYPE (DPREL14DR, REL) ++RELOC_TYPE (DPREL14R, REL) ++RELOC_TYPE (GPREL21L, 0) ++RELOC_TYPE (GPREL14R, 0) ++RELOC_TYPE (LTOFF21L, REL) ++RELOC_TYPE (LTOFF14R, REL) ++RELOC_TYPE (DLTIND14F, 0) ++RELOC_TYPE (SETBASE, 0) ++RELOC_TYPE (SECREL32, REL) ++RELOC_TYPE (BASEREL21L, 0) ++RELOC_TYPE (BASEREL17R, 0) ++RELOC_TYPE (BASEREL14R, 0) ++RELOC_TYPE (SEGBASE, 0) ++RELOC_TYPE (SEGREL32, REL) ++RELOC_TYPE (PLTOFF21L, 0) ++RELOC_TYPE (PLTOFF14R, 0) ++RELOC_TYPE (PLTOFF14F, 0) ++RELOC_TYPE (LTOFF_FPTR32, 0) ++RELOC_TYPE (LTOFF_FPTR21L, 0) ++RELOC_TYPE (LTOFF_FPTR14R, 0) ++RELOC_TYPE (FPTR64, 0) ++RELOC_TYPE (PLABEL32, REL|DYN) ++RELOC_TYPE (PCREL64, 0) ++RELOC_TYPE (PCREL22C, 0) ++RELOC_TYPE (PCREL22F, 0) ++RELOC_TYPE (PCREL14WR, 0) ++RELOC_TYPE (PCREL14DR, 0) ++RELOC_TYPE (PCREL16F, 0) ++RELOC_TYPE (PCREL16WF, 0) ++RELOC_TYPE (PCREL16DF, 0) ++RELOC_TYPE (DIR64, REL|DYN) ++RELOC_TYPE (DIR14WR, REL) ++RELOC_TYPE (DIR14DR, REL) ++RELOC_TYPE (DIR16F, REL) ++RELOC_TYPE (DIR16WF, REL) ++RELOC_TYPE (DIR16DF, REL) ++RELOC_TYPE (GPREL64, 0) ++RELOC_TYPE (GPREL14WR, 0) ++RELOC_TYPE (GPREL14DR, 0) ++RELOC_TYPE (GPREL16F, 0) ++RELOC_TYPE (GPREL16WF, 0) ++RELOC_TYPE (GPREL16DF, 0) ++RELOC_TYPE (LTOFF64, 0) ++RELOC_TYPE (LTOFF14WR, 0) ++RELOC_TYPE (LTOFF14DR, 0) ++RELOC_TYPE (LTOFF16F, 0) ++RELOC_TYPE (LTOFF16WF, 0) ++RELOC_TYPE (LTOFF16DF, 0) ++RELOC_TYPE (SECREL64, 0) ++RELOC_TYPE (BASEREL14WR, 0) ++RELOC_TYPE (BASEREL14DR, 0) ++RELOC_TYPE (SEGREL64, 0) ++RELOC_TYPE (PLTOFF14WR, 0) ++RELOC_TYPE (PLTOFF14DR, 0) ++RELOC_TYPE (PLTOFF16F, 0) ++RELOC_TYPE (PLTOFF16WF, 0) ++RELOC_TYPE (PLTOFF16DF, 0) ++RELOC_TYPE (LTOFF_FPTR64, 0) ++RELOC_TYPE (LTOFF_FPTR14WR, 0) ++RELOC_TYPE (LTOFF_FPTR14DR, 0) ++RELOC_TYPE (LTOFF_FPTR16F, 0) ++RELOC_TYPE (LTOFF_FPTR16WF, 0) ++RELOC_TYPE (LTOFF_FPTR16DF, 0) ++RELOC_TYPE (COPY, EXEC) ++RELOC_TYPE (IPLT, EXEC|DYN) ++RELOC_TYPE (EPLT, 0) ++RELOC_TYPE (TPREL32, DYN) ++RELOC_TYPE (TPREL21L, 0) ++RELOC_TYPE (TPREL14R, 0) ++RELOC_TYPE (LTOFF_TP21L, 0) ++RELOC_TYPE (LTOFF_TP14R, 0) ++RELOC_TYPE (LTOFF_TP14F, 0) ++RELOC_TYPE (TPREL64, 0) ++RELOC_TYPE (TPREL14WR, 0) ++RELOC_TYPE (TPREL14DR, 0) ++RELOC_TYPE (TPREL16F, 0) ++RELOC_TYPE (TPREL16WF, 0) ++RELOC_TYPE (TPREL16DF, 0) ++RELOC_TYPE (LTOFF_TP64, 0) ++RELOC_TYPE (LTOFF_TP14WR, 0) ++RELOC_TYPE (LTOFF_TP14DR, 0) ++RELOC_TYPE (LTOFF_TP16F, 0) ++RELOC_TYPE (LTOFF_TP16WF, 0) ++RELOC_TYPE (LTOFF_TP16DF, 0) ++RELOC_TYPE (TLS_DTPMOD32, DYN) ++RELOC_TYPE (TLS_DTPMOD64, DYN) ++ ++#define NO_RELATIVE_RELOC 1 +--- /dev/null ++++ b/backends/parisc_retval.c +@@ -0,0 +1,213 @@ ++/* Function return value location for Linux/PA-RISC ABI. ++ Copyright (C) 2005 Red Hat, Inc. ++ This file is part of Red Hat elfutils. ++ ++ Red Hat elfutils is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by the ++ Free Software Foundation; version 2 of the License. ++ ++ Red Hat elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with Red Hat elfutils; if not, write to the Free Software Foundation, ++ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. ++ ++ Red Hat elfutils is an included package of the Open Invention Network. ++ An included package of the Open Invention Network is a package for which ++ Open Invention Network licensees cross-license their patents. No patent ++ license is granted, either expressly or impliedly, by designation as an ++ included package. Should you wish to participate in the Open Invention ++ Network licensing program, please visit www.openinventionnetwork.com ++ . */ ++ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#include ++#include ++ ++#define BACKEND parisc_ ++#include "libebl_CPU.h" ++#include "libebl_parisc.h" ++ ++/* %r28, or pair %r28, %r29. */ ++static const Dwarf_Op loc_intreg32[] = ++ { ++ { .atom = DW_OP_reg28 }, { .atom = DW_OP_piece, .number = 4 }, ++ { .atom = DW_OP_reg29 }, { .atom = DW_OP_piece, .number = 4 }, ++ }; ++ ++static const Dwarf_Op loc_intreg[] = ++ { ++ { .atom = DW_OP_reg28 }, { .atom = DW_OP_piece, .number = 8 }, ++ { .atom = DW_OP_reg29 }, { .atom = DW_OP_piece, .number = 8 }, ++ }; ++#define nloc_intreg 1 ++#define nloc_intregpair 4 ++ ++/* %fr4L, or pair %fr4L, %fr4R on pa-32 */ ++static const Dwarf_Op loc_fpreg32[] = ++ { ++ { .atom = DW_OP_regx, .number = 72 }, { .atom = DW_OP_piece, .number = 4 }, ++ { .atom = DW_OP_regx, .number = 73 }, { .atom = DW_OP_piece, .number = 4 }, ++ }; ++#define nloc_fpreg32 2 ++#define nloc_fpregpair32 4 ++ ++/* $fr4 */ ++static const Dwarf_Op loc_fpreg[] = ++ { ++ { .atom = DW_OP_regx, .number = 72 }, ++ }; ++#define nloc_fpreg 1 ++ ++#if 0 ++/* The return value is a structure and is actually stored in stack space ++ passed in a hidden argument by the caller. Address of the location is stored ++ in %r28 before function call, but it may be changed by function. */ ++static const Dwarf_Op loc_aggregate[] = ++ { ++ { .atom = DW_OP_breg28 }, ++ }; ++#define nloc_aggregate 1 ++#endif ++ ++static int ++parisc_return_value_location_ (Dwarf_Die *functypedie, const Dwarf_Op **locp, int pa64) ++{ ++ Dwarf_Word regsize = pa64 ? 8 : 4; ++ ++ /* Start with the function's type, and get the DW_AT_type attribute, ++ which is the type of the return value. */ ++ ++ Dwarf_Attribute attr_mem; ++ Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type, &attr_mem); ++ if (attr == NULL) ++ /* The function has no return value, like a `void' function in C. */ ++ return 0; ++ ++ Dwarf_Die die_mem; ++ Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem); ++ int tag = dwarf_tag (typedie); ++ ++ /* Follow typedefs and qualifiers to get to the actual type. */ ++ while (tag == DW_TAG_typedef ++ || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type ++ || tag == DW_TAG_restrict_type) ++ { ++ attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); ++ typedie = dwarf_formref_die (attr, &die_mem); ++ tag = dwarf_tag (typedie); ++ } ++ ++ switch (tag) ++ { ++ case -1: ++ return -1; ++ ++ case DW_TAG_subrange_type: ++ if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) ++ { ++ attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); ++ typedie = dwarf_formref_die (attr, &die_mem); ++ tag = dwarf_tag (typedie); ++ } ++ /* Fall through. */ ++ ++ case DW_TAG_base_type: ++ case DW_TAG_enumeration_type: ++ case DW_TAG_pointer_type: ++ case DW_TAG_ptr_to_member_type: ++ { ++ Dwarf_Word size; ++ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, ++ &attr_mem), &size) != 0) ++ { ++ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) ++ size = 4; ++ else ++ return -1; ++ } ++ if (tag == DW_TAG_base_type) ++ { ++ Dwarf_Word encoding; ++ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, ++ &attr_mem), &encoding) != 0) ++ return -1; ++ ++ if (encoding == DW_ATE_float) ++ { ++ if (pa64) { ++ *locp = loc_fpreg; ++ if (size <= 8) ++ return nloc_fpreg; ++ } ++ else { ++ *locp = loc_fpreg32; ++ if (size <= 4) ++ return nloc_fpreg32; ++ else if (size <= 8) ++ return nloc_fpregpair32; ++ } ++ goto aggregate; ++ } ++ } ++ if (pa64) ++ *locp = loc_intreg; ++ else ++ *locp = loc_intreg32; ++ if (size <= regsize) ++ return nloc_intreg; ++ if (size <= 2 * regsize) ++ return nloc_intregpair; ++ ++ /* Else fall through. */ ++ } ++ ++ case DW_TAG_structure_type: ++ case DW_TAG_class_type: ++ case DW_TAG_union_type: ++ case DW_TAG_array_type: ++ aggregate: { ++ Dwarf_Word size; ++ if (dwarf_aggregate_size (typedie, &size) != 0) ++ return -1; ++ if (pa64) ++ *locp = loc_intreg; ++ else ++ *locp = loc_intreg32; ++ if (size <= regsize) ++ return nloc_intreg; ++ if (size <= 2 * regsize) ++ return nloc_intregpair; ++#if 0 ++ /* there should be some way to know this location... But I do not see it. */ ++ *locp = loc_aggregate; ++ return nloc_aggregate; ++#endif ++ /* fall through. */ ++ } ++ } ++ ++ /* XXX We don't have a good way to return specific errors from ebl calls. ++ This value means we do not understand the type, but it is well-formed ++ DWARF and might be valid. */ ++ return -2; ++} ++ ++int ++parisc_return_value_location_32 (Dwarf_Die *functypedie, const Dwarf_Op **locp) ++{ ++ return parisc_return_value_location_ (functypedie, locp, 0); ++} ++ ++int ++parisc_return_value_location_64 (Dwarf_Die *functypedie, const Dwarf_Op **locp) ++{ ++ return parisc_return_value_location_ (functypedie, locp, 1); ++} ++ +--- /dev/null ++++ b/backends/parisc_symbol.c +@@ -0,0 +1,113 @@ ++/* PA-RISC specific symbolic name handling. ++ Copyright (C) 2002, 2005 Red Hat, Inc. ++ This file is part of Red Hat elfutils. ++ Written by Ulrich Drepper , 2002. ++ ++ Red Hat elfutils is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by the ++ Free Software Foundation; version 2 of the License. ++ ++ Red Hat elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with Red Hat elfutils; if not, write to the Free Software Foundation, ++ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. ++ ++ Red Hat elfutils is an included package of the Open Invention Network. ++ An included package of the Open Invention Network is a package for which ++ Open Invention Network licensees cross-license their patents. No patent ++ license is granted, either expressly or impliedly, by designation as an ++ included package. Should you wish to participate in the Open Invention ++ Network licensing program, please visit www.openinventionnetwork.com ++ . */ ++ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#include ++#include ++ ++#define BACKEND parisc_ ++#include "libebl_CPU.h" ++ ++const char * ++parisc_segment_type_name (int segment, char *buf __attribute__ ((unused)), ++ size_t len __attribute__ ((unused))) ++{ ++ switch (segment) ++ { ++ case PT_PARISC_ARCHEXT: ++ return "PARISC_ARCHEXT"; ++ case PT_PARISC_UNWIND: ++ return "PARISC_UNWIND"; ++ default: ++ break; ++ } ++ return NULL; ++} ++ ++/* Return symbolic representation of symbol type. */ ++const char * ++parisc_symbol_type_name(int symbol, char *buf __attribute__ ((unused)), ++ size_t len __attribute__ ((unused))) ++{ ++ if (symbol == STT_PARISC_MILLICODE) ++ return "PARISC_MILLI"; ++ return NULL; ++} ++ ++/* Return symbolic representation of section type. */ ++const char * ++parisc_section_type_name (int type, ++ char *buf __attribute__ ((unused)), ++ size_t len __attribute__ ((unused))) ++{ ++ switch (type) ++ { ++ case SHT_PARISC_EXT: ++ return "PARISC_EXT"; ++ case SHT_PARISC_UNWIND: ++ return "PARISC_UNWIND"; ++ case SHT_PARISC_DOC: ++ return "PARISC_DOC"; ++ } ++ ++ return NULL; ++} ++ ++/* Check whether machine flags are valid. */ ++bool ++parisc_machine_flag_check (GElf_Word flags) ++{ ++ if (flags &~ (EF_PARISC_TRAPNIL | EF_PARISC_EXT | EF_PARISC_LSB | ++ EF_PARISC_WIDE | EF_PARISC_NO_KABP | ++ EF_PARISC_LAZYSWAP | EF_PARISC_ARCH)) ++ return 0; ++ ++ GElf_Word arch = flags & EF_PARISC_ARCH; ++ ++ return ((arch == EFA_PARISC_1_0) || (arch == EFA_PARISC_1_1) || ++ (arch == EFA_PARISC_2_0)); ++} ++ ++/* Check for the simple reloc types. */ ++Elf_Type ++parisc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, ++ int *addsub __attribute__ ((unused))) ++{ ++ switch (type) ++ { ++ case R_PARISC_DIR64: ++ case R_PARISC_SECREL64: ++ return ELF_T_XWORD; ++ case R_PARISC_DIR32: ++ case R_PARISC_SECREL32: ++ return ELF_T_WORD; ++ default: ++ return ELF_T_NUM; ++ } ++} +--- /dev/null ++++ b/backends/libebl_parisc.h +@@ -0,0 +1,9 @@ ++#ifndef _LIBEBL_HPPA_H ++#define _LIBEBL_HPPA_H 1 ++ ++#include ++ ++extern int parisc_return_value_location_32(Dwarf_Die *, const Dwarf_Op **locp); ++extern int parisc_return_value_location_64(Dwarf_Die *, const Dwarf_Op **locp); ++ ++#endif +--- a/backends/Makefile.am ++++ b/backends/Makefile.am +@@ -37,7 +37,7 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I + noinst_LIBRARIES = libebl_backends.a libebl_backends_pic.a + + modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \ +- tilegx m68k bpf riscv csky ++ tilegx m68k bpf riscv csky parisc + + i386_SRCS = i386_init.c i386_symbol.c i386_corenote.c i386_cfi.c \ + i386_retval.c i386_regs.c i386_auxv.c i386_syscall.c \ +@@ -49,6 +49,9 @@ x86_64_SRCS = x86_64_init.c x86_64_symbo + x86_64_retval.c x86_64_regs.c x86_64_syscall.c x86_64_initreg.c \ + x86_64_unwind.c x32_corenote.c + ++parisc_SRCS = parisc_init.c parisc_symbol.c parisc_regs.c parisc_retval.c ++libebl_parisc_pic_a_SOURCES = $(parisc_SRCS) ++am_libebl_parisc_pic_a_OBJECTS = $(parisc_SRCS:.c=.os) + + ia64_SRCS = ia64_init.c ia64_symbol.c ia64_regs.c ia64_retval.c + +--- a/libelf/elf.h ++++ b/libelf/elf.h +@@ -2182,16 +2182,24 @@ enum + #define R_PARISC_PCREL17F 12 /* 17 bits of rel. address. */ + #define R_PARISC_PCREL14R 14 /* Right 14 bits of rel. address. */ + #define R_PARISC_DPREL21L 18 /* Left 21 bits of rel. address. */ ++#define R_PARISC_DPREL14WR 19 ++#define R_PARISC_DPREL14DR 20 + #define R_PARISC_DPREL14R 22 /* Right 14 bits of rel. address. */ + #define R_PARISC_GPREL21L 26 /* GP-relative, left 21 bits. */ + #define R_PARISC_GPREL14R 30 /* GP-relative, right 14 bits. */ + #define R_PARISC_LTOFF21L 34 /* LT-relative, left 21 bits. */ + #define R_PARISC_LTOFF14R 38 /* LT-relative, right 14 bits. */ ++#define R_PARISC_DLTIND14F 39 ++#define R_PARISC_SETBASE 40 + #define R_PARISC_SECREL32 41 /* 32 bits section rel. address. */ ++#define R_PARISC_BASEREL21L 42 ++#define R_PARISC_BASEREL17R 43 ++#define R_PARISC_BASEREL14R 46 + #define R_PARISC_SEGBASE 48 /* No relocation, set segment base. */ + #define R_PARISC_SEGREL32 49 /* 32 bits segment rel. address. */ + #define R_PARISC_PLTOFF21L 50 /* PLT rel. address, left 21 bits. */ + #define R_PARISC_PLTOFF14R 54 /* PLT rel. address, right 14 bits. */ ++#define R_PARISC_PLTOFF14F 55 + #define R_PARISC_LTOFF_FPTR32 57 /* 32 bits LT-rel. function pointer. */ + #define R_PARISC_LTOFF_FPTR21L 58 /* LT-rel. fct ptr, left 21 bits. */ + #define R_PARISC_LTOFF_FPTR14R 62 /* LT-rel. fct ptr, right 14 bits. */ +@@ -2200,6 +2208,7 @@ enum + #define R_PARISC_PLABEL21L 66 /* Left 21 bits of fdesc address. */ + #define R_PARISC_PLABEL14R 70 /* Right 14 bits of fdesc address. */ + #define R_PARISC_PCREL64 72 /* 64 bits PC-rel. address. */ ++#define R_PARISC_PCREL22C 73 + #define R_PARISC_PCREL22F 74 /* 22 bits PC-rel. address. */ + #define R_PARISC_PCREL14WR 75 /* PC-rel. address, right 14 bits. */ + #define R_PARISC_PCREL14DR 76 /* PC rel. address, right 14 bits. */ +@@ -2225,6 +2234,8 @@ enum + #define R_PARISC_LTOFF16WF 102 /* 16 bits LT-rel. address. */ + #define R_PARISC_LTOFF16DF 103 /* 16 bits LT-rel. address. */ + #define R_PARISC_SECREL64 104 /* 64 bits section rel. address. */ ++#define R_PARISC_BASEREL14WR 107 ++#define R_PARISC_BASEREL14DR 108 + #define R_PARISC_SEGREL64 112 /* 64 bits segment rel. address. */ + #define R_PARISC_PLTOFF14WR 115 /* PLT-rel. address, right 14 bits. */ + #define R_PARISC_PLTOFF14DR 116 /* PLT-rel. address, right 14 bits. */ diff --git a/patches/hurd-hacks.diff b/patches/hurd-hacks.diff new file mode 100644 index 0000000..0758022 --- /dev/null +++ b/patches/hurd-hacks.diff @@ -0,0 +1,58 @@ +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -45,6 +45,10 @@ + #include + #include + ++#ifndef PATH_MAX ++#define PATH_MAX 1024 ++#endif ++ + /* We might be building a bootstrap dummy library, which is really simple. */ + #ifdef DUMMY_LIBDEBUGINFOD + +--- a/debuginfod/debuginfod.cxx ++++ b/debuginfod/debuginfod.cxx +@@ -32,6 +32,8 @@ + #include "config.h" + #endif + ++#include ++ + extern "C" { + #include "printversion.h" + #include "system.h" +@@ -40,7 +42,6 @@ extern "C" { + #include "debuginfod.h" + #include + +-#include + #ifdef __GNUC__ + #undef __attribute__ /* glibc bug - rhbz 1763325 */ + #endif +@@ -633,10 +634,10 @@ parse_opt (int key, char *arg, + argp_failure(state, 1, EINVAL, "inconsistent options with passive mode"); + break; + // case 'h': argp_state_help (state, stderr, ARGP_HELP_LONG|ARGP_HELP_EXIT_OK); +- default: return ARGP_ERR_UNKNOWN; ++ default: return (error_t) ARGP_ERR_UNKNOWN; + } + +- return 0; ++ return (error_t)0; + } + + +--- a/tests/backtrace.c ++++ b/tests/backtrace.c +@@ -40,6 +40,10 @@ + #endif + #include "system.h" + ++#ifndef PATH_MAX ++#define PATH_MAX 1024 ++#endif ++ + #ifndef __linux__ + + int diff --git a/patches/hurd_path.patch b/patches/hurd_path.patch new file mode 100644 index 0000000..4440e39 --- /dev/null +++ b/patches/hurd_path.patch @@ -0,0 +1,14 @@ +Index: elfutils-0.165/tests/run-native-test.sh +=================================================================== +--- elfutils-0.165.orig/tests/run-native-test.sh ++++ elfutils-0.165/tests/run-native-test.sh +@@ -83,6 +83,9 @@ native_test() + # "cannot attach to process: Function not implemented". + [ "$(uname)" = "GNU/kFreeBSD" ] && exit 77 + ++# hurd's /proc/$PID/maps does not give paths yet. ++[ "$(uname)" = "GNU" ] && exit 77 ++ + native_test ${abs_builddir}/allregs + native_test ${abs_builddir}/funcretval + diff --git a/patches/ignore_strmerge.diff b/patches/ignore_strmerge.diff new file mode 100644 index 0000000..1e6d7a2 --- /dev/null +++ b/patches/ignore_strmerge.diff @@ -0,0 +1,11 @@ +--- elfutils-0.165.orig/tests/run-strip-strmerge.sh ++++ elfutils-0.165/tests/run-strip-strmerge.sh +@@ -30,7 +30,7 @@ remerged=remerged.elf + tempfiles $merged $stripped $debugfile $remerged + + echo elflint $input +-testrun ${abs_top_builddir}/src/elflint --gnu $input ++testrun_on_self_skip ${abs_top_builddir}/src/elflint --gnu $input + echo elfstrmerge + testrun ${abs_top_builddir}/tests/elfstrmerge -o $merged $input + echo elflint $merged diff --git a/patches/kfreebsd-debuginfod b/patches/kfreebsd-debuginfod new file mode 100644 index 0000000..ffd7d88 --- /dev/null +++ b/patches/kfreebsd-debuginfod @@ -0,0 +1,23 @@ +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -77,7 +77,9 @@ void debuginfod_end (debuginfod_client * + #include + #include + #include ++#ifdef __linux__ + #include ++#endif + #include + #include + #include +@@ -108,6 +110,10 @@ libcurl_init(void) + curl_global_init(CURL_GLOBAL_DEFAULT); + } + ++#ifndef ETIME ++#define ETIME ETIMEDOUT /* Timer expired, fallback if not found in errno.h like on Linux */ ++#endif ++ + struct debuginfod_client + { + /* Progress/interrupt callback function. */ diff --git a/patches/kfreebsd-mremap-stub b/patches/kfreebsd-mremap-stub new file mode 100644 index 0000000..ecb4885 --- /dev/null +++ b/patches/kfreebsd-mremap-stub @@ -0,0 +1,17 @@ +--- a/libelf/elf_update.c ++++ b/libelf/elf_update.c +@@ -39,6 +39,14 @@ + + #include "libelfP.h" + ++#if defined(__FreeBSD_kernel__) || defined(__gnu_hurd__) ++void *mremap(void *old_address, size_t old_size, ++ size_t new_size, int flags, ... /* void *new_address */) ++{ ++ errno = ENOMEM; ++ return MAP_FAILED; ++} ++#endif + + static int64_t + write_file (Elf *elf, int64_t size, int change_bo, size_t shnum) diff --git a/patches/kfreebsd_path.patch b/patches/kfreebsd_path.patch new file mode 100644 index 0000000..9a19b58 --- /dev/null +++ b/patches/kfreebsd_path.patch @@ -0,0 +1,17 @@ +Index: b/tests/run-native-test.sh +=================================================================== +--- a/tests/run-native-test.sh ++++ b/tests/run-native-test.sh +@@ -77,6 +77,12 @@ native_test() + test $native -eq 0 || testrun "$@" -p $native > /dev/null + } + ++# On the Debian buildds, GNU/kFreeBSD linprocfs /proc/$PID/maps does ++# not give absolute paths due to sbuild's bind mounts (bug #570805) ++# therefore the next two test programs are expected to fail with ++# "cannot attach to process: Function not implemented". ++[ "$(uname)" = "GNU/kFreeBSD" ] && exit 77 ++ + native_test ${abs_builddir}/allregs + native_test ${abs_builddir}/funcretval + diff --git a/patches/mips_backend.diff b/patches/mips_backend.diff new file mode 100644 index 0000000..29b72c4 --- /dev/null +++ b/patches/mips_backend.diff @@ -0,0 +1,685 @@ +Index: elfutils-0.175/backends/mips_init.c +=================================================================== +--- /dev/null ++++ elfutils-0.175/backends/mips_init.c +@@ -0,0 +1,59 @@ ++/* Initialization of mips specific backend library. ++ Copyright (C) 2006 Red Hat, Inc. ++ This file is part of Red Hat elfutils. ++ ++ Red Hat elfutils is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by the ++ Free Software Foundation; version 2 of the License. ++ ++ Red Hat elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with Red Hat elfutils; if not, write to the Free Software Foundation, ++ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. ++ ++ Red Hat elfutils is an included package of the Open Invention Network. ++ An included package of the Open Invention Network is a package for which ++ Open Invention Network licensees cross-license their patents. No patent ++ license is granted, either expressly or impliedly, by designation as an ++ included package. Should you wish to participate in the Open Invention ++ Network licensing program, please visit www.openinventionnetwork.com ++ . */ ++ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#define BACKEND mips_ ++#define RELOC_PREFIX R_MIPS_ ++#include "libebl_CPU.h" ++ ++/* This defines the common reloc hooks based on mips_reloc.def. */ ++#include "common-reloc.c" ++ ++const char * ++mips_init (Elf *elf __attribute__ ((unused)), ++ GElf_Half machine __attribute__ ((unused)), ++ Ebl *eh, ++ size_t ehlen) ++{ ++ /* Check whether the Elf_BH object has a sufficent size. */ ++ if (ehlen < sizeof (Ebl)) ++ return NULL; ++ ++ /* We handle it. */ ++ if (machine == EM_MIPS) ++ eh->name = "MIPS R3000 big-endian"; ++ else if (machine == EM_MIPS_RS3_LE) ++ eh->name = "MIPS R3000 little-endian"; ++ ++ mips_init_reloc (eh); ++ HOOK (eh, reloc_simple_type); ++ HOOK (eh, return_value_location); ++ HOOK (eh, register_info); ++ ++ return MODVERSION; ++} +Index: elfutils-0.175/backends/mips_regs.c +=================================================================== +--- /dev/null ++++ elfutils-0.175/backends/mips_regs.c +@@ -0,0 +1,104 @@ ++/* Register names and numbers for MIPS DWARF. ++ Copyright (C) 2006 Red Hat, Inc. ++ This file is part of Red Hat elfutils. ++ ++ Red Hat elfutils is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by the ++ Free Software Foundation; version 2 of the License. ++ ++ Red Hat elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with Red Hat elfutils; if not, write to the Free Software Foundation, ++ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. ++ ++ Red Hat elfutils is an included package of the Open Invention Network. ++ An included package of the Open Invention Network is a package for which ++ Open Invention Network licensees cross-license their patents. No patent ++ license is granted, either expressly or impliedly, by designation as an ++ included package. Should you wish to participate in the Open Invention ++ Network licensing program, please visit www.openinventionnetwork.com ++ . */ ++ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#include ++#include ++ ++#define BACKEND mips_ ++#include "libebl_CPU.h" ++ ++ssize_t ++mips_register_info (Ebl *ebl __attribute__((unused)), ++ int regno, char *name, size_t namelen, ++ const char **prefix, const char **setname, ++ int *bits, int *type) ++{ ++ if (name == NULL) ++ return 66; ++ ++ if (regno < 0 || regno > 65 || namelen < 4) ++ return -1; ++ ++ *prefix = "$"; ++ ++ if (regno < 32) ++ { ++ *setname = "integer"; ++ *type = DW_ATE_signed; ++ *bits = 32; ++ if (regno < 32 + 10) ++ { ++ name[0] = regno + '0'; ++ namelen = 1; ++ } ++ else ++ { ++ name[0] = (regno / 10) + '0'; ++ name[1] = (regno % 10) + '0'; ++ namelen = 2; ++ } ++ } ++ else if (regno < 64) ++ { ++ *setname = "FPU"; ++ *type = DW_ATE_float; ++ *bits = 32; ++ name[0] = 'f'; ++ if (regno < 32 + 10) ++ { ++ name[1] = (regno - 32) + '0'; ++ namelen = 2; ++ } ++ else ++ { ++ name[1] = (regno - 32) / 10 + '0'; ++ name[2] = (regno - 32) % 10 + '0'; ++ namelen = 3; ++ } ++ } ++ else if (regno == 64) ++ { ++ *type = DW_ATE_signed; ++ *bits = 32; ++ name[0] = 'h'; ++ name[1] = 'i'; ++ namelen = 2; ++ } ++ else ++ { ++ *type = DW_ATE_signed; ++ *bits = 32; ++ name[0] = 'l'; ++ name[1] = 'o'; ++ namelen = 2; ++ } ++ ++ name[namelen++] = '\0'; ++ return namelen; ++} +Index: elfutils-0.175/backends/mips_reloc.def +=================================================================== +--- /dev/null ++++ elfutils-0.175/backends/mips_reloc.def +@@ -0,0 +1,79 @@ ++/* List the relocation types for mips. -*- C -*- ++ Copyright (C) 2006 Red Hat, Inc. ++ This file is part of Red Hat elfutils. ++ ++ Red Hat elfutils is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by the ++ Free Software Foundation; version 2 of the License. ++ ++ Red Hat elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with Red Hat elfutils; if not, write to the Free Software Foundation, ++ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. ++ ++ Red Hat elfutils is an included package of the Open Invention Network. ++ An included package of the Open Invention Network is a package for which ++ Open Invention Network licensees cross-license their patents. No patent ++ license is granted, either expressly or impliedly, by designation as an ++ included package. Should you wish to participate in the Open Invention ++ Network licensing program, please visit www.openinventionnetwork.com ++ . */ ++ ++/* NAME, REL|EXEC|DYN */ ++ ++RELOC_TYPE (NONE, 0) ++RELOC_TYPE (16, 0) ++RELOC_TYPE (32, 0) ++RELOC_TYPE (REL32, 0) ++RELOC_TYPE (26, 0) ++RELOC_TYPE (HI16, 0) ++RELOC_TYPE (LO16, 0) ++RELOC_TYPE (GPREL16, 0) ++RELOC_TYPE (LITERAL, 0) ++RELOC_TYPE (GOT16, 0) ++RELOC_TYPE (PC16, 0) ++RELOC_TYPE (CALL16, 0) ++RELOC_TYPE (GPREL32, 0) ++ ++RELOC_TYPE (SHIFT5, 0) ++RELOC_TYPE (SHIFT6, 0) ++RELOC_TYPE (64, 0) ++RELOC_TYPE (GOT_DISP, 0) ++RELOC_TYPE (GOT_PAGE, 0) ++RELOC_TYPE (GOT_OFST, 0) ++RELOC_TYPE (GOT_HI16, 0) ++RELOC_TYPE (GOT_LO16, 0) ++RELOC_TYPE (SUB, 0) ++RELOC_TYPE (INSERT_A, 0) ++RELOC_TYPE (INSERT_B, 0) ++RELOC_TYPE (DELETE, 0) ++RELOC_TYPE (HIGHER, 0) ++RELOC_TYPE (HIGHEST, 0) ++RELOC_TYPE (CALL_HI16, 0) ++RELOC_TYPE (CALL_LO16, 0) ++RELOC_TYPE (SCN_DISP, 0) ++RELOC_TYPE (REL16, 0) ++RELOC_TYPE (ADD_IMMEDIATE, 0) ++RELOC_TYPE (PJUMP, 0) ++RELOC_TYPE (RELGOT, 0) ++RELOC_TYPE (JALR, 0) ++RELOC_TYPE (TLS_DTPMOD32, 0) ++RELOC_TYPE (TLS_DTPREL32, 0) ++RELOC_TYPE (TLS_DTPMOD64, 0) ++RELOC_TYPE (TLS_DTPREL64, 0) ++RELOC_TYPE (TLS_GD, 0) ++RELOC_TYPE (TLS_LDM, 0) ++RELOC_TYPE (TLS_DTPREL_HI16, 0) ++RELOC_TYPE (TLS_DTPREL_LO16, 0) ++RELOC_TYPE (TLS_GOTTPREL, 0) ++RELOC_TYPE (TLS_TPREL32, 0) ++RELOC_TYPE (TLS_TPREL64, 0) ++RELOC_TYPE (TLS_TPREL_HI16, 0) ++RELOC_TYPE (TLS_TPREL_LO16, 0) ++ ++#define NO_COPY_RELOC 1 ++#define NO_RELATIVE_RELOC 1 +Index: elfutils-0.175/backends/mips_retval.c +=================================================================== +--- /dev/null ++++ elfutils-0.175/backends/mips_retval.c +@@ -0,0 +1,321 @@ ++/* Function return value location for Linux/mips ABI. ++ Copyright (C) 2005 Red Hat, Inc. ++ This file is part of Red Hat elfutils. ++ ++ Red Hat elfutils is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by the ++ Free Software Foundation; version 2 of the License. ++ ++ Red Hat elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with Red Hat elfutils; if not, write to the Free Software Foundation, ++ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. ++ ++ Red Hat elfutils is an included package of the Open Invention Network. ++ An included package of the Open Invention Network is a package for which ++ Open Invention Network licensees cross-license their patents. No patent ++ license is granted, either expressly or impliedly, by designation as an ++ included package. Should you wish to participate in the Open Invention ++ Network licensing program, please visit www.openinventionnetwork.com ++ . */ ++ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#include ++#include ++#include ++#include ++ ++#include "../libebl/libeblP.h" ++#include "../libdw/libdwP.h" ++ ++#define BACKEND mips_ ++#include "libebl_CPU.h" ++ ++/* The ABI of the file. Also see EF_MIPS_ABI2 above. */ ++#define EF_MIPS_ABI 0x0000F000 ++ ++/* The original o32 abi. */ ++#define E_MIPS_ABI_O32 0x00001000 ++ ++/* O32 extended to work on 64 bit architectures */ ++#define E_MIPS_ABI_O64 0x00002000 ++ ++/* EABI in 32 bit mode */ ++#define E_MIPS_ABI_EABI32 0x00003000 ++ ++/* EABI in 64 bit mode */ ++#define E_MIPS_ABI_EABI64 0x00004000 ++ ++/* All the possible MIPS ABIs. */ ++enum mips_abi ++ { ++ MIPS_ABI_UNKNOWN = 0, ++ MIPS_ABI_N32, ++ MIPS_ABI_O32, ++ MIPS_ABI_N64, ++ MIPS_ABI_O64, ++ MIPS_ABI_EABI32, ++ MIPS_ABI_EABI64, ++ MIPS_ABI_LAST ++ }; ++ ++/* Find the mips ABI of the current file */ ++enum mips_abi find_mips_abi(Elf *elf) ++{ ++ GElf_Ehdr ehdr_mem; ++ GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem); ++ ++ if (ehdr == NULL) ++ return MIPS_ABI_LAST; ++ ++ GElf_Word elf_flags = ehdr->e_flags; ++ ++ /* Check elf_flags to see if it specifies the ABI being used. */ ++ switch ((elf_flags & EF_MIPS_ABI)) ++ { ++ case E_MIPS_ABI_O32: ++ return MIPS_ABI_O32; ++ case E_MIPS_ABI_O64: ++ return MIPS_ABI_O64; ++ case E_MIPS_ABI_EABI32: ++ return MIPS_ABI_EABI32; ++ case E_MIPS_ABI_EABI64: ++ return MIPS_ABI_EABI64; ++ default: ++ if ((elf_flags & EF_MIPS_ABI2)) ++ return MIPS_ABI_N32; ++ } ++ ++ /* GCC creates a pseudo-section whose name describes the ABI. */ ++ size_t shstrndx; ++ if (elf_getshdrstrndx (elf, &shstrndx) < 0) ++ return MIPS_ABI_LAST; ++ ++ const char *name; ++ Elf_Scn *scn = NULL; ++ while ((scn = elf_nextscn (elf, scn)) != NULL) ++ { ++ GElf_Shdr shdr_mem; ++ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); ++ if (shdr == NULL) ++ return MIPS_ABI_LAST; ++ ++ name = elf_strptr (elf, shstrndx, shdr->sh_name) ?: ""; ++ if (strncmp (name, ".mdebug.", 8) != 0) ++ continue; ++ ++ if (strcmp (name, ".mdebug.abi32") == 0) ++ return MIPS_ABI_O32; ++ else if (strcmp (name, ".mdebug.abiN32") == 0) ++ return MIPS_ABI_N32; ++ else if (strcmp (name, ".mdebug.abi64") == 0) ++ return MIPS_ABI_N64; ++ else if (strcmp (name, ".mdebug.abiO64") == 0) ++ return MIPS_ABI_O64; ++ else if (strcmp (name, ".mdebug.eabi32") == 0) ++ return MIPS_ABI_EABI32; ++ else if (strcmp (name, ".mdebug.eabi64") == 0) ++ return MIPS_ABI_EABI64; ++ else ++ return MIPS_ABI_UNKNOWN; ++ } ++ ++ return MIPS_ABI_UNKNOWN; ++} ++ ++unsigned int ++mips_abi_regsize (enum mips_abi abi) ++{ ++ switch (abi) ++ { ++ case MIPS_ABI_EABI32: ++ case MIPS_ABI_O32: ++ return 4; ++ case MIPS_ABI_N32: ++ case MIPS_ABI_N64: ++ case MIPS_ABI_O64: ++ case MIPS_ABI_EABI64: ++ return 8; ++ case MIPS_ABI_UNKNOWN: ++ case MIPS_ABI_LAST: ++ default: ++ return 0; ++ } ++} ++ ++ ++/* $v0 or pair $v0, $v1 */ ++static const Dwarf_Op loc_intreg_o32[] = ++ { ++ { .atom = DW_OP_reg2 }, { .atom = DW_OP_piece, .number = 4 }, ++ { .atom = DW_OP_reg3 }, { .atom = DW_OP_piece, .number = 4 }, ++ }; ++ ++static const Dwarf_Op loc_intreg[] = ++ { ++ { .atom = DW_OP_reg2 }, { .atom = DW_OP_piece, .number = 8 }, ++ { .atom = DW_OP_reg3 }, { .atom = DW_OP_piece, .number = 8 }, ++ }; ++#define nloc_intreg 1 ++#define nloc_intregpair 4 ++ ++/* $f0 (float), or pair $f0, $f1 (double). ++ * f2/f3 are used for COMPLEX (= 2 doubles) returns in Fortran */ ++static const Dwarf_Op loc_fpreg_o32[] = ++ { ++ { .atom = DW_OP_regx, .number = 32 }, { .atom = DW_OP_piece, .number = 4 }, ++ { .atom = DW_OP_regx, .number = 33 }, { .atom = DW_OP_piece, .number = 4 }, ++ { .atom = DW_OP_regx, .number = 34 }, { .atom = DW_OP_piece, .number = 4 }, ++ { .atom = DW_OP_regx, .number = 35 }, { .atom = DW_OP_piece, .number = 4 }, ++ }; ++ ++/* $f0, or pair $f0, $f2. */ ++static const Dwarf_Op loc_fpreg[] = ++ { ++ { .atom = DW_OP_regx, .number = 32 }, { .atom = DW_OP_piece, .number = 8 }, ++ { .atom = DW_OP_regx, .number = 34 }, { .atom = DW_OP_piece, .number = 8 }, ++ }; ++#define nloc_fpreg 1 ++#define nloc_fpregpair 4 ++#define nloc_fpregquad 8 ++ ++/* The return value is a structure and is actually stored in stack space ++ passed in a hidden argument by the caller. But, the compiler ++ helpfully returns the address of that space in $v0. */ ++static const Dwarf_Op loc_aggregate[] = ++ { ++ { .atom = DW_OP_breg2, .number = 0 } ++ }; ++#define nloc_aggregate 1 ++ ++int ++mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) ++{ ++ /* First find the ABI used by the elf object */ ++ enum mips_abi abi = find_mips_abi(functypedie->cu->dbg->elf); ++ ++ /* Something went seriously wrong while trying to figure out the ABI */ ++ if (abi == MIPS_ABI_LAST) ++ return -1; ++ ++ /* We couldn't identify the ABI, but the file seems valid */ ++ if (abi == MIPS_ABI_UNKNOWN) ++ return -2; ++ ++ /* Can't handle EABI variants */ ++ if ((abi == MIPS_ABI_EABI32) || (abi == MIPS_ABI_EABI64)) ++ return -2; ++ ++ unsigned int regsize = mips_abi_regsize (abi); ++ if (!regsize) ++ return -2; ++ ++ /* Start with the function's type, and get the DW_AT_type attribute, ++ which is the type of the return value. */ ++ ++ Dwarf_Attribute attr_mem; ++ Dwarf_Attribute *attr = dwarf_attr_integrate (functypedie, DW_AT_type, &attr_mem); ++ if (attr == NULL) ++ /* The function has no return value, like a `void' function in C. */ ++ return 0; ++ ++ Dwarf_Die die_mem; ++ Dwarf_Die *typedie = dwarf_formref_die (attr, &die_mem); ++ int tag = dwarf_tag (typedie); ++ ++ /* Follow typedefs and qualifiers to get to the actual type. */ ++ while (tag == DW_TAG_typedef ++ || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type ++ || tag == DW_TAG_restrict_type) ++ { ++ attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); ++ typedie = dwarf_formref_die (attr, &die_mem); ++ tag = dwarf_tag (typedie); ++ } ++ ++ switch (tag) ++ { ++ case -1: ++ return -1; ++ ++ case DW_TAG_subrange_type: ++ if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) ++ { ++ attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); ++ typedie = dwarf_formref_die (attr, &die_mem); ++ tag = dwarf_tag (typedie); ++ } ++ /* Fall through. */ ++ ++ case DW_TAG_base_type: ++ case DW_TAG_enumeration_type: ++ case DW_TAG_pointer_type: ++ case DW_TAG_ptr_to_member_type: ++ { ++ Dwarf_Word size; ++ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, ++ &attr_mem), &size) != 0) ++ { ++ if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) ++ size = regsize; ++ else ++ return -1; ++ } ++ if (tag == DW_TAG_base_type) ++ { ++ Dwarf_Word encoding; ++ if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, ++ &attr_mem), &encoding) != 0) ++ return -1; ++ ++#define ABI_LOC(loc, regsize) ((regsize) == 4 ? (loc ## _o32) : (loc)) ++ ++ if (encoding == DW_ATE_float) ++ { ++ *locp = ABI_LOC(loc_fpreg, regsize); ++ if (size <= regsize) ++ return nloc_fpreg; ++ ++ if (size <= 2*regsize) ++ return nloc_fpregpair; ++ ++ if (size <= 4*regsize && abi == MIPS_ABI_O32) ++ return nloc_fpregquad; ++ ++ goto aggregate; ++ } ++ } ++ *locp = ABI_LOC(loc_intreg, regsize); ++ if (size <= regsize) ++ return nloc_intreg; ++ if (size <= 2*regsize) ++ return nloc_intregpair; ++ ++ /* Else fall through. Shouldn't happen though (at least with gcc) */ ++ } ++ ++ case DW_TAG_structure_type: ++ case DW_TAG_class_type: ++ case DW_TAG_union_type: ++ case DW_TAG_array_type: ++ aggregate: ++ /* XXX TODO: Can't handle structure return with other ABI's yet :-/ */ ++ if ((abi != MIPS_ABI_O32) && (abi != MIPS_ABI_O64)) ++ return -2; ++ ++ *locp = loc_aggregate; ++ return nloc_aggregate; ++ } ++ ++ /* XXX We don't have a good way to return specific errors from ebl calls. ++ This value means we do not understand the type, but it is well-formed ++ DWARF and might be valid. */ ++ return -2; ++} +Index: elfutils-0.175/backends/mips_symbol.c +=================================================================== +--- /dev/null ++++ elfutils-0.175/backends/mips_symbol.c +@@ -0,0 +1,53 @@ ++/* MIPS specific symbolic name handling. ++ Copyright (C) 2002, 2003, 2005 Red Hat, Inc. ++ This file is part of Red Hat elfutils. ++ Written by Jakub Jelinek , 2002. ++ ++ Red Hat elfutils is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by the ++ Free Software Foundation; version 2 of the License. ++ ++ Red Hat elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with Red Hat elfutils; if not, write to the Free Software Foundation, ++ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. ++ ++ Red Hat elfutils is an included package of the Open Invention Network. ++ An included package of the Open Invention Network is a package for which ++ Open Invention Network licensees cross-license their patents. No patent ++ license is granted, either expressly or impliedly, by designation as an ++ included package. Should you wish to participate in the Open Invention ++ Network licensing program, please visit www.openinventionnetwork.com ++ . */ ++ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#include ++#include ++ ++#define BACKEND mips_ ++#include "libebl_CPU.h" ++ ++/* Check for the simple reloc types. */ ++Elf_Type ++mips_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, ++ int *addsub __attribute__ ((unused))) ++{ ++ switch (type) ++ { ++ case R_MIPS_16: ++ return ELF_T_HALF; ++ case R_MIPS_32: ++ return ELF_T_WORD; ++ case R_MIPS_64: ++ return ELF_T_XWORD; ++ default: ++ return ELF_T_NUM; ++ } ++} +Index: elfutils-0.175/libebl/eblopenbackend.c +=================================================================== +--- elfutils-0.175.orig/libebl/eblopenbackend.c ++++ elfutils-0.175/libebl/eblopenbackend.c +@@ -71,6 +71,8 @@ static const struct + { "sparc", "elf_sparc", "sparc", 5, EM_SPARC, 0, 0 }, + { "sparc", "elf_sparcv8plus", "sparc", 5, EM_SPARC32PLUS, 0, 0 }, + { "s390", "ebl_s390", "s390", 4, EM_S390, 0, 0 }, ++ { "mips", "elf_mips", "mips", 4, EM_MIPS, 0, 0 }, ++ { "mips", "elf_mipsel", "mipsel", 4, EM_MIPS_RS3_LE, 0, 0 }, + + { "m32", "elf_m32", "m32", 3, EM_M32, 0, 0 }, + { "m68k", "elf_m68k", "m68k", 4, EM_68K, ELFCLASS32, ELFDATA2MSB }, +Index: elfutils-0.175/backends/Makefile.am +=================================================================== +--- elfutils-0.175.orig/backends/Makefile.am ++++ elfutils-0.175/backends/Makefile.am +@@ -33,13 +33,13 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I + + + modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \ +- tilegx m68k bpf riscv parisc ++ tilegx m68k bpf riscv parisc mips + libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \ + libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \ + libebl_aarch64_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \ + libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a \ + libebl_m68k_pic.a libebl_bpf_pic.a libebl_riscv_pic.a \ +- libebl_parisc_pic.a ++ libebl_parisc_pic.a libebl_mips_pic.a + noinst_LIBRARIES = $(libebl_pic) + noinst_DATA = $(libebl_pic:_pic.a=.so) + +@@ -141,6 +141,10 @@ parisc_SRCS = parisc_init.c parisc_symbo + libebl_parisc_pic_a_SOURCES = $(parisc_SRCS) + am_libebl_parisc_pic_a_OBJECTS = $(parisc_SRCS:.c=.os) + ++mips_SRCS = mips_init.c mips_symbol.c mips_regs.c mips_retval.c ++libebl_mips_pic_a_SOURCES = $(mips_SRCS) ++am_libebl_mips_pic_a_OBJECTS = $(mips_SRCS:.c=.os) ++ + libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) $(libeu) + @rm -f $(@:.so=.map) + $(AM_V_at)echo 'ELFUTILS_$(PACKAGE_VERSION) { global: $*_init; local: *; };' \ diff --git a/patches/mips_cfi.patch b/patches/mips_cfi.patch new file mode 100644 index 0000000..8dada52 --- /dev/null +++ b/patches/mips_cfi.patch @@ -0,0 +1,114 @@ +Description: Add MIPS ABI CFI callback +Author: Kurt Roeckx +Last-Update: 2018-12-30 + +Index: elfutils-0.175/backends/Makefile.am +=================================================================== +--- elfutils-0.175.orig/backends/Makefile.am ++++ elfutils-0.175/backends/Makefile.am +@@ -141,7 +141,7 @@ parisc_SRCS = parisc_init.c parisc_symbo + libebl_parisc_pic_a_SOURCES = $(parisc_SRCS) + am_libebl_parisc_pic_a_OBJECTS = $(parisc_SRCS:.c=.os) + +-mips_SRCS = mips_init.c mips_symbol.c mips_regs.c mips_retval.c ++mips_SRCS = mips_init.c mips_symbol.c mips_regs.c mips_retval.c mips_cfi.c + libebl_mips_pic_a_SOURCES = $(mips_SRCS) + am_libebl_mips_pic_a_OBJECTS = $(mips_SRCS:.c=.os) + +Index: elfutils-0.175/backends/mips_cfi.c +=================================================================== +--- /dev/null ++++ elfutils-0.175/backends/mips_cfi.c +@@ -0,0 +1,80 @@ ++/* MIPS ABI-specified defaults for DWARF CFI. ++ Copyright (C) 2018 Kurt Roeckx, Inc. ++ This file is part of elfutils. ++ ++ This file is free software; you can redistribute it and/or modify ++ it under the terms of either ++ ++ * the GNU Lesser General Public License as published by the Free ++ Software Foundation; either version 3 of the License, or (at ++ your option) any later version ++ ++ or ++ ++ * the GNU General Public License as published by the Free ++ Software Foundation; either version 2 of the License, or (at ++ your option) any later version ++ ++ or both in parallel, as here. ++ ++ elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received copies of the GNU General Public License and ++ the GNU Lesser General Public License along with this program. If ++ not, see . */ ++ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#include ++ ++#define BACKEND mips_ ++#include "libebl_CPU.h" ++ ++int ++mips_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info) ++{ ++ static const uint8_t abi_cfi[] = ++ { ++ /* Call-saved regs. */ ++ DW_CFA_same_value, ULEB128_7 (16), /* $16 */ ++ DW_CFA_same_value, ULEB128_7 (17), /* $17 */ ++ DW_CFA_same_value, ULEB128_7 (18), /* $18 */ ++ DW_CFA_same_value, ULEB128_7 (19), /* $19 */ ++ DW_CFA_same_value, ULEB128_7 (20), /* $20 */ ++ DW_CFA_same_value, ULEB128_7 (21), /* $21 */ ++ DW_CFA_same_value, ULEB128_7 (22), /* $22 */ ++ DW_CFA_same_value, ULEB128_7 (23), /* $23 */ ++ DW_CFA_same_value, ULEB128_7 (28), /* $28 */ ++ DW_CFA_same_value, ULEB128_7 (29), /* $29 */ ++ DW_CFA_same_value, ULEB128_7 (30), /* $30 */ ++ ++ DW_CFA_same_value, ULEB128_7 (52), /* $f20 */ ++ DW_CFA_same_value, ULEB128_7 (53), /* $f21 */ ++ DW_CFA_same_value, ULEB128_7 (54), /* $f22 */ ++ DW_CFA_same_value, ULEB128_7 (55), /* $f23 */ ++ DW_CFA_same_value, ULEB128_7 (56), /* $f24 */ ++ DW_CFA_same_value, ULEB128_7 (57), /* $f25 */ ++ DW_CFA_same_value, ULEB128_7 (58), /* $f26 */ ++ DW_CFA_same_value, ULEB128_7 (59), /* $f27 */ ++ DW_CFA_same_value, ULEB128_7 (60), /* $f28 */ ++ DW_CFA_same_value, ULEB128_7 (61), /* $f29 */ ++ DW_CFA_same_value, ULEB128_7 (62), /* $f30 */ ++ DW_CFA_same_value, ULEB128_7 (63), /* $f31 */ ++ ++ /* The CFA is the SP. */ ++ DW_CFA_def_cfa, ULEB128_7 (29), ULEB128_7 (0), ++ }; ++ ++ abi_info->initial_instructions = abi_cfi; ++ abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi]; ++ abi_info->data_alignment_factor = 4; ++ ++ abi_info->return_address_register = 31; /* $31 */ ++ ++ return 0; ++} +Index: elfutils-0.175/backends/mips_init.c +=================================================================== +--- elfutils-0.175.orig/backends/mips_init.c ++++ elfutils-0.175/backends/mips_init.c +@@ -50,6 +50,7 @@ mips_init (Elf *elf __attribute__ ((unus + HOOK (eh, reloc_simple_type); + HOOK (eh, return_value_location); + HOOK (eh, register_info); ++ HOOK (eh, abi_cfi); + + return MODVERSION; + } diff --git a/patches/mips_readelf_w.patch b/patches/mips_readelf_w.patch new file mode 100644 index 0000000..c888037 --- /dev/null +++ b/patches/mips_readelf_w.patch @@ -0,0 +1,22 @@ +From: Kurt Roeckx +Subject: Make readelf -w output debug information on mips +Bug-Debian: http://bugs.debian.org/662041 +Forwarded: not-needed + +Upstreams wants a change where this is handled by a hook that needs +to be filled in by the backend for the arch. + +Index: elfutils-0.175/src/readelf.c +=================================================================== +--- elfutils-0.175.orig/src/readelf.c ++++ elfutils-0.175/src/readelf.c +@@ -11133,7 +11133,8 @@ print_debug (Dwfl_Module *dwflmod, Ebl * + GElf_Shdr shdr_mem; + GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); + +- if (shdr != NULL && shdr->sh_type == SHT_PROGBITS) ++ if (shdr != NULL && ( ++ (shdr->sh_type == SHT_PROGBITS) || (shdr->sh_type == SHT_MIPS_DWARF))) + { + static const struct + { diff --git a/patches/remove-old-glibc-hack.diff b/patches/remove-old-glibc-hack.diff new file mode 100644 index 0000000..545a8e8 --- /dev/null +++ b/patches/remove-old-glibc-hack.diff @@ -0,0 +1,17 @@ +--- elfutils-0.182.orig/tests/dwfl-proc-attach.c ++++ elfutils-0.182/tests/dwfl-proc-attach.c +@@ -107,6 +107,7 @@ main (int argc __attribute__ ((unused)), + return (threads == 3) ? 0 : -1; + } + ++#if 0 + /* HACK. This is a simple workaround for a combination of old glibc + and valgrind. libdw will try to dlopen libdebuginfod this causes + some unsuppressable memory leak warnings when the process is +@@ -118,5 +119,6 @@ void *dlopen (void) + { + return NULL; + } ++#endif + + #endif /* __linux__ */ diff --git a/patches/riscv-retval-workaround.patch b/patches/riscv-retval-workaround.patch new file mode 100644 index 0000000..237aad1 --- /dev/null +++ b/patches/riscv-retval-workaround.patch @@ -0,0 +1,11 @@ +--- a/backends/riscv_retval.c ++++ b/backends/riscv_retval.c +@@ -111,7 +111,7 @@ + Dwarf_Die *arg1 __attribute__ ((unused))) + { + /* ??? */ +- return 1; ++ return 0; + } + + static int diff --git a/patches/series b/patches/series new file mode 100644 index 0000000..e8c7757 --- /dev/null +++ b/patches/series @@ -0,0 +1,19 @@ +#hppa_backend.diff +#arm_backend.diff +#mips_backend.diff +testsuite-ignore-elflint.diff +#mips_readelf_w.patch +#kfreebsd_path.patch +#0001-Ignore-differences-between-mips-machine-identifiers.patch +#0002-Add-support-for-mips64-abis-in-mips_retval.c.patch +#0003-Add-mips-n64-relocation-format-hack.patch +#hurd_path.patch +ignore_strmerge.diff +disable_werror.patch +#mips_cfi.patch +riscv-retval-workaround.patch +#disable-some-tests.diff +remove-old-glibc-hack.diff +kfreebsd-debuginfod +kfreebsd-mremap-stub +hurd-hacks.diff diff --git a/patches/testsuite-ignore-elflint.diff b/patches/testsuite-ignore-elflint.diff new file mode 100644 index 0000000..6a1ddcc --- /dev/null +++ b/patches/testsuite-ignore-elflint.diff @@ -0,0 +1,36 @@ +On many architectures this test fails because binaries/libs produced by +binutils don't pass elflint. However elfutils shouldn't FTBFS because of this. + +So we run the tests on all archs to see what breaks, but if it breaks we ignore +the result (exitcode 77 means: this test was skipped). + +--- a/tests/run-elflint-self.sh ++++ b/tests/run-elflint-self.sh +@@ -18,5 +18,5 @@ + + . $srcdir/test-subr.sh + +-testrun_on_self ${abs_top_builddir}/src/elflint --quiet --gnu-ld ++testrun_on_self_skip ${abs_top_builddir}/src/elflint --quiet --gnu-ld + testrun_on_self_compressed ${abs_top_builddir}/src/elflint --quiet --gnu-ld +--- a/tests/test-subr.sh ++++ b/tests/test-subr.sh +@@ -212,3 +212,18 @@ testrun_on_self_quiet() + # Only exit if something failed + if test $exit_status != 0; then exit $exit_status; fi + } ++ ++# Same as testrun_on_self(), but skip on failure. ++testrun_on_self_skip() ++{ ++ exit_status=0 ++ ++ for file in $self_test_files; do ++ testrun $* $file \ ++ || { echo "*** failure in $* $file"; exit_status=77; } ++ done ++ ++ # Only exit if something failed ++ if test $exit_status != 0; then exit $exit_status; fi ++} ++ diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..2cb80c3 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1 @@ +[type: gettext/rfc822deb] libdebuginfod-common.templates diff --git a/po/templates.pot b/po/templates.pot new file mode 100644 index 0000000..638ffc3 --- /dev/null +++ b/po/templates.pot @@ -0,0 +1,37 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the elfutils package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: elfutils\n" +"Report-Msgid-Bugs-To: elfutils@packages.debian.org\n" +"POT-Creation-Date: 2021-03-06 18:23-0500\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../libdebuginfod-common.templates:1001 +msgid "Connect to Debian's debuginfod server to download debug symbols?" +msgstr "" + +#. Type: boolean +#. Description +#: ../libdebuginfod-common.templates:1001 +msgid "" +"While debugging programs (with GDB, for example) or using debuginfo-consumer " +"applications, it is possible to connect to Debian's debuginfod server and " +"download the necessary debug information for the program you are debugging " +"on-the-fly, without the need to configure the debian-debug apt repository " +"nor installing any dbgsym packages. This service is maintained by Debian, " +"and the only information you will have to send to it is the Build-ID hash of " +"the program(s)/library(ies) being debugged." +msgstr "" diff --git a/rules b/rules new file mode 100755 index 0000000..b2093dd --- /dev/null +++ b/rules @@ -0,0 +1,181 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Copyright 2006, Kurt Roeckx + +# Based on the sample file from dh-make: +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +DISTRO = $(shell lsb_release -is) + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) + +ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) + confflags += --build=$(DEB_HOST_GNU_TYPE) --enable-maintainer-mode +else + confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) +endif + +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + USE_JOBS = -j$(NUMJOBS) +endif + +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/buildflags.mk + +# https://sourceware.org/pipermail/elfutils-devel/2020q2/002733.html +ifneq (,$(findstring -flto, $(CFLAGS))) + CFLAGS += -flto-partition=none -Wno-error=stack-usage= + CXXFLAGS += -flto-partition=none + LDFLAGS += -Wno-error=stack-usage= +endif +CFLAGS := $(patsubst -O%,-O3, $(CFLAGS)) +CXXFLAGS := $(patsubst -O%,-O3, $(CXXFLAGS)) + +# debuginfod configuration flags. +ifneq (,$(filter pkg.elfutils.nodebuginfod,$(DEB_BUILD_PROFILES))) + conf_debuginfod = \ + --disable-libdebuginfod \ + --disable-debuginfod +else + conf_debuginfod = \ + --enable-libdebuginfod \ + --enable-debuginfod + + ifeq ($(DISTRO),Debian) + conf_debuginfod += \ + --enable-debuginfod-urls="https://debuginfod.debian.net" + else ifeq ($(DISTRO),Ubuntu) + conf_debuginfod += \ + --enable-debuginfod-urls="https://debuginfod.ubuntu.com" + endif +endif + + +stamps/configure: + dh_testdir + dh_autoreconf + @mkdir -p stamps +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + ./configure --enable-maintainer-mode \ + --enable-libdebuginfod=dummy \ + --disable-debuginfod + $(MAKE) $(USE_JOBS) + $(MAKE) clean +endif + CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" \ + ./configure $(confflags) --prefix=/usr \ + --sysconfdir=/etc \ + --libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \ + --program-prefix=eu- --disable-silent-rules \ + $(conf_debuginfod) + touch $@ + +build: stamps/build +stamps/build: stamps/configure + dh_testdir + + $(MAKE) $(USE_JOBS) + +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) + # Check that those files exist. + -ls -l /proc/$$$$/maps + -ls -l /proc/$$$$/auxv + -ls -l /proc/$$$$/ + -LC_CTYPE=C $(MAKE) check $(USE_JOBS) || { cat tests/test-suite.log; exit 1; } + cat tests/test-suite.log +endif + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -rf stamps + [ ! -f Makefile ] || $(MAKE) distclean + dh_autoreconf_clean + dh_clean + +install: build + dh_testdir + dh_testroot + dh_prep + dh_installdirs + + # Add here commands to install the package into debian/tmp + $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp + # We do not provide a libebl anymore, use libdw instead. + rm -f debian/tmp/usr/include/elfutils/libebl.h + + dh_install --sourcedir=debian/tmp + rm -f debian/elfutils/usr/bin/debuginfod* + dh_missing --fail-missing --sourcedir=debian/tmp + +# Build architecture-independent files here. +build-indep: build +binary-indep: build-indep install + dh_testdir + dh_testroot + dh_installchangelogs -i ChangeLog + dh_installdocs -i + + dh_compress -i + dh_fixperms -i + dh_installdebconf -i + dh_installdeb -i + dh_gencontrol -i + dh_md5sums -i + dh_builddeb -i + +# We have nothing to do. + +# Build architecture-dependent files here. +build-arch: build +binary-arch: build-arch install + dh_testdir + dh_testroot + dh_installchangelogs -a ChangeLog + dh_installdocs -a ChangeLog + + : # FIXME: package those ... +# find debian/tmp -name '*debuginfod*' | xargs -r rm -f +# rm -f debian/tmp/usr/share/man/man1/eu-elfclassify.1 +# rm -f debian/tmp/usr/share/man/man1/eu-readelf.1 +# rm -f debian/tmp/usr/share/man/man3/elf_*.3 + + dh_dwz -a + dh_strip -a + dh_strip_nondeterminism -a + dh_compress -a + dh_fixperms -a + dpkg-gensymbols -Pdebian/libdw1/ -plibdw1 -c4 + dpkg-gensymbols -Pdebian/libasm1/ -plibasm1 -c4 + dpkg-gensymbols -Pdebian/libelf1/ -plibelf1 -c4 + dh_makeshlibs -plibelf1 -V "libelf1 (>= 0.132)" + dh_makeshlibs -plibasm1 -V "libasm1 (>= 0.132)" + dh_makeshlibs -plibdw1 -V "libdw1 (>= 0.138)" + dh_makeshlibs -plibdebuginfod1 + dh_installdebconf -a + dh_installdeb -a + dh_shlibdeps -a + dh_gencontrol -a + dh_md5sums -a + dh_builddeb -a + +binary: binary-indep binary-arch + +maint-unpatch: + bash debian/unpatch.sh debian/patches + +.PHONY: build clean binary-indep binary-arch binary install maint-unpatch diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/source/include-binaries b/source/include-binaries new file mode 100644 index 0000000..95a390b --- /dev/null +++ b/source/include-binaries @@ -0,0 +1 @@ +debian/upstream-signing-key.pgp diff --git a/upstream-signing-key.pgp b/upstream-signing-key.pgp new file mode 100644 index 0000000000000000000000000000000000000000..dee56c477d5e8b0e32033f69b3eb007ec9c71ed3 GIT binary patch literal 5236 zcma);WmFW5wuYG@hYl%+7)nyQTN;LL25@Lly1N7cDFKmgK@gBmNy(uVgkk6qkWT5i zo?7=?_pW>H`McNtwb%2!`^^LrV3^5EPXdV1+WXh%VAri~0syPIZ66z-@2{^0YLGgs zE3H4@lTGoSLbCEL%70)B#rv?rANxI#+F6?1P9#C?7MB}wOvBq#CU?q5B`7~CA>PPl( zyQnw(IrzE?G2By zU!;y$G~aD$?^`ACIpz-kq>%s%+vr8YRGwrQ=SSyoA!s|{G3)P&0PmvY6`YVSyo*yq z!EZ+~BQuxsLhml+t+P>t)R>7Gq07V(CA?^41~Upl-f)233WRC0^0w&ut{X>_n>4EC zG-bsJ4IC}v)T6sJ+OE4-H&t?k(l&&rJQm_(NOxcsJ zu;F_P340-YXW6{5(=L^ncXWf)wK}-E`!K;{M81tveK=fivk=KVi$|FKnsLGruKY5o zw!?NsXh6Uo@q@d-s0Mp|1$BxkcHNe_#|m3Q|5_$7Kk@?mf=iV1N=atoAYr|e1z@!M zeT~*sj6(YNZE&|-2qbttcB1;H*mrVzPt*$J!{w8~jn`gVyBaW_*z0oH986f^-A_x` zxE_F-gva1V^-9EprbB`Kx5nJ@4Kxw}8lVBJVd>!rF?wO^WNGPP1Cexo=__mR;?3>q zVK4m#sEI)az(o_KV8GauypK5_#*XpTGNXN54Bb>+^1;OfnrU3?0l@%FJP-~x5Q`ia zgo6jfpa7x+fOG&LWf&SRi1=U2LN3H;m5DzUH#t`0VEsHq{hjJww^q+gT|<;k+$}QK z;svBuagwrfoJ%!y8B)rab>=DGtwHO_-^Xx2fn!Qyck9VGd&zSiYv$Jmy(~d9GJT11 zIkT_PFOg&i-XpWqcxun5Ff&V1Go48pIoaZWaB=Fel^DI6ij9EM-Z^K%@k=f@?xoBQ z)@+f2s)R_nK*P+QPRT50WNi4Fv207ds=Y#J%NNDq--xFjmyV?6?2ko#;eGG$ufE6( zp1*2+V}VbfC|`sce~*%oZO2ZH4;w@|e0J=U&~G%(O5jR-l!p`XaUp#CB|hWUy99{> zd2a;yr~2`>mgTQ;VLxxE0xpb}9*>q^Bppg~3hOR6z_n)LZsH;WtL{P++`gaW<2dhq zjKXQI5=*J=5?N}UdX6YGS`Oc*WRRKDf-0-NhWBro1Hy^soFph|XRAq44xc6RN7&yi zZw2BE)U~;gj8KOkA5P>e?_}-Fu|}a+v6`#B0pBjJLm7 znxz-)am*%3O-wp&Vl>;^`6bBB5a{lY_MAkBqSf$tZ@bL@V3fSQ@=ZqVRW^+pWAL5y zux7N7yJ{>fP!urBdmKo7lBsS_)a?3 z^8i^G^Of-0o0t-;d~%stG{pwG|4G{)_+%ZOT%Fzi37pQ~fs^<*O#K@cZ!&?@fWI=g z-a+)B7*{m@S*ysxZ<$f6MhkHgX>Kftu~ih+YTDkl3NjLnkIhmXeNdjGH#QNpzx<@z z;zdr^^GlZNt3WG?l9cAahe)lMUf01#Lpcd`75-~pQ-F1x=&A^|2gej+1q&(F7kA<{H?r>7blZ3n^A4C09%L zzS-nT$w&GnkvVJV${{{Z1-7w^wA=kekkT>)4UA|~3pR^4n_hSce(skz%=EO{+RaZpLrV4H`*TO^7sxH6ubxR1>^yIwK1Mcbt@65SH z1*7;d=;gcuq^{iZyz`bgpRFb5f$AMdS*rBj!@uaypmSDNc-KD;9J`XD^ z=Q+=`-mVy_?u*G81J@TbiipeVoIee3ol|-n40w=k6`=V15{%u@OT-6(YZC7&R7?F5w2BBe-9uk>O*Rt=+ic#|J$HPa9S9}dB`B@B_ZlHJtZ3zzM z*3OpDEoXeB7Acz?$<^@Yr8s%}sdQW^`aopcDb%J)GKCUoI51p$Gj)?}`+}DZew&Fi zirdp?r4&p+9E8mJp)n!%M3qil5BW^#xZ1uKh|};kC`^yq5wE3BZ7%m_O5$qgmxdLBlxO?n{PU2pMhyNreEj5jdgcjPsev& z+a~&qf)~woC$x>&gf|DppUUh{Z}>~pvtdy{Z&EVOi3F(JHQJQ(biGvcI#fZDJ!$wt zf1zJX42%ljw;aEz4oPTg1^lgIeW3>6pf&y`5T3dJskukR33%dC4BW!obdo1qGjf$j zP=Mqxc~E41<82W0$9aML^*g)h9OdK+J9BTQvv3w-4_!V!uOgWC?cwafkRAJ-f&%DF zsa+PCiQ3aD6#P<=^G+#z372QX>1?-&Q{DFqw8}3$pxLJ7C(xB93?>X#vE>VF5)PYu zR6|SGJ*dLbw@aFMNoK)gP1G`&&P`_3FiBp`&So=&`B|QZ|LbmNtKddi(EcOB>HU&~ z?X8naErn)H1A9UBjIuh>x~aG$d@KTOre2=+P5impT^4leNA;AjVnX*=8@2ay>1k|C zUw5@wpvF19S-1_`{@>0D#zbIG^^N{sG2Q@$F{u8u2+04P+<&eG1mpizq?~r52j_|~ z?L{+A{BN~G-FTlIQ7ShNKs>UYN3L=`3)`_?kD#7c*Zq=>pZD8K_}hmW=bWmaHBm&* z^r|NyJdLF-OK^EoK3fgtD)eQiq9QQv&*k>-t^Ba%yu)E1mA5(_-VKamAxgQ5y(Ao1RPVHHf$sFP78A2F9TV>Zqs%pl`TAvaN{7^+0M!v7_6< zhAyIkZKWY8^o?S@fX9(h-zBN{0}I6?s*U(|9NHxu(6Wio}6kGVU+EEU=$y3O>(BDM|8eE$@w`Hx7Sm_$wK zh&zvBLJ^fWd7E4rW`4BA+>6u7RX@m+8b+`=H_X{PB&tvv4%+nL24P+3)3kZN-yuZu zmml>Es>sGNSf&ns!Ih5?`()SmHn#g#e!jEw5Ng)H%%g0n+6no_NfZ$3V9NzMR!$ty z&0UZ>ff!uzF!&?6`ayC>mgXBf;W3(SxVB7HH~F_ye#T!Lmxsz1A_{WR17WmekWSmA zhbM_IPZjEX!1EX1lw}ck>ZwCg&Q^-%VVv=BEJ;lP+>hy#$17ecC2$1Y*r*npLb0qg z(?x9YL24havawI#c4j+97fFwA{|mp-)}NLTYs`ksk(Tdfo7QpWpAVw{AriXN|1VNA z5DWy!{&(%}_JUwg|FMtukA0**v1$G$NyGsJJj=I6>!X#ZEWbY;Uj9q--_-lp1bTq| z;8TV;&qVhHd1>p2*^TMxGuO%Xihd`I{Jf+VQHl0ub{X`P%aD9^ll0|ohTe}%->&LcGm2q>I=V_t1CJsUC>j`H?lk0a zv^=b2wC*czeyx#e3$cc3#N?STBoZNHR4M%y$?rczehnIH8|CykJx&t2>z?HW&90fo z45}>C((#>wdddYe#~XxZ_&)a?;3Y(%rO!qCDYSj-_qzi< zVzfFnj`hTn`aF)?IHTu@A36v%9c7-jrt2+d$FrU814-LNRo2?FCf}^f^THI}jgyZ) zU~L&XsChh~U-f7vrByvf-e8T_AX>w{zOlr6Jq` z@ry7q2%UY6xL;O;g_Zn`w*|FgbFR3gXwY^tM_Ssv;tH4LF*hdmv!D#akMxFiKzYOO z*xLB8*s{v@@8F4e9S9yD{IoU~ot8+;s6Lm!)BKi%^s#p-UE&W`v?w}~5wjoWEL0h!8ak5Xn;}?bBYmijmdYj9KFs0zxF8 zGZG6pyt-;CIoKMLzo|j>9aHjKB7PJo20rm|#D`r!q5=7ZHNz?!->zeagya_fb?MP$!XNT8V}sHnQwRaTRN$l8P!KDms+6 zz2Y@tjIxA>f&DjzA@W$wz0%R93arfPHgi3KwzKzFC=VQ46U(u5dcGqO80o5^d1`N~ z!4CD1oxgb@RPI-1@C6sdFJJMe-M0?zp?8eK_qNk=0B<_@wW{cpyC58Ez14)P1ZOGEat<0 zee>$BGJ^;YESK09KTGaEc2;f`ubCiq2|qv*I(MO>Gc60roSk}wBhdY~sQikjiy37S zb;t@ohGhF&7CO|6XDZeoet+V&41h$-$REq5Ry3sv&<6}Z3EyT^InL`2t&svwrK9)hA~!1vcbspDR7<)UWn-X^C2!|8^2%NebzpTXXpVj2E&nIWJA^>7RRY>iHl4 z@wOr$81mOYPESqr;Ks4W@`8-?54CtWN>b(Nwq=g2RZ`X}h?T5Qk1EdZG%eXYqxM@0 z6|f`UelZ!Rw!mtoj?fSH&OM|Xa|u$l4?fV5#Wg2%_4O_hQ@QJiQK@FZSBr;xlN{5B zm_Mzi@ob>_#FT$dwEY-5$SP!X`XNohlxM-WfHdmNfM$Fa1z5O#0kflEz&hLS=FaNy zvaB&JvXG@R713ubeZ@5d}lS{7NAY!jshYwGhZiQRjt z^C1>NF)A|U@W+M0Iyz@9Frby9jSkzi?^4nw+gb9go_HJ7R4)T*6s%5T9heX$j+B7U zcn+GZe%0c{Vc?`(K45;OmR5zB8XkoQ^b<%}O`r!xG(Ah=U9&k1hZGYvpVy#Isb3>u zQw|=%xXc(-om~SDF=hE|(LY{(=>4GAy}4(bfN~iMMKgj>(V;G}0 zTYp`>P?9xcw`E9>vDYgi)`#_yWiHGlWJnmC7b=HQNN1IrcRP&sO)128@~(P#FYvPV zT-G(8sOouQCPqbygC|9M*9sYwqq@{LPSU_1B%R|cj(tJ+ia)PhgHq`zG&l8U3`hkD z5;@*Q$AN(jI;}l=0~;F8#%T0J_DPh>7t({yA2Y^tpEu6TT|R=FsxE{a)6{8czd1{t InMd{i7bo(W&;S4c literal 0 HcmV?d00001 diff --git a/watch b/watch new file mode 100644 index 0000000..ced214e --- /dev/null +++ b/watch @@ -0,0 +1,7 @@ +# Watch control file for uscan +# See uscan(1) for format + +# Compulsory line, this is a version 3 file +version=3 + +opts=pgpsigurlmangle=s/$/.sig/ https://sourceware.org/elfutils/ftp/(\d.\d*)/elfutils-(.*).tar.bz2 -- 2.30.2