summaryrefslogtreecommitdiff
path: root/meta/packages/elfutils
diff options
context:
space:
mode:
authorYu Ke <ke.yu@intel.com>2010-07-16 12:26:46 +0800
committerRichard Purdie <rpurdie@linux.intel.com>2010-07-21 16:00:59 +0100
commitf19358842868b849a44d597a37d37a458e35fa0a (patch)
treed52267a23101c862318623a434ef348187674fcc /meta/packages/elfutils
parent6cb27d8b5bdbaa2f45295213a8d60d59279c4dc4 (diff)
downloadopenembedded-core-f19358842868b849a44d597a37d37a458e35fa0a.tar.gz
openembedded-core-f19358842868b849a44d597a37d37a458e35fa0a.tar.bz2
openembedded-core-f19358842868b849a44d597a37d37a458e35fa0a.zip
elfutils: upgrade to version 0.148
reuse the open embedded elfutils_0.143.bb recipe to fix the cross compiling issue. Also pick patches from debian elfutils-0.148-1 pkg Signed-off-by: Yu Ke <ke.yu@intel.com>
Diffstat (limited to 'meta/packages/elfutils')
-rw-r--r--meta/packages/elfutils/elfutils-0.131/gcc-4.3_support.diff100
-rw-r--r--meta/packages/elfutils/elfutils-0.131/gnu_inline.diff105
-rw-r--r--meta/packages/elfutils/elfutils-0.131/prelink_build_fix.patch70
-rw-r--r--meta/packages/elfutils/elfutils-0.131/warnings.patch154
-rw-r--r--meta/packages/elfutils/elfutils-0.148/arm_backend.diff447
-rw-r--r--meta/packages/elfutils/elfutils-0.148/do-autoreconf.diff337
-rw-r--r--meta/packages/elfutils/elfutils-0.148/elf_additions.diff69
-rw-r--r--meta/packages/elfutils/elfutils-0.148/hppa_backend.diff799
-rw-r--r--meta/packages/elfutils/elfutils-0.148/i386_dis.h1657
-rw-r--r--meta/packages/elfutils/elfutils-0.148/m68k_backend.diff307
-rw-r--r--meta/packages/elfutils/elfutils-0.148/mips_backend.diff711
-rw-r--r--meta/packages/elfutils/elfutils-0.148/redhat-portability.diff1122
-rw-r--r--meta/packages/elfutils/elfutils-0.148/redhat-robustify.diff1707
-rw-r--r--meta/packages/elfutils/elfutils-0.148/testsuite-ignore-elflint.diff19
-rw-r--r--meta/packages/elfutils/elfutils-0.148/x86_64_dis.h1632
-rw-r--r--meta/packages/elfutils/elfutils_0.131.bb29
-rw-r--r--meta/packages/elfutils/elfutils_0.148.bb58
17 files changed, 8865 insertions, 458 deletions
diff --git a/meta/packages/elfutils/elfutils-0.131/gcc-4.3_support.diff b/meta/packages/elfutils/elfutils-0.131/gcc-4.3_support.diff
deleted file mode 100644
index b337da9b60..0000000000
--- a/meta/packages/elfutils/elfutils-0.131/gcc-4.3_support.diff
+++ /dev/null
@@ -1,100 +0,0 @@
-Index: elfutils-0.131/libelf/common.h
-===================================================================
---- elfutils-0.131.orig/libelf/common.h 2008-04-02 13:32:19.000000000 -0300
-+++ elfutils-0.131/libelf/common.h 2008-04-02 13:35:53.000000000 -0300
-@@ -110,45 +110,6 @@
- }
-
-
--/* Acquire lock for the descriptor and all children. */
--static void
--libelf_acquire_all (Elf *elf)
--{
-- rwlock_wrlock (elf->lock);
--
-- if (elf->kind == ELF_K_AR)
-- {
-- Elf *child = elf->state.ar.children;
--
-- while (child != NULL)
-- {
-- if (child->ref_count != 0)
-- libelf_acquire_all (child);
-- child = child->next;
-- }
-- }
--}
--
--/* Release own lock and those of the children. */
--static void
--libelf_release_all (Elf *elf)
--{
-- if (elf->kind == ELF_K_AR)
-- {
-- Elf *child = elf->state.ar.children;
--
-- while (child != NULL)
-- {
-- if (child->ref_count != 0)
-- libelf_release_all (child);
-- child = child->next;
-- }
-- }
--
-- rwlock_unlock (elf->lock);
--}
--
--
- /* Macro to convert endianess in place. It determines the function it
- has to use itself. */
- #define CONVERT(Var) \
-Index: elfutils-0.131/libelf/elf_readall.c
-===================================================================
---- elfutils-0.131.orig/libelf/elf_readall.c 2008-04-02 13:36:06.000000000 -0300
-+++ elfutils-0.131/libelf/elf_readall.c 2008-04-02 13:38:25.000000000 -0300
-@@ -60,6 +60,45 @@
- #include "common.h"
-
-
-+/* Acquire lock for the descriptor and all children. */
-+static void
-+libelf_acquire_all (Elf *elf)
-+{
-+ rwlock_wrlock (elf->lock);
-+
-+ if (elf->kind == ELF_K_AR)
-+ {
-+ Elf *child = elf->state.ar.children;
-+
-+ while (child != NULL)
-+ {
-+ if (child->ref_count != 0)
-+ libelf_acquire_all (child);
-+ child = child->next;
-+ }
-+ }
-+}
-+
-+/* Release own lock and those of the children. */
-+static void
-+libelf_release_all (Elf *elf)
-+{
-+ if (elf->kind == ELF_K_AR)
-+ {
-+ Elf *child = elf->state.ar.children;
-+
-+ while (child != NULL)
-+ {
-+ if (child->ref_count != 0)
-+ libelf_release_all (child);
-+ child = child->next;
-+ }
-+ }
-+
-+ rwlock_unlock (elf->lock);
-+}
-+
-+
- static void
- set_address (Elf *elf, size_t offset)
- {
diff --git a/meta/packages/elfutils/elfutils-0.131/gnu_inline.diff b/meta/packages/elfutils/elfutils-0.131/gnu_inline.diff
deleted file mode 100644
index 8652d0e1cf..0000000000
--- a/meta/packages/elfutils/elfutils-0.131/gnu_inline.diff
+++ /dev/null
@@ -1,105 +0,0 @@
----
- backends/ia64_retval.c | 3 +++
- libdw/libdw.h | 2 +-
- libdw/libdwP.h | 3 +++
- src/ld.h | 3 +++
- src/strip.c | 3 +++
- src/unstrip.c | 4 ++++
- 6 files changed, 17 insertions(+), 1 deletion(-)
-
---- elfutils-0.131.orig/backends/ia64_retval.c
-+++ elfutils-0.131/backends/ia64_retval.c
-@@ -31,10 +31,13 @@
- #include <dwarf.h>
-
- #define BACKEND ia64_
- #include "libebl_CPU.h"
-
-+#if defined(__GNUC_GNU_INLINE__) || defined(__GNUC_STDC_INLINE__)
-+#define inline inline __attribute__ ((gnu_inline))
-+#endif
-
- /* r8, or pair r8, r9, or aggregate up to r8-r11. */
- static const Dwarf_Op loc_intreg[] =
- {
- { .atom = DW_OP_reg8 }, { .atom = DW_OP_piece, .number = 8 },
---- elfutils-0.131.orig/libdw/libdw.h
-+++ elfutils-0.131/libdw/libdw.h
-@@ -62,11 +62,11 @@
- # define __nonnull_attribute__(args...)
- # define __deprecated_attribute__
- #endif
-
-
--#ifdef __GNUC_STDC_INLINE__
-+#if defined(__GNUC_GNU_INLINE__) || defined(__GNUC_STDC_INLINE__)
- # define __libdw_extern_inline extern __inline __attribute__ ((__gnu_inline__))
- #else
- # define __libdw_extern_inline extern __inline
- #endif
-
---- elfutils-0.131.orig/libdw/libdwP.h
-+++ elfutils-0.131/libdw/libdwP.h
-@@ -54,10 +54,13 @@
- #include <libintl.h>
- #include <stdbool.h>
-
- #include <libdw.h>
-
-+#if defined(__GNUC_GNU_INLINE__) || defined(__GNUC_STDC_INLINE__)
-+#define inline inline __attribute__ ((gnu_inline))
-+#endif
-
- /* gettext helper macros. */
- #define _(Str) dgettext ("elfutils", Str)
-
-
---- elfutils-0.131.orig/src/ld.h
-+++ elfutils-0.131/src/ld.h
-@@ -30,10 +30,13 @@
- #include <obstack.h>
- #include <stdbool.h>
- #include <stdio.h>
- #include "xelf.h"
-
-+#if defined(__GNUC_GNU_INLINE__) || defined(__GNUC_STDC_INLINE__)
-+#define inline inline __attribute__ ((gnu_inline))
-+#endif
-
- /* Recommended size of the buffer passed to ld_strerror. */
- #define ERRBUFSIZE (512)
-
- /* Character used to introduce version name after symbol. */
---- elfutils-0.131.orig/src/strip.c
-+++ elfutils-0.131/src/strip.c
-@@ -50,10 +50,13 @@
-
- #include <elf-knowledge.h>
- #include <libebl.h>
- #include <system.h>
-
-+#if defined(__GNUC_GNU_INLINE__) || defined(__GNUC_STDC_INLINE__)
-+#define inline inline __attribute__ ((gnu_inline))
-+#endif
-
- /* Name and version of program. */
- static void print_version (FILE *stream, struct argp_state *state);
- void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
-
---- elfutils-0.131.orig/src/unstrip.c
-+++ elfutils-0.131/src/unstrip.c
-@@ -60,10 +60,14 @@
-
- #ifndef _
- # define _(str) gettext (str)
- #endif
-
-+#if defined(__GNUC_GNU_INLINE__) || defined(__GNUC_STDC_INLINE__)
-+#define inline inline __attribute__ ((gnu_inline))
-+#endif
-+
- /* Name and version of program. */
- static void print_version (FILE *stream, struct argp_state *state);
- void (*argp_program_version_hook) (FILE *, struct argp_state *)
- = print_version;
-
diff --git a/meta/packages/elfutils/elfutils-0.131/prelink_build_fix.patch b/meta/packages/elfutils/elfutils-0.131/prelink_build_fix.patch
deleted file mode 100644
index 3c3cf79d91..0000000000
--- a/meta/packages/elfutils/elfutils-0.131/prelink_build_fix.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-newer prelink building (configure) fails like this
- checking libelf.h usability... no
- checking libelf.h presence... yes
- configure: WARNING: libelf.h: present but cannot be compiled
-
-Found a bug report suggesting fix for the issue here:
- http://bugs.gentoo.org/204502
-The bug report says:
-------- Comment #7 From SpanKY 2008-01-06 04:53:16 0000 [reply] -------
-do `sed -i 's:off64_t:__off64_t:'` on libelf.h ... that lets me build prelink
-
-2010/06/24
-Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
-
-Index: elfutils-0.131/libelf/libelf.h
-===================================================================
---- elfutils-0.131.orig/libelf/libelf.h
-+++ elfutils-0.131/libelf/libelf.h
-@@ -95,7 +95,7 @@ typedef struct
- Elf_Type d_type; /* Type of this piece of data. */
- unsigned int d_version; /* ELF version. */
- size_t d_size; /* Size in bytes. */
-- off64_t d_off; /* Offset into section. */
-+ __off64_t d_off; /* Offset into section. */
- size_t d_align; /* Alignment in section. */
- } Elf_Data;
-
-@@ -157,7 +157,7 @@ typedef struct
- uid_t ar_uid; /* User ID. */
- gid_t ar_gid; /* Group ID. */
- mode_t ar_mode; /* File mode. */
-- off64_t ar_size; /* File size. */
-+ __off64_t ar_size; /* File size. */
- char *ar_rawname; /* Original name of archive member. */
- } Elf_Arhdr;
-
-@@ -198,13 +198,13 @@ extern Elf_Cmd elf_next (Elf *__elf);
- extern int elf_end (Elf *__elf);
-
- /* Update ELF descriptor and write file to disk. */
--extern off64_t elf_update (Elf *__elf, Elf_Cmd __cmd);
-+extern __off64_t elf_update (Elf *__elf, Elf_Cmd __cmd);
-
- /* Determine what kind of file is associated with ELF. */
- extern Elf_Kind elf_kind (Elf *__elf) __attribute__ ((__pure__));
-
- /* Get the base offset for an object file. */
--extern off64_t elf_getbase (Elf *__elf);
-+extern __off64_t elf_getbase (Elf *__elf);
-
-
- /* Retrieve file identification data. */
-@@ -302,7 +302,7 @@ extern Elf_Data *elf_newdata (Elf_Scn *_
- would be for TYPE. The resulting Elf_Data pointer is valid until
- elf_end (ELF) is called. */
- extern Elf_Data *elf_getdata_rawchunk (Elf *__elf,
-- off64_t __offset, size_t __size,
-+ __off64_t __offset, size_t __size,
- Elf_Type __type);
-
-
-@@ -314,7 +314,7 @@ extern char *elf_strptr (Elf *__elf, siz
- extern Elf_Arhdr *elf_getarhdr (Elf *__elf);
-
- /* Return offset in archive for current file ELF. */
--extern off64_t elf_getaroff (Elf *__elf);
-+extern __off64_t elf_getaroff (Elf *__elf);
-
- /* Select archive element at OFFSET. */
- extern size_t elf_rand (Elf *__elf, size_t __offset);
diff --git a/meta/packages/elfutils/elfutils-0.131/warnings.patch b/meta/packages/elfutils/elfutils-0.131/warnings.patch
deleted file mode 100644
index 132e3cf63c..0000000000
--- a/meta/packages/elfutils/elfutils-0.131/warnings.patch
+++ /dev/null
@@ -1,154 +0,0 @@
----
- configure.ac | 4 ++++
- lib/Makefile.am | 2 +-
- libasm/Makefile.am | 2 +-
- libcpu/Makefile.am | 2 +-
- libdw/Makefile.am | 2 +-
- libebl/Makefile.am | 2 +-
- libelf/Makefile.am | 2 +-
- src/Makefile.am | 2 +-
- tests/Makefile.am | 4 ++--
- 9 files changed, 13 insertions(+), 9 deletions(-)
-
---- elfutils-0.131.orig/configure.ac
-+++ elfutils-0.131/configure.ac
-@@ -54,10 +54,14 @@ AC_DEFINE(USE_TLS))
- AH_TEMPLATE([USE_TLS], [Defined if thread local storage should be used.])
-
- dnl Add all the languages for which translations are available.
- ALL_LINGUAS=
-
-+if test X"$CFLAGS" = X; then
-+ CFLAGS="-Wall -g -O2"
-+fi
-+
- AC_PROG_CC
- AC_PROG_RANLIB
- AC_PROG_YACC
- AM_PROG_LEX
-
---- elfutils-0.131.orig/lib/Makefile.am
-+++ elfutils-0.131/lib/Makefile.am
-@@ -28,11 +28,11 @@ DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H
- if MUDFLAP
- AM_CFLAGS = -fmudflap
- else
- AM_CFLAGS =
- endif
--AM_CFLAGS += -fpic -Wall -Wshadow -Werror -Wunused -Wextra $($(*F)_CFLAGS)
-+AM_CFLAGS += -fpic -Wshadow -Wunused $($(*F)_CFLAGS)
- INCLUDES = -I$(srcdir)/../libelf -I..
-
- noinst_LIBRARIES = libeu.a
-
- libeu_a_SOURCES = xstrndup.c xmalloc.c next_prime.c \
---- elfutils-0.131.orig/libasm/Makefile.am
-+++ elfutils-0.131/libasm/Makefile.am
-@@ -28,11 +28,11 @@ DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H
- if MUDFLAP
- AM_CFLAGS = -fmudflap
- else
- AM_CFLAGS =
- endif
--AM_CFLAGS += -std=gnu99 -Wall -Wshadow -Werror -Wunused -Wextra -Wformat=2
-+AM_CFLAGS += -std=gnu99 -Wall -Wshadow -Wunused -Wextra -Wformat=2
- INCLUDES = -I. -I$(srcdir) -I.. \
- -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl -I$(top_srcdir)/libdw\
- -I$(top_srcdir)/lib
- GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
- VERSION = 1
---- elfutils-0.131.orig/libcpu/Makefile.am
-+++ elfutils-0.131/libcpu/Makefile.am
-@@ -23,11 +23,11 @@
- ## included package. Should you wish to participate in the Open Invention
- ## Network licensing program, please visit www.openinventionnetwork.com
- ## <http://www.openinventionnetwork.com>.
- ##
- DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H
--AM_CFLAGS = -Wall -Wshadow -Werror -Wextra -Wformat=2 -Wunused
-+AM_CFLAGS = -Wshadow -Wformat=2 -Wunused
- INCLUDES = -I$(srcdir)
-
- noinst_LIBRARIES = libcpu_i386.a
-
- libcpu_i386_a_SOURCES = i386_dis.c
---- elfutils-0.131.orig/libdw/Makefile.am
-+++ elfutils-0.131/libdw/Makefile.am
-@@ -31,11 +31,11 @@ else
- AM_CFLAGS =
- endif
- if BUILD_STATIC
- AM_CFLAGS += -fpic
- endif
--AM_CFLAGS += -Wall -Werror -Wshadow -Wunused -Wformat=2 -Wextra -std=gnu99
-+AM_CFLAGS += -Wshadow -Wunused -Wformat=2 -std=gnu99
- INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I.. -I$(srcdir)/../lib
- VERSION = 1
-
- COMPILE.os = $(filter-out -fprofile-arcs, $(filter-out -ftest-coverage, \
- $(COMPILE)))
---- elfutils-0.131.orig/libebl/Makefile.am
-+++ elfutils-0.131/libebl/Makefile.am
-@@ -28,11 +28,11 @@ DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DO
- if MUDFLAP
- AM_CFLAGS = -fmudflap
- else
- AM_CFLAGS =
- endif
--AM_CFLAGS += -fpic -Wall -Wshadow -Werror -Wunused -Wextra -Wformat=2 \
-+AM_CFLAGS += -fpic -Wshadow -Wunused -Wformat=2 \
- -std=gnu99
-
- INCLUDES = -I$(srcdir) -I$(top_srcdir)/libelf -I$(top_srcdir)/libdw \
- -I$(top_srcdir)/lib -I..
- VERSION = 1
---- elfutils-0.131.orig/libelf/Makefile.am
-+++ elfutils-0.131/libelf/Makefile.am
-@@ -31,11 +31,11 @@ else
- AM_CFLAGS =
- endif
- if BUILD_STATIC
- AM_CFLAGS += -fpic
- endif
--AM_CFLAGS += -Wall -Wshadow -Werror -Wunused -Wextra -Wformat=2 -std=gnu99 \
-+AM_CFLAGS += -Wshadow -Wunused -Wformat=2 -std=gnu99 \
- $($(*F)_CFLAGS)
- INCLUDES = -I$(srcdir) -I$(top_srcdir)/lib -I..
- GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include)
- VERSION = 1
- PACKAGE_VERSION = @PACKAGE_VERSION@
---- elfutils-0.131.orig/src/Makefile.am
-+++ elfutils-0.131/src/Makefile.am
-@@ -30,11 +30,11 @@ if MUDFLAP
- AM_CFLAGS = -fmudflap
- else
- AM_CFLAGS =
- endif
- AM_CFLAGS += -Wall -Wshadow -std=gnu99 $(native_ld_cflags) \
-- $(if $($(*F)_no_Werror),,-Werror) \
-+ $(if $($(*F)_no_Werror),,) \
- $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
- $(if $($(*F)_no_Wformat),,-Wformat=2) $(CFLAGS_$(*F))
-
- INCLUDES = -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
- -I$(srcdir)/../libdw -I$(srcdir)/../libdwfl \
---- elfutils-0.131.orig/tests/Makefile.am
-+++ elfutils-0.131/tests/Makefile.am
-@@ -24,15 +24,15 @@
- ## Network licensing program, please visit www.openinventionnetwork.com
- ## <http://www.openinventionnetwork.com>.
- ##
- DEFS = -DHAVE_CONFIG_H -D_GNU_SOURCE
- if MUDFLAP
--AM_CFLAGS = -Wall -Werror -Wextra -std=gnu99 -fmudflap\
-+AM_CFLAGS = -Wall -Wextra -std=gnu99 -fmudflap\
- $(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2)
- BUILD_RPATH = \$$ORIGIN/../backends
- else
--AM_CFLAGS = -Wall -Werror -Wextra -std=gnu99 \
-+AM_CFLAGS = -Wall -Wextra -std=gnu99 \
- $(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2)
- BUILT_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
- endif
-
- AM_LDFLAGS =
diff --git a/meta/packages/elfutils/elfutils-0.148/arm_backend.diff b/meta/packages/elfutils/elfutils-0.148/arm_backend.diff
new file mode 100644
index 0000000000..a309d1ba1d
--- /dev/null
+++ b/meta/packages/elfutils/elfutils-0.148/arm_backend.diff
@@ -0,0 +1,447 @@
+Index: elfutils-0.146/backends/arm_init.c
+===================================================================
+--- elfutils-0.146.orig/backends/arm_init.c 2009-04-21 14:50:01.000000000 +0000
++++ elfutils-0.146/backends/arm_init.c 2010-04-24 10:11:13.000000000 +0000
+@@ -32,21 +32,32 @@
+ #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, machine, eh, ehlen)
+- Elf *elf __attribute__ ((unused));
++ 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);
+@@ -58,7 +69,10 @@
+ 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;
+
+ return MODVERSION;
+ }
+Index: elfutils-0.146/backends/arm_regs.c
+===================================================================
+--- elfutils-0.146.orig/backends/arm_regs.c 2009-04-21 14:50:01.000000000 +0000
++++ elfutils-0.146/backends/arm_regs.c 2010-04-24 10:11:13.000000000 +0000
+@@ -28,6 +28,7 @@
+ #endif
+
+ #include <string.h>
++#include <stdio.h>
+ #include <dwarf.h>
+
+ #define BACKEND arm_
+@@ -58,7 +59,15 @@
+ namelen = 2;
+ break;
+
+- case 10 ... 12:
++ case 10 ... 11:
++ name[0] = 'r';
++ name[1] = '1';
++ name[2] = regno % 10 + '0';
++ namelen = 3;
++ break;
++
++ case 12:
++ *type = DW_ATE_unsigned;
+ name[0] = 'r';
+ name[1] = '1';
+ name[2] = regno % 10 + '0';
+@@ -73,6 +82,9 @@
+ 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;
+ /* Fall through. */
+ case 96 + 0 ... 96 + 7:
+@@ -84,11 +96,139 @@
+ 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 = "special";
+ *type = DW_ATE_unsigned;
+ return stpcpy (name, "spsr") + 1 - name;
+
++ case 129:
++ *setname = "special";
++ *type = DW_ATE_unsigned;
++ return stpcpy(name, "spsr_fiq") + 1 - name;
++
++ case 130:
++ *setname = "special";
++ *type = DW_ATE_unsigned;
++ return stpcpy(name, "spsr_irq") + 1 - name;
++
++ case 131:
++ *setname = "special";
++ *type = DW_ATE_unsigned;
++ return stpcpy(name, "spsr_abt") + 1 - name;
++
++ case 132:
++ *setname = "special";
++ *type = DW_ATE_unsigned;
++ return stpcpy(name, "spsr_und") + 1 - name;
++
++ case 133:
++ *setname = "special";
++ *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.146/backends/arm_retval.c
+===================================================================
+--- elfutils-0.146.orig/backends/arm_retval.c 2010-01-12 16:57:54.000000000 +0000
++++ elfutils-0.146/backends/arm_retval.c 2010-04-24 10:11:13.000000000 +0000
+@@ -45,6 +45,13 @@
+ #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. */
+@@ -55,8 +62,9 @@
+ #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. */
+@@ -109,14 +117,31 @@
+ 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:
+ *locp = loc_intreg;
+ return size <= 4 ? nloc_intreg : nloc_intregs ((size + 3) / 4);
+ }
++ /* fall through. */
+
+ aggregate:
++ /* XXX TODO sometimes aggregates are returned in r0 (-mabi=aapcs) */
+ *locp = loc_aggregate;
+ return nloc_aggregate;
+
+@@ -135,3 +160,18 @@
+ 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.146/libelf/elf.h
+===================================================================
+--- elfutils-0.146.orig/libelf/elf.h 2010-04-24 10:11:11.000000000 +0000
++++ elfutils-0.146/libelf/elf.h 2010-04-24 10:11:13.000000000 +0000
+@@ -2290,6 +2290,9 @@
+ #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. */
+@@ -2307,12 +2310,19 @@
+
+ /* 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
+
+ /* ARM relocs. */
+
+@@ -2344,12 +2354,75 @@
+ #define R_ARM_GOTPC 25 /* 32 bit PC relative offset to GOT */
+ #define R_ARM_GOT32 26 /* 32 bit GOT entry */
+ #define R_ARM_PLT32 27 /* 32 bit PLT address */
++#define R_ARM_CALL 28
++#define R_ARM_JUMP24 29
++#define R_ARM_THM_JUMP24 30
++#define R_ARM_BASE_ABS 31
+ #define R_ARM_ALU_PCREL_7_0 32
+ #define R_ARM_ALU_PCREL_15_8 33
+ #define R_ARM_ALU_PCREL_23_15 34
+ #define R_ARM_LDR_SBREL_11_0 35
+ #define R_ARM_ALU_SBREL_19_12 36
+ #define R_ARM_ALU_SBREL_27_20 37
++#define R_ARM_TARGET1 38
++#define R_ARM_SBREL31 39
++#define R_ARM_V4BX 40
++#define R_ARM_TARGET2 41
++#define R_ARM_PREL31 42
++#define R_ARM_MOVW_ABS_NC 43
++#define R_ARM_MOVT_ABS 44
++#define R_ARM_MOVW_PREL_NC 45
++#define R_ARM_MOVT_PREL 46
++#define R_ARM_THM_MOVW_ABS_NC 47
++#define R_ARM_THM_MOVT_ABS 48
++#define R_ARM_THM_MOVW_PREL_NC 49
++#define R_ARM_THM_MOVT_PREL 50
++#define R_ARM_THM_JUMP19 51
++#define R_ARM_THM_JUMP6 52
++#define R_ARM_THM_ALU_PREL_11_0 53
++#define R_ARM_THM_PC12 54
++#define R_ARM_ABS32_NOI 55
++#define R_ARM_REL32_NOI 56
++#define R_ARM_ALU_PC_G0_NC 57
++#define R_ARM_ALU_PC_G0 58
++#define R_ARM_ALU_PC_G1_NC 59
++#define R_ARM_ALU_PC_G1 60
++#define R_ARM_ALU_PC_G2 61
++#define R_ARM_LDR_PC_G1 62
++#define R_ARM_LDR_PC_G2 63
++#define R_ARM_LDRS_PC_G0 64
++#define R_ARM_LDRS_PC_G1 65
++#define R_ARM_LDRS_PC_G2 66
++#define R_ARM_LDC_PC_G0 67
++#define R_ARM_LDC_PC_G1 68
++#define R_ARM_LDC_PC_G2 69
++#define R_ARM_ALU_SB_G0_NC 70
++#define R_ARM_ALU_SB_G0 71
++#define R_ARM_ALU_SB_G1_NC 72
++#define R_ARM_ALU_SB_G1 73
++#define R_ARM_ALU_SB_G2 74
++#define R_ARM_LDR_SB_G0 75
++#define R_ARM_LDR_SB_G1 76
++#define R_ARM_LDR_SB_G2 77
++#define R_ARM_LDRS_SB_G0 78
++#define R_ARM_LDRS_SB_G1 79
++#define R_ARM_LDRS_SB_G2 80
++#define R_ARM_LDC_G0 81
++#define R_ARM_LDC_G1 82
++#define R_ARM_LDC_G2 83
++#define R_ARM_MOVW_BREL_NC 84
++#define R_ARM_MOVT_BREL 85
++#define R_ARM_MOVW_BREL 86
++#define R_ARM_THM_MOVW_BREL_NC 87
++#define R_ARM_THM_MOVT_BREL 88
++#define R_ARM_THM_MOVW_BREL 89
++/* 90-93 unallocated */
++#define R_ARM_PLT32_ABS 94
++#define R_ARM_GOT_ABS 95
++#define R_ARM_GOT_PREL 96
++#define R_ARM_GOT_BREL12 97
++#define R_ARM_GOTOFF12 98
++#define R_ARM_GOTRELAX 99
+ #define R_ARM_GNU_VTENTRY 100
+ #define R_ARM_GNU_VTINHERIT 101
+ #define R_ARM_THM_PC11 102 /* thumb unconditional branch */
+@@ -2364,6 +2437,12 @@
+ static TLS block offset */
+ #define R_ARM_TLS_LE32 108 /* 32 bit offset relative to static
+ TLS block */
++#define R_ARM_TLS_LDO12 109
++#define R_ARM_TLS_LE12 110
++#define R_ARM_TLS_IE12GP 111
++/* 112 - 127 private range */
++#define R_ARM_ME_TOO 128 /* obsolete */
++
+ #define R_ARM_RXPC25 249
+ #define R_ARM_RSBREL32 250
+ #define R_ARM_THM_RPC22 251
+Index: elfutils-0.146/backends/libebl_arm.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ elfutils-0.146/backends/libebl_arm.h 2010-04-24 10:11:13.000000000 +0000
+@@ -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
diff --git a/meta/packages/elfutils/elfutils-0.148/do-autoreconf.diff b/meta/packages/elfutils/elfutils-0.148/do-autoreconf.diff
new file mode 100644
index 0000000000..41afa5ef36
--- /dev/null
+++ b/meta/packages/elfutils/elfutils-0.148/do-autoreconf.diff
@@ -0,0 +1,337 @@
+Generated by copying the whole dir, running `sh debian/au