Commit Graph

112 Commits

Author SHA1 Message Date
Adrian Prantl 559c6e17cd Make nrvo-string test more robust.
This is a follow-up to r364466, but better implemented. Original
commit message still applies:

    The breakpoint locations were in places where clang doesn't actually
    emit a source location for and depend on the debugger's ability to
    move the breakpoint forward onto a line that is already in the
    function epilogue. In my testing older versions of LLDB fail to do
    that, so I'm modifying the test to force a break-able location by
    calling a noinline function.

    <rdar://problem/52079841>

llvm-svn: 364589
2019-06-27 20:38:37 +00:00
Adrian Prantl 8ac899c600 Make nrvo-string test more robust.
The breakpoint locations were in places where clang doesn't actually
emit a source location for and depend on the debugger's ability to
move the breakpoint forward onto a line that is already in the
function epilogue. In my testing older versions of LLDB fail to do
that, so I'm modifying the test to force a break-able location by
calling a noinline function.

<rdar://problem/52079841>

llvm-svn: 364466
2019-06-26 20:04:09 +00:00
Jonas Devlieghere 635eb80662 [Python 3] Decode check_ouput result as UTF-8
llvm-svn: 364325
2019-06-25 15:58:32 +00:00
Amy Huang 7fac5c8d94 Store a pointer to the return value in a static alloca and let the debugger use that
as the variable address for NRVO variables.

Subscribers: hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D63361

llvm-svn: 363952
2019-06-20 17:15:21 +00:00
Adrian Prantl 2d26cf37d7 llgdb.py: Make sure to clean up the debugger on exit.
<rdar://problem/51807962>

llvm-svn: 363611
2019-06-17 20:06:34 +00:00
Amy Huang 980d3645df Add cdb test for global constants
Summary: This creates an integration test for global constants

Reviewers: rnk

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D62974

llvm-svn: 362745
2019-06-06 20:23:05 +00:00
Reid Kleckner 479568e645 Add cdb test for inline line tables
This creates an integration test for inlined call line tables, and in
particular, ones that are discontiguous. We've had issues in the past
with discontiguous inline line tables, and until r362429 LLD didn't
write the inlinees section into the PDB.

The test was reduced from https://crbug.com/965670

Reviewers: thakis

Differential Revision: https://reviews.llvm.org/D62758

llvm-svn: 362431
2019-06-03 18:24:55 +00:00
Reid Kleckner b9b64468ca Move the pybool logic from CMake to Python for simplicity
This is how similar booleans are handled, and seems to work for me
locally.

llvm-svn: 362039
2019-05-29 21:45:43 +00:00
Reid Kleckner 75d38f1e48 Add debuginfo-tests that use cdb on Windows
This is an initial prototype of how we can run debugger integration
tests on Windows. cdb and windbg share a command language and debugger
engine. Visual Studio has its own, but we should at least be able to use
cdb as the basis for optimized debug info integration tests.

There's a lot of work to do here still. For example:
- Make fewer assumptions about the SDK location
- Don't assume x64 (important, I need x86 testing)
- More environment isolation, have lit setup vcvars instead of passing
  LIB and INCLUDE down.
- Write a .py file to replace the grep+sed RUN line

But, this seemed like a good enough concept to commit as is, since it's
useful to me already.

Reviewers: aprantl, zturner

Differential Revision: https://reviews.llvm.org/D54187

llvm-svn: 361889
2019-05-28 23:03:33 +00:00
Reid Kleckner c3ad28d5e8 Set config.lit_tools_dir, which is needed by lit.llvm.initialize.
llvm-svn: 346271
2018-11-06 21:54:27 +00:00
Fangrui Song 93deae23d1 [debuginfo-tests] commands.getoutput -> subprocess.check_output
We should also make Darwin Python3 happy after r346059
The output has an extra newline but it is fine in this particular case.

llvm-svn: 346066
2018-11-03 04:52:32 +00:00
Reid Kleckner 75c16d8180 Update debuginfo tests lit for r341135
llvm-svn: 346060
2018-11-03 00:22:03 +00:00
Reid Kleckner 64189b8f57 [debuginfo-tests] Avoid "import commands" which was deprecated in Py3
llvm-svn: 346059
2018-11-03 00:16:23 +00:00
Vedant Kumar d08d9bf528 Revert "(Retry) Add a basic integration test for C++ smart pointers"
This reverts r340189. The new test is still failing on some
Apple-internal bots.

llvm-svn: 340204
2018-08-20 19:53:33 +00:00
Vedant Kumar 651c2cdb4c (Retry) Add a basic integration test for C++ smart pointers
Check that the debugger can pretty-print unique_ptr and shared_ptr when
passed as a function argument.

This was reverted in r339961 because of a bug in the version of lldb
installed on the public Green Dragon builders.

rdar://42314305

llvm-svn: 340189
2018-08-20 17:17:38 +00:00
Bruno Cardoso Lopes 526a31a5a4 Revert "Add a basic integration test for C++ smart pointers"
This reverts commit 73786631984289b3d601034b2bf4ba2b8f5845eb.

Revert r339961 since its causing debuginfo-tests to fail:
http://green.lab.llvm.org/green/job/clang-stage1-configure-RA/48514/

rdar://problem/43449629

llvm-svn: 340119
2018-08-18 04:16:50 +00:00
Vedant Kumar 103018e9d9 Add a basic integration test for C++ smart pointers
Check that the debugger can pretty-print unique_ptr and shared_ptr when
passed as a function argument.

rdar://42314305

llvm-svn: 339961
2018-08-16 23:05:15 +00:00
Vlad Tsyrklevich cd4056c881 SafeStack: Disable Darwin support
SafeStack support for Darwin has not been functional and was disabled in
r339719/r339720. Disable Darwin for the safestack debuginfo test.

llvm-svn: 339732
2018-08-14 21:38:50 +00:00
Vedant Kumar efab30c73e Disable the asan-deque.cpp integration test for AppleLLDB < v1000
Some of Apple's public CI nodes ship an lldb which has trouble debugging
the asan-deque.cpp test. Specifically, that lldb appears to either parse
location lists in the test program incorrectly or to have a broken
std::deque data formatter.

We don't want to work around this by weakening the integration test, and
we're unable to update the lldb version on the CI node at the moment.

The compromise is to require AppleLLDB >= 1000 when AppleLLDB is being
used to debug this test.

Reviewed (in person) by Adrian Prantl.

Bot failure:
http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA/48074

rdar://42892721

llvm-svn: 338937
2018-08-04 00:02:48 +00:00
Wolfgang Pieb 959fe03933 [DWARF] Change a test to ensure the creation of a __debug_ranges section.
Reviewer: aprantl
llvm-svn: 338424
2018-07-31 19:37:29 +00:00
Tim Northover c5018d46f2 [debuginfo-tests] tweak new test to be compatible with wider range of compilers.
emplace_back was added in C++11, and its usage isn't critical to what's being
tested so using push_back instead will allow this test to work with more
compilers.

llvm-svn: 338371
2018-07-31 13:19:01 +00:00
Vedant Kumar b572f64212 [DebugInfo] LowerDbgDeclare: Add derefs when handling CallInst users
LowerDbgDeclare inserts a dbg.value before each use of an address
described by a dbg.declare. When inserting a dbg.value before a CallInst
use, however, it fails to append DW_OP_deref to the DIExpression.

The DW_OP_deref is needed to reflect the fact that a dbg.value describes
a source variable directly (as opposed to a dbg.declare, which relies on
pointer indirection).

This patch adds in the DW_OP_deref where needed. This results in the
correct values being shown during a debug session for a program compiled
with ASan and optimizations (see https://reviews.llvm.org/D49520). Note
that ConvertDebugDeclareToDebugValue is already correct -- no changes
there were needed.

One complication is that SelectionDAG is unable to distinguish between
direct and indirect frame-index (FRAMEIX) SDDbgValues. This patch also
fixes this long-standing issue in order to not regress integration tests
relying on the incorrect assumption that all frame-index SDDbgValues are
indirect. This is a necessary fix: the newly-added DW_OP_derefs cannot
be lowered properly otherwise. Basically the fix prevents a direct
SDDbgValue with DIExpression(DW_OP_deref) from being dereferenced twice
by a debugger. There were a handful of tests relying on this incorrect
"FRAMEIX => indirect" assumption which actually had incorrect
DW_AT_locations: these are all fixed up in this patch.

Testing:

- check-llvm, and an end-to-end test using lldb to debug an optimized
  program.
- Existing unit tests for DIExpression::appendToStack fully cover the
  new DIExpression::append utility.
- check-debuginfo (the debug info integration tests)

Differential Revision: https://reviews.llvm.org/D49454

llvm-svn: 338069
2018-07-26 20:56:53 +00:00
Vedant Kumar d8aa717bf7 Revert "[CMake] Sort dependency list and add safestack to it"
This reverts commit r337412.

An Apple-internal bot cannot find the safestack dependency, and fails to
configure with this change.

llvm-svn: 337421
2018-07-18 20:10:43 +00:00
Vedant Kumar f3bc17cb57 [CMake] Sort dependency list and add safestack to it
The 'safestack.c' test requires safestack as a dependency.

llvm-svn: 337412
2018-07-18 18:17:39 +00:00
Ahmed Bougacha 3629e3a2a8 [debuginfo-tests] Always use the system python to invoke llgdb.py.
/usr/bin/env is recommended as a cross-platform way to find python. But:
- we're only using lldb on darwin, where we know python (or at least,
  the xcrun-style shortcut) is in /usr/bin/
- the python interpreter in LLDB comes from /S/L/F:
  $ otool -L Contents/SharedFrameworks/LLDB.framework/LLDB | grep Python
   /System/Library/Frameworks/Python.framework/Versions/2.7/Python

so when we use the lldb python module, it calls into the swig/python
support in the lldb framework, and if there's a mismatch between the
interpreter and the linked python, weird things occur.

In theory, I believe this should be done by:
- looking for the LLDB framework (llgdb.py does some of that)
- finding the binary inside the framework
- looking for the Python it was linked against (otool -L)
- finding the interpreter executable inside the Python.framework

But in practice, that's only different if we use a custom LLDB
framework/pythonpath when running these tests, and AFAIK nobody does
that right now, so the code would be dead anyway.

Don't pretend we can use any arbitrary python: just use the system one.

Differential Revision: https://reviews.llvm.org/D47967

llvm-svn: 334369
2018-06-10 19:38:26 +00:00