elfutils: 0.166 -> 0.168

- Backport patches from debian to 0.168 and add US tags.

- Rebase 0001-build-Provide-alternatives-for-glibc-assumptions-hel.patch to support libc musl

(From OE-Core rev: 13e5819dc4ef44d99d0f22686365fd3c988d6bce)

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Hongxu Jia
2017-02-06 04:34:46 -05:00
committed by Richard Purdie
parent edd51e8659
commit f0a300c44d
23 changed files with 1237 additions and 1981 deletions

View File

@@ -1,41 +0,0 @@
From 836a16fe5b5bab4a3afe2c991c104652775ce3a3 Mon Sep 17 00:00:00 2001
From: David Abdurachmanov <davidlt@cern.ch>
Date: Mon, 11 Apr 2016 16:00:57 +0200
Subject: elfcmp: fix self-comparison error with GCC 6
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Noticed with Fedora 24 Alpha, gcc (GCC) 6.0.0 20160406
(Red Hat 6.0.0-0.20).
elfcmp.c: In function main:
elfcmp.c:364:199: error: self-comparison always evaluates
to false [-Werror=tautological-compare]
if (unlikely (name1 == NULL || name2 == NULL
Signed-off-by: David Abdurachmanov <davidlt@cern.ch>
---
Upstream-Status: Backport
src/ChangeLog | 4 ++++
src/elfcmp.c | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/elfcmp.c b/src/elfcmp.c
index 852b92f..7b5d39c 100644
--- a/src/elfcmp.c
+++ b/src/elfcmp.c
@@ -368,7 +368,7 @@ main (int argc, char *argv[])
&& sym1->st_shndx != SHN_UNDEF)
|| sym1->st_info != sym2->st_info
|| sym1->st_other != sym2->st_other
- || sym1->st_shndx != sym1->st_shndx))
+ || sym1->st_shndx != sym2->st_shndx))
{
// XXX Do we want to allow reordered symbol tables?
symtab_mismatch:
--
cgit v0.12

View File

@@ -1,492 +0,0 @@
From: Kurt Roeckx <kurt@roeckx.be>
From: Thorsten Glaser <tg@mirbsd.de>
Subject: m68k support
Written by Kurt Roeckx, except for the retval support which was written
by Thorsten Glaser
Index: elfutils-0.164/backends/m68k_init.c
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/m68k_init.c
@@ -0,0 +1,49 @@
+/* Initialization of m68k specific backend library.
+ Copyright (C) 2007 Kurt Roeckx <kurt@roeckx.be>
+
+ This software 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.
+
+ This softare 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 software; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#define BACKEND m68k_
+#define RELOC_PREFIX R_68K_
+#include "libebl_CPU.h"
+
+/* This defines the common reloc hooks based on m68k_reloc.def. */
+#include "common-reloc.c"
+
+
+const char *
+m68k_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. */
+ eh->name = "m68k";
+ m68k_init_reloc (eh);
+ HOOK (eh, reloc_simple_type);
+ HOOK (eh, return_value_location);
+ HOOK (eh, register_info);
+
+ return MODVERSION;
+}
Index: elfutils-0.164/backends/m68k_regs.c
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/m68k_regs.c
@@ -0,0 +1,106 @@
+/* Register names and numbers for m68k DWARF.
+ Copyright (C) 2007 Kurt Roeckx <kurt@roeckx.be>
+
+ This software 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.
+
+ This software 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 software; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
+
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <string.h>
+#include <dwarf.h>
+
+#define BACKEND m68k_
+#include "libebl_CPU.h"
+
+ssize_t
+m68k_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 25;
+
+ if (regno < 0 || regno > 24 || namelen < 5)
+ return -1;
+
+ *prefix = "%";
+ *bits = 32;
+ *type = (regno < 8 ? DW_ATE_signed
+ : regno < 16 ? DW_ATE_address : DW_ATE_float);
+
+ if (regno < 8)
+ {
+ *setname = "integer";
+ }
+ else if (regno < 16)
+ {
+ *setname = "address";
+ }
+ else if (regno < 24)
+ {
+ *setname = "FPU";
+ }
+ else
+ {
+ *setname = "address";
+ *type = DW_ATE_address;
+ }
+
+ switch (regno)
+ {
+ case 0 ... 7:
+ name[0] = 'd';
+ name[1] = regno + '0';
+ namelen = 2;
+ break;
+
+ case 8 ... 13:
+ name[0] = 'a';
+ name[1] = regno - 8 + '0';
+ namelen = 2;
+ break;
+
+ case 14:
+ name[0] = 'f';
+ name[1] = 'p';
+ namelen = 2;
+ break;
+
+ case 15:
+ name[0] = 's';
+ name[1] = 'p';
+ namelen = 2;
+ break;
+
+ case 16 ... 23:
+ name[0] = 'f';
+ name[1] = 'p';
+ name[2] = regno - 16 + '0';
+ namelen = 3;
+ break;
+
+ case 24:
+ name[0] = 'p';
+ name[1] = 'c';
+ namelen = 2;
+ }
+
+ name[namelen++] = '\0';
+ return namelen;
+}
+
Index: elfutils-0.164/backends/m68k_reloc.def
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/m68k_reloc.def
@@ -0,0 +1,45 @@
+/* List the relocation types for m68k. -*- C -*-
+ Copyright (C) 2007 Kurt Roeckx <kurt@roeckx.be>
+
+ This software 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.
+
+ This software 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 software; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
+*/
+
+/* NAME, REL|EXEC|DYN */
+
+RELOC_TYPE (NONE, 0)
+RELOC_TYPE (32, REL|EXEC|DYN)
+RELOC_TYPE (16, REL)
+RELOC_TYPE (8, REL)
+RELOC_TYPE (PC32, REL|EXEC|DYN)
+RELOC_TYPE (PC16, REL)
+RELOC_TYPE (PC8, REL)
+RELOC_TYPE (GOT32, REL)
+RELOC_TYPE (GOT16, REL)
+RELOC_TYPE (GOT8, REL)
+RELOC_TYPE (GOT32O, REL)
+RELOC_TYPE (GOT16O, REL)
+RELOC_TYPE (GOT8O, REL)
+RELOC_TYPE (PLT32, REL)
+RELOC_TYPE (PLT16, REL)
+RELOC_TYPE (PLT8, REL)
+RELOC_TYPE (PLT32O, REL)
+RELOC_TYPE (PLT16O, REL)
+RELOC_TYPE (PLT8O, REL)
+RELOC_TYPE (COPY, EXEC)
+RELOC_TYPE (GLOB_DAT, EXEC|DYN)
+RELOC_TYPE (JMP_SLOT, EXEC|DYN)
+RELOC_TYPE (RELATIVE, EXEC|DYN)
+RELOC_TYPE (GNU_VTINHERIT, REL)
+RELOC_TYPE (GNU_VTENTRY, REL)
+
Index: elfutils-0.164/libelf/elf.h
===================================================================
--- elfutils-0.164.orig/libelf/elf.h
+++ elfutils-0.164/libelf/elf.h
@@ -1158,6 +1158,9 @@ typedef struct
#define R_68K_GLOB_DAT 20 /* Create GOT entry */
#define R_68K_JMP_SLOT 21 /* Create PLT entry */
#define R_68K_RELATIVE 22 /* Adjust by program base */
+/* The next 2 are GNU extensions to enable C++ vtable garbage collection. */
+#define R_68K_GNU_VTINHERIT 23
+#define R_68K_GNU_VTENTRY 24
#define R_68K_TLS_GD32 25 /* 32 bit GOT offset for GD */
#define R_68K_TLS_GD16 26 /* 16 bit GOT offset for GD */
#define R_68K_TLS_GD8 27 /* 8 bit GOT offset for GD */
Index: elfutils-0.164/backends/Makefile.am
===================================================================
--- elfutils-0.164.orig/backends/Makefile.am
+++ elfutils-0.164/backends/Makefile.am
@@ -33,12 +33,12 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I
modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \
- tilegx parisc mips
+ tilegx parisc mips m68k
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_parisc_pic.a libebl_mips_pic.a
+ libebl_parisc_pic.a libebl_mips_pic.a libebl_m68k_pic.a
noinst_LIBRARIES = $(libebl_pic)
noinst_DATA = $(libebl_pic:_pic.a=.so)
@@ -120,6 +120,10 @@ mips_SRCS = mips_init.c mips_symbol.c mi
libebl_mips_pic_a_SOURCES = $(mips_SRCS)
am_libebl_mips_pic_a_OBJECTS = $(mips_SRCS:.c=.os)
+m68k_SRCS = m68k_init.c m68k_symbol.c m68k_regs.c m68k_retval.c
+libebl_m68k_pic_a_SOURCES = $(m68k_SRCS)
+am_libebl_m68k_pic_a_OBJECTS = $(m68k_SRCS:.c=.os)
+
libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw)
@rm -f $(@:.so=.map)
$(AM_V_at)echo 'ELFUTILS_$(PACKAGE_VERSION) { global: $*_init; local: *; };' \
Index: elfutils-0.164/backends/m68k_symbol.c
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/m68k_symbol.c
@@ -0,0 +1,43 @@
+/* m68k specific symbolic name handling.
+ Copyright (C) 2007 Kurt Roeckx <kurt@roeckx.be>
+
+ This software 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.
+
+ This software 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 software; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
+*/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <elf.h>
+#include <stddef.h>
+
+#define BACKEND m68k_
+#include "libebl_CPU.h"
+
+/* Check for the simple reloc types. */
+Elf_Type
+m68k_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type)
+{
+ switch (type)
+ {
+ case R_68K_32:
+ return ELF_T_SWORD;
+ case R_68K_16:
+ return ELF_T_HALF;
+ case R_68K_8:
+ return ELF_T_BYTE;
+ default:
+ return ELF_T_NUM;
+ }
+}
Index: elfutils-0.164/backends/m68k_retval.c
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/m68k_retval.c
@@ -0,0 +1,172 @@
+/* Function return value location for Linux/m68k ABI.
+ Copyright (C) 2005-2010 Red Hat, Inc.
+ Copyright (c) 2011 Thorsten Glaser, Debian.
+ 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 m68k_
+#include "libebl_CPU.h"
+
+
+/* %d0, or pair %d0, %d1, or %a0 */
+static const Dwarf_Op loc_intreg[] =
+ {
+ { .atom = DW_OP_reg0 }, { .atom = DW_OP_piece, .number = 4 },
+ { .atom = DW_OP_reg1 }, { .atom = DW_OP_piece, .number = 4 },
+ };
+static const Dwarf_Op loc_ptrreg[] =
+ {
+ { .atom = DW_OP_reg8 },
+ };
+#define nloc_intreg 1
+#define nloc_intregpair 4
+#define nloc_ptrreg 1
+
+/* %f0 */
+static const Dwarf_Op loc_fpreg[] =
+ {
+ { .atom = DW_OP_reg16 }
+ };
+#define nloc_fpreg 1
+
+/* Structures are a bit more complicated - small structures are returned
+ in %d0 / %d1 (-freg-struct-return which is enabled by default), large
+ structures use %a1 (in constrast to the SYSV psABI which says %a0) as
+ reentrant storage space indicator. */
+static const Dwarf_Op loc_aggregate[] =
+ {
+ { .atom = DW_OP_breg9, .number = 0 }
+ };
+#define nloc_aggregate 1
+
+int
+m68k_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
+{
+ Dwarf_Word size;
+
+ /* 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:
+ 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_pointer_type || tag == DW_TAG_ptr_to_member_type)
+ {
+ *locp = loc_ptrreg;
+ return nloc_ptrreg;
+ }
+ 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)
+ {
+ /* XXX really 10? */
+ if (size > 10)
+ return -2;
+ *locp = loc_fpreg;
+ return nloc_fpreg;
+ }
+ }
+ if (size <= 8)
+ {
+ intreg:
+ /* XXX check endianness of dword pair, int64 vs aggregate */
+ *locp = loc_intreg;
+ return size <= 4 ? nloc_intreg : nloc_intregpair;
+ }
+
+ aggregate:
+ *locp = loc_aggregate;
+ return nloc_aggregate;
+
+ case DW_TAG_structure_type:
+ case DW_TAG_class_type:
+ case DW_TAG_union_type:
+ case DW_TAG_array_type:
+ if (dwarf_aggregate_size (typedie, &size) == 0
+ && size > 0 && size <= 8)
+ /* not accurate for a struct whose only member is a float */
+ goto intreg;
+ goto 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;
+}

View File

@@ -1,128 +0,0 @@
From 3daec2dd11a04955f95e8f65a48820103d84dbec Mon Sep 17 00:00:00 2001
From: Junling Zheng <zhengjunling@huawei.com>
Date: Thu, 9 Apr 2015 12:12:49 +0000
Subject: [PATCH] uclibc support for elfutils 0.161
on uclibc systems libintl and libuargp are separate from libc.
so they need to be specified on commandline when we use proxy-libintl
then libintl is a static archive so it should be listed last since
elfutils does not respect disable-nls we need to link in libintl
We add a new option --enable-uclibc which will be used to control
the uclibc specific configurations during build.
Upstream-Status: Inappropriate [uclibc specific]
Signed-off-by: Khem Raj <raj.khem>
Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
[Junling Zheng:
- adjust context
]
---
configure.ac | 8 ++++++++
libcpu/Makefile.am | 4 ++++
libdw/Makefile.am | 7 ++++++-
libelf/Makefile.am | 5 +++++
4 files changed, 23 insertions(+), 1 deletion(-)
Index: elfutils-0.166/configure.ac
===================================================================
--- elfutils-0.166.orig/configure.ac
+++ elfutils-0.166/configure.ac
@@ -79,6 +79,14 @@ AS_IF([test "$use_locks" = yes],
AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
+AC_ARG_ENABLE([uclibc],
+AS_HELP_STRING([--enable-uclibc], [Use uclibc for system libraries]),
+use_uclibc=yes, use_uclibc=no)
+AM_CONDITIONAL(USE_UCLIBC, test "$use_uclibc" = yes)
+AS_IF([test "$use_uclibc" = yes], [AC_DEFINE(USE_UCLIBC)])
+
+AH_TEMPLATE([USE_UCLIBC], [Defined if uclibc libraries are used.])
+
AC_PROG_CC
AC_PROG_RANLIB
AC_PROG_YACC
@@ -347,18 +355,13 @@ AC_LINK_IFELSE(
)
dnl If our libc doesn't provide argp, then test for libargp
-if test "$libc_has_argp" = "false" ; then
- AC_MSG_WARN("libc does not have argp")
- AC_CHECK_LIB([argp], [argp_parse], [have_argp="true"], [have_argp="false"])
-
- if test "$have_argp" = "false"; then
- AC_MSG_ERROR("no libargp found")
- else
- argp_LDADD="-largp"
- fi
-else
- argp_LDADD=""
-fi
+AS_IF([test "x$libc_has_argp" = "xfalse"],
+ [AC_MSG_WARN("libc does not have argp")
+ AC_CHECK_LIB([argp], [argp_parse], [have_argp="true" argp_LDADD="-largp"], [have_argp="false"])], [argp_LDADD=""])
+
+AS_IF([test "x$libc_has_argp" = "xfalse" -a "x$have_argp" = "xfalse"],
+ AC_CHECK_LIB([uargp], [argp_parse], [have_uargp="true" argp_LDADD="-luargp"], [have_uargp="false"])], [argp_LDADD=""])
+
AC_SUBST([argp_LDADD])
dnl The directories with content.
Index: elfutils-0.166/libcpu/Makefile.am
===================================================================
--- elfutils-0.166.orig/libcpu/Makefile.am
+++ elfutils-0.166/libcpu/Makefile.am
@@ -80,6 +80,10 @@ i386_parse_CFLAGS = -DNMNES="`wc -l < i3
i386_lex.o: i386_parse.h
i386_gendis_LDADD = $(libeu) -lm
+if USE_UCLIBC
+i386_gendis_LDADD += -lintl
+endif
+
i386_parse.h: i386_parse.c ;
EXTRA_DIST = defs/i386
Index: elfutils-0.166/libdw/Makefile.am
===================================================================
--- elfutils-0.166.orig/libdw/Makefile.am
+++ elfutils-0.166/libdw/Makefile.am
@@ -102,6 +102,11 @@ endif
libdw_pic_a_SOURCES =
am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os)
+libdw_so_LDLIBS =
+if USE_UCLIBC
+libdw_so_LDLIBS += -lintl
+endif
+
libdw_so_SOURCES =
libdw.so$(EXEEXT): $(srcdir)/libdw.map libdw_pic.a ../libdwelf/libdwelf_pic.a \
../libdwfl/libdwfl_pic.a ../libebl/libebl.a \
@@ -112,7 +117,7 @@ libdw.so$(EXEEXT): $(srcdir)/libdw.map l
-Wl,--enable-new-dtags,-rpath,$(pkglibdir) \
-Wl,--version-script,$<,--no-undefined \
-Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
- -ldl -lz $(argp_LDADD) $(zip_LIBS)
+ -ldl -lz $(argp_LDADD) $(zip_LIBS) $(libdw_so_LDLIBS)
@$(textrel_check)
$(AM_V_at)ln -fs $@ $@.$(VERSION)
Index: elfutils-0.166/libelf/Makefile.am
===================================================================
--- elfutils-0.166.orig/libelf/Makefile.am
+++ elfutils-0.166/libelf/Makefile.am
@@ -96,6 +96,11 @@ libelf_pic_a_SOURCES =
am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os)
libelf_so_LDLIBS = -lz
+
+if USE_UCLIBC
+libelf_so_LDLIBS += -lintl
+endif
+
if USE_LOCKS
libelf_so_LDLIBS += -lpthread
endif

View File

@@ -8,15 +8,19 @@ 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>
Upstream-Status: Backport [from debian]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
backends/mips_init.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/backends/mips_init.c b/backends/mips_init.c
index 7429a89..d10e940 100644
Index: b/backends/mips_init.c
===================================================================
--- a/backends/mips_init.c
+++ b/backends/mips_init.c
@@ -46,11 +46,7 @@ mips_init (elf, machine, eh, ehlen)
@@ -45,11 +45,7 @@ mips_init (Elf *elf __attribute__ ((unus
return NULL;
/* We handle it. */
@@ -29,6 +33,3 @@ index 7429a89..d10e940 100644
mips_init_reloc (eh);
HOOK (eh, reloc_simple_type);
HOOK (eh, return_value_location);
--
2.1.4

View File

@@ -4,6 +4,9 @@ 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>
Upstream-Status: Backport [from debian]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
backends/mips_retval.c | 104 ++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 94 insertions(+), 10 deletions(-)

View File

@@ -12,6 +12,9 @@ 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>
Upstream-Status: Backport [from debian]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
libelf/gelf_getrel.c | 25 +++++++++++++++++++++++--
libelf/gelf_getrela.c | 25 +++++++++++++++++++++++--
@@ -20,10 +23,10 @@ Signed-off-by: James Cowgill <james410@cowgill.org.uk>
src/strip.c | 17 +++++++++++++++++
5 files changed, 101 insertions(+), 6 deletions(-)
Index: elfutils-0.164/libelf/gelf_getrel.c
Index: b/libelf/gelf_getrel.c
===================================================================
--- elfutils-0.164.orig/libelf/gelf_getrel.c
+++ elfutils-0.164/libelf/gelf_getrel.c
--- a/libelf/gelf_getrel.c
+++ b/libelf/gelf_getrel.c
@@ -36,6 +36,7 @@
#include "libelfP.h"
@@ -63,10 +66,10 @@ Index: elfutils-0.164/libelf/gelf_getrel.c
}
rwlock_unlock (scn->elf->lock);
Index: elfutils-0.164/libelf/gelf_getrela.c
Index: b/libelf/gelf_getrela.c
===================================================================
--- elfutils-0.164.orig/libelf/gelf_getrela.c
+++ elfutils-0.164/libelf/gelf_getrela.c
--- a/libelf/gelf_getrela.c
+++ b/libelf/gelf_getrela.c
@@ -36,6 +36,7 @@
#include "libelfP.h"
@@ -106,10 +109,10 @@ Index: elfutils-0.164/libelf/gelf_getrela.c
}
rwlock_unlock (scn->elf->lock);
Index: elfutils-0.164/libelf/gelf_update_rel.c
Index: b/libelf/gelf_update_rel.c
===================================================================
--- elfutils-0.164.orig/libelf/gelf_update_rel.c
+++ elfutils-0.164/libelf/gelf_update_rel.c
--- a/libelf/gelf_update_rel.c
+++ b/libelf/gelf_update_rel.c
@@ -36,6 +36,7 @@
#include "libelfP.h"
@@ -151,10 +154,10 @@ Index: elfutils-0.164/libelf/gelf_update_rel.c
}
result = 1;
Index: elfutils-0.164/libelf/gelf_update_rela.c
Index: b/libelf/gelf_update_rela.c
===================================================================
--- elfutils-0.164.orig/libelf/gelf_update_rela.c
+++ elfutils-0.164/libelf/gelf_update_rela.c
--- a/libelf/gelf_update_rela.c
+++ b/libelf/gelf_update_rela.c
@@ -36,6 +36,7 @@
#include "libelfP.h"
@@ -196,11 +199,11 @@ Index: elfutils-0.164/libelf/gelf_update_rela.c
}
result = 1;
Index: elfutils-0.164/src/strip.c
Index: b/src/strip.c
===================================================================
--- elfutils-0.164.orig/src/strip.c
+++ elfutils-0.164/src/strip.c
@@ -546,6 +546,23 @@ handle_elf (int fd, Elf *elf, const char
--- a/src/strip.c
+++ b/src/strip.c
@@ -532,6 +532,23 @@ handle_elf (int fd, Elf *elf, const char
goto fail;
}

View File

@@ -1,7 +1,10 @@
Index: elfutils-0.164/backends/arm_init.c
Upstream-Status: Backport [from debian]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Index: b/backends/arm_init.c
===================================================================
--- elfutils-0.164.orig/backends/arm_init.c
+++ elfutils-0.164/backends/arm_init.c
--- a/backends/arm_init.c
+++ b/backends/arm_init.c
@@ -35,20 +35,31 @@
#define RELOC_PREFIX R_ARM_
#include "libebl_CPU.h"
@@ -47,10 +50,10 @@ Index: elfutils-0.164/backends/arm_init.c
HOOK (eh, abi_cfi);
HOOK (eh, check_reloc_target_type);
HOOK (eh, symbol_type_name);
Index: elfutils-0.164/backends/arm_regs.c
Index: b/backends/arm_regs.c
===================================================================
--- elfutils-0.164.orig/backends/arm_regs.c
+++ elfutils-0.164/backends/arm_regs.c
--- a/backends/arm_regs.c
+++ b/backends/arm_regs.c
@@ -31,6 +31,7 @@
#endif
@@ -209,10 +212,10 @@ Index: elfutils-0.164/backends/arm_regs.c
*setname = "VFP";
*type = DW_ATE_float;
*bits = 64;
Index: elfutils-0.164/backends/arm_retval.c
Index: b/backends/arm_retval.c
===================================================================
--- elfutils-0.164.orig/backends/arm_retval.c
+++ elfutils-0.164/backends/arm_retval.c
--- a/backends/arm_retval.c
+++ b/backends/arm_retval.c
@@ -48,6 +48,13 @@ static const Dwarf_Op loc_intreg[] =
#define nloc_intreg 1
#define nloc_intregs(n) (2 * (n))
@@ -288,11 +291,11 @@ Index: elfutils-0.164/backends/arm_retval.c
+ return arm_return_value_location_ (functypedie, locp, 0);
+}
+
Index: elfutils-0.164/libelf/elf.h
Index: b/libelf/elf.h
===================================================================
--- elfutils-0.164.orig/libelf/elf.h
+++ elfutils-0.164/libelf/elf.h
@@ -2450,6 +2450,9 @@ enum
--- a/libelf/elf.h
+++ b/libelf/elf.h
@@ -2593,6 +2593,9 @@ enum
#define EF_ARM_EABI_VER4 0x04000000
#define EF_ARM_EABI_VER5 0x05000000
@@ -302,7 +305,7 @@ Index: elfutils-0.164/libelf/elf.h
/* Additional symbol types for Thumb. */
#define STT_ARM_TFUNC STT_LOPROC /* A Thumb function. */
#define STT_ARM_16BIT STT_HIPROC /* A Thumb label. */
@@ -2467,12 +2470,19 @@ enum
@@ -2610,12 +2613,19 @@ enum
/* Processor specific values for the Phdr p_type field. */
#define PT_ARM_EXIDX (PT_LOPROC + 1) /* ARM unwind segment. */
@@ -322,7 +325,7 @@ Index: elfutils-0.164/libelf/elf.h
/* AArch64 relocs. */
@@ -2765,6 +2775,7 @@ enum
@@ -2908,6 +2918,7 @@ enum
TLS block (LDR, STR). */
#define R_ARM_TLS_IE12GP 111 /* 12 bit GOT entry relative
to GOT origin (LDR). */
@@ -330,10 +333,10 @@ Index: elfutils-0.164/libelf/elf.h
#define R_ARM_ME_TOO 128 /* Obsolete. */
#define R_ARM_THM_TLS_DESCSEQ 129
#define R_ARM_THM_TLS_DESCSEQ16 129
Index: elfutils-0.164/backends/libebl_arm.h
Index: b/backends/libebl_arm.h
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/libebl_arm.h
+++ b/backends/libebl_arm.h
@@ -0,0 +1,9 @@
+#ifndef _LIBEBL_ARM_H
+#define _LIBEBL_ARM_H 1
@@ -344,10 +347,10 @@ Index: elfutils-0.164/backends/libebl_arm.h
+extern int arm_return_value_location_hard(Dwarf_Die *, const Dwarf_Op **locp);
+
+#endif
Index: elfutils-0.164/tests/run-allregs.sh
Index: b/tests/run-allregs.sh
===================================================================
--- elfutils-0.164.orig/tests/run-allregs.sh
+++ elfutils-0.164/tests/run-allregs.sh
--- a/tests/run-allregs.sh
+++ b/tests/run-allregs.sh
@@ -2672,7 +2672,28 @@ integer registers:
13: sp (sp), address 32 bits
14: lr (lr), address 32 bits
@@ -465,10 +468,10 @@ Index: elfutils-0.164/tests/run-allregs.sh
EOF
# See run-readelf-mixed-corenote.sh for instructions to regenerate
Index: elfutils-0.164/tests/run-readelf-mixed-corenote.sh
Index: b/tests/run-readelf-mixed-corenote.sh
===================================================================
--- elfutils-0.164.orig/tests/run-readelf-mixed-corenote.sh
+++ elfutils-0.164/tests/run-readelf-mixed-corenote.sh
--- a/tests/run-readelf-mixed-corenote.sh
+++ b/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
@@ -487,10 +490,10 @@ Index: elfutils-0.164/tests/run-readelf-mixed-corenote.sh
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.164/tests/run-addrcfi.sh
Index: b/tests/run-addrcfi.sh
===================================================================
--- elfutils-0.164.orig/tests/run-addrcfi.sh
+++ elfutils-0.164/tests/run-addrcfi.sh
--- a/tests/run-addrcfi.sh
+++ b/tests/run-addrcfi.sh
@@ -3554,6 +3554,38 @@ dwarf_cfi_addrframe (.eh_frame): no matc
FPA reg21 (f5): undefined
FPA reg22 (f6): undefined

View File

@@ -1,7 +1,10 @@
Index: elfutils-0.164/backends/parisc_init.c
Upstream-Status: Backport [from debian]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Index: b/backends/parisc_init.c
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/parisc_init.c
+++ b/backends/parisc_init.c
@@ -0,0 +1,73 @@
+/* Initialization of PA-RISC specific backend library.
+ Copyright (C) 2002, 2005, 2006 Red Hat, Inc.
@@ -76,10 +79,10 @@ Index: elfutils-0.164/backends/parisc_init.c
+
+ return MODVERSION;
+}
Index: elfutils-0.164/backends/parisc_regs.c
Index: b/backends/parisc_regs.c
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/parisc_regs.c
+++ b/backends/parisc_regs.c
@@ -0,0 +1,159 @@
+/* Register names and numbers for PA-RISC DWARF.
+ Copyright (C) 2005, 2006 Red Hat, Inc.
@@ -240,10 +243,10 @@ Index: elfutils-0.164/backends/parisc_regs.c
+ name[namelen++] = '\0';
+ return namelen;
+}
Index: elfutils-0.164/backends/parisc_reloc.def
Index: b/backends/parisc_reloc.def
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/parisc_reloc.def
+++ b/backends/parisc_reloc.def
@@ -0,0 +1,128 @@
+/* List the relocation types for PA-RISC. -*- C -*-
+ Copyright (C) 2005 Red Hat, Inc.
@@ -373,10 +376,10 @@ Index: elfutils-0.164/backends/parisc_reloc.def
+RELOC_TYPE (TLS_DTPMOD64, DYN)
+
+#define NO_RELATIVE_RELOC 1
Index: elfutils-0.164/backends/parisc_retval.c
Index: b/backends/parisc_retval.c
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/parisc_retval.c
+++ b/backends/parisc_retval.c
@@ -0,0 +1,213 @@
+/* Function return value location for Linux/PA-RISC ABI.
+ Copyright (C) 2005 Red Hat, Inc.
@@ -591,10 +594,10 @@ Index: elfutils-0.164/backends/parisc_retval.c
+ return parisc_return_value_location_ (functypedie, locp, 1);
+}
+
Index: elfutils-0.164/backends/parisc_symbol.c
Index: b/backends/parisc_symbol.c
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/parisc_symbol.c
+++ b/backends/parisc_symbol.c
@@ -0,0 +1,112 @@
+/* PA-RISC specific symbolic name handling.
+ Copyright (C) 2002, 2005 Red Hat, Inc.
@@ -708,10 +711,10 @@ Index: elfutils-0.164/backends/parisc_symbol.c
+ return ELF_T_NUM;
+ }
+}
Index: elfutils-0.164/backends/libebl_parisc.h
Index: b/backends/libebl_parisc.h
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/libebl_parisc.h
+++ b/backends/libebl_parisc.h
@@ -0,0 +1,9 @@
+#ifndef _LIBEBL_HPPA_H
+#define _LIBEBL_HPPA_H 1
@@ -722,28 +725,28 @@ Index: elfutils-0.164/backends/libebl_parisc.h
+extern int parisc_return_value_location_64(Dwarf_Die *, const Dwarf_Op **locp);
+
+#endif
Index: elfutils-0.164/backends/Makefile.am
Index: b/backends/Makefile.am
===================================================================
--- elfutils-0.164.orig/backends/Makefile.am
+++ elfutils-0.164/backends/Makefile.am
@@ -33,11 +33,12 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I
--- a/backends/Makefile.am
+++ b/backends/Makefile.am
@@ -33,12 +33,12 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I
modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \
- tilegx
+ tilegx parisc
- tilegx m68k bpf
+ tilegx m68k bpf parisc
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_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a \
+ libebl_parisc_pic.a
libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a \
- libebl_m68k_pic.a libebl_bpf_pic.a
+ libebl_m68k_pic.a libebl_bpf_pic.a libebl_parisc_pic.a
noinst_LIBRARIES = $(libebl_pic)
noinst_DATA = $(libebl_pic:_pic.a=.so)
@@ -111,6 +112,9 @@ tilegx_SRCS = tilegx_init.c tilegx_symbo
libebl_tilegx_pic_a_SOURCES = $(tilegx_SRCS)
am_libebl_tilegx_pic_a_OBJECTS = $(tilegx_SRCS:.c=.os)
@@ -128,6 +128,9 @@ endif
libebl_bpf_pic_a_SOURCES = $(bpf_SRCS)
am_libebl_bpf_pic_a_OBJECTS = $(bpf_SRCS:.c=.os)
+parisc_SRCS = parisc_init.c parisc_symbol.c parisc_regs.c parisc_retval.c
+libebl_parisc_pic_a_SOURCES = $(parisc_SRCS)
@@ -751,11 +754,11 @@ Index: elfutils-0.164/backends/Makefile.am
libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw)
@rm -f $(@:.so=.map)
Index: elfutils-0.164/libelf/elf.h
Index: b/libelf/elf.h
===================================================================
--- elfutils-0.164.orig/libelf/elf.h
+++ elfutils-0.164/libelf/elf.h
@@ -1912,16 +1912,24 @@ enum
--- a/libelf/elf.h
+++ b/libelf/elf.h
@@ -2055,16 +2055,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. */
@@ -780,7 +783,7 @@ Index: elfutils-0.164/libelf/elf.h
#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. */
@@ -1930,6 +1938,7 @@ enum
@@ -2073,6 +2081,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. */
@@ -788,7 +791,7 @@ Index: elfutils-0.164/libelf/elf.h
#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. */
@@ -1955,6 +1964,8 @@ enum
@@ -2098,6 +2107,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. */

View File

@@ -0,0 +1,17 @@
Upstream-Status: Backport [from debian]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
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

View File

@@ -0,0 +1,14 @@
Upstream-Status: Backport [from debian]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
--- 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

View File

@@ -1,6 +1,11 @@
--- elfutils/tests/run-native-test.sh.orig
+++ elfutils/tests/run-native-test.sh
@@ -78,6 +78,12 @@
Upstream-Status: Backport [from debian]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
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
}

View File

@@ -1,7 +1,10 @@
Index: elfutils-0.164/backends/mips_init.c
Upstream-Status: Backport [from debian]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Index: b/backends/mips_init.c
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/mips_init.c
+++ b/backends/mips_init.c
@@ -0,0 +1,59 @@
+/* Initialization of mips specific backend library.
+ Copyright (C) 2006 Red Hat, Inc.
@@ -62,10 +65,10 @@ Index: elfutils-0.164/backends/mips_init.c
+
+ return MODVERSION;
+}
Index: elfutils-0.164/backends/mips_regs.c
Index: b/backends/mips_regs.c
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/mips_regs.c
+++ b/backends/mips_regs.c
@@ -0,0 +1,104 @@
+/* Register names and numbers for MIPS DWARF.
+ Copyright (C) 2006 Red Hat, Inc.
@@ -171,10 +174,10 @@ Index: elfutils-0.164/backends/mips_regs.c
+ name[namelen++] = '\0';
+ return namelen;
+}
Index: elfutils-0.164/backends/mips_reloc.def
Index: b/backends/mips_reloc.def
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/mips_reloc.def
+++ b/backends/mips_reloc.def
@@ -0,0 +1,79 @@
+/* List the relocation types for mips. -*- C -*-
+ Copyright (C) 2006 Red Hat, Inc.
@@ -255,10 +258,10 @@ Index: elfutils-0.164/backends/mips_reloc.def
+
+#define NO_COPY_RELOC 1
+#define NO_RELATIVE_RELOC 1
Index: elfutils-0.164/backends/mips_retval.c
Index: b/backends/mips_retval.c
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/mips_retval.c
+++ b/backends/mips_retval.c
@@ -0,0 +1,321 @@
+/* Function return value location for Linux/mips ABI.
+ Copyright (C) 2005 Red Hat, Inc.
@@ -581,10 +584,10 @@ Index: elfutils-0.164/backends/mips_retval.c
+ DWARF and might be valid. */
+ return -2;
+}
Index: elfutils-0.164/backends/mips_symbol.c
Index: b/backends/mips_symbol.c
===================================================================
--- /dev/null
+++ elfutils-0.164/backends/mips_symbol.c
+++ b/backends/mips_symbol.c
@@ -0,0 +1,52 @@
+/* MIPS specific symbolic name handling.
+ Copyright (C) 2002, 2003, 2005 Red Hat, Inc.
@@ -638,10 +641,10 @@ Index: elfutils-0.164/backends/mips_symbol.c
+ return ELF_T_NUM;
+ }
+}
Index: elfutils-0.164/libebl/eblopenbackend.c
Index: b/libebl/eblopenbackend.c
===================================================================
--- elfutils-0.164.orig/libebl/eblopenbackend.c
+++ elfutils-0.164/libebl/eblopenbackend.c
--- a/libebl/eblopenbackend.c
+++ b/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 },
@@ -650,55 +653,27 @@ Index: elfutils-0.164/libebl/eblopenbackend.c
+ { "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, 0, 0 },
Index: elfutils-0.164/backends/common-reloc.c
{ "m68k", "elf_m68k", "m68k", 4, EM_68K, ELFCLASS32, ELFDATA2MSB },
Index: b/backends/Makefile.am
===================================================================
--- elfutils-0.164.orig/backends/common-reloc.c
+++ elfutils-0.164/backends/common-reloc.c
@@ -125,11 +125,13 @@ EBLHOOK(reloc_valid_use) (Elf *elf, int
}
+#ifndef NO_COPY_RELOC
bool
EBLHOOK(copy_reloc_p) (int reloc)
{
return reloc == R_TYPE (COPY);
}
+#endif
bool
EBLHOOK(none_reloc_p) (int reloc)
@@ -151,7 +153,9 @@ EBLHOOK(init_reloc) (Ebl *ebl)
ebl->reloc_type_name = EBLHOOK(reloc_type_name);
ebl->reloc_type_check = EBLHOOK(reloc_type_check);
ebl->reloc_valid_use = EBLHOOK(reloc_valid_use);
+#ifndef NO_COPY_RELOC
ebl->copy_reloc_p = EBLHOOK(copy_reloc_p);
+#endif
ebl->none_reloc_p = EBLHOOK(none_reloc_p);
#ifndef NO_RELATIVE_RELOC
ebl->relative_reloc_p = EBLHOOK(relative_reloc_p);
Index: elfutils-0.164/backends/Makefile.am
===================================================================
--- elfutils-0.164.orig/backends/Makefile.am
+++ elfutils-0.164/backends/Makefile.am
--- a/backends/Makefile.am
+++ b/backends/Makefile.am
@@ -33,12 +33,12 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I
modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \
- tilegx parisc
+ tilegx parisc mips
- tilegx m68k bpf parisc
+ tilegx m68k bpf 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_parisc_pic.a
+ libebl_parisc_pic.a libebl_mips_pic.a
- libebl_m68k_pic.a libebl_bpf_pic.a libebl_parisc_pic.a
+ libebl_m68k_pic.a libebl_bpf_pic.a libebl_parisc_pic.a libebl_mips_pic.a
noinst_LIBRARIES = $(libebl_pic)
noinst_DATA = $(libebl_pic:_pic.a=.so)
@@ -116,6 +116,10 @@ parisc_SRCS = parisc_init.c parisc_symbo
@@ -132,6 +132,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)

View File

@@ -6,11 +6,14 @@ 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.164/src/readelf.c
Upstream-Status: Backport [from debian]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Index: b/src/readelf.c
===================================================================
--- elfutils-0.164.orig/src/readelf.c
+++ elfutils-0.164/src/readelf.c
@@ -8218,7 +8218,8 @@ print_debug (Dwfl_Module *dwflmod, Ebl *
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -8343,7 +8343,8 @@ print_debug (Dwfl_Module *dwflmod, Ebl *
GElf_Shdr shdr_mem;
GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);

View File

@@ -4,21 +4,24 @@ 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).
Index: elfutils-0.156/tests/run-elflint-self.sh
Upstream-Status: Backport [from debian]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Index: b/tests/run-elflint-self.sh
===================================================================
--- elfutils-0.156.orig/tests/run-elflint-self.sh 2013-07-28 14:35:36.000000000 +0200
+++ elfutils-0.156/tests/run-elflint-self.sh 2013-07-28 14:36:10.000000000 +0200
--- a/tests/run-elflint-self.sh
+++ b/tests/run-elflint-self.sh
@@ -18,4 +18,4 @@
. $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
Index: elfutils-0.156/tests/test-subr.sh
Index: b/tests/test-subr.sh
===================================================================
--- elfutils-0.156.orig/tests/test-subr.sh 2013-07-28 14:35:36.000000000 +0200
+++ elfutils-0.156/tests/test-subr.sh 2013-07-28 14:35:36.000000000 +0200
@@ -149,3 +149,18 @@
--- a/tests/test-subr.sh
+++ b/tests/test-subr.sh
@@ -152,3 +152,18 @@ testrun_on_self_quiet()
# Only exit if something failed
if test $exit_status != 0; then exit $exit_status; fi
}

View File

@@ -7,8 +7,8 @@ DEPENDS = "libtool bzip2 zlib virtual/libintl"
DEPENDS_append_libc-musl = " argp-standalone fts "
SRC_URI = "https://fedorahosted.org/releases/e/l/elfutils/${PV}/${BP}.tar.bz2"
SRC_URI[md5sum] = "d4e462b7891915dc5326bccefa2024ff"
SRC_URI[sha256sum] = "3c056914c8a438b210be0d790463b960fc79d234c3f05ce707cbff80e94cba30"
SRC_URI[md5sum] = "52adfa40758d0d39e5d5c57689bf38d6"
SRC_URI[sha256sum] = "b88d07893ba1373c7dd69a7855974706d05377766568a7d9002706d5de72c276"
SRC_URI += "\
file://dso-link-change.patch \
@@ -22,20 +22,19 @@ SRC_URI += "\
"
# pick the patch from debian
# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.164-1.debian.tar.xz
# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.168-0.2.debian.tar.xz
SRC_URI += "\
file://hppa_backend.diff \
file://arm_backend.diff \
file://mips_backend.diff \
file://m68k_backend.diff \
file://testsuite-ignore-elflint.diff \
file://mips_readelf_w.patch \
file://kfreebsd_path.patch \
file://0001-Ignore-differences-between-mips-machine-identifiers.patch \
file://0002-Add-support-for-mips64-abis-in-mips_retval.c.patch \
file://0003-Add-mips-n64-relocation-format-hack.patch \
file://uclibc-support.patch \
file://elfcmp-fix-self-comparision.patch \
file://debian/hppa_backend.diff \
file://debian/arm_backend.diff \
file://debian/mips_backend.diff \
file://debian/testsuite-ignore-elflint.diff \
file://debian/mips_readelf_w.patch \
file://debian/kfreebsd_path.patch \
file://debian/0001-Ignore-differences-between-mips-machine-identifiers.patch \
file://debian/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch \
file://debian/0003-Add-mips-n64-relocation-format-hack.patch \
file://debian/hurd_path.patch \
file://debian/ignore_strmerge.diff \
"
SRC_URI_append_libc-musl = " file://0001-build-Provide-alternatives-for-glibc-assumptions-hel.patch "