summaryrefslogtreecommitdiffstats
path: root/lldb/test/Shell
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2019-12-21 11:27:54 +0100
committerJan Kratochvil <jan.kratochvil@redhat.com>2019-12-21 11:27:54 +0100
commit4706a60e8a071f0c6a686c45ed08c7bab0bb8446 (patch)
tree154bd0103578251330d9f98b010c293876d5304d /lldb/test/Shell
parentdf6879ec0227a8a5e5697e505201d0f4444f03a4 (diff)
downloadbcm5719-llvm-4706a60e8a071f0c6a686c45ed08c7bab0bb8446.tar.gz
bcm5719-llvm-4706a60e8a071f0c6a686c45ed08c7bab0bb8446.zip
[lldb] [testsuite] Fix Linux fail: Unwind/thread-step-out-ret-addr-check.test
D71372 introduced: `Unwind/thread-step-out-ret-addr-check.test` failing on Fedora 30 Linux x86_64. [lldb] Add additional validation on return address in 'thread step-out' https://reviews.llvm.org/D71372 One problem is the underscored `_nonstandard_stub` in the `.s` file but not in the LLDB command: (lldb) breakpoint set -n nonstandard_stub Breakpoint 1: no locations (pending). WARNING: Unable to resolve breakpoint to any actual locations. (lldb) process launch Process 21919 exited with status = 0 (0x00000000) Process 21919 launched: '/home/jkratoch/redhat/llvm-monorepo-clangassert/tools/lldb/test/Unwind/Output/thread-step-out-ret-addr-check.test.tmp' (x86_64) (lldb) thread step-out error: invalid thread (lldb) _ Another problem is that Fedora Linux has executable stack by default and all programs indicate non-executable stack by `PT_GNU_STACK`, after fixing the underscore I was getting: (lldb) thread step-out Process 22294 exited with status = 0 (0x00000000) (lldb) _ A different approach was tried as: [lldb] Refactor thread-step-out-ret-addr-check test to use .data instead of stack variable https://reviews.llvm.org/D71789 Differential revision: https://reviews.llvm.org/D71784
Diffstat (limited to 'lldb/test/Shell')
-rw-r--r--lldb/test/Shell/Unwind/Inputs/thread-step-out-ret-addr-check.s8
-rw-r--r--lldb/test/Shell/Unwind/thread-step-out-ret-addr-check.test2
2 files changed, 7 insertions, 3 deletions
diff --git a/lldb/test/Shell/Unwind/Inputs/thread-step-out-ret-addr-check.s b/lldb/test/Shell/Unwind/Inputs/thread-step-out-ret-addr-check.s
index d18ea24fba4..2fb4935b38b 100644
--- a/lldb/test/Shell/Unwind/Inputs/thread-step-out-ret-addr-check.s
+++ b/lldb/test/Shell/Unwind/Inputs/thread-step-out-ret-addr-check.s
@@ -4,13 +4,13 @@ asm_main:
sub $0x8, %rsp
movq $0, (%rsp)
push %rsp
- jmp _nonstandard_stub
+ jmp nonstandard_stub
# Takes a single pointer argument via the stack, which is nonstandard for x64.
# Executing 'thread step-out' here will initially attempt to write a
# breakpoint to that stack address, but should fail because of the executable
# memory check.
-_nonstandard_stub:
+nonstandard_stub:
mov (%rsp), %rdi
mov (%rdi), %rsi
add $1, %rsi
@@ -18,3 +18,7 @@ _nonstandard_stub:
add $0x10, %rsp
ret
+
+#ifdef __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
diff --git a/lldb/test/Shell/Unwind/thread-step-out-ret-addr-check.test b/lldb/test/Shell/Unwind/thread-step-out-ret-addr-check.test
index 53436cd55af..ec73bd808c2 100644
--- a/lldb/test/Shell/Unwind/thread-step-out-ret-addr-check.test
+++ b/lldb/test/Shell/Unwind/thread-step-out-ret-addr-check.test
@@ -1,7 +1,7 @@
# Test that `thread step-out` fails when the "return address"
# points to non-executable memory.
-# REQUIRES: target-x86_64, system-darwin
+# REQUIRES: target-x86_64
# RUN: %clang_host %p/Inputs/call-asm.c %p/Inputs/thread-step-out-ret-addr-check.s -o %t
# RUN: %lldb %t -s %s -b 2>&1 | FileCheck %s
OpenPOWER on IntegriCloud