Commit Graph

91 Commits

Author SHA1 Message Date
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
Davide Italiano 58c707d1ad [Darwin] Specify DWARF 2/4 when running apple accelerator tests.
These sections will be retired. Also, explicitly list llvm-objdump
as a dependency. This should've been done in the previous commit,
but I failed to squash the two changes together.

Thanks to Adrian for pointing the first problem out in a comment.

llvm-svn: 326121
2018-02-26 20:56:45 +00:00
Davide Italiano 967cb19146 [Darwin] Add a test to make sure clang emits __apple accelerator tables.
llvm-svn: 325928
2018-02-23 18:04:55 +00:00
Don Hinton 3a58f6716c [debuginfo-tests] Support moving debuginfo-tests to llvm/projects
Summary:
Add cmake and lit files needed to run these tests as an
external project.  Also, copy test_debuginfo.pl from llvm/utils since
it's only used here.  The copy in llvm/utils must be maintained as
long as bots continue to include debuginfo-tests in clang/test.

This patch depends on clang patch https://reviews.llvm.org/D41055.

Reviewers: zturner, aprantl

Reviewed By: aprantl

Subscribers: mgorny, llvm-commits, JDevlieghere

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

llvm-svn: 320495
2017-12-12 16:54:20 +00:00
Adrian Prantl a0de3a8d0a Revert "Temporarily pin tests to DWARF v2 until a more recent version of LLDB"
This reverts commit 319790.

We worked around the bug in LLVM instead.

llvm-svn: 320076
2017-12-07 19:40:31 +00:00
Adrian Prantl 6e9ea3f55a Temporarily pin tests to DWARF v2 until a more recent version of LLDB
is available on green dragon.

llvm-svn: 319790
2017-12-05 16:58:09 +00:00
Zachary Turner 79708b54f2 Re-revert "Refactor debuginfo-tests."
This is still breaking greendragon.

At this point I give up until someone can fix the greendragon
bots, and I will probably abandon this effort in favor of using
a private github repository.

llvm-svn: 318722
2017-11-21 01:20:28 +00:00
Zachary Turner 8b6ef88e7e Resubmit "Refactor debuginfo-tests" again.
This was reverted due to the tests being run twice on some
build bots.  Each run had a slightly different configuration
due to the way in which it was being invoked.  This fixes
the problem (albeit in a somewhat hacky way).  Hopefully in
the future we can get rid of the workflow of running
debuginfo-tests as part of clang, and then this hack can
go away.

llvm-svn: 318697
2017-11-20 21:41:36 +00:00
Zachary Turner b5c237ec3d Re-revert "Refactor debuginfo-tests"
This is still broken because it causes certain tests to be
run twice with slightly different configurations, which is
wrong in some cases.

You can observe this by running:

  ninja -nv check-all | grep debuginfo-tests

And seeing that it passes clang/test and clang/test/debuginfo-tests
to lit, which causes it to run debuginfo-tests twice.  The fix is
going to involve either:

  a) figuring out that we're running in this "deprecated" configuration,
     and then deleting the clang/test/debuginfo-tests path, which should
     cause it to behave identically to before, or:
  b) make lit smart enough that it doesn't descend into a sub-suite if
     that sub-suite already has a lit.cfg file.

llvm-svn: 318486
2017-11-17 00:41:18 +00:00
Zachary Turner 5e420717a1 Resubmit "Refactor debuginfo-tests"
This was reverted due to some failures on specific darwin buildbots,
the issue being that the new lit configuration was not setting the
SDKROOT environment variable.  We've tested a fix locally and confirmed
that it works, so this patch resubmits everything with the fix
applied.

llvm-svn: 318435
2017-11-16 18:26:20 +00:00
Zachary Turner faf04a09f6 Revert "Update test_debuginfo.pl script to point to new tree location."
This reverts the aforementioned patch and 2 subsequent follow-ups,
as some buildbots are still failing 2 tests because of it.
Investigation is ongoing into the cause of the failures.

llvm-svn: 318112
2017-11-13 23:33:29 +00:00
Zachary Turner 0f2ce11df7 [debuginfo-tests] Make debuginfo-tests work in a standard configuration.
Previously, debuginfo-tests was expected to be checked out into
clang/test and then the tests would automatically run as part of
check-clang.  This is not a standard workflow for handling
external projects, and it brings with it some serious drawbacks
such as the inability to depend on things other than clang, which
we will need going forward.

The goal of this patch is to migrate towards a more standard
workflow.  To ease the transition for build bot maintainers,
this patch tries not to break the existing workflow, but instead
simply deprecate it to give maintainers a chance to update
the build infrastructure.

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

llvm-svn: 317925
2017-11-10 20:57:57 +00:00
Mike Edwards 4a34338204 Revert r313600 due to bot failures on Green Dragon.
http://green.lab.llvm.org/green/job/clang-stage1-configure-RA_check/35585/

llvm-svn: 313634
2017-09-19 14:51:37 +00:00
Hans Wennborg bae0d20015 Drop -O1 case from nrvo-string.cpp
It relied on r313400 which was reverted in r313589.

llvm-svn: 313600
2017-09-18 23:54:43 +00:00
Reid Kleckner 496ecab2ba [debuginfo-tests] Add string NRVO test for PR34513
It should pass in -O0 and -O1 after r313400 and r313399.

llvm-svn: 313401
2017-09-15 21:59:39 +00:00
Paul Robinson aa117bf551 Restrict debuginfo-tests to native configurations.
llvm-svn: 312803
2017-09-08 17:10:48 +00:00
Reid Kleckner a6fc06babc Fix debuginfo-tests with GDB on Linux
Summary:
Split asan.c into asan.c and asan-blocks.c, which will be
darwin-specific. I suspect we could make it pass on Linux by adding
cmake to build BlocksRuntime from compiler-rt, but I'm not shaving that
yak yet.

asan.c and safestack.c: GDB and LLDB appear to print aggregates
differently today. Print individual elements instead of the entire
aggregate.

dbg-arg.c: GDB doesn't appear to print leading zeros when printing
pointers.

stack-var.c: Add the optnone attribute so that LLVM won't optimize away
this no-op function call. This should be a cross-platform failure
observable on Mac, so this is surprising.

Reviewers: aprantl, dblaikie

Subscribers: llvm-commits

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

llvm-svn: 312265
2017-08-31 18:16:55 +00:00
Adrian Prantl efd2b8f824 Add a test for PR33166.
This tests optimized code where a variable is allocated on the
stack for some part of the function.

llvm-svn: 303903
2017-05-25 19:33:16 +00:00
Adrian Prantl 18c18deb77 Add additional CHECKs to safestack.c.
llvm-svn: 300469
2017-04-17 17:57:05 +00:00
Adrian Prantl 7b2bf89ebe Revert "Revert "Add a test for debug info with the safestack sanitizer enabled.""
This reapplies commit r299730 with an additional REQUIRES line.

llvm-svn: 300468
2017-04-17 17:57:03 +00:00
Adrian Prantl c26059f831 Revert "Revert "Add a test for __block variables + asan.""
This reapplies commit r300228.

llvm-svn: 300467
2017-04-17 17:57:01 +00:00
Adrian Prantl 67caa192df Revert "Revert "Add an end-to-end testcase for address sanitizer.""
This reapplies r299731 and adds an appropriate REQUIRES line.

llvm-svn: 300466
2017-04-17 17:56:59 +00:00
Ahmed Bougacha 27d260baec Revert "Add a test for debug info with the safestack sanitizer enabled."
This reverts commit r299730.

It's causing failures on a bot because of missing compiler-rt:
http://green.lab.llvm.org/green/job/clang-stage2-cmake-RgSan_check

llvm-svn: 300460
2017-04-17 16:59:29 +00:00
Ahmed Bougacha 0f36aacc46 Revert "Add an end-to-end testcase for address sanitizer."
This reverts commit r299731.

It's causing failures on a bot because of missing compiler-rt:
http://green.lab.llvm.org/green/job/clang-stage2-cmake-RgSan_check

llvm-svn: 300459
2017-04-17 16:59:27 +00:00
Ahmed Bougacha 559d04d4c3 Revert "Add a test for __block variables + asan."
This reverts commit r300228.

It's causing failures on a bot because of missing compiler-rt:
http://green.lab.llvm.org/green/job/clang-stage2-cmake-RgSan_check

llvm-svn: 300458
2017-04-17 16:59:25 +00:00
Adrian Prantl 4ae261bcf7 Add a test for __block variables + asan.
llvm-svn: 300228
2017-04-13 18:06:59 +00:00
Adrian Prantl 5dcbbbc1c6 Add an end-to-end testcase for address sanitizer.
llvm-svn: 299731
2017-04-06 23:36:44 +00:00
Adrian Prantl 37b72b428a Add a test for debug info with the safestack sanitizer enabled.
llvm-svn: 299730
2017-04-06 23:30:51 +00:00
Adrian Prantl 469e119a6f Add DEBUGGER and CHECKs back to dbg-arg.c
When this testcase was migrated from IR to source the DEBUGGER
commands were not migrated together with the rest of the testcase. It
was also compiling without debug info.

Make the testcase slightly less useless by adding them back in :-)

llvm-svn: 299673
2017-04-06 17:59:50 +00:00
Adrian Prantl 7e8f2ae649 Add a testcase for variable-length arrays.
VLAs are special-cased in the frontend. This testcase ensures that the
contract between clang and llvm won't be accidentally broken by future
refactorings.

llvm-svn: 299668
2017-04-06 17:40:31 +00:00
Filipe Cabecinhas 090a237f29 New round of fixes for "Always compile debuginfo-tests for the host triple"
clang tests were breaking, at least when compiling clang only, from an
installed llvm. Make the lit.cfg script deal with the case when we don't
have a host_triple available.

llvm-svn: 220152
2014-10-18 23:47:59 +00:00
Filipe Cabecinhas 63f2c2cb65 Always compile debuginfo-tests for the host triple
Since these tests expect a working debugger, always compile them for the
host triple, assuming a working debugger is present.

This enables us to compile and run them, even when clang is, by default,
a cross-compiler (but can still target the host).

llvm-svn: 219992
2014-10-16 23:43:34 +00:00
Adrian Prantl 17a0011082 cleanup comments and remove an obsolete workaround
llvm-svn: 219623
2014-10-13 18:04:10 +00:00
Adrian Prantl 971ad5925c Address review comments from Justin Bogner.
- raise without arguments is preserving the backtrace
- move the call to terminate lldb to the exit handler

llvm-svn: 219618
2014-10-13 16:34:31 +00:00
Adrian Prantl 32cac2e062 Properly shutdown lldb by invoking SBDebugger_Terminate()
rdar://problem/18577039

llvm-svn: 219451
2014-10-09 22:16:46 +00:00
Adrian Prantl 8bcc993e27 relax testcase for LLDB output format compatibility.
llvm-svn: 204280
2014-03-19 23:06:18 +00:00
Adrian Prantl 5876656c5e Revert "xfail a test on darwin because some of the public buildbots are stuck on"
This reverts commit 203504. We decided that it is better to disable this test on a per-buildbot basis in zorg rather than everywhere on Darwin.

llvm-svn: 203627
2014-03-11 23:49:31 +00:00
Adrian Prantl de93b01a16 xfail a test on darwin because some of the public buildbots are stuck on
older versions of LLDB.

llvm-svn: 203504
2014-03-10 22:30:45 +00:00
Adrian Prantl cece9ccaf1 Revert "Experimentally enable --verify-debug-info on some testcases and see if"
Some of the buildbots need to be upgraded to a more recen version of
dwarfdump first.

Reverting for now.

llvm-svn: 203338
2014-03-08 02:46:36 +00:00
Adrian Prantl f3c43d14d9 Experimentally enable --verify-debug-info on some testcases and see if
the buildbots can take it.

llvm-svn: 203327
2014-03-08 01:23:49 +00:00
Adrian Prantl 8b466d5474 Add back the original version of the test, too. (as XFAILed on Darwin)
llvm-svn: 203326
2014-03-08 01:21:37 +00:00
Adrian Prantl 32347758b3 Work around a bug in LLDB (it finds the wrong "C", rdar://problem/14933867)
and enable this test on Darwin.

llvm-svn: 203324
2014-03-08 01:03:55 +00:00
Adrian Prantl eace60b161 Relax testcase: Newer versions of LLDB don't necessarily print the "{".
llvm-svn: 202415
2014-02-27 17:51:50 +00:00
Adrian Prantl 11f0d2ce92 Relax testcase: Newer versions of LLDB don't necessarily print the "{" either.
llvm-svn: 202319
2014-02-27 00:02:40 +00:00
Adrian Prantl 75c4779943 Add a fallback path for buildbots temporarily stuck on really old
versions of LLDB.

llvm-svn: 201828
2014-02-21 00:17:02 +00:00
Adrian Prantl 5cd2f3ee95 Relax testcases. LLDB starts counting at $0.
llvm-svn: 201806
2014-02-20 19:51:07 +00:00
Adrian Prantl d913c86b93 don't use CHECK-NEXT because it may be on the same line.
llvm-svn: 190969
2013-09-18 23:01:54 +00:00