From f7bb07bf881c2885f30be53b6751734a89c9b215 Mon Sep 17 00:00:00 2001 From: sxt1001 Date: Tue, 21 Feb 2023 14:29:51 +0800 Subject: [PATCH] fix some test fail --- ...te-Disable-inlining-for-consume_and_.patch | 81 ++++++++++++++ ...-namespace.sh-adjust-aarch64-symbols.patch | 102 ++++++++++++++++++ ...mp-unwind-Skip-test-if-no-coredump-h.patch | 31 ++++++ libunwind.spec | 9 +- 4 files changed, 221 insertions(+), 2 deletions(-) create mode 100644 backport-Ltest-mem-validate-Disable-inlining-for-consume_and_.patch create mode 100644 backport-check-namespace.sh-adjust-aarch64-symbols.patch create mode 100644 backport-tests-run-coredump-unwind-Skip-test-if-no-coredump-h.patch diff --git a/backport-Ltest-mem-validate-Disable-inlining-for-consume_and_.patch b/backport-Ltest-mem-validate-Disable-inlining-for-consume_and_.patch new file mode 100644 index 0000000..73d6c5f --- /dev/null +++ b/backport-Ltest-mem-validate-Disable-inlining-for-consume_and_.patch @@ -0,0 +1,81 @@ +From 62de804cb8f20a7cd6933a2fcf7b3394fec103de Mon Sep 17 00:00:00 2001 +From: 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 + diff --git a/backport-check-namespace.sh-adjust-aarch64-symbols.patch b/backport-check-namespace.sh-adjust-aarch64-symbols.patch new file mode 100644 index 0000000..aa31660 --- /dev/null +++ b/backport-check-namespace.sh-adjust-aarch64-symbols.patch @@ -0,0 +1,102 @@ +From e8fa8d0ca5349d01cf5505eb0d952ef26c62cc94 Mon Sep 17 00:00:00 2001 +From: Stephen Webb +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 + diff --git a/backport-tests-run-coredump-unwind-Skip-test-if-no-coredump-h.patch b/backport-tests-run-coredump-unwind-Skip-test-if-no-coredump-h.patch new file mode 100644 index 0000000..917bce9 --- /dev/null +++ b/backport-tests-run-coredump-unwind-Skip-test-if-no-coredump-h.patch @@ -0,0 +1,31 @@ +From fedff5ac77c945fc0c5df534074163a784bfa5b3 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +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 + diff --git a/libunwind.spec b/libunwind.spec index 92aee01..1c41200 100644 --- a/libunwind.spec +++ b/libunwind.spec @@ -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 - 2:1.3.1-5 +- fix some test fail + * Wed Aug 31 2022 yanglongkang - 2:1.3.1-4 - add Epoch in spec file -- Gitee