[debuginfo-tests] r318435 - Resubmit "Refactor debuginfo-tests"
Zachary Turner via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 16 15:37:16 PST 2017
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 {
>> + 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
>>
>> Added: debuginfo-tests/trunk/tests/safestack.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/safestack.c?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/safestack.c (added)
>> +++ debuginfo-tests/trunk/tests/safestack.c Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,51 @@
>> +// 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]
>>
>> Added: debuginfo-tests/trunk/tests/sret.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/sret.cpp?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/sret.cpp (added)
>> +++ debuginfo-tests/trunk/tests/sret.cpp Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,71 @@
>> +// 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;
>> +}
>>
>> Added: debuginfo-tests/trunk/tests/stack-var.c
>>
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/stack-var.c?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/stack-var.c (added)
>>
>> +++ debuginfo-tests/trunk/tests/stack-var.c Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,18 @@
>> +// 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;
>> +}
>>
>> Added: debuginfo-tests/trunk/tests/static-member-2.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/static-member-2.cpp?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/static-member-2.cpp (added)
>>
>> +++ debuginfo-tests/trunk/tests/static-member-2.cpp Thu Nov 16 10:26:20
>> 2017
>> @@ -0,0 +1,39 @@
>> +// 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;
>> +}
>>
>> Added: debuginfo-tests/trunk/tests/static-member.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/static-member.cpp?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/static-member.cpp (added)
>>
>> +++ debuginfo-tests/trunk/tests/static-member.cpp Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,36 @@
>> +// 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/vla.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/vla.c?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/vla.c (added)
>> +++ debuginfo-tests/trunk/tests/vla.c Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,24 @@
>> +// This test case verifies the debug location for variable-length arrays.
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171116/b2a3e187/attachment-0001.html>
More information about the llvm-commits
mailing list