[debuginfo-tests] r318435 - Resubmit "Refactor debuginfo-tests"
Zachary Turner via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 16 15:54:49 PST 2017
Can you confirm these tests only run once when you do this locally?
On Thu, Nov 16, 2017 at 3:53 PM Zachary Turner <zturner at google.com> wrote:
> It's too bad it doesn't show the command output from the passed runs :-/
>
> Failure:
> http://green.lab.llvm.org/green/job/clang-stage1-configure-RA/40578/testReport/debuginfo-tests/debuginfo-tests/vla_c/
> Pass:
> http://green.lab.llvm.org/green/job/clang-stage1-configure-RA/40578/testReport/debuginfo-tests/debuginfo-tests/vla_c_2/
>
> On Thu, Nov 16, 2017 at 3:52 PM Adrian Prantl <aprantl at apple.com> wrote:
>
>> Alternatively, perhaps the other tests all use a single clang driver
>> invocation with the clang driver choosing a temporary object file and these
>> two manually specify a name for the .o file.
>>
>> -- adrian
>>
>>
>> On Nov 16, 2017, at 3:50 PM, Adrian Prantl via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>> I think this makes sense: Last time they failed because they were the
>> only ones that needed an SDKROOT, and this time they failed because they
>> are the only ones that take longer to compile (because the #import some
>> huge system headers). All other tests are so short that they compile
>> instantaneously. These two include system frameworks so they take longer to
>> compile and thus are scheduled to run twice at the same time.
>>
>> -- adrian
>>
>> On Nov 16, 2017, at 3:47 PM, Zachary Turner <zturner at google.com> wrote:
>>
>> Are you sure that's actually the problem? Because it's mighty suspicious
>> that it's the exact same two tests that failed with the previous version of
>> the patch.
>>
>> On Thu, Nov 16, 2017 at 3:42 PM Adrian Prantl <aprantl at apple.com> wrote:
>>
>>> No, because it won't fix the issue. All debuginfo-tests tests are
>>> running twice, and whichever test happens to be scheduled to execute
>>> simultaneously will fail, but it's nothing special about these two tests,
>>> they just compile slow enough for the problem to manifest.
>>>
>>> -- adrian
>>>
>>>
>>> On Nov 16, 2017, at 3:37 PM, Zachary Turner <zturner at google.com> wrote:
>>>
>>> Can we disable these two tests for now until we can look into this? I'd
>>> like to fix it, but this isn't something that I have the ability to
>>> diagnose on my end and I'm going to be blocked again if we end up having to
>>> revert. :-/
>>>
>>> On Thu, Nov 16, 2017 at 3:34 PM Zachary Turner <zturner at google.com>
>>> wrote:
>>>
>>>> We can try a clobber. Another possibility is that in an effort to make
>>>> it so you can run it using both workflows, it now ends up running it
>>>> twice. Once the old way (by descending into it from the clang tree) and
>>>> once the new way (.
>>>>
>>>> Does this not reproduce for you locally when running ninja check-clang?
>>>>
>>>> I don't think the directory mismatch is a problem. In debuginfo-tests/
>>>> lit.cfg.py I explicitly set the output directory to that location. I
>>>> don't think it should matter that it's Output instead of Output/tests
>>>>
>>>> On Thu, Nov 16, 2017 at 3:29 PM Adrian Prantl <aprantl at apple.com>
>>>> wrote:
>>>>
>>>>> It looks like it is actually running the test twice:
>>>>> FAIL: debuginfo-tests :: foreach.m (34967 of 40843)
>>>>> ...
>>>>> PASS: debuginfo-tests :: foreach.m (34972 of 40843)
>>>>>
>>>>> does that help to narrow it down?
>>>>>
>>>>> On Nov 16, 2017, at 3:21 PM, Adrian Prantl via llvm-commits <
>>>>> llvm-commits at lists.llvm.org> wrote:
>>>>>
>>>>> Debugger output was: imported lldb from:
>>>>> "/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/Resources/Python"
>>>>> error: vla.c.tmp.out debug map object file
>>>>> '/Users/buildslave/jenkins/workspace/clang-stage1-configure-RA/clang-build/tools/clang/test/debuginfo-tests/Output/vla.c.tmp.o'
>>>>> has changed (actual time is 0x5a0de4bc, debug map time is 0x5a0de4bb) since
>>>>> this executable was linked, file will be ignored
>>>>>
>>>>>
>>>>> These are different errors than last time. Could it be that there is a
>>>>> directory mismatch? You moved the tests to tests/ but this path is in
>>>>> Output/ instead of Output/tests?
>>>>>
>>>>> It looks like it is finding a file from the build before the big
>>>>> rename. But this is just speculation.
>>>>>
>>>>> -- adrian
>>>>>
>>>>> On Nov 16, 2017, at 3:13 PM, Zachary Turner <zturner at google.com>
>>>>> wrote:
>>>>>
>>>>> Uhh, well that's weird. a because I didn't get an email (or maybe it
>>>>> got filtered somehow), and b) because I made the fix that we thought was
>>>>> going to work.
>>>>>
>>>>> Can you think of a way to diagnose this?
>>>>>
>>>>> (One option is disabling these two tests until we figure it out. It's
>>>>> not ideal but the code churn from repeated reverts and resubmits is pretty
>>>>> unfortunate)
>>>>>
>>>>> On Thu, Nov 16, 2017 at 3:01 PM Adrian Prantl <aprantl at apple.com>
>>>>> wrote:
>>>>> Looks like this broke the Darwin bots again:
>>>>>
>>>>> http://green.lab.llvm.org/green/job/clang-stage1-configure-RA/40578/
>>>>>
>>>>> -- adrian
>>>>>
>>>>>
>>>>> On Nov 16, 2017, at 10:26 AM, Zachary Turner via llvm-commits <
>>>>> llvm-commits at lists.llvm.org> wrote:
>>>>>
>>>>> Author: zturner
>>>>> Date: Thu Nov 16 10:26:20 2017
>>>>> New Revision: 318435
>>>>>
>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=318435&view=rev
>>>>> Log:
>>>>> 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.
>>>>>
>>>>> Added:
>>>>> debuginfo-tests/trunk/CMakeLists.txt
>>>>> debuginfo-tests/trunk/lit.cfg.py
>>>>> debuginfo-tests/trunk/lit.site.cfg.py.in
>>>>> debuginfo-tests/trunk/tests/
>>>>> debuginfo-tests/trunk/tests/aggregate-indirect-arg.cpp
>>>>> debuginfo-tests/trunk/tests/asan-blocks.c
>>>>> debuginfo-tests/trunk/tests/asan.c
>>>>> debuginfo-tests/trunk/tests/block_var.m
>>>>> debuginfo-tests/trunk/tests/blocks.m
>>>>> debuginfo-tests/trunk/tests/ctor.cpp
>>>>> debuginfo-tests/trunk/tests/dbg-arg.c
>>>>> debuginfo-tests/trunk/tests/foreach.m
>>>>> debuginfo-tests/trunk/tests/forward-declare-class.cpp
>>>>> debuginfo-tests/trunk/tests/lit.local.cfg
>>>>> debuginfo-tests/trunk/tests/llgdb.py
>>>>> debuginfo-tests/trunk/tests/nested-struct.cpp
>>>>> debuginfo-tests/trunk/tests/nrvo-string.cpp
>>>>> debuginfo-tests/trunk/tests/safestack.c
>>>>> debuginfo-tests/trunk/tests/sret.cpp
>>>>> debuginfo-tests/trunk/tests/stack-var.c
>>>>> debuginfo-tests/trunk/tests/static-member-2.cpp
>>>>> debuginfo-tests/trunk/tests/static-member.cpp
>>>>> debuginfo-tests/trunk/tests/vla.c
>>>>> Removed:
>>>>> debuginfo-tests/trunk/aggregate-indirect-arg.cpp
>>>>> debuginfo-tests/trunk/asan-blocks.c
>>>>> debuginfo-tests/trunk/asan.c
>>>>> debuginfo-tests/trunk/block_var.m
>>>>> debuginfo-tests/trunk/blocks.m
>>>>> debuginfo-tests/trunk/ctor.cpp
>>>>> debuginfo-tests/trunk/dbg-arg.c
>>>>> debuginfo-tests/trunk/foreach.m
>>>>> debuginfo-tests/trunk/forward-declare-class.cpp
>>>>> debuginfo-tests/trunk/lit.local.cfg
>>>>> debuginfo-tests/trunk/llgdb.py
>>>>> debuginfo-tests/trunk/nested-struct.cpp
>>>>> debuginfo-tests/trunk/nrvo-string.cpp
>>>>> debuginfo-tests/trunk/safestack.c
>>>>> debuginfo-tests/trunk/sret.cpp
>>>>> debuginfo-tests/trunk/stack-var.c
>>>>> debuginfo-tests/trunk/static-member-2.cpp
>>>>> debuginfo-tests/trunk/static-member.cpp
>>>>> debuginfo-tests/trunk/vla.c
>>>>>
>>>>> Added: debuginfo-tests/trunk/CMakeLists.txt
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/CMakeLists.txt?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/CMakeLists.txt (added)
>>>>> +++ debuginfo-tests/trunk/CMakeLists.txt Thu Nov 16 10:26:20 2017
>>>>> @@ -0,0 +1,36 @@
>>>>> +# Debug Info tests. These tests invoke clang to generate programs
>>>>> with
>>>>> +# various types of debug info, and then run those programs under a
>>>>> debugger
>>>>> +# such as GDB or LLDB to verify the results.
>>>>> +
>>>>> +set(DEBUGINFO_TESTS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
>>>>> +set(DEBUGINFO_TESTS_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
>>>>> +
>>>>> +set(DEBUGINFO_TEST_DEPS
>>>>> + clang
>>>>> + llvm-config
>>>>> + FileCheck
>>>>> + count
>>>>> + not
>>>>> + )
>>>>> +
>>>>> +get_target_property(CLANG_SOURCE_DIR clang SOURCE_DIR)
>>>>> +
>>>>> +if (TARGET lld)
>>>>> + set(DEBUGINFO_TESTS_HAS_LLD 1)
>>>>> + list(APPEND DEBUGINFO_TEST_DEPS lld)
>>>>> + get_target_property(LLD_SOURCE_DIR lld SOURCE_DIR)
>>>>> +endif()
>>>>> +
>>>>> +configure_lit_site_cfg(
>>>>> + ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
>>>>> + ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
>>>>> + MAIN_CONFIG
>>>>> + ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py
>>>>> + )
>>>>> +
>>>>> +add_lit_testsuite(check-debuginfo "Running debug info integration
>>>>> tests"
>>>>> + ${CMAKE_CURRENT_BINARY_DIR}
>>>>> + DEPENDS ${DEBUGINFO_TEST_DEPS}
>>>>> + )
>>>>> +
>>>>> +set_target_properties(check-debuginfo PROPERTIES FOLDER "Debug info
>>>>> tests")
>>>>> \ No newline at end of file
>>>>>
>>>>> Removed: debuginfo-tests/trunk/aggregate-indirect-arg.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/aggregate-indirect-arg.cpp?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/aggregate-indirect-arg.cpp (original)
>>>>> +++ debuginfo-tests/trunk/aggregate-indirect-arg.cpp (removed)
>>>>> @@ -1,32 +0,0 @@
>>>>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> -// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -// Radar 8945514
>>>>> -// DEBUGGER: break 22
>>>>> -// DEBUGGER: r
>>>>> -// DEBUGGER: p v
>>>>> -// CHECK: ${{[0-9]+}} =
>>>>> -// CHECK: Data ={{.*}} 0x0{{(0*)}}
>>>>> -// CHECK: Kind = 2142
>>>>> -
>>>>> -class SVal {
>>>>> -public:
>>>>> - ~SVal() {}
>>>>> - const void* Data;
>>>>> - unsigned Kind;
>>>>> -};
>>>>> -
>>>>> -void bar(SVal &v) {}
>>>>> -class A {
>>>>> -public:
>>>>> - void foo(SVal v) { bar(v); }
>>>>> -};
>>>>> -
>>>>> -int main() {
>>>>> - SVal v;
>>>>> - v.Data = 0;
>>>>> - v.Kind = 2142;
>>>>> - A a;
>>>>> - a.foo(v);
>>>>> - return 0;
>>>>> -}
>>>>>
>>>>> Removed: debuginfo-tests/trunk/asan-blocks.c
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/asan-blocks.c?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/asan-blocks.c (original)
>>>>> +++ debuginfo-tests/trunk/asan-blocks.c (removed)
>>>>> @@ -1,41 +0,0 @@
>>>>> -// RUN: %clang -fblocks %target_itanium_abi_host_triple -arch x86_64
>>>>> %s -o %t.out -g -fsanitize=address
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -// FIXME: Remove system-darwin when we build BlocksRuntime everywhere.
>>>>> -// REQUIRES: not_asan, system-darwin
>>>>> -// Zorg configures the ASAN stage2 bots to not build the
>>>>> asan
>>>>> -// compiler-rt. Only run this test on non-asanified
>>>>> configurations.
>>>>> -void b();
>>>>> -struct S {
>>>>> - int a[8];
>>>>> -};
>>>>> -
>>>>> -int f(struct S s, unsigned i) {
>>>>> - // DEBUGGER: break 17
>>>>> - // DEBUGGER: r
>>>>> - // DEBUGGER: p s
>>>>> - // CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] =
>>>>> 5, [6] = 6, [7] = 7)
>>>>> - return s.a[i];
>>>>> -}
>>>>> -
>>>>> -int main(int argc, const char **argv) {
>>>>> - struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
>>>>> - if (f(s, 4) == 4) {
>>>>> - // DEBUGGER: break 27
>>>>> - // DEBUGGER: c
>>>>> - // DEBUGGER: p s
>>>>> - // CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] =
>>>>> 5, [6] = 6, [7] = 7)
>>>>> - b();
>>>>> - }
>>>>> - return 0;
>>>>> -}
>>>>> -
>>>>> -void c() {}
>>>>> -
>>>>> -void b() {
>>>>> - // DEBUGGER: break 40
>>>>> - // DEBUGGER: c
>>>>> - // DEBUGGER: p x
>>>>> - // CHECK: 42
>>>>> - __block int x = 42;
>>>>> - c();
>>>>> -}
>>>>>
>>>>> Removed: debuginfo-tests/trunk/asan.c
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/asan.c?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/asan.c (original)
>>>>> +++ debuginfo-tests/trunk/asan.c (removed)
>>>>> @@ -1,31 +0,0 @@
>>>>> -// RUN: %clang -fblocks %target_itanium_abi_host_triple -arch x86_64
>>>>> %s -o %t.out -g -fsanitize=address
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -// REQUIRES: not_asan
>>>>> -// Zorg configures the ASAN stage2 bots to not build the
>>>>> asan
>>>>> -// compiler-rt. Only run this test on non-asanified
>>>>> configurations.
>>>>> -//
>>>>> -
>>>>> -struct S {
>>>>> - int a[8];
>>>>> -};
>>>>> -
>>>>> -int f(struct S s, unsigned i) {
>>>>> - // DEBUGGER: break 14
>>>>> - return s.a[i];
>>>>> -}
>>>>> -
>>>>> -int main(int argc, const char **argv) {
>>>>> - struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
>>>>> - if (f(s, 4) == 4)
>>>>> - return f(s, 0);
>>>>> - return 0;
>>>>> -}
>>>>> -
>>>>> -// DEBUGGER: r
>>>>> -// DEBUGGER: p s
>>>>> -// CHECK: a =
>>>>> -// DEBUGGER: p s.a[0]
>>>>> -// CHECK: = 0
>>>>> -// DEBUGGER: p s.a[1]
>>>>> -// CHECK: = 1
>>>>> -// DEBUGGER: p s.a[7]
>>>>>
>>>>> Removed: debuginfo-tests/trunk/block_var.m
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/block_var.m?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/block_var.m (original)
>>>>> +++ debuginfo-tests/trunk/block_var.m (removed)
>>>>> @@ -1,32 +0,0 @@
>>>>> -// RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> -// RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out
>>>>> -framework Foundation
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -
>>>>> -// REQUIRES: system-darwin
>>>>> -
>>>>> -// DEBUGGER: break 24
>>>>> -// DEBUGGER: r
>>>>> -// DEBUGGER: p result
>>>>> -// CHECK: ${{[0-9]}} = 42
>>>>> -
>>>>> -void doBlock(void (^block)(void))
>>>>> -{
>>>>> - block();
>>>>> -}
>>>>> -
>>>>> -int I(int n)
>>>>> -{
>>>>> - __block int result;
>>>>> - int i = 2;
>>>>> - doBlock(^{
>>>>> - result = n;
>>>>> - });
>>>>> - return result + i; /* Check value of 'result' */
>>>>> -}
>>>>> -
>>>>> -
>>>>> -int main (int argc, const char * argv[]) {
>>>>> - return I(42);
>>>>> -}
>>>>> -
>>>>> -
>>>>>
>>>>> Removed: debuginfo-tests/trunk/blocks.m
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/blocks.m?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/blocks.m (original)
>>>>> +++ debuginfo-tests/trunk/blocks.m (removed)
>>>>> @@ -1,43 +0,0 @@
>>>>> -// RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> -// RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out
>>>>> -framework Foundation
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -
>>>>> -// REQUIRES: system-darwin
>>>>> -// Radar 9279956
>>>>> -
>>>>> -// DEBUGGER: break 31
>>>>> -// DEBUGGER: r
>>>>> -// DEBUGGER: p m2
>>>>> -// CHECK: ${{[0-9]}} = 1
>>>>> -// DEBUGGER: p dbTransaction
>>>>> -// CHECK: ${{[0-9]}} = 0
>>>>> -// DEBUGGER: p master
>>>>> -// CHECK: ${{[0-9]}} = 0
>>>>> -
>>>>> -#include <Cocoa/Cocoa.h>
>>>>> -
>>>>> -extern void foo(void(^)(void));
>>>>> -
>>>>> - at interface A:NSObject @end
>>>>> - at implementation A
>>>>> -- (void) helper {
>>>>> - int master = 0;
>>>>> - __block int m2 = 0;
>>>>> - __block int dbTransaction = 0;
>>>>> - int (^x)(void) = ^(void) { (void) self;
>>>>> - (void) master;
>>>>> - (void) dbTransaction;
>>>>> - m2++;
>>>>> - return m2;
>>>>> - };
>>>>> - master = x();
>>>>> -}
>>>>> - at end
>>>>> -
>>>>> -void foo(void(^x)(void)) {}
>>>>> -
>>>>> -int main() {
>>>>> - A *a = [A alloc];
>>>>> - [a helper];
>>>>> - return 0;
>>>>> -}
>>>>>
>>>>> Removed: debuginfo-tests/trunk/ctor.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/ctor.cpp?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/ctor.cpp (original)
>>>>> +++ debuginfo-tests/trunk/ctor.cpp (removed)
>>>>> @@ -1,25 +0,0 @@
>>>>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> -// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -
>>>>> -
>>>>> -// DEBUGGER: break 14
>>>>> -// DEBUGGER: r
>>>>> -// DEBUGGER: p *this
>>>>> -// CHECK-NEXT-NOT: Cannot access memory at address
>>>>> -
>>>>> -class A {
>>>>> -public:
>>>>> - A() : zero(0), data(42)
>>>>> - {
>>>>> - }
>>>>> -private:
>>>>> - int zero;
>>>>> - int data;
>>>>> -};
>>>>> -
>>>>> -int main() {
>>>>> - A a;
>>>>> - return 0;
>>>>> -}
>>>>> -
>>>>>
>>>>> Removed: debuginfo-tests/trunk/dbg-arg.c
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/dbg-arg.c?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/dbg-arg.c (original)
>>>>> +++ debuginfo-tests/trunk/dbg-arg.c (removed)
>>>>> @@ -1,46 +0,0 @@
>>>>> -// This test case checks debug info during register moves for an
>>>>> argument.
>>>>> -// RUN: %clang %target_itanium_abi_host_triple -m64 -mllvm
>>>>> -fast-isel=false %s -c -o %t.o -g
>>>>> -// RUN: %clang %target_itanium_abi_host_triple -m64 %t.o -o %t.out
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -//
>>>>> -// DEBUGGER: break 26
>>>>> -// DEBUGGER: r
>>>>> -// DEBUGGER: print mutex
>>>>> -// CHECK: ={{.* 0x[0-9A-Fa-f]+}}
>>>>> -//
>>>>> -// Radar 8412415
>>>>> -
>>>>> -struct _mtx
>>>>> -{
>>>>> - long unsigned int ptr;
>>>>> - int waiters;
>>>>> - struct {
>>>>> - int tag;
>>>>> - int pad;
>>>>> - } mtxi;
>>>>> -};
>>>>> -
>>>>> -
>>>>> -int foobar(struct _mtx *mutex) {
>>>>> - int r = 1;
>>>>> - int l = 0;
>>>>> - int j = 0;
>>>>> - do {
>>>>> - if (mutex->waiters) {
>>>>> - r = 2;
>>>>> - }
>>>>> - j = bar(r, l);
>>>>> - ++l;
>>>>> - } while (l < j);
>>>>> - return r + j;
>>>>> -}
>>>>> -
>>>>> -int bar(int i, int j) {
>>>>> - return i + j;
>>>>> -}
>>>>> -
>>>>> -int main() {
>>>>> - struct _mtx m;
>>>>> - m.waiters = 0;
>>>>> - return foobar(&m);
>>>>> -}
>>>>>
>>>>> Removed: debuginfo-tests/trunk/foreach.m
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/foreach.m?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/foreach.m (original)
>>>>> +++ debuginfo-tests/trunk/foreach.m (removed)
>>>>> @@ -1,31 +0,0 @@
>>>>> -// RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> -// RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out
>>>>> -framework Foundation
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -//
>>>>> -// REQUIRES: system-darwin
>>>>> -// Radar 8757124
>>>>> -
>>>>> -// DEBUGGER: break 25
>>>>> -// DEBUGGER: r
>>>>> -// DEBUGGER: po thing
>>>>> -// CHECK: aaa
>>>>> -
>>>>> -#import <Foundation/Foundation.h>
>>>>> -
>>>>> -int main (int argc, const char * argv[]) {
>>>>> -
>>>>> - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
>>>>> - NSArray *things = [NSArray arrayWithObjects:@"one", @"two",
>>>>> @"three" , nil];
>>>>> - for (NSString *thing in things) {
>>>>> - NSLog (@"%@", thing);
>>>>> - }
>>>>> -
>>>>> - things = [NSArray arrayWithObjects:@"aaa", @"bbb", @"ccc" , nil];
>>>>> - for (NSString *thing in things) {
>>>>> - NSLog (@"%@", thing);
>>>>> - }
>>>>> - [pool release];
>>>>> - return 0;
>>>>> -}
>>>>> -
>>>>> -
>>>>>
>>>>> Removed: debuginfo-tests/trunk/forward-declare-class.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/forward-declare-class.cpp?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/forward-declare-class.cpp (original)
>>>>> +++ debuginfo-tests/trunk/forward-declare-class.cpp (removed)
>>>>> @@ -1,27 +0,0 @@
>>>>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> -// RUN: %test_debuginfo %s %t.o
>>>>> -// Radar 9168773
>>>>> -
>>>>> -// DEBUGGER: ptype A
>>>>> -// Work around a gdb bug where it believes that a class is a
>>>>> -// struct if there aren't any methods - even though it's tagged
>>>>> -// as a class.
>>>>> -// CHECK: type = {{struct|class}} A {
>>>>> -// CHECK-NEXT: {{(public:){0,1}}}
>>>>> -// CHECK-NEXT: int MyData;
>>>>> -// CHECK-NEXT: }
>>>>> -class A;
>>>>> -class B {
>>>>> -public:
>>>>> - void foo(const A *p);
>>>>> -};
>>>>> -
>>>>> -B iEntry;
>>>>> -
>>>>> -class A {
>>>>> -public:
>>>>> - int MyData;
>>>>> -};
>>>>> -
>>>>> -A irp;
>>>>> -
>>>>>
>>>>> Added: debuginfo-tests/trunk/lit.cfg.py
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/lit.cfg.py?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/lit.cfg.py (added)
>>>>> +++ debuginfo-tests/trunk/lit.cfg.py Thu Nov 16 10:26:20 2017
>>>>> @@ -0,0 +1,59 @@
>>>>> +# -*- Python -*-
>>>>> +
>>>>> +import os
>>>>> +import platform
>>>>> +import re
>>>>> +import subprocess
>>>>> +import tempfile
>>>>> +
>>>>> +import lit.formats
>>>>> +import lit.util
>>>>> +
>>>>> +from lit.llvm import llvm_config
>>>>> +from lit.llvm.subst import ToolSubst
>>>>> +from lit.llvm.subst import FindTool
>>>>> +
>>>>> +# Configuration file for the 'lit' test runner.
>>>>> +
>>>>> +# name: The name of this test suite.
>>>>> +config.name = 'debuginfo-tests'
>>>>> +
>>>>> +# testFormat: The test format to use to interpret tests.
>>>>> +#
>>>>> +# For now we require '&&' between commands, until they get globally
>>>>> killed and
>>>>> +# the test runner updated.
>>>>> +config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell)
>>>>> +
>>>>> +# suffixes: A list of file extensions to treat as test files.
>>>>> +config.suffixes = ['.c', '.cpp', '.m']
>>>>> +
>>>>> +# excludes: A list of directories to exclude from the testsuite. The
>>>>> 'Inputs'
>>>>> +# subdirectories contain auxiliary inputs for various tests in their
>>>>> parent
>>>>> +# directories.
>>>>> +config.excludes = ['Inputs']
>>>>> +
>>>>> +# test_source_root: The root path where tests are located.
>>>>> +config.test_source_root =
>>>>> os.path.join(config.debuginfo_tests_src_root, 'tests')
>>>>> +
>>>>> +# test_exec_root: The root path where tests should be run.
>>>>> +config.test_exec_root = config.debuginfo_tests_obj_root
>>>>> +
>>>>> +llvm_config.use_default_substitutions()
>>>>> +
>>>>> +llvm_config.use_clang()
>>>>> +
>>>>> +if config.llvm_use_sanitizer:
>>>>> + # Propagate path to symbolizer for ASan/MSan.
>>>>> + llvm_config.with_system_environment(
>>>>> + ['ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH'])
>>>>> +
>>>>> +tool_dirs = [config.llvm_tools_dir]
>>>>> +
>>>>> +tools = [
>>>>> + ToolSubst('%test_debuginfo', command=os.path.join(
>>>>> + config.llvm_src_root, 'utils', 'test_debuginfo.pl')),
>>>>> +]
>>>>> +
>>>>> +llvm_config.add_tool_substitutions(tools, tool_dirs)
>>>>> +
>>>>> +lit.util.usePlatformSdkOnDarwin(config, lit_config)
>>>>>
>>>>> Removed: debuginfo-tests/trunk/lit.local.cfg
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/lit.local.cfg?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/lit.local.cfg (original)
>>>>> +++ debuginfo-tests/trunk/lit.local.cfg (removed)
>>>>> @@ -1,3 +0,0 @@
>>>>> -# debuginfo-tests are not expected to pass in a cross-compilation
>>>>> setup.
>>>>> -if 'native' not in config.available_features:
>>>>> - config.unsupported = True
>>>>>
>>>>> Added: debuginfo-tests/trunk/lit.site.cfg.py.in
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/lit.site.cfg.py.in?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/lit.site.cfg.py.in (added)
>>>>> +++ debuginfo-tests/trunk/lit.site.cfg.py.in Thu Nov 16 10:26:20 2017
>>>>> @@ -0,0 +1,25 @@
>>>>> + at LIT_SITE_CFG_IN_HEADER@
>>>>> +
>>>>> +import lit.util
>>>>> +
>>>>> +config.test_exec_root = "@CMAKE_BINARY_DIR@"
>>>>> +
>>>>> +config.llvm_src_root = "@LLVM_SOURCE_DIR@"
>>>>> +config.llvm_obj_root = "@LLVM_BINARY_DIR@"
>>>>> +config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
>>>>> +config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
>>>>> +config.llvm_shlib_dir = "@SHLIBDIR@"
>>>>> +config.llvm_plugin_ext = "@LLVM_PLUGIN_EXT@"
>>>>> +config.debuginfo_tests_obj_root = "@DEBUGINFO_TESTS_BINARY_DIR@"
>>>>> +config.debuginfo_tests_src_root = "@DEBUGINFO_TESTS_SOURCE_DIR@"
>>>>> +config.has_lld = lit.util.pythonize_bool("@DEBUGINFO_TESTS_HAS_LLD@")
>>>>> +config.host_triple = "@LLVM_HOST_TRIPLE@"
>>>>> +config.target_triple = "@TARGET_TRIPLE@"
>>>>> +config.host_arch = "@HOST_ARCH@"
>>>>> +
>>>>> +config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
>>>>> +
>>>>> + at LIT_SITE_CFG_IN_FOOTER@
>>>>> +
>>>>> +# Let the main config do the real work.
>>>>> +lit_config.load_config(config, "@DEBUGINFO_TESTS_SOURCE_DIR@/
>>>>> lit.cfg.py")
>>>>>
>>>>> Removed: debuginfo-tests/trunk/llgdb.py
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/llgdb.py?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/llgdb.py (original)
>>>>> +++ debuginfo-tests/trunk/llgdb.py (removed)
>>>>> @@ -1,157 +0,0 @@
>>>>> -#!/bin/env python
>>>>> -"""
>>>>> -A gdb-compatible frontend for lldb that implements just enough
>>>>> -commands to run the tests in the debuginfo-tests repository with lldb.
>>>>> -"""
>>>>> -
>>>>> -#
>>>>> ----------------------------------------------------------------------
>>>>> -# Auto-detect lldb python module.
>>>>> -import commands, platform, os, sys
>>>>> -try:
>>>>> - # Just try for LLDB in case PYTHONPATH is already correctly setup.
>>>>> - import lldb
>>>>> -except ImportError:
>>>>> - lldb_python_dirs = list()
>>>>> - # lldb is not in the PYTHONPATH, try some defaults for the
>>>>> current platform.
>>>>> - platform_system = platform.system()
>>>>> - if platform_system == 'Darwin':
>>>>> - # On Darwin, try the currently selected Xcode directory
>>>>> - xcode_dir = commands.getoutput("xcode-select --print-path")
>>>>> - if xcode_dir:
>>>>> - lldb_python_dirs.append(os.path.realpath(xcode_dir +
>>>>> -'/../SharedFrameworks/LLDB.framework/Resources/Python'))
>>>>> - lldb_python_dirs.append(xcode_dir +
>>>>> -'/Library/PrivateFrameworks/LLDB.framework/Resources/Python')
>>>>> - lldb_python_dirs.append(
>>>>> -'/System/Library/PrivateFrameworks/LLDB.framework/Resources/Python')
>>>>> - success = False
>>>>> - for lldb_python_dir in lldb_python_dirs:
>>>>> - if os.path.exists(lldb_python_dir):
>>>>> - if not (sys.path.__contains__(lldb_python_dir)):
>>>>> - sys.path.append(lldb_python_dir)
>>>>> - try:
>>>>> - import lldb
>>>>> - except ImportError:
>>>>> - pass
>>>>> - else:
>>>>> - print 'imported lldb from: "%s"' %
>>>>> (lldb_python_dir)
>>>>> - success = True
>>>>> - break
>>>>> - if not success:
>>>>> - print "error: couldn't locate the 'lldb' module, please set
>>>>> PYTHONPATH correctly"
>>>>> - sys.exit(1)
>>>>> -#
>>>>> ----------------------------------------------------------------------
>>>>> -
>>>>> -# Command line option handling.
>>>>> -import argparse
>>>>> -parser = argparse.ArgumentParser(description=__doc__)
>>>>> -parser.add_argument('--quiet', '-q', action="store_true",
>>>>> help='ignored')
>>>>> -parser.add_argument('-batch', action="store_true",
>>>>> - help='exit after processing comand line')
>>>>> -parser.add_argument('-n', action="store_true", help='ignore .lldb
>>>>> file')
>>>>> -parser.add_argument('-x', dest='script', type=file, help='execute
>>>>> commands from file')
>>>>> -parser.add_argument("target", help="the program to debug")
>>>>> -args = parser.parse_args()
>>>>> -
>>>>> -
>>>>> -# Create a new debugger instance.
>>>>> -debugger = lldb.SBDebugger.Create()
>>>>> -debugger.SkipLLDBInitFiles(args.n)
>>>>> -
>>>>> -# Don't return from lldb function calls until the process stops.
>>>>> -debugger.SetAsync(False)
>>>>> -
>>>>> -# Create a target from a file and arch.
>>>>> -arch = os.popen("file "+args.target).read().split()[-1]
>>>>> -target = debugger.CreateTargetWithFileAndArch(args.target, arch)
>>>>> -
>>>>> -if not target:
>>>>> - print "Could not create target", args.target
>>>>> - sys.exit(1)
>>>>> -
>>>>> -if not args.script:
>>>>> - print "Interactive mode is not implemented."
>>>>> - sys.exit(1)
>>>>> -
>>>>> -import re
>>>>> -for command in args.script:
>>>>> - # Strip newline and whitespaces and split into words.
>>>>> - cmd = command[:-1].strip().split()
>>>>> - if not cmd:
>>>>> - continue
>>>>> -
>>>>> - print '> %s'% command[:-1]
>>>>> -
>>>>> - try:
>>>>> - if re.match('^r|(run)$', cmd[0]):
>>>>> - error = lldb.SBError()
>>>>> - launchinfo = lldb.SBLaunchInfo([])
>>>>> - launchinfo.SetWorkingDirectory(os.getcwd())
>>>>> - process = target.Launch(launchinfo, error)
>>>>> - print error
>>>>> - if not process or error.fail:
>>>>> - state = process.GetState()
>>>>> - print "State = %d" % state
>>>>> - print """
>>>>> -ERROR: Could not launch process.
>>>>> -NOTE: There are several reasons why this may happen:
>>>>> - * Root needs to run "DevToolsSecurity --enable".
>>>>> - * Older versions of lldb cannot launch more than one process
>>>>> simultaneously.
>>>>> -"""
>>>>> - sys.exit(1)
>>>>> -
>>>>> - elif re.match('^b|(break)$', cmd[0]) and len(cmd) == 2:
>>>>> - if re.match('[0-9]+', cmd[1]):
>>>>> - # b line
>>>>> - mainfile =
>>>>> target.FindFunctions('main')[0].compile_unit.file
>>>>> - print target.BreakpointCreateByLocation(mainfile,
>>>>> int(cmd[1]))
>>>>> - else:
>>>>> - # b file:line
>>>>> - file, line = cmd[1].split(':')
>>>>> - print target.BreakpointCreateByLocation(file,
>>>>> int(line))
>>>>> -
>>>>> - elif re.match('^ptype$', cmd[0]) and len(cmd) == 2:
>>>>> - # GDB's ptype has multiple incarnations depending on its
>>>>> - # argument (global variable, function, type). The
>>>>> definition
>>>>> - # here is for looking up the signature of a function and
>>>>> only
>>>>> - # if that fails it looks for a type with that name.
>>>>> - # Type lookup in LLDB would be "image lookup --type".
>>>>> - for elem in target.FindFunctions(cmd[1]):
>>>>> - print elem.function.type
>>>>> - continue
>>>>> - print target.FindFirstType(cmd[1])
>>>>> -
>>>>> - elif re.match('^po$', cmd[0]) and len(cmd) > 1:
>>>>> - try:
>>>>> - opts = lldb.SBExpressionOptions()
>>>>> - opts.SetFetchDynamicValue(True)
>>>>> - opts.SetCoerceResultToId(True)
>>>>> - print target.EvaluateExpression(' '.join(cmd[1:]),
>>>>> opts)
>>>>> - except:
>>>>> - # FIXME: This is a fallback path for the lab.llvm.org
>>>>> - # buildbot running OS X 10.7; it should be removed.
>>>>> - thread = process.GetThreadAtIndex(0)
>>>>> - frame = thread.GetFrameAtIndex(0)
>>>>> - print frame.EvaluateExpression(' '.join(cmd[1:]))
>>>>> -
>>>>> - elif re.match('^p|(print)$', cmd[0]) and len(cmd) > 1:
>>>>> - thread = process.GetThreadAtIndex(0)
>>>>> - frame = thread.GetFrameAtIndex(0)
>>>>> - print frame.EvaluateExpression(' '.join(cmd[1:]))
>>>>> -
>>>>> - elif re.match('^n|(next)$', cmd[0]):
>>>>> - thread = process.GetThreadAtIndex(0)
>>>>> - thread.StepOver()
>>>>> -
>>>>> - elif re.match('^q|(quit)$', cmd[0]):
>>>>> - sys.exit(0)
>>>>> -
>>>>> - else:
>>>>> - print debugger.HandleCommand(' '.join(cmd))
>>>>> -
>>>>> - except SystemExit:
>>>>> - lldb.SBDebugger_Terminate()
>>>>> - raise
>>>>> - except:
>>>>> - print 'Could not handle the command "%s"' % ' '.join(cmd)
>>>>> -
>>>>>
>>>>> Removed: debuginfo-tests/trunk/nested-struct.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/nested-struct.cpp?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/nested-struct.cpp (original)
>>>>> +++ debuginfo-tests/trunk/nested-struct.cpp (removed)
>>>>> @@ -1,21 +0,0 @@
>>>>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> -// RUN: %test_debuginfo %s %t.o
>>>>> -// Radar 9440721
>>>>> -// If debug info for my_number() is emitted outside function foo's
>>>>> scope
>>>>> -// then a debugger may not be able to handle it. At least one version
>>>>> of
>>>>> -// gdb crashes in such cases.
>>>>> -
>>>>> -// DEBUGGER: ptype foo
>>>>> -// CHECK: int (void)
>>>>> -
>>>>> -int foo() {
>>>>> - struct Local {
>>>>> - static int my_number() {
>>>>> - return 42;
>>>>> - }
>>>>> - };
>>>>> -
>>>>> - int i = 0;
>>>>> - i = Local::my_number();
>>>>> - return i + 1;
>>>>> -}
>>>>>
>>>>> Removed: debuginfo-tests/trunk/nrvo-string.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/nrvo-string.cpp?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/nrvo-string.cpp (original)
>>>>> +++ debuginfo-tests/trunk/nrvo-string.cpp (removed)
>>>>> @@ -1,27 +0,0 @@
>>>>> -// This ensures that DW_OP_deref is inserted when necessary, such as
>>>>> when NRVO
>>>>> -// of a string object occurs in C++.
>>>>> -//
>>>>> -// RUN: %clangxx -O0 -fno-exceptions %target_itanium_abi_host_triple
>>>>> %s -o %t.out -g
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -// RUN: %clangxx -O1 -fno-exceptions %target_itanium_abi_host_triple
>>>>> %s -o %t.out -g
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -//
>>>>> -// PR34513
>>>>> -
>>>>> -struct string {
>>>>> - string() {}
>>>>> - string(int i) : i(i) {}
>>>>> - ~string() {}
>>>>> - int i = 0;
>>>>> -};
>>>>> -string get_string() {
>>>>> - string unused;
>>>>> - string result = 3;
>>>>> -// DEBUGGER: break 21
>>>>> - return result;
>>>>> -}
>>>>> -int main() { get_string(); }
>>>>> -
>>>>> -// DEBUGGER: r
>>>>> -// DEBUGGER: print result.i
>>>>> -// CHECK: = 3
>>>>>
>>>>> Removed: debuginfo-tests/trunk/safestack.c
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/safestack.c?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/safestack.c (original)
>>>>> +++ debuginfo-tests/trunk/safestack.c (removed)
>>>>> @@ -1,51 +0,0 @@
>>>>> -// RUN: %clang %target_itanium_abi_host_triple -arch x86_64 %s -o
>>>>> %t.out -g -fsanitize=safe-stack
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -// REQUIRES: not_asan
>>>>> -// Zorg configures the ASAN stage2 bots to not build the
>>>>> -// safestack compiler-rt. Only run this test on
>>>>> -// non-asanified configurations.
>>>>> -
>>>>> -struct S {
>>>>> - int a[8];
>>>>> -};
>>>>> -
>>>>> -int f(struct S s, unsigned i);
>>>>> -
>>>>> -int main(int argc, const char **argv) {
>>>>> - struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
>>>>> - // DEBUGGER: break 17
>>>>> - f(s, 4);
>>>>> - // DEBUGGER: break 19
>>>>> - return 0;
>>>>> -}
>>>>> -
>>>>> -int f(struct S s, unsigned i) {
>>>>> - // DEBUGGER: break 24
>>>>> - return s.a[i];
>>>>> -}
>>>>> -
>>>>> -// DEBUGGER: r
>>>>> -// DEBUGGER: p s
>>>>> -// CHECK: a =
>>>>> -// DEBUGGER: p s.a[0]
>>>>> -// CHECK: = 0
>>>>> -// DEBUGGER: p s.a[1]
>>>>> -// CHECK: = 1
>>>>> -// DEBUGGER: p s.a[7]
>>>>> -// CHECK: = 7
>>>>> -// DEBUGGER: c
>>>>> -// DEBUGGER: p s
>>>>> -// CHECK: a =
>>>>> -// DEBUGGER: p s.a[0]
>>>>> -// CHECK: = 0
>>>>> -// DEBUGGER: p s.a[1]
>>>>> -// CHECK: = 1
>>>>> -// DEBUGGER: p s.a[7]
>>>>> -// DEBUGGER: c
>>>>> -// DEBUGGER: p s
>>>>> -// CHECK: a =
>>>>> -// DEBUGGER: p s.a[0]
>>>>> -// CHECK: = 0
>>>>> -// DEBUGGER: p s.a[1]
>>>>> -// CHECK: = 1
>>>>> -// DEBUGGER: p s.a[7]
>>>>>
>>>>> Removed: debuginfo-tests/trunk/sret.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/sret.cpp?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/sret.cpp (original)
>>>>> +++ debuginfo-tests/trunk/sret.cpp (removed)
>>>>> @@ -1,71 +0,0 @@
>>>>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> -// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -// Radar 8775834
>>>>> -// DEBUGGER: break 62
>>>>> -// DEBUGGER: r
>>>>> -// DEBUGGER: p a
>>>>> -// CHECK: ${{[0-9]+}} =
>>>>> -// LLDB does not print artificial members.
>>>>> -// CHECK: {{(_vptr\$A =)?.*}}m_int = 12
>>>>> -
>>>>> -class A
>>>>> -{
>>>>> -public:
>>>>> - A (int i=0);
>>>>> - A (const A& rhs);
>>>>> - const A&
>>>>> - operator= (const A& rhs);
>>>>> - virtual ~A() {}
>>>>> -
>>>>> - int get_int();
>>>>> -
>>>>> -protected:
>>>>> - int m_int;
>>>>> -};
>>>>> -
>>>>> -A::A (int i) :
>>>>> - m_int(i)
>>>>> -{
>>>>> -}
>>>>> -
>>>>> -A::A (const A& rhs) :
>>>>> - m_int (rhs.m_int)
>>>>> -{
>>>>> -}
>>>>> -
>>>>> -const A &
>>>>> -A::operator =(const A& rhs)
>>>>> -{
>>>>> - m_int = rhs.m_int;
>>>>> - return *this;
>>>>> -}
>>>>> -
>>>>> -int A::get_int()
>>>>> -{
>>>>> - return m_int;
>>>>> -}
>>>>> -
>>>>> -class B
>>>>> -{
>>>>> -public:
>>>>> - B () {}
>>>>> -
>>>>> - A AInstance();
>>>>> -};
>>>>> -
>>>>> -A
>>>>> -B::AInstance()
>>>>> -{
>>>>> - A a(12);
>>>>> - return a;
>>>>> -}
>>>>> -
>>>>> -int main (int argc, char const *argv[])
>>>>> -{
>>>>> - B b;
>>>>> - int return_val = b.AInstance().get_int();
>>>>> -
>>>>> - A a(b.AInstance());
>>>>> - return return_val;
>>>>> -}
>>>>>
>>>>> Removed: debuginfo-tests/trunk/stack-var.c
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/stack-var.c?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/stack-var.c (original)
>>>>> +++ debuginfo-tests/trunk/stack-var.c (removed)
>>>>> @@ -1,18 +0,0 @@
>>>>> -// RUN: %clang %target_itanium_abi_host_triple %s -O -o %t.out -g
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -
>>>>> -void __attribute__((noinline, optnone)) bar(int *test) {}
>>>>> -int main() {
>>>>> - int test;
>>>>> - test = 23;
>>>>> - // DEBUGGER: break 12
>>>>> - // DEBUGGER: r
>>>>> - // DEBUGGER: p test
>>>>> - // CHECK: = 23
>>>>> - bar(&test);
>>>>> - // DEBUGGER: break 17
>>>>> - // DEBUGGER: c
>>>>> - // DEBUGGER: p test
>>>>> - // CHECK: = 23
>>>>> - return test;
>>>>> -}
>>>>>
>>>>> Removed: debuginfo-tests/trunk/static-member-2.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/static-member-2.cpp?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/static-member-2.cpp (original)
>>>>> +++ debuginfo-tests/trunk/static-member-2.cpp (removed)
>>>>> @@ -1,39 +0,0 @@
>>>>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -o %t -c
>>>>> -// RUN: %clangxx %target_itanium_abi_host_triple %t -o %t.out
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -
>>>>> -// FIXME: LLDB finds the wrong symbol for "C".
>>>>> rdar://problem/14933867
>>>>> -// XFAIL: darwin
>>>>> -
>>>>> -// DEBUGGER: delete breakpoints
>>>>> -// DEBUGGER: break static-member.cpp:33
>>>>> -// DEBUGGER: r
>>>>> -// DEBUGGER: ptype C
>>>>> -// CHECK: {{struct|class}} C {
>>>>> -// CHECK: static const int a;
>>>>> -// CHECK-NEXT: static int b;
>>>>> -// CHECK-NEXT: static int c;
>>>>> -// CHECK-NEXT: int d;
>>>>> -// CHECK-NEXT: }
>>>>> -// DEBUGGER: p C::a
>>>>> -// CHECK: ${{[0-9]}} = 4
>>>>> -// DEBUGGER: p C::c
>>>>> -// CHECK: ${{[0-9]}} = 15
>>>>> -
>>>>> -// PR14471, PR14734
>>>>> -
>>>>> -class C {
>>>>> -public:
>>>>> - const static int a = 4;
>>>>> - static int b;
>>>>> - static int c;
>>>>> - int d;
>>>>> -};
>>>>> -
>>>>> -int C::c = 15;
>>>>> -const int C::a;
>>>>> -
>>>>> -int main() {
>>>>> - C instance_C;
>>>>> - return C::a;
>>>>> -}
>>>>>
>>>>> Removed: debuginfo-tests/trunk/static-member.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/static-member.cpp?rev=318434&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/static-member.cpp (original)
>>>>> +++ debuginfo-tests/trunk/static-member.cpp (removed)
>>>>> @@ -1,36 +0,0 @@
>>>>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -o %t -c
>>>>> -// RUN: %clangxx %target_itanium_abi_host_triple %t -o %t.out
>>>>> -// RUN: %test_debuginfo %s %t.out
>>>>> -
>>>>> -// DEBUGGER: delete breakpoints
>>>>> -// DEBUGGER: break static-member.cpp:33
>>>>> -// DEBUGGER: r
>>>>> -// DEBUGGER: ptype MyClass
>>>>> -// CHECK: {{struct|class}} MyClass {
>>>>> -// CHECK: static const int a;
>>>>> -// CHECK-NEXT: static int b;
>>>>> -// CHECK-NEXT: static int c;
>>>>> -// CHECK-NEXT: int d;
>>>>> -// CHECK-NEXT: }
>>>>> -// DEBUGGER: p MyClass::a
>>>>> -// CHECK: ${{[0-9]}} = 4
>>>>> -// DEBUGGER: p MyClass::c
>>>>> -// CHECK: ${{[0-9]}} = 15
>>>>> -
>>>>> -// PR14471, PR14734
>>>>> -
>>>>> -class MyClass {
>>>>> -public:
>>>>> - const static int a = 4;
>>>>> - static int b;
>>>>> - static int c;
>>>>> - int d;
>>>>> -};
>>>>> -
>>>>> -int MyClass::c = 15;
>>>>> -const int MyClass::a;
>>>>> -
>>>>> -int main() {
>>>>> - MyClass instance_MyClass;
>>>>> - return MyClass::a;
>>>>> -}
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/aggregate-indirect-arg.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/aggregate-indirect-arg.cpp?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/aggregate-indirect-arg.cpp (added)
>>>>> +++ debuginfo-tests/trunk/tests/aggregate-indirect-arg.cpp Thu Nov 16
>>>>> 10:26:20 2017
>>>>> @@ -0,0 +1,32 @@
>>>>> +// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> +// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
>>>>> +// RUN: %test_debuginfo %s %t.out
>>>>> +// Radar 8945514
>>>>> +// DEBUGGER: break 22
>>>>> +// DEBUGGER: r
>>>>> +// DEBUGGER: p v
>>>>> +// CHECK: ${{[0-9]+}} =
>>>>> +// CHECK: Data ={{.*}} 0x0{{(0*)}}
>>>>> +// CHECK: Kind = 2142
>>>>> +
>>>>> +class SVal {
>>>>> +public:
>>>>> + ~SVal() {}
>>>>> + const void* Data;
>>>>> + unsigned Kind;
>>>>> +};
>>>>> +
>>>>> +void bar(SVal &v) {}
>>>>> +class A {
>>>>> +public:
>>>>> + void foo(SVal v) { bar(v); }
>>>>> +};
>>>>> +
>>>>> +int main() {
>>>>> + SVal v;
>>>>> + v.Data = 0;
>>>>> + v.Kind = 2142;
>>>>> + A a;
>>>>> + a.foo(v);
>>>>> + return 0;
>>>>> +}
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/asan-blocks.c
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/asan-blocks.c?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/asan-blocks.c (added)
>>>>> +++ debuginfo-tests/trunk/tests/asan-blocks.c Thu Nov 16 10:26:20 2017
>>>>> @@ -0,0 +1,41 @@
>>>>> +// RUN: %clang -fblocks %target_itanium_abi_host_triple -arch x86_64
>>>>> %s -o %t.out -g -fsanitize=address
>>>>> +// RUN: %test_debuginfo %s %t.out
>>>>> +// FIXME: Remove system-darwin when we build BlocksRuntime everywhere.
>>>>> +// REQUIRES: not_asan, system-darwin
>>>>> +// Zorg configures the ASAN stage2 bots to not build the
>>>>> asan
>>>>> +// compiler-rt. Only run this test on non-asanified
>>>>> configurations.
>>>>> +void b();
>>>>> +struct S {
>>>>> + int a[8];
>>>>> +};
>>>>> +
>>>>> +int f(struct S s, unsigned i) {
>>>>> + // DEBUGGER: break 17
>>>>> + // DEBUGGER: r
>>>>> + // DEBUGGER: p s
>>>>> + // CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] =
>>>>> 5, [6] = 6, [7] = 7)
>>>>> + return s.a[i];
>>>>> +}
>>>>> +
>>>>> +int main(int argc, const char **argv) {
>>>>> + struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
>>>>> + if (f(s, 4) == 4) {
>>>>> + // DEBUGGER: break 27
>>>>> + // DEBUGGER: c
>>>>> + // DEBUGGER: p s
>>>>> + // CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] =
>>>>> 5, [6] = 6, [7] = 7)
>>>>> + b();
>>>>> + }
>>>>> + return 0;
>>>>> +}
>>>>> +
>>>>> +void c() {}
>>>>> +
>>>>> +void b() {
>>>>> + // DEBUGGER: break 40
>>>>> + // DEBUGGER: c
>>>>> + // DEBUGGER: p x
>>>>> + // CHECK: 42
>>>>> + __block int x = 42;
>>>>> + c();
>>>>> +}
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/asan.c
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/asan.c?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/asan.c (added)
>>>>> +++ debuginfo-tests/trunk/tests/asan.c Thu Nov 16 10:26:20 2017
>>>>> @@ -0,0 +1,31 @@
>>>>> +// RUN: %clang -fblocks %target_itanium_abi_host_triple -arch x86_64
>>>>> %s -o %t.out -g -fsanitize=address
>>>>> +// RUN: %test_debuginfo %s %t.out
>>>>> +// REQUIRES: not_asan
>>>>> +// Zorg configures the ASAN stage2 bots to not build the
>>>>> asan
>>>>> +// compiler-rt. Only run this test on non-asanified
>>>>> configurations.
>>>>> +//
>>>>> +
>>>>> +struct S {
>>>>> + int a[8];
>>>>> +};
>>>>> +
>>>>> +int f(struct S s, unsigned i) {
>>>>> + // DEBUGGER: break 14
>>>>> + return s.a[i];
>>>>> +}
>>>>> +
>>>>> +int main(int argc, const char **argv) {
>>>>> + struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
>>>>> + if (f(s, 4) == 4)
>>>>> + return f(s, 0);
>>>>> + return 0;
>>>>> +}
>>>>> +
>>>>> +// DEBUGGER: r
>>>>> +// DEBUGGER: p s
>>>>> +// CHECK: a =
>>>>> +// DEBUGGER: p s.a[0]
>>>>> +// CHECK: = 0
>>>>> +// DEBUGGER: p s.a[1]
>>>>> +// CHECK: = 1
>>>>> +// DEBUGGER: p s.a[7]
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/block_var.m
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/block_var.m?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/block_var.m (added)
>>>>> +++ debuginfo-tests/trunk/tests/block_var.m Thu Nov 16 10:26:20 2017
>>>>> @@ -0,0 +1,32 @@
>>>>> +// RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> +// RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out
>>>>> -framework Foundation
>>>>> +// RUN: %test_debuginfo %s %t.out
>>>>> +
>>>>> +// REQUIRES: system-darwin
>>>>> +
>>>>> +// DEBUGGER: break 24
>>>>> +// DEBUGGER: r
>>>>> +// DEBUGGER: p result
>>>>> +// CHECK: ${{[0-9]}} = 42
>>>>> +
>>>>> +void doBlock(void (^block)(void))
>>>>> +{
>>>>> + block();
>>>>> +}
>>>>> +
>>>>> +int I(int n)
>>>>> +{
>>>>> + __block int result;
>>>>> + int i = 2;
>>>>> + doBlock(^{
>>>>> + result = n;
>>>>> + });
>>>>> + return result + i; /* Check value of 'result' */
>>>>> +}
>>>>> +
>>>>> +
>>>>> +int main (int argc, const char * argv[]) {
>>>>> + return I(42);
>>>>> +}
>>>>> +
>>>>> +
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/blocks.m
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/blocks.m?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/blocks.m (added)
>>>>> +++ debuginfo-tests/trunk/tests/blocks.m Thu Nov 16 10:26:20 2017
>>>>> @@ -0,0 +1,43 @@
>>>>> +// RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> +// RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out
>>>>> -framework Foundation
>>>>> +// RUN: %test_debuginfo %s %t.out
>>>>> +
>>>>> +// REQUIRES: system-darwin
>>>>> +// Radar 9279956
>>>>> +
>>>>> +// DEBUGGER: break 31
>>>>> +// DEBUGGER: r
>>>>> +// DEBUGGER: p m2
>>>>> +// CHECK: ${{[0-9]}} = 1
>>>>> +// DEBUGGER: p dbTransaction
>>>>> +// CHECK: ${{[0-9]}} = 0
>>>>> +// DEBUGGER: p master
>>>>> +// CHECK: ${{[0-9]}} = 0
>>>>> +
>>>>> +#include <Cocoa/Cocoa.h>
>>>>> +
>>>>> +extern void foo(void(^)(void));
>>>>> +
>>>>> + at interface A:NSObject @end
>>>>> + at implementation A
>>>>> +- (void) helper {
>>>>> + int master = 0;
>>>>> + __block int m2 = 0;
>>>>> + __block int dbTransaction = 0;
>>>>> + int (^x)(void) = ^(void) { (void) self;
>>>>> + (void) master;
>>>>> + (void) dbTransaction;
>>>>> + m2++;
>>>>> + return m2;
>>>>> + };
>>>>> + master = x();
>>>>> +}
>>>>> + at end
>>>>> +
>>>>> +void foo(void(^x)(void)) {}
>>>>> +
>>>>> +int main() {
>>>>> + A *a = [A alloc];
>>>>> + [a helper];
>>>>> + return 0;
>>>>> +}
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/ctor.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/ctor.cpp?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/ctor.cpp (added)
>>>>> +++ debuginfo-tests/trunk/tests/ctor.cpp Thu Nov 16 10:26:20 2017
>>>>> @@ -0,0 +1,25 @@
>>>>> +// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> +// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
>>>>> +// RUN: %test_debuginfo %s %t.out
>>>>> +
>>>>> +
>>>>> +// DEBUGGER: break 14
>>>>> +// DEBUGGER: r
>>>>> +// DEBUGGER: p *this
>>>>> +// CHECK-NEXT-NOT: Cannot access memory at address
>>>>> +
>>>>> +class A {
>>>>> +public:
>>>>> + A() : zero(0), data(42)
>>>>> + {
>>>>> + }
>>>>> +private:
>>>>> + int zero;
>>>>> + int data;
>>>>> +};
>>>>> +
>>>>> +int main() {
>>>>> + A a;
>>>>> + return 0;
>>>>> +}
>>>>> +
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/dbg-arg.c
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/dbg-arg.c?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/dbg-arg.c (added)
>>>>> +++ debuginfo-tests/trunk/tests/dbg-arg.c Thu Nov 16 10:26:20 2017
>>>>> @@ -0,0 +1,46 @@
>>>>> +// This test case checks debug info during register moves for an
>>>>> argument.
>>>>> +// RUN: %clang %target_itanium_abi_host_triple -m64 -mllvm
>>>>> -fast-isel=false %s -c -o %t.o -g
>>>>> +// RUN: %clang %target_itanium_abi_host_triple -m64 %t.o -o %t.out
>>>>> +// RUN: %test_debuginfo %s %t.out
>>>>> +//
>>>>> +// DEBUGGER: break 26
>>>>> +// DEBUGGER: r
>>>>> +// DEBUGGER: print mutex
>>>>> +// CHECK: ={{.* 0x[0-9A-Fa-f]+}}
>>>>> +//
>>>>> +// Radar 8412415
>>>>> +
>>>>> +struct _mtx
>>>>> +{
>>>>> + long unsigned int ptr;
>>>>> + int waiters;
>>>>> + struct {
>>>>> + int tag;
>>>>> + int pad;
>>>>> + } mtxi;
>>>>> +};
>>>>> +
>>>>> +
>>>>> +int foobar(struct _mtx *mutex) {
>>>>> + int r = 1;
>>>>> + int l = 0;
>>>>> + int j = 0;
>>>>> + do {
>>>>> + if (mutex->waiters) {
>>>>> + r = 2;
>>>>> + }
>>>>> + j = bar(r, l);
>>>>> + ++l;
>>>>> + } while (l < j);
>>>>> + return r + j;
>>>>> +}
>>>>> +
>>>>> +int bar(int i, int j) {
>>>>> + return i + j;
>>>>> +}
>>>>> +
>>>>> +int main() {
>>>>> + struct _mtx m;
>>>>> + m.waiters = 0;
>>>>> + return foobar(&m);
>>>>> +}
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/foreach.m
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/foreach.m?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/foreach.m (added)
>>>>> +++ debuginfo-tests/trunk/tests/foreach.m Thu Nov 16 10:26:20 2017
>>>>> @@ -0,0 +1,31 @@
>>>>> +// RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> +// RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out
>>>>> -framework Foundation
>>>>> +// RUN: %test_debuginfo %s %t.out
>>>>> +//
>>>>> +// REQUIRES: system-darwin
>>>>> +// Radar 8757124
>>>>> +
>>>>> +// DEBUGGER: break 25
>>>>> +// DEBUGGER: r
>>>>> +// DEBUGGER: po thing
>>>>> +// CHECK: aaa
>>>>> +
>>>>> +#import <Foundation/Foundation.h>
>>>>> +
>>>>> +int main (int argc, const char * argv[]) {
>>>>> +
>>>>> + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
>>>>> + NSArray *things = [NSArray arrayWithObjects:@"one", @"two",
>>>>> @"three" , nil];
>>>>> + for (NSString *thing in things) {
>>>>> + NSLog (@"%@", thing);
>>>>> + }
>>>>> +
>>>>> + things = [NSArray arrayWithObjects:@"aaa", @"bbb", @"ccc" , nil];
>>>>> + for (NSString *thing in things) {
>>>>> + NSLog (@"%@", thing);
>>>>> + }
>>>>> + [pool release];
>>>>> + return 0;
>>>>> +}
>>>>> +
>>>>> +
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/forward-declare-class.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/forward-declare-class.cpp?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/forward-declare-class.cpp (added)
>>>>> +++ debuginfo-tests/trunk/tests/forward-declare-class.cpp Thu Nov 16
>>>>> 10:26:20 2017
>>>>> @@ -0,0 +1,27 @@
>>>>> +// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> +// RUN: %test_debuginfo %s %t.o
>>>>> +// Radar 9168773
>>>>> +
>>>>> +// DEBUGGER: ptype A
>>>>> +// Work around a gdb bug where it believes that a class is a
>>>>> +// struct if there aren't any methods - even though it's tagged
>>>>> +// as a class.
>>>>> +// CHECK: type = {{struct|class}} A {
>>>>> +// CHECK-NEXT: {{(public:){0,1}}}
>>>>> +// CHECK-NEXT: int MyData;
>>>>> +// CHECK-NEXT: }
>>>>> +class A;
>>>>> +class B {
>>>>> +public:
>>>>> + void foo(const A *p);
>>>>> +};
>>>>> +
>>>>> +B iEntry;
>>>>> +
>>>>> +class A {
>>>>> +public:
>>>>> + int MyData;
>>>>> +};
>>>>> +
>>>>> +A irp;
>>>>> +
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/lit.local.cfg
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/lit.local.cfg?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/lit.local.cfg (added)
>>>>> +++ debuginfo-tests/trunk/tests/lit.local.cfg Thu Nov 16 10:26:20 2017
>>>>> @@ -0,0 +1,3 @@
>>>>> +# debuginfo-tests are not expected to pass in a cross-compilation
>>>>> setup.
>>>>> +if 'native' not in config.available_features:
>>>>> + config.unsupported = True
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/llgdb.py
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/llgdb.py?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/llgdb.py (added)
>>>>> +++ debuginfo-tests/trunk/tests/llgdb.py Thu Nov 16 10:26:20 2017
>>>>> @@ -0,0 +1,157 @@
>>>>> +#!/bin/env python
>>>>> +"""
>>>>> +A gdb-compatible frontend for lldb that implements just enough
>>>>> +commands to run the tests in the debuginfo-tests repository with lldb.
>>>>> +"""
>>>>> +
>>>>> +#
>>>>> ----------------------------------------------------------------------
>>>>> +# Auto-detect lldb python module.
>>>>> +import commands, platform, os, sys
>>>>> +try:
>>>>> + # Just try for LLDB in case PYTHONPATH is already correctly setup.
>>>>> + import lldb
>>>>> +except ImportError:
>>>>> + lldb_python_dirs = list()
>>>>> + # lldb is not in the PYTHONPATH, try some defaults for the
>>>>> current platform.
>>>>> + platform_system = platform.system()
>>>>> + if platform_system == 'Darwin':
>>>>> + # On Darwin, try the currently selected Xcode directory
>>>>> + xcode_dir = commands.getoutput("xcode-select --print-path")
>>>>> + if xcode_dir:
>>>>> + lldb_python_dirs.append(os.path.realpath(xcode_dir +
>>>>> +'/../SharedFrameworks/LLDB.framework/Resources/Python'))
>>>>> + lldb_python_dirs.append(xcode_dir +
>>>>> +'/Library/PrivateFrameworks/LLDB.framework/Resources/Python')
>>>>> + lldb_python_dirs.append(
>>>>> +'/System/Library/PrivateFrameworks/LLDB.framework/Resources/Python')
>>>>> + success = False
>>>>> + for lldb_python_dir in lldb_python_dirs:
>>>>> + if os.path.exists(lldb_python_dir):
>>>>> + if not (sys.path.__contains__(lldb_python_dir)):
>>>>> + sys.path.append(lldb_python_dir)
>>>>> + try:
>>>>> + import lldb
>>>>> + except ImportError:
>>>>> + pass
>>>>> + else:
>>>>> + print 'imported lldb from: "%s"' %
>>>>> (lldb_python_dir)
>>>>> + success = True
>>>>> + break
>>>>> + if not success:
>>>>> + print "error: couldn't locate the 'lldb' module, please set
>>>>> PYTHONPATH correctly"
>>>>> + sys.exit(1)
>>>>> +#
>>>>> ----------------------------------------------------------------------
>>>>> +
>>>>> +# Command line option handling.
>>>>> +import argparse
>>>>> +parser = argparse.ArgumentParser(description=__doc__)
>>>>> +parser.add_argument('--quiet', '-q', action="store_true",
>>>>> help='ignored')
>>>>> +parser.add_argument('-batch', action="store_true",
>>>>> + help='exit after processing comand line')
>>>>> +parser.add_argument('-n', action="store_true", help='ignore .lldb
>>>>> file')
>>>>> +parser.add_argument('-x', dest='script', type=file, help='execute
>>>>> commands from file')
>>>>> +parser.add_argument("target", help="the program to debug")
>>>>> +args = parser.parse_args()
>>>>> +
>>>>> +
>>>>> +# Create a new debugger instance.
>>>>> +debugger = lldb.SBDebugger.Create()
>>>>> +debugger.SkipLLDBInitFiles(args.n)
>>>>> +
>>>>> +# Don't return from lldb function calls until the process stops.
>>>>> +debugger.SetAsync(False)
>>>>> +
>>>>> +# Create a target from a file and arch.
>>>>> +arch = os.popen("file "+args.target).read().split()[-1]
>>>>> +target = debugger.CreateTargetWithFileAndArch(args.target, arch)
>>>>> +
>>>>> +if not target:
>>>>> + print "Could not create target", args.target
>>>>> + sys.exit(1)
>>>>> +
>>>>> +if not args.script:
>>>>> + print "Interactive mode is not implemented."
>>>>> + sys.exit(1)
>>>>> +
>>>>> +import re
>>>>> +for command in args.script:
>>>>> + # Strip newline and whitespaces and split into words.
>>>>> + cmd = command[:-1].strip().split()
>>>>> + if not cmd:
>>>>> + continue
>>>>> +
>>>>> + print '> %s'% command[:-1]
>>>>> +
>>>>> + try:
>>>>> + if re.match('^r|(run)$', cmd[0]):
>>>>> + error = lldb.SBError()
>>>>> + launchinfo = lldb.SBLaunchInfo([])
>>>>> + launchinfo.SetWorkingDirectory(os.getcwd())
>>>>> + process = target.Launch(launchinfo, error)
>>>>> + print error
>>>>> + if not process or error.fail:
>>>>> + state = process.GetState()
>>>>> + print "State = %d" % state
>>>>> + print """
>>>>> +ERROR: Could not launch process.
>>>>> +NOTE: There are several reasons why this may happen:
>>>>> + * Root needs to run "DevToolsSecurity --enable".
>>>>> + * Older versions of lldb cannot launch more than one process
>>>>> simultaneously.
>>>>> +"""
>>>>> + sys.exit(1)
>>>>> +
>>>>> + elif re.match('^b|(break)$', cmd[0]) and len(cmd) == 2:
>>>>> + if re.match('[0-9]+', cmd[1]):
>>>>> + # b line
>>>>> + mainfile =
>>>>> target.FindFunctions('main')[0].compile_unit.file
>>>>> + print target.BreakpointCreateByLocation(mainfile,
>>>>> int(cmd[1]))
>>>>> + else:
>>>>> + # b file:line
>>>>> + file, line = cmd[1].split(':')
>>>>> + print target.BreakpointCreateByLocation(file,
>>>>> int(line))
>>>>> +
>>>>> + elif re.match('^ptype$', cmd[0]) and len(cmd) == 2:
>>>>> + # GDB's ptype has multiple incarnations depending on its
>>>>> + # argument (global variable, function, type). The
>>>>> definition
>>>>> + # here is for looking up the signature of a function and
>>>>> only
>>>>> + # if that fails it looks for a type with that name.
>>>>> + # Type lookup in LLDB would be "image lookup --type".
>>>>> + for elem in target.FindFunctions(cmd[1]):
>>>>> + print elem.function.type
>>>>> + continue
>>>>> + print target.FindFirstType(cmd[1])
>>>>> +
>>>>> + elif re.match('^po$', cmd[0]) and len(cmd) > 1:
>>>>> + try:
>>>>> + opts = lldb.SBExpressionOptions()
>>>>> + opts.SetFetchDynamicValue(True)
>>>>> + opts.SetCoerceResultToId(True)
>>>>> + print target.EvaluateExpression(' '.join(cmd[1:]),
>>>>> opts)
>>>>> + except:
>>>>> + # FIXME: This is a fallback path for the lab.llvm.org
>>>>> + # buildbot running OS X 10.7; it should be removed.
>>>>> + thread = process.GetThreadAtIndex(0)
>>>>> + frame = thread.GetFrameAtIndex(0)
>>>>> + print frame.EvaluateExpression(' '.join(cmd[1:]))
>>>>> +
>>>>> + elif re.match('^p|(print)$', cmd[0]) and len(cmd) > 1:
>>>>> + thread = process.GetThreadAtIndex(0)
>>>>> + frame = thread.GetFrameAtIndex(0)
>>>>> + print frame.EvaluateExpression(' '.join(cmd[1:]))
>>>>> +
>>>>> + elif re.match('^n|(next)$', cmd[0]):
>>>>> + thread = process.GetThreadAtIndex(0)
>>>>> + thread.StepOver()
>>>>> +
>>>>> + elif re.match('^q|(quit)$', cmd[0]):
>>>>> + sys.exit(0)
>>>>> +
>>>>> + else:
>>>>> + print debugger.HandleCommand(' '.join(cmd))
>>>>> +
>>>>> + except SystemExit:
>>>>> + lldb.SBDebugger_Terminate()
>>>>> + raise
>>>>> + except:
>>>>> + print 'Could not handle the command "%s"' % ' '.join(cmd)
>>>>> +
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/nested-struct.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/nested-struct.cpp?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/nested-struct.cpp (added)
>>>>> +++ debuginfo-tests/trunk/tests/nested-struct.cpp Thu Nov 16 10:26:20
>>>>> 2017
>>>>> @@ -0,0 +1,21 @@
>>>>> +// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>>>>> +// RUN: %test_debuginfo %s %t.o
>>>>> +// Radar 9440721
>>>>> +// If debug info for my_number() is emitted outside function foo's
>>>>> scope
>>>>> +// then a debugger may not be able to handle it. At least one version
>>>>> of
>>>>> +// gdb crashes in such cases.
>>>>> +
>>>>> +// DEBUGGER: ptype foo
>>>>> +// CHECK: int (void)
>>>>> +
>>>>> +int foo() {
>>>>> + struct Local {
>>>>> + static int my_number() {
>>>>> + return 42;
>>>>> + }
>>>>> + };
>>>>> +
>>>>> + int i = 0;
>>>>> + i = Local::my_number();
>>>>> + return i + 1;
>>>>> +}
>>>>>
>>>>> Added: debuginfo-tests/trunk/tests/nrvo-string.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/nrvo-string.cpp?rev=318435&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- debuginfo-tests/trunk/tests/nrvo-string.cpp (added)
>>>>> +++ debuginfo-tests/trunk/tests/nrvo-string.cpp Thu Nov 16 10:26:20
>>>>> 2017
>>>>> @@ -0,0 +1,27 @@
>>>>> +// This ensures that DW_OP_deref is inserted when necessary, such as
>>>>> when NRVO
>>>>> +// of a string object occurs in C++.
>>>>> +//
>>>>> +// RUN: %clangxx -O0 -fno-exceptions %target_itanium_abi_host_triple
>>>>> %s -o %t.out -g
>>>>> +// RUN: %test_debuginfo %s %t.out
>>>>> +// RUN: %clangxx -O1 -fno-exceptions %target_itanium_abi_host_triple
>>>>> %s -o %t.out -g
>>>>> +// RUN: %test_debuginfo %s %t.out
>>>>> +//
>>>>> +// PR34513
>>>>> +
>>>>> +struct string {
>>>>> + st
>>>>>
>>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171116/48ac7b20/attachment.html>
More information about the llvm-commits
mailing list