!32 [sync] PR-30: 修复部分失败测试用例

From: @openeuler-sync-bot 
Reviewed-by: @ziyangc 
Signed-off-by: @ziyangc
This commit is contained in:
openeuler-ci-bot 2023-02-21 09:14:57 +00:00 committed by Gitee
commit d19a2a33bf
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
4 changed files with 221 additions and 2 deletions

View File

@ -0,0 +1,81 @@
From 62de804cb8f20a7cd6933a2fcf7b3394fec103de Mon Sep 17 00:00:00 2001
From: Zhaofeng Li <hello@zhaofeng.li>
Date: Sun, 27 Jun 2021 18:40:24 +0000
Subject: [PATCH] Ltest-mem-validate: Disable inlining for consume_and_run
See #222 and #227. The tests are so fragile :(
---
tests/Ltest-mem-validate.c | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/tests/Ltest-mem-validate.c b/tests/Ltest-mem-validate.c
index 1cacb9f..ac12dec 100644
--- a/tests/Ltest-mem-validate.c
+++ b/tests/Ltest-mem-validate.c
@@ -45,8 +45,11 @@ void * stack_start;
void do_backtrace (void)
{
- void* buffer[1024];
- int size = 1024;
+ /*
+ We make the assumption that we are able to rewind far enough
+ (steps > 5) before touching the forbidden region in the stack,
+ at which point the unwinding should stop gracefully.
+ */
mprotect((void*)((uintptr_t)stack_start & ~(PAGE_SIZE - 1)),
PAGE_SIZE, PROT_NONE);
@@ -66,6 +69,7 @@ void do_backtrace (void)
unw_get_reg (&cursor, UNW_REG_SP, &sp);
ret = unw_step (&cursor);
+ printf("ip=%lx, sp=%lx -> %d\n", ip, sp, ret);
if (ret < 0)
{
unw_get_reg (&cursor, UNW_REG_IP, &ip);
@@ -76,14 +80,16 @@ void do_backtrace (void)
if (steps < 5)
{
+ printf("not enough steps: %d, need 5\n", steps);
exit(-1);
}
+ printf("success, steps: %d\n", steps);
mprotect((void*)((uintptr_t)stack_start & ~(PAGE_SIZE - 1)),
PAGE_SIZE, PROT_READ|PROT_WRITE);
}
-void consume_and_run (int depth)
+void NOINLINE consume_and_run (int depth)
{
unw_cursor_t cursor;
unw_context_t uc;
@@ -106,6 +112,14 @@ main (int argc, char **argv UNUSED)
stack_start = &start;
+ /*
+ We need to make the frame at least the size protected by
+ the mprotect call so we are not forbidding access to
+ unrelated regions.
+ */
+ char string[PAGE_SIZE];
+ sprintf (string, "hello\n");
+
// Initialize pipe mem validate check, opens file descriptors
unw_getcontext(&uc);
if (unw_init_local (&cursor, &uc) < 0)
@@ -119,7 +133,7 @@ main (int argc, char **argv UNUSED)
if (!childpid)
{
/* Close fds and make sure we still work */
- int ret = close(i);
+ close(i);
}
int status;
--
2.27.0

View File

@ -0,0 +1,102 @@
From e8fa8d0ca5349d01cf5505eb0d952ef26c62cc94 Mon Sep 17 00:00:00 2001
From: Stephen Webb <swebb@blackberry.com>
Date: Fri, 21 Oct 2022 15:52:22 -0400
Subject: [PATCH] check-namespace.sh: adjust aarch64 symbols
Some symbols for aarch64 were missing, and some were marked as
extraneous in this ABI checker.
Fixes #389.
---
tests/check-namespace.sh.in | 26 +++++++++++---------------
1 file changed, 11 insertions(+), 15 deletions(-)
diff --git a/tests/check-namespace.sh.in b/tests/check-namespace.sh.in
index 6d00817..d449a83 100644
--- a/tests/check-namespace.sh.in
+++ b/tests/check-namespace.sh.in
@@ -112,7 +112,8 @@ check_local_unw_abi () {
match _U${plat}_flush_cache
match _U${plat}_get_accessors
- match _U${plat}_getcontext
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
match _U${plat}_regname
match _U${plat}_strerror
@@ -125,55 +126,48 @@ check_local_unw_abi () {
case ${plat} in
arm)
- match _U${plat}_get_elf_image
- match _U${plat}_get_exe_image_path
+ match _U${plat}_getcontext
match _U${plat}_is_fpreg
match _UL${plat}_search_unwind_table
match _UL${plat}_dwarf_search_unwind_table
match _UL${plat}_dwarf_find_unwind_table
;;
hppa)
+ match _U${plat}_getcontext
match _UL${plat}_dwarf_search_unwind_table
match _UL${plat}_dwarf_find_unwind_table
- match _U${plat}_get_elf_image
- match _U${plat}_get_exe_image_path
match _U${plat}_setcontext
;;
ia64)
+ match _U${plat}_getcontext
match _UL${plat}_search_unwind_table
- match _U${plat}_get_elf_image
- match _U${plat}_get_exe_image_path
;;
x86)
- match _U${plat}_get_elf_image
- match _U${plat}_get_exe_image_path
+ match _U${plat}_getcontext
match _U${plat}_is_fpreg
match _UL${plat}_dwarf_search_unwind_table
match _UL${plat}_dwarf_find_unwind_table
;;
x86_64)
- match _U${plat}_get_elf_image
- match _U${plat}_get_exe_image_path
+ match _U${plat}_getcontext
match _U${plat}_is_fpreg
match _UL${plat}_dwarf_search_unwind_table
match _UL${plat}_dwarf_find_unwind_table
match _U${plat}_setcontext
;;
ppc*)
+ match _U${plat}_getcontext
match _U${plat}_get_func_addr
- match _U${plat}_get_elf_image
- match _U${plat}_get_exe_image_path
match _U${plat}_is_fpreg
match _UL${plat}_dwarf_search_unwind_table
match _UL${plat}_dwarf_find_unwind_table
;;
tilegx)
+ match _U${plat}_getcontext
match _U${plat}_is_fpreg
match _UL${plat}_dwarf_search_unwind_table
match _UL${plat}_dwarf_find_unwind_table
match _UL${plat}_local_addr_space_init
- match _U${plat}_get_elf_image
- match _U${plat}_get_exe_image_path
match ${plat}_lock
;;
@@ -280,6 +274,8 @@ check_generic_unw_abi () {
match _U${plat}_is_fpreg
match _U${plat}_dwarf_search_unwind_table
match _U${plat}_dwarf_find_unwind_table
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
;;
esac
--
2.27.0

View File

@ -0,0 +1,31 @@
From fedff5ac77c945fc0c5df534074163a784bfa5b3 Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Wed, 7 Sep 2022 14:01:36 +0200
Subject: [PATCH] tests/run-coredump-unwind: Skip test if no coredump has been
created
In some build environments, coredumps are not created even if the
corresponding ulimit is positive. This change skips the test if
the coredump is missing.
---
tests/run-coredump-unwind | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tests/run-coredump-unwind b/tests/run-coredump-unwind
index 8d07742..0c2b28c 100755
--- a/tests/run-coredump-unwind
+++ b/tests/run-coredump-unwind
@@ -48,6 +48,10 @@ fi
./crasher backing_files
) 2>/dev/null
COREFILE=$TEMPDIR/core*
+if ! test -f "$COREFILE"; then
+ echo "crasher process did not produce coredump, test skipped"
+ exit 77
+fi
# magic option -testcase enables checking for the specific contents of the stack
./test-coredump-unwind $COREFILE -testcase `cat $TEMPDIR/backing_files`
--
2.33.0

View File

@ -1,7 +1,7 @@
Name: libunwind
Epoch: 2
Version: 1.3.1
Release: 4
Release: 5
Summary: Libunwind provides a C ABI to determine the call-chain of a program
License: BSD
URL: http://savannah.nongnu.org/projects/libunwind
@ -16,6 +16,9 @@ Patch6005: Also-define-NLGA-when-we-build-with-atomic-ops-80.patch
Patch6006: aarch-v2-aarch64-PLT-entry-recognition-fixes-86.patch
Patch6007: dwarf-Add-missing-opcodes-to-the-operands-table-in-G.patch
Patch6008: dwarf-Push-correct-CFA-onto-stack-for-dwarf-expressi.patch
Patch6009: backport-check-namespace.sh-adjust-aarch64-symbols.patch
Patch6010: backport-Ltest-mem-validate-Disable-inlining-for-consume_and_.patch
Patch6011: backport-tests-run-coredump-unwind-Skip-test-if-no-coredump-h.patch
ExclusiveArch: aarch64 %{ix86} x86_64
@ -65,7 +68,6 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/libunwind-ptrace*.so*
touch -r NEWS $RPM_BUILD_ROOT%{_includedir}/libunwind.h
%check
#make check may wrong
make check || true
%pre
@ -94,6 +96,9 @@ make check || true
%{_mandir}/*/*
%changelog
* Tue Feb 21 2021 shixuantong <shixuantong1@huawei.com> - 2:1.3.1-5
- fix some test fail
* Wed Aug 31 2022 yanglongkang <yanglongkang@h-partners.com> - 2:1.3.1-4
- add Epoch in spec file