fix failed testcase
This commit is contained in:
parent
c95160b80f
commit
8f3102b190
@ -0,0 +1,48 @@
|
|||||||
|
From 8a0e2fa6579085dc8f51b2bdd90d8b00a2e7d6ab Mon Sep 17 00:00:00 2001
|
||||||
|
From: he7850 <im.bin.hu@gmail.com>
|
||||||
|
Date: Wed, 3 May 2023 15:18:27 +0800
|
||||||
|
Subject: [PATCH] aarch64: unw_step() validates address before calling
|
||||||
|
dwarf_get
|
||||||
|
|
||||||
|
Signed-off-by: he7850 <im.bin.hu@gmail.com>
|
||||||
|
---
|
||||||
|
src/aarch64/Gstep.c | 16 +++++++++++++---
|
||||||
|
1 file changed, 13 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/aarch64/Gstep.c b/src/aarch64/Gstep.c
|
||||||
|
index f4ef369d3..a2ed9bc35 100644
|
||||||
|
--- a/src/aarch64/Gstep.c
|
||||||
|
+++ b/src/aarch64/Gstep.c
|
||||||
|
@@ -156,18 +156,28 @@ unw_step (unw_cursor_t *cursor)
|
||||||
|
dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_X30], &c->dwarf.ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* Restore default memory validation state */
|
||||||
|
- c->validate = validate;
|
||||||
|
-
|
||||||
|
ret = dwarf_step (&c->dwarf);
|
||||||
|
Debug(1, "dwarf_step()=%d\n", ret);
|
||||||
|
|
||||||
|
+ /* Restore default memory validation state */
|
||||||
|
+ c->validate = validate;
|
||||||
|
+
|
||||||
|
if (unlikely (ret == -UNW_ESTOPUNWIND))
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
if (unlikely (ret < 0))
|
||||||
|
{
|
||||||
|
/* DWARF failed. */
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * We could get here because of missing/bad unwind information.
|
||||||
|
+ * Validate all addresses before dereferencing.
|
||||||
|
+ */
|
||||||
|
+ if (c->dwarf.as == unw_local_addr_space)
|
||||||
|
+ {
|
||||||
|
+ c->validate = 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (is_plt_entry (&c->dwarf))
|
||||||
|
{
|
||||||
|
Debug (2, "found plt entry\n");
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
Name: libunwind
|
Name: libunwind
|
||||||
Epoch: 2
|
Epoch: 2
|
||||||
Version: 1.6.2
|
Version: 1.6.2
|
||||||
Release: 4
|
Release: 5
|
||||||
Summary: Libunwind provides a C ABI to determine the call-chain of a program
|
Summary: Libunwind provides a C ABI to determine the call-chain of a program
|
||||||
License: BSD
|
License: BSD
|
||||||
URL: http://savannah.nongnu.org/projects/libunwind
|
URL: http://savannah.nongnu.org/projects/libunwind
|
||||||
@ -10,6 +10,7 @@ Source: http://download-mirror.savannah.gnu.org/releases/libunwind/libunwind-%{v
|
|||||||
Patch0001: 0001-fix-byte_order_is_valid-function-logic.patch
|
Patch0001: 0001-fix-byte_order_is_valid-function-logic.patch
|
||||||
Patch2: backport-check-namespace.sh-adjust-aarch64-symbols.patch
|
Patch2: backport-check-namespace.sh-adjust-aarch64-symbols.patch
|
||||||
Patch3: backport-tests-run-coredump-unwind-Skip-test-if-no-coredump-h.patch
|
Patch3: backport-tests-run-coredump-unwind-Skip-test-if-no-coredump-h.patch
|
||||||
|
Patch4: backport-aarch64-unw_step-validates-address-before-calling-dwarf_get.patch
|
||||||
|
|
||||||
ExclusiveArch: aarch64 %{ix86} x86_64 riscv64
|
ExclusiveArch: aarch64 %{ix86} x86_64 riscv64
|
||||||
|
|
||||||
@ -87,6 +88,12 @@ make check || true
|
|||||||
%{_mandir}/*/*
|
%{_mandir}/*/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jun 01 2023 wangjiang <wangjiang37@h-partners.com> - 2:1.6.2-5
|
||||||
|
- Type:bugfix
|
||||||
|
- ID:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:fix failed testcase
|
||||||
|
|
||||||
* Tue Feb 21 2023 shixuantong <shixuantong1@huawei.com> - 2:1.6.2-4
|
* Tue Feb 21 2023 shixuantong <shixuantong1@huawei.com> - 2:1.6.2-4
|
||||||
- Type:bugfix
|
- Type:bugfix
|
||||||
- ID:NA
|
- ID:NA
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user