aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/elfutils/elfutils-0.160/arm_unwind_ret_mask.patch
diff options
context:
space:
mode:
authorHongxu Jia <hongxu.jia@windriver.com>2014-11-14 17:29:03 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-11-25 12:58:19 +0000
commit74b191022494fc1d357c1f05dbce38c986bed365 (patch)
tree37b62453d9b4c3eb82d15122321026a91e5019bf /meta/recipes-devtools/elfutils/elfutils-0.160/arm_unwind_ret_mask.patch
parentc2332d304a2c872e97653c980b090efa2181123b (diff)
downloadopenembedded-core-contrib-74b191022494fc1d357c1f05dbce38c986bed365.tar.gz
elfutils: upgrade to 0.160
- Upgrade elfutils to 0.160 - Move 0.148 patches from elfutils to elfutils-0.148 - Drop 0.158 patches that got from debain, so far debian doesn't provide patches for 0.160 (the latest is 0.159) - Move fixheadercheck.patch from 0.159 to 0.160 - We choose to use 0.159 patches from debian for the current 0.160 which located in elfutils-0.160 1) Rebase the following patches from 0.159 to 0.160 hppa_backend.diff arm_backend.diff mips_backend.diff m68k_backend.diff arm_func_value.patch arm_unwind_ret_mask.patch 2) Rebase redhat-portability.diff according to commit 52a6d20519870103134166d91e22d21fd736195d Author: Roxana Ciobanu <roxana.ciobanu@intel.com> Date: Tue Jul 1 17:17:00 2014 +0300 elfutils/elfutils-native: Fix patching generated files 3) Drop the following patches which have already beem merged to 0.160 arm_unsupported.patch arm_syscall.patch unaligned.patch aarch64-run-native-test-fix.patch Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'meta/recipes-devtools/elfutils/elfutils-0.160/arm_unwind_ret_mask.patch')
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.160/arm_unwind_ret_mask.patch83
1 files changed, 83 insertions, 0 deletions
diff --git a/meta/recipes-devtools/elfutils/elfutils-0.160/arm_unwind_ret_mask.patch b/meta/recipes-devtools/elfutils/elfutils-0.160/arm_unwind_ret_mask.patch
new file mode 100644
index 0000000000..8abb36bb49
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/elfutils-0.160/arm_unwind_ret_mask.patch
@@ -0,0 +1,83 @@
+From: Mark Wielaard <mjw@redhat.com>
+Date: Sun, 15 Jun 2014 12:30:02 +0200
+Subject: libebl: Add ebl_unwind_ret_mask.
+
+Another ARM oddity. A return value address in an unwind will contain an
+extra bit to indicate whether to return to a regular ARM or THUMB function.
+Add a new ebl function to return a mask to use to get the actual return
+address during an unwind ebl_unwind_ret_mask.
+
+Rebase arm_unwind_ret_mask.patch from 0.159 to 0.160
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ backends/arm_init.c | 3 +++
+ libebl/eblinitreg.c | 8 ++++++++
+ libebl/libebl.h | 4 ++++
+ libebl/libeblP.h | 6 ++++++
+ 4 files changed, 21 insertions(+)
+
+diff --git a/backends/arm_init.c b/backends/arm_init.c
+index 2266829..f8df042 100644
+--- a/backends/arm_init.c
++++ b/backends/arm_init.c
+@@ -87,5 +87,8 @@ arm_init (elf, machine, eh, ehlen)
+ /* Bit zero encodes whether an function address is THUMB or ARM. */
+ eh->func_addr_mask = ~(GElf_Addr)1;
+
++ /* Bit zero encodes whether to return to a THUMB or ARM function. */
++ eh->unwind_ret_mask = ~(GElf_Addr)1;
++
+ return MODVERSION;
+ }
+diff --git a/libebl/eblinitreg.c b/libebl/eblinitreg.c
+index 5729b3c..ca681c0 100644
+--- a/libebl/eblinitreg.c
++++ b/libebl/eblinitreg.c
+@@ -56,3 +56,11 @@ ebl_func_addr_mask (Ebl *ebl)
+ return ((ebl == NULL || ebl->func_addr_mask == 0)
+ ? ~(GElf_Addr)0 : ebl->func_addr_mask);
+ }
++
++GElf_Addr
++ebl_unwind_ret_mask (Ebl *ebl)
++{
++ return ((ebl == NULL || ebl->unwind_ret_mask == 0)
++ ? ~(GElf_Addr)0 : ebl->unwind_ret_mask);
++}
++
+diff --git a/libebl/libebl.h b/libebl/libebl.h
+index 40cf635..be70027 100644
+--- a/libebl/libebl.h
++++ b/libebl/libebl.h
+@@ -420,6 +420,10 @@ extern size_t ebl_frame_nregs (Ebl *ebl)
+ tables) is needed. */
+ extern GElf_Addr ebl_func_addr_mask (Ebl *ebl);
+
++/* Mask to use for unwind return address in case the architecture adds
++ some extra non-address bits to it. */
++extern GElf_Addr ebl_unwind_ret_mask (Ebl *ebl);
++
+ /* Convert *REGNO as is in DWARF to a lower range suitable for
+ Dwarf_Frame->REGS indexing. */
+ extern bool ebl_dwarf_to_regno (Ebl *ebl, unsigned *regno)
+diff --git a/libebl/libeblP.h b/libebl/libeblP.h
+index dbd67f3..e18ace6 100644
+--- a/libebl/libeblP.h
++++ b/libebl/libeblP.h
+@@ -70,6 +70,12 @@ struct ebl
+ otherwise it should be the actual mask to use. */
+ GElf_Addr func_addr_mask;
+
++ /* Mask to use to get the return address from an unwind in case the
++ architecture adds some extra non-address bits to it. When not
++ initialized (0) then ebl_unwind_ret_mask will return ~0, otherwise
++ it should be the actual mask to use. */
++ GElf_Addr unwind_ret_mask;
++
+ /* Function descriptor load address and table as used by
+ ebl_resolve_sym_value if available for this arch. */
+ GElf_Addr fd_addr;
+--
+1.9.1
+