elfutils (0.187-2) unstable; urgency=medium
authorSergio Durigan Junior <sergiodj@debian.org>
Fri, 2 Sep 2022 21:11:29 +0000 (22:11 +0100)
committerSergio Durigan Junior <sergiodj@debian.org>
Fri, 2 Sep 2022 21:11:29 +0000 (22:11 +0100)
  * 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 наб <nabijaczleweli@nabijaczleweli.xyz> (Closes: #987787)

[dgit import unpatched elfutils 0.187-2]

51 files changed:
1  2 
debian/changelog
debian/compat
debian/control
debian/copyright
debian/debuginfod.install
debian/docs
debian/elfutils.install
debian/libasm-dev.install
debian/libasm1.install
debian/libasm1.symbols
debian/libdebuginfod-common.config
debian/libdebuginfod-common.install
debian/libdebuginfod-common.postinst
debian/libdebuginfod-common.postrm
debian/libdebuginfod-common.templates
debian/libdebuginfod-dev.install
debian/libdebuginfod1.install
debian/libdebuginfod1.symbols
debian/libdw-dev.install
debian/libdw1.install
debian/libdw1.symbols
debian/libelf-dev.install
debian/libelf1.install
debian/libelf1.symbols
debian/patches/0001-Ignore-differences-between-mips-machine-identifiers.patch
debian/patches/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch
debian/patches/0003-Add-mips-n64-relocation-format-hack.patch
debian/patches/arm_backend.diff
debian/patches/disable-some-tests.diff
debian/patches/disable_werror.patch
debian/patches/hppa_backend.diff
debian/patches/hurd-hacks.diff
debian/patches/hurd_path.patch
debian/patches/ignore_strmerge.diff
debian/patches/kfreebsd-debuginfod
debian/patches/kfreebsd-mremap-stub
debian/patches/kfreebsd_path.patch
debian/patches/mips_backend.diff
debian/patches/mips_cfi.patch
debian/patches/mips_readelf_w.patch
debian/patches/remove-old-glibc-hack.diff
debian/patches/riscv-retval-workaround.patch
debian/patches/series
debian/patches/testsuite-ignore-elflint.diff
debian/po/POTFILES.in
debian/po/templates.pot
debian/rules
debian/source/format
debian/source/include-binaries
debian/upstream-signing-key.pgp
debian/watch

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..019fe2b253206ccbdef696f61074c04f81b12e67
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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 наб <nabijaczleweli@nabijaczleweli.xyz> (Closes: #987787)
++
++ -- Sergio Durigan Junior <sergiodj@debian.org>  Fri, 02 Sep 2022 17:11:29 -0400
++
++elfutils (0.187-1) unstable; urgency=medium
++
++  * New upstream release.
++
++ -- Matthias Klose <doko@debian.org>  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 <lukasz.zemczak@ubuntu.com>  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 <doko@debian.org>  Wed, 17 Nov 2021 21:49:08 +0100
++
++elfutils (0.185-2) unstable; urgency=medium
++
++  * Upload to unstable.
++
++ -- Matthias Klose <doko@debian.org>  Sun, 15 Aug 2021 18:27:02 +0200
++
++elfutils (0.185-1) experimental; urgency=medium
++
++  * New upstream release.
++  * Refresh patches.
++
++ -- Matthias Klose <doko@debian.org>  Tue, 25 May 2021 20:31:36 +0200
++
++elfutils (0.184-1) experimental; urgency=medium
++
++  * New upstream release.
++
++ -- Matthias Klose <doko@debian.org>  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 <doko@debian.org>  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 <doko@debian.org>  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 <sergiodj@debian.org>  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 <sergiodj@debian.org>  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 <doko@debian.org>  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 <sergiodj@debian.org>  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 <asm/ptrace.h>.
++    - NEWS and version, and copyright updates.
++
++ -- Matthias Klose <doko@debian.org>  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 <doko@debian.org>  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 <doko@debian.org>  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 <doko@debian.org>  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 <doko@debian.org>  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 <doko@debian.org>  Sat, 07 Nov 2020 10:22:37 +0100
++
++elfutils (0.181-1) unstable; urgency=medium
++
++  * New upstream release.
++
++ -- Matthias Klose <doko@debian.org>  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 <doko@debian.org>  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 <merker@debian.org>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <helmut@subdivi.de>  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 <doko@debian.org>  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 <helmut@subdivi.de>  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 <andreas@fatal.se>  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 <doko@debian.org>  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 <kurt@roeckx.be>  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 <doko@debian.org>  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 <!nocheck> profile.
++  * Update reference to new sourceware.org home.
++
++ -- Matthias Klose <doko@debian.org>  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 <jrtc27@jrtc27.com>  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 <jrtc27@jrtc27.com>  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 <kurt@roeckx.be>  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 <sthibault@debian.org> 
++    (Closes: #682101)
++  * Make cross compilation actually work.  Patch from Helmut Grohne
++    <helmut@subdivi.de>  (Closes: #818099)
++  * Add libebl.a to libdw-dev (Closes: #825747, #647918)
++  * Ignore strmerge test failured, needed on at least mips.  Patch
++    from Jurica Stanojkovic <Jurica.Stanojkovic@imgtec.com>
++    (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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <doko@debian.org>  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 <kurt@roeckx.be>  Sat, 08 Aug 2015 15:12:31 +0200
++
++elfutils (0.163-4) unstable; urgency=medium
++
++  * More fixes for kfreebsd and hurd
++
++ -- Kurt Roeckx <kurt@roeckx.be>  Tue, 21 Jul 2015 11:39:55 +0000
++
++elfutils (0.163-3) unstable; urgency=medium
++
++  * Fix build failures on kfreebsd and hurd
++
++ -- Kurt Roeckx <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <mgilbert@asachi.debian.org>  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 <mgilbert@debian.org>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  Tue, 24 Jun 2014 22:14:25 +0200
++
++elfutils (0.159-2) unstable; urgency=medium
++
++  * Add patches from Mark Wielaard <mjw@redhat.com> to make
++    things work on armhf.
++  * Build-Depends on libc6-dbg on arm* to make the backtrace
++    tests work instead of skip.
++
++ -- Kurt Roeckx <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  Tue, 18 Sep 2012 21:12:08 +0200
++
++elfutils (0.153-1) unstable; urgency=low
++
++  [ Jonathan Nieder <jrnieder@gmail.com> ]
++  * 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 <marcin.juszkiewicz@linaro.org> ]
++  * 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 <tg@mirbsd.de> (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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  Thu, 17 Jun 2010 18:38:27 +0200
++
++elfutils (0.147-1) unstable; urgency=low
++
++  * New upstream release
++
++ -- Kurt Roeckx <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <aurel32@debian.org> to support
++    GNU/kFreeBSD  (Closes: #452428)
++
++ -- Kurt Roeckx <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <eugeniy.meshcheryakov@googlemail.com>
++  * Add backend support for hppa, thanks to
++    Eugeniy Meshcheryakov <eugeniy.meshcheryakov@googlemail.com>
++  * 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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  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 <kurt@roeckx.be>  Fri,  4 Aug 2006 19:38:32 +0000
++
++elfutils (0.122-1) unstable; urgency=low
++
++  * Initial release (Closes: #368248)
++
++ -- Kurt Roeckx <kurt@roeckx.be>  Sun, 21 May 2006 15:03:01 +0000
++
diff --cc debian/compat
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b4de3947675361a7770d29b8982c407b0ec6b2a0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++11
diff --cc debian/control
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b47dc7f71f2cb5054988189447461655ec35de5c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,167 @@@
++Source: elfutils
++Priority: optional
++Maintainer: Debian Elfutils Maintainers <debian-gcc@lists.debian.org>
++Uploaders: Kurt Roeckx <kurt@roeckx.be>,
++  Matthias Klose <doko@debian.org>,
++  Sergio Durigan Junior <sergiodj@debian.org>,
++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] <!nocheck>,
++  libc6-dbg [powerpc powerpcspe ppc64 ppc64el armel armhf arm64 sparc64 riscv64],
++  flex, bison,
++  pkg-config,
++  libarchive-dev <!pkg.elfutils.nodebuginfod>,
++  libmicrohttpd-dev <!pkg.elfutils.nodebuginfod>, libcurl4-gnutls-dev <!pkg.elfutils.nodebuginfod>, libsqlite3-dev <!pkg.elfutils.nodebuginfod>,
++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: <!pkg.elfutils.nodebuginfod>
++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: <!pkg.elfutils.nodebuginfod>
++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: <!pkg.elfutils.nodebuginfod>
++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: <!pkg.elfutils.nodebuginfod>
++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.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c0603db5451419ceb8f485d2cbaf8efa7c8af4b7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++This package was debianized by Kurt Roeckx <kurt@roeckx.be> 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 <drepper@redhat.com>
++   Jeff Johnson <jbj@redhat.com>
++   Alexander Larsson
++   Jakub Jelinek <jakub@redhat.com>
++   Roland McGrath <roland@redhat.com>
++
++
++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 <http://www.gnu.org/licenses/>.  */
++
++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 <http://www.gnu.org/licenses/>.  */
++
++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'.
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..344d74047240cfcc07b565093a1a28319e483492
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++usr/bin/debuginfod
++usr/bin/debuginfod-find
++usr/share/man/man1/debuginfod-find.1
++usr/share/man/man8/debuginfod.8
diff --cc debian/docs
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5502ed8f40fc4c37d8385e57c16b8d2642ecff18
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++NEWS
++README
++TODO
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..407593fe6cc26d1d4633b1b0a60c41d1ddc84638
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++usr/bin
++usr/share/man/man1/eu-elfclassify.1
++usr/share/man/man1/eu-readelf.1
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7c0a96014ddf8fc1519dfa3abda2b7f2cf111b7e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++usr/include/elfutils/libasm.h
++usr/lib/*/libasm.a
++usr/lib/*/libasm.so
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..aa35d27953e94b20880321a091a9bd748aa2381b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++usr/lib/*/libasm.so.1
++usr/lib/*/libasm-*.so
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0c72b9d2deb02d019df399cf94f840c728ed83a6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..acfc4dd1d5fb70ad4097cdb5913792ba7faa693c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..29566758b2db99909b900bce7a8659284a2c611e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e9b4f11ad571f6e0e9a0ec5f7ec8b72c11344c4f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c072e1e644ecfabb8b35529ace9f75b490438ade
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4e168ba85cbcb0f98b315faaf23409f94b799a98
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f809099d5d832169f99c937fa80a1c6780c4d419
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++usr/lib/*/libdebuginfod.so
++usr/lib/*/pkgconfig/libdebuginfod.pc
++usr/include/elfutils/debuginfod.h
++usr/share/man/man3/debuginfod_*.3
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..62b18382eda65d251df7c792b88f7ec51847a844
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++usr/lib/*/libdebuginfod.so.*
++usr/lib/*/libdebuginfod-*.so
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..59568fc13247ff4543868c049750739d3ba15f12
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4e08f98ed8dc18d44d7a21b4bfbfaf865c2e9ada
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..344fc0f9dd1ea6f9ccef8dee3579eab93bd1df18
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++usr/lib/*/libdw.so.1
++usr/lib/*/libdw-0.*.so
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2e759d174599ec9e7e6a3c13e3e17e369f19f3df
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6e147731721710cedfbe2bf6c10f7f7523f44e80
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4e2d096b1ac56e192d401d0dcf2c36a2dd5d6364
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++usr/lib/*/libelf.so.1
++usr/lib/*/libelf-*.so
++usr/share/locale/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..731af1fa5110d5e281d90523728c608012eed2c2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a9a721003174083d8bc57be850368d830c3ce544
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,31 @@@
++From 77cb4a53c270d5854d3af24f19547bc3de825233 Mon Sep 17 00:00:00 2001
++From: James Cowgill <james410@cowgill.org.uk>
++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 <james410@cowgill.org.uk>
++---
++ 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);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..72125c9ff063db9d280453c009c15f09ec0d2ac9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,168 @@@
++From fdaab18a65ed2529656baa64cb6169f34d7e507b Mon Sep 17 00:00:00 2001
++From: James Cowgill <james410@cowgill.org.uk>
++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 <james410@cowgill.org.uk>
++---
++ 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
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7cefeaeea4230f118d21c3dee8bee0969b76a35b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,226 @@@
++From 59d4b8c48e5040af7e02b34eb26ea602ec82a38e Mon Sep 17 00:00:00 2001
++From: James Cowgill <james410@cowgill.org.uk>
++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 <james410@cowgill.org.uk>
++---
++ 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)
++     {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6a85baf4b78eb5df2528fce97c7be73a0aff2d2b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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 <string.h>
+++#include <stdio.h>
++ #include <dwarf.h>
++ 
++ #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 <libdw.h>
+++
+++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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7e79223fd0000319f1c3fdefb2e8a784e67ccf95
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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 \
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..155a78f1a71387fa0f5582b77bc32c163df784e2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,23 @@@
++From: Helmut Grohne <helmut@subdivi.de>
++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),) \
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..658c4b2186de1b478cb65bae362861604c71d296
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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 <drepper@redhat.com>, 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
+++   <http://www.openinventionnetwork.com>.  */
+++
+++#ifdef HAVE_CONFIG_H
+++# include <config.h>
+++#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
+++   <http://www.openinventionnetwork.com>.  */
+++
+++#ifdef HAVE_CONFIG_H
+++# include <config.h>
+++#endif
+++
+++#include <string.h>
+++#include <dwarf.h>
+++
+++#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
+++   <http://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
+++   <http://www.openinventionnetwork.com>.  */
+++
+++#ifdef HAVE_CONFIG_H
+++# include <config.h>
+++#endif
+++
+++#include <assert.h>
+++#include <dwarf.h>
+++
+++#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 <drepper@redhat.com>, 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
+++   <http://www.openinventionnetwork.com>.  */
+++
+++#ifdef HAVE_CONFIG_H
+++# include <config.h>
+++#endif
+++
+++#include <elf.h>
+++#include <stddef.h>
+++
+++#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 <libdw.h>
+++
+++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.  */
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0758022b4ef7c84e7527e9d8e0631d0a2c526b7f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,58 @@@
++--- a/debuginfod/debuginfod-client.c
+++++ b/debuginfod/debuginfod-client.c
++@@ -45,6 +45,10 @@
++ #include <errno.h>
++ #include <stdlib.h>
++ 
+++#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 <argp.h>
+++
++ extern "C" {
++ #include "printversion.h"
++ #include "system.h"
++@@ -40,7 +42,6 @@ extern "C" {
++ #include "debuginfod.h"
++ #include <dwarf.h>
++ 
++-#include <argp.h>
++ #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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4440e39e0ae223e248fb4b30f7b34f9e1ce11bd9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1e6d7a2de6bc59d33ebb8a40f4f4aa7ef17d933c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ffd7d88d1adc17d48cae4099db01c05622d7d887
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,23 @@@
++--- a/debuginfod/debuginfod-client.c
+++++ b/debuginfod/debuginfod-client.c
++@@ -77,7 +77,9 @@ void debuginfod_end (debuginfod_client *
++ #include <regex.h>
++ #include <string.h>
++ #include <stdbool.h>
+++#ifdef __linux__
++ #include <linux/limits.h>
+++#endif
++ #include <time.h>
++ #include <utime.h>
++ #include <sys/syscall.h>
++@@ -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. */
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ecb48857c1eb29215881dba7e50c8545905c5390
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9a19b58b507e3ccaadfa6b3e8e1590f952765f2b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..29b72c49a2f3b0c2247cba967f6a9e7fa6c0c271
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
+++   <http://www.openinventionnetwork.com>.  */
+++
+++#ifdef HAVE_CONFIG_H
+++# include <config.h>
+++#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
+++   <http://www.openinventionnetwork.com>.  */
+++
+++#ifdef HAVE_CONFIG_H
+++# include <config.h>
+++#endif
+++
+++#include <string.h>
+++#include <dwarf.h>
+++
+++#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
+++   <http://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
+++   <http://www.openinventionnetwork.com>.  */
+++
+++#ifdef HAVE_CONFIG_H
+++# include <config.h>
+++#endif
+++
+++#include <string.h>
+++#include <assert.h>
+++#include <dwarf.h>
+++#include <elf.h>
+++
+++#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 <jakub@redhat.com>, 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
+++   <http://www.openinventionnetwork.com>.  */
+++
+++#ifdef HAVE_CONFIG_H
+++# include <config.h>
+++#endif
+++
+++#include <elf.h>
+++#include <stddef.h>
+++
+++#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: *; };' \
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8dada52c446a8ad889b41b7c97a9a2a5dc38216c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,114 @@@
++Description: Add MIPS ABI CFI callback
++Author: Kurt Roeckx <kurt@roeckx.be>
++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 <http://www.gnu.org/licenses/>.  */
+++
+++#ifdef HAVE_CONFIG_H
+++# include <config.h>
+++#endif
+++
+++#include <dwarf.h>
+++
+++#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;
++ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c888037407e7f97e089aa972186162caa02162d7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++From: Kurt Roeckx <kurt@roeckx.be>
++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
++        {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..545a8e89d16db3a7b05ecf26eb4a06e66f0bde1a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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__ */
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..237aad17e3617dd1f018064e54682d7c1fbcca87
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e8c775715ab3e85d3220c73b7f00a610f0092405
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6a1ddcc1d4c2ed708850f537dc874399c59b126e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
+++}
+++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2cb80c322a00b3cbf6c7f72141cbd1ddf07d0ab2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++[type: gettext/rfc822deb] libdebuginfod-common.templates
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..638ffc35c4db2bbb7ef3d3c639077c30e3907fe1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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 --cc debian/rules
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b2093dd1430642cd91f2639f5a88a719c819660a
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,181 @@@
++#!/usr/bin/make -f
++# -*- makefile -*-
++# Copyright 2006, Kurt Roeckx <kurt@roeckx.be>
++
++# 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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..163aaf8d82b6c54f23c45f32895dbdfdcc27b047
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++3.0 (quilt)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..95a390b97348b11de0f35248b50ed268fc163791
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++debian/upstream-signing-key.pgp
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..dee56c477d5e8b0e32033f69b3eb007ec9c71ed3
new file mode 100644 (file)
Binary files differ
diff --cc debian/watch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ced214ea38771ccc9ec7d6d46faef39e9cf00521
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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