[lldb] [testsuite] Fix Linux fail: Unwind/thread-step-out-ret-addr-check.test
authorJan Kratochvil <jan.kratochvil@redhat.com>
Sat, 21 Dec 2019 10:27:54 +0000 (11:27 +0100)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Sat, 21 Dec 2019 10:27:54 +0000 (11:27 +0100)
commit4706a60e8a071f0c6a686c45ed08c7bab0bb8446
tree154bd0103578251330d9f98b010c293876d5304d
parentdf6879ec0227a8a5e5697e505201d0f4444f03a4
[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
lldb/test/Shell/Unwind/Inputs/thread-step-out-ret-addr-check.s
lldb/test/Shell/Unwind/thread-step-out-ret-addr-check.test